Sisukord:

Lihtsa vahemälu kontrolleri disain VHDL -is: 4 sammu
Lihtsa vahemälu kontrolleri disain VHDL -is: 4 sammu

Video: Lihtsa vahemälu kontrolleri disain VHDL -is: 4 sammu

Video: Lihtsa vahemälu kontrolleri disain VHDL -is: 4 sammu
Video: «Развлечение с музыкой и программированием», Коннор Харрис и Стивен Крюсон 2024, Juuni
Anonim
Lihtsa vahemälu kontrolleri disain VHDL -is
Lihtsa vahemälu kontrolleri disain VHDL -is

Kirjutan seda juhendavat, sest mul oli natuke raske saada VHDL -viite koodi, et õppida ja alustada vahemälu kontrolleri kujundamist. Nii kujundasin ma vahemälu kontrolleri nullist ja katsetasin seda edukalt FPGA -ga. Olen siin esitlenud lihtsa otse kaardistatud vahemälu kontrolleri, samuti modelleerinud vahemälu kontrolleri testimiseks terve protsessori-mälusüsteemi. Loodan, et teile tundub, et see juhend on kasulik vahemälu kontrollerite kujundamisel.

Samm: spetsifikatsioonid

Tehnilised andmed
Tehnilised andmed

Need on meie kavandatava vahemälu kontrolleri peamised spetsifikatsioonid:

  • Otse kaardistatud. (minge sellele lingile, kui otsite assotsiatiivset kaardistatud vahemälu kontrollerit)
  • Ühe pangaga blokeeriv vahemälu.
  • Kirjutamispõhimõtted kirjutamise tabamustele.
  • Kirjutamisõiguseta eraldage või kirjutage ümberringi kirjutamispoliitika.
  • Ei kirjuta puhvrit ega muid optimeerimisi.
  • Tag Array on kaasatud.

Lisaks sellele kavandame ka vahemälu ja põhimälusüsteemi.

Vahemälu vaikimisi (konfigureeritavad) spetsifikatsioonid:

  • 256 baiti ühe pangaga vahemälu.
  • 16 vahemälu rida, iga vahemälu rida (plokk) = 16 baiti.

Põhimälu spetsifikatsioonid:

  • Sünkroonne lugemis-/kirjutamismälu.
  • Mitme pangaga vahemälu - neli mälupanka.
  • Iga panga suurus = 1 kB. Seega kogu suurus = 4 kB.
  • Wordi (4 baiti) adresseeritav mälu 10-bitise aadressibussiga.
  • Suurem ribalaius lugemiseks. Andmelaiuse lugemine = 16 baiti ühes taktsüklis.
  • Kirjutage andmete laius = 4 baiti.

MÄRKUS: kui otsite 4-suunalist assotsiatiivset vahemälu kontrolleri kujundust, vaadake minu uuemat juhendit

2. samm: kogu süsteemi RTL -vaade

RTL vaade kogu süsteemile
RTL vaade kogu süsteemile

Ülemise mooduli täielik RTL -esitus on näidatud joonisel (välja arvatud protsessor). Busside vaikespetsifikatsioonid on järgmised:

  • Kõik andmebussid on 32-bitised.
  • Aadressibuss = 32-bitine siin (kuid mälu abil saab siin adresseerida ainult 10 bitti).
  • Andmeplokk = 128 bitti (laia ribalaiusega siin lugemiseks).
  • Kõiki komponente juhib sama kell.

3. samm: testige keskkonda

Ülemoodulit testiti testpingi abil, mis lihtsalt modelleerib torustikuta protsessorit (kuna terve protsessori kujundamine pole sugugi lihtne !!). Testpink genereerib mälule sageli lugemis-/kirjutamisandmeid. See pilkab tüüpilisi "Laadi" ja "Salvesta" juhiseid, mis on levinud kõikides protsessori poolt käivitatud programmides. Katsetulemused kinnitasid edukalt vahemälu kontrolleri funktsionaalsuse. Järgnevalt on täheldatud testistatistikat:

  • Kõik lugemis-/kirjutamis- ja vastamata signaalid genereeriti õigesti.
  • Kõik andmete lugemise/kirjutamise toimingud õnnestusid.
  • Andmete ebajärjekindluse/vastuolu probleeme ei tuvastatud.
  • Kujundus oli Maxmi jaoks edukalt ajastatud. Kell Töösagedus = 110 MHz Xilinx Virtex-4 ML-403 pardal (kogu süsteem), 195 MHz ainult vahemälu kontrolleri jaoks.
  • Põhimälu jaoks järeldati plokk -RAM -id. Kõik muud massiivid rakendati LUT -idel.

Samm: manustatud failid

Selle ajaveebi juurde on lisatud järgmised failid:

  • Vahemälu kontrolleri, vahemäluandmete massiivi, põhimälusüsteemi. VHD -failid.
  • Testpink.
  • Vahemälu kontrolleri dokumentatsioon.

Märkused:

  • Siin esitatud vahemälu kontrolleri spetsifikatsioonide täielikuks mõistmiseks lugege dokumentatsiooni.
  • Kõik koodi muudatused sõltuvad teistest moodulitest. Seetõttu tuleks muudatusi teha mõistlikult. Pöörake tähelepanu kõikidele kommentaaridele ja päistele, mille olen andnud.
  • Kui mingil põhjusel ei järeldata plokk -RAM -e põhimälu kohta, VÄHENDA mälu suurust, millele järgneb failide aadressibussi laiuse muutmine jne. Nii et sama mälu saab rakendada kas LUT -idel või hajutatud RAM -il. See säästab marsruutimise aega ja ressursse. Või minge konkreetse FPGA dokumentatsiooni juurde ja leidke ühilduv kood Block RAM -i jaoks ning muutke koodi vastavalt ja kasutage samu aadressibussi spetsifikatsioone. Sama tehnika Altera FPGA -de puhul.

Soovitan: