Sisukord:
2025 Autor: John Day | [email protected]. Viimati modifitseeritud: 2025-01-23 14:40
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
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
Ü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:
Lihtsa neljasuunalise assotsiatiivse vahemälu kontrolleri disain VHDL-is: 4 sammu
Lihtsa neljasuunalise komplekti assotsiatiivse vahemälu kontrolleri disain VHDL-is: minu eelmises juhendis nägime, kuidas kujundada lihtne otsene kaardistatud vahemälu kontroller. Seekord liigume sammu edasi. Kavandame lihtsa neljasuunalise assotsiatiivse vahemälu kontrolleri. Eelis? Vähem vahelejäämise määra, kuid perfo hinnaga
Programmeeritava katkestuskontrolleri disain VHDL -is: 4 sammu
Programmeeritava katkestuskontrolleri kujundamine VHDL -is: olen ajaveebist saadud vastustest väga vaimustuses. Tänan poisid, et külastasite minu ajaveebi ja motiveerisite mind teiega oma teadmisi jagama. Seekord tutvustan veel ühe huvitava mooduli kujundust, mida näeme kõigis SOC -des - katkestus C
I2C Masteri disain VHDL -is: 5 sammu
I2C Masteri disain VHDL -is: selles juhendis käsitletakse lihtsa I2C -kapteni kujundamist VHDL -is. MÄRKUS: täieliku pildi nägemiseks klõpsake igal pildil
Lihtsa VGA -kontrolleri disain VHDL -is ja Verilogis: 5 sammu
Lihtsa VGA -kontrolleri disain VHDL -is ja Verilogis: selles juhendis kavandame RTL -is lihtsa VGA -kontrolleri. VGA -kontroller on digitaalskeem, mis on ette nähtud VGA -ekraanide juhtimiseks. See loeb kaadripuhvrist (VGA -mälu), mis tähistab kuvatavat kaadrit, ja loob vajaliku
SPI Masteri disain VHDL -is: 6 sammu
SPI Masteri disain VHDL -is: selles juhendis kavandame VHDL -is SPI -bussimeistri nullist