Turinys:

Paprasto talpyklos valdiklio VHDL dizainas: 4 žingsniai
Paprasto talpyklos valdiklio VHDL dizainas: 4 žingsniai

Video: Paprasto talpyklos valdiklio VHDL dizainas: 4 žingsniai

Video: Paprasto talpyklos valdiklio VHDL dizainas: 4 žingsniai
Video: САМАЯ УДАЧНАЯ версия генератора для бензиновой горелки!!! 2024, Birželis
Anonim
Paprastos talpyklos valdiklio dizainas VHDL
Paprastos talpyklos valdiklio dizainas VHDL

Rašau tai pamokoma, nes man buvo šiek tiek sunku gauti tam tikrą nuorodinį VHDL kodą, kad išmokčiau ir pradėčiau kurti talpyklos valdiklį. Taigi aš pats nuo pat pradžių sukūriau talpyklos valdiklį ir sėkmingai išbandžiau jį FPGA. Čia aš pristatiau paprastą tiesioginio atvaizdo talpyklos valdiklį, taip pat sumodeliavau visą procesoriaus-atminties sistemą, kad galėčiau išbandyti talpyklos valdiklį. Tikiuosi, kad jums, vaikinai, ši instrukcija bus naudinga kaip nuoroda kuriant savo talpyklos valdiklius.

1 žingsnis: specifikacijos

Specifikacijos
Specifikacijos

Tai yra pagrindinės talpyklos valdiklio, kurį ketiname suprojektuoti, specifikacijos:

  • Tiesioginis žemėlapis. (eikite į šią nuorodą, jei ieškote „Associative Mapped Cache Controller“)
  • Vieno banko blokavimo talpykla.
  • Perrašymo politika dėl rašymo hitų.
  • „No-Write“paskirstymas arba „Write Around Policy“apie rašymo praleidimus.
  • Nėra rašymo buferio ar kitų optimizavimų.
  • „Tag Array“yra įtraukta.

Be to, mes taip pat sukursime talpyklos atmintį ir pagrindinę atminties sistemą.

Numatytosios (konfigūruojamos) talpyklos atminties specifikacijos:

  • 256 baitai vieno banko talpykla.
  • 16 talpyklos eilučių, kiekviena talpyklos eilutė (blokas) = 16 baitų.

Pagrindinės atminties specifikacijos:

  • Sinchroninė skaitymo/rašymo atmintis.
  • Daugiapakopė sujungta atmintis - keturi atminties bankai.
  • Kiekvieno banko dydis = 1 kB. Taigi, bendras dydis = 4 kB.
  • „Word“(4 baitai) adresuojama atmintis su 10 bitų adresų magistrale.
  • Didesnis skaitymo pralaidumas. Skaitymo duomenų plotis = 16 baitų per vieną laikrodžio ciklą.
  • Rašyti duomenų plotį = 4 baitai.

PASTABA: patikrinkite mano naujesnį nurodymą, jei ieškote 4 krypčių asociatyvaus talpyklos valdiklio dizaino

2 veiksmas: visos sistemos RTL vaizdas

Visos sistemos RTL vaizdas
Visos sistemos RTL vaizdas

Pilnas viršutinio modulio RTL atvaizdavimas parodytas paveikslėlyje (išskyrus procesorių). Numatytosios autobusų specifikacijos yra šios:

  • Visos duomenų magistralės yra 32 bitų magistralės.
  • Adreso magistralė = 32 bitų magistralė (tačiau tik 10 bitų čia galima adresuoti atmintimi).
  • Duomenų blokas = 128 bitai (plataus dažnių juostos pločio magistralė skaitymui).
  • Visus komponentus valdo tas pats laikrodis.

3 žingsnis: išbandykite aplinką

Viršutinis modulis buvo išbandytas naudojant bandomąjį stendą, kuriame paprasčiausiai sumontuojamas procesorius be dujotiekio (nes suprojektuoti visą procesorių nėra lengva !!). Bandymų stendas dažnai generuoja skaitymo/rašymo duomenų užklausas į atmintį. Tai tyčiojasi iš tipiškų „Įkelti“ir „Saugoti“nurodymų, būdingų visoms procesoriaus vykdomoms programoms. Bandymo rezultatai sėkmingai patvirtino talpyklos valdiklio funkcionalumą. Toliau pateikiama bandymų statistika:

  • Visi skaitymo/rašymo praleidimo ir smūgio signalai buvo sugeneruoti teisingai.
  • Visos duomenų skaitymo/rašymo operacijos buvo sėkmingos.
  • Duomenų nenuoseklumo/nenuoseklumo problemų neaptikta.
  • Dizainas buvo sėkmingai patikrintas „Maxm“. Laikrodis Veikimo dažnis = 110 MHz „Xilinx Virtex-4 ML-403“plokštėje (visa sistema), 195 MHz tik talpyklos valdikliui.
  • Blokuoti RAM buvo nustatyti pagrindinei atminčiai. Visi kiti masyvai buvo įgyvendinti LUT.

4 veiksmas: pridedami failai

Prie šio tinklaraščio pridedami šie failai:

  • Talpyklos valdiklio, talpyklos duomenų masyvo, pagrindinės atminties sistemos. VHD failai.
  • Bandymo suolelis.
  • Dokumentai apie talpyklos valdiklį.

Pastabos:

  • Peržiūrėkite dokumentus, kad visiškai suprastumėte čia pateiktas talpyklos valdiklio specifikacijas.
  • Bet kokie kodo pakeitimai priklauso nuo kitų modulių. Taigi pakeitimai turėtų būti atliekami apgalvotai. Atkreipkite dėmesį į visus mano pateiktus komentarus ir antraštes.
  • Jei dėl kokių nors priežasčių blokinė atmintis nėra išvedama pagal pagrindinę atmintį, MAŽINKITE atminties dydį, o po to keiskite adresų magistralės plotį visuose failuose ir pan. Taigi ta pati atmintis gali būti įdiegta LUT arba paskirstytojoje RAM. Tai sutaupys maršruto laiką ir išteklius. Arba eikite į konkrečią FPGA dokumentaciją ir raskite suderinamą Block RAM kodą ir atitinkamai redaguokite kodą bei naudokite tas pačias adresų magistralės pločio specifikacijas. Ta pati technika taikoma ir „Altera FPGA“.

Rekomenduojamas: