Sisällysluettelo:
- Vaihe 1: Tekniset tiedot
- Vaihe 2: RTL -näkymä koko järjestelmästä
- Vaihe 3: Testaa ympäristö
- Vaihe 4: Liitetyt tiedostot
Video: Yksinkertaisen välimuistiohjaimen suunnittelu VHDL: ssä: 4 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:01
Kirjoitan tämän ohjeellisen, koska minusta oli hieman vaikeaa saada viite -VHDL -koodi oppia ja aloittaa välimuistiohjaimen suunnittelu. Joten suunnittelin välimuistiohjaimen itse tyhjästä ja testasin sen onnistuneesti FPGA: lla. Olen esittänyt täällä yksinkertaisen suoran kartoitetun välimuistiohjaimen sekä mallinnanut koko prosessorimuistijärjestelmän välimuistiohjaimen testaamiseksi. Toivon, että pidätte tätä opettavaista hyödyllisenä viitteenä oman välimuistiohjaimen suunnittelussa.
Vaihe 1: Tekniset tiedot
Nämä ovat suunnittelemamme välimuistiohjaimen tärkeimmät tiedot:
- Suora kartoitettu. (siirry tästä linkistä, jos etsit Associative Mapped Cache Controller)
- Yhden pankin estovälimuisti.
- Kirjoituskäytäntö kirjoitusosumissa.
- Ei kirjoitusvarausta tai kirjoituspolitiikka kirjoitusvirheille.
- Ei kirjoituspuskuria tai muita optimointeja.
- Tag Array on sisällytetty.
Tämän lisäksi suunnittelemme myös välimuistin ja päämuistijärjestelmän.
Välimuistin oletusarvot (konfiguroitavat):
- 256 tavun yhden pankin välimuisti.
- 16 välimuistiriviä, jokainen välimuistirivi (lohko) = 16 tavua.
Päämuistin tekniset tiedot:
- Synkroninen luku-/kirjoitusmuisti.
- Monipankkinen lomitettu muisti - neljä muistipankkia.
- Kunkin pankin koko = 1 kB. Kokonaiskoko = 4 kt.
- Word (4 tavua) osoitettava muisti ja 10-bittinen osoiteväylä.
- Suurempi kaistanleveys lukemista varten. Datan leveys = 16 tavua yhden kellosyklin aikana.
- Kirjoita datan leveys = 4 tavua.
HUOMAUTUS: tarkista uudemmat ohjeet, jos etsit 4-suuntaista assosiatiivista välimuistiohjainta
Vaihe 2: RTL -näkymä koko järjestelmästä
Kuvassa on esitetty ylämoduulin täydellinen RTL -esitys (lukuun ottamatta prosessoria). Bussien oletusasetukset ovat:
- Kaikki tietoväylät ovat 32-bittisiä.
- Osoiteväylä = 32-bittinen väylä (mutta vain 10 bittiä voidaan käsitellä täällä muistilla).
- Datalohko = 128 bittiä (laajakaistainen väylä lukemista varten).
- Kaikkia komponentteja ohjaa sama kello.
Vaihe 3: Testaa ympäristö
Ylämoduulia testattiin käyttämällä testipenkkiä, joka yksinkertaisesti mallintaa ei-putkiprosessoria (koska koko prosessorin suunnittelu ei ole ollenkaan helppoa !!). Testipenkki luo luku-/kirjoitusdatapyyntöjä muistiin usein. Tämä pilkkaa tyypillisiä "Lataa" ja "Tallenna" -ohjeita, jotka ovat yleisiä kaikissa suorittimen suorittamissa ohjelmissa. Testitulokset varmistivat välimuistiohjaimen toimivuuden. Seuraavat testitilastot ovat havaittuja:
- Kaikki luku-/kirjoitushäiriö- ja osuma -signaalit luotiin oikein.
- Kaikki luku-/kirjoitusdatan toiminnot onnistuivat.
- Tietojen epäjohdonmukaisuus-/epäjohdonmukaisuusongelmia ei havaittu.
- Suunnittelun ajoitus vahvistettiin onnistuneesti Maxm: lle. Kello Toimintataajuus = 110 MHz Xilinx Virtex-4 ML-403 -kortilla (koko järjestelmä), 195 MHz pelkällä välimuistiohjaimella.
- Lohkomuistit pääteltiin päämuistia varten. Kaikki muut taulukot toteutettiin LUT -laitteilla.
Vaihe 4: Liitetyt tiedostot
Seuraavat tiedostot on liitetty tähän blogiin:
- . HDHD -tiedostot välimuistiohjaimesta, välimuistitiedostoista, päämuistijärjestelmästä.
- Testipenkki.
- Välimuistiohjaimen dokumentaatio.
Huomautuksia:
- Käy läpi asiakirjat, jotta ymmärrät täydellisesti tässä esitetyt välimuistiohjaimen tekniset tiedot.
- Kaikki koodin muutokset ovat riippuvaisia muista moduuleista. Muutokset on siis tehtävä harkiten. Kiinnitä huomiota kaikkiin antamiisi kommentteihin ja otsikoihin.
- Jos jostain syystä Estä RAM -muistia ei päätellä päämuistia varten, PIENENNÄ muistin kokoa, minkä jälkeen muuttuvat osoiteväylän leveydet tiedostoissa ja niin edelleen. Jotta sama muisti voidaan toteuttaa joko LUT -laitteissa tai hajautetussa RAM -muistissa. Tämä säästää reititysaikaa ja resursseja. Tai, siirry tiettyyn FPGA -dokumentaatioon ja etsi yhteensopiva koodi Block RAM -muistiin ja muokkaa koodia vastaavasti ja käytä samoja osoiteväyläleveyksiä. Sama tekniikka Altera FPGA -laitteille.
Suositeltava:
Yksinkertaisen nelisuuntaisen yhdistetyn välimuistiohjaimen suunnittelu VHDL: ssä: 4 vaihetta
Yksinkertaisen nelisuuntaisen yhdistetyn välimuistiohjaimen suunnittelu VHDL: ssä: Edellisessä ohjeessani näimme kuinka suunnitella yksinkertainen suoraan kartoitettu välimuistiohjain. Tällä kertaa mennään askel eteenpäin. Suunnittelemme yksinkertaisen nelisuuntaisen yhdistetyn välimuistiohjaimen. Etu? Vähemmän miss -korkoa, mutta perfo -kustannuksella
Ohjelmoitavan keskeytysohjaimen suunnittelu VHDL: ssä: 4 vaihetta
Ohjelmoitavan keskeytysohjaimen suunnittelu VHDL: ssä: Olen hämmästynyt siitä, millaisia vastauksia saan tästä blogista. Kiitos kaverit vierailustani blogissani ja kannustivat minua jakamaan tietoni kanssanne. Tällä kertaa aion esitellä toisen mielenkiintoisen moduulin suunnittelun, jonka näemme kaikissa SOC -järjestelmissä - Keskeytä C
I2C Masterin suunnittelu VHDL: ssä: 5 vaihetta
I2C Masterin suunnittelu VHDL: ssä: Tässä ohjeessa käsitellään yksinkertaisen I2C -masterin suunnittelua VHDL: ssä
Yksinkertaisen VGA -ohjaimen suunnittelu VHDL- ja Verilog -järjestelmissä: 5 vaihetta
Yksinkertaisen VGA -ohjaimen suunnittelu VHDL- ja Verilog -järjestelmissä: Tässä ohjeessa aiomme suunnitella yksinkertaisen RTGA -VGA -ohjaimen. VGA -ohjain on digitaalinen piiri, joka on suunniteltu VGA -näyttöjen ohjaamiseen. Se lukee kehyspuskurista (VGA -muisti), joka edustaa näytettävää kehystä, ja luo tarvittavan
SPI Masterin suunnittelu VHDL: ssä: 6 vaihetta
SPI Masterin suunnittelu VHDL: ssä: Tässä ohjeessa aiomme suunnitella SPI Bus Masterin alusta alkaen VHDL: ssä