Innehållsförteckning:
Video: Design av en enkel cachekontroller i VHDL: 4 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:44
Jag skriver det här instruerbart, eftersom jag tyckte att det var lite svårt att få lite referens -VHDL -kod att lära sig och börja designa en cache -kontroller. Så jag designade själv en cachekontroller från grunden och testade den framgångsrikt på FPGA. Jag har presenterat en enkel direkt mappad cachekontroller här, samt modellerat ett helt processor-minnessystem för att testa cachekontrollern. Jag hoppas att ni tycker att detta kan vara användbart som referens för att designa era egna cachekontroller.
Steg 1: Specifikationer
Det här är huvudspecifikationerna för Cache Controller som vi ska designa:
- Direct Mapped. (gå till den här länken om du letar efter Associative Mapped Cache Controller)
- Enbankad, blockerande cache.
- Genomskrivningspolicy för skrivträffar.
- Tilldelning utan skrivning eller skrivning kring policy om skrivfel.
- Ingen skrivbuffert eller andra optimeringar.
- Tag Array är inkorporerat.
Förutom det kommer vi också att utforma ett cacheminne och ett huvudminnessystem.
Standardspecifikationerna för cacheminnet:
- 256 bytes enkelbankad cache.
- 16 cachelinjer, varje cachelinje (block) = 16 byte.
Specifikationerna för huvudminnet:
- Synkron läs-/skrivminne.
- Multi -banked Interleaved Memory - fyra minnesbanker.
- Varje bankstorlek = 1 kB vardera. Alltså total storlek = 4 kB.
- Word (4 Bytes) adresserbart minne med 10-bitars adressbuss.
- Högre bandbredd för läsning. Läs databredd = 16 Bytes i en klockcykel.
- Skriv databredd = 4 byte.
OBS: kolla min nyare instruerbara om du letar efter 4-vägs associerad cachecontroller-design
Steg 2: RTL -vy av hela systemet
Komplett RTL -representation av toppmodulen visas i figuren (exklusive processorn). Standardspecifikationer för bussarna är:
- Alla databussar är 32-bitars bussar.
- Adressbuss = 32-bitars buss (men endast 10 bitar kan adresseras här av minnet).
- Datablock = 128 bitar (Wide Bandwidth Bus for Read).
- Alla komponenter drivs av samma klocka.
Steg 3: Testmiljö
Toppmodulen testades med en testbänk, som helt enkelt modellerar en icke-pipelinerad processor (eftersom det inte alls är enkelt att designa en hel processor !!). Testbänken genererar ofta läs-/skrivdataförfrågningar till minnet. Detta hånar typiska "Load" och "Store" instruktioner, vanliga i alla program som körs av en processor. Testresultaten har verifierat funktionen hos cachekontrollern. Följande är teststatistiken som observerats:
- Alla läs/skriv miss- och träffsignaler genererades korrekt.
- Alla läs-/skrivdataoperationer lyckades.
- Inga datainkoherens/inkonsekvensproblem upptäcktes.
- Designen lyckades tajma verifieras för en Maxm. Klocka Driftsfrekvens = 110 MHz i Xilinx Virtex-4 ML-403 Board (hela systemet), 195 MHz för Cache Controller ensam.
- Block RAM -minnen utlästes för huvudminnet. Alla andra matriser implementerades på LUT.
Steg 4: Bifogade filer
Följande filer bifogas här med denna blogg:
- . VHD -filer från Cache Controller, Cache Data Array, Main Memory System.
- Testbänk.
- Dokumentation om Cache Controller.
Anmärkningar:
- Gå igenom dokumentationen för fullständig förståelse av specifikationerna för Cache Controller som presenteras här.
- Eventuella ändringar i koden är beroende av andra moduler. Så, ändringarna bör göras på ett klokt sätt. Var uppmärksam på alla kommentarer och rubriker som jag har gett.
- Om det av någon anledning inte utläses block -RAM för huvudminnet, MINSKA storleken på minnet, följt av ändringar i adressbussbredder över filerna och så vidare. Så att samma minne kan implementeras antingen på LUT eller distribuerat RAM. Detta sparar tid och resurser. Eller, gå till den specifika FPGA -dokumentationen och hitta den kompatibla koden för Block RAM och redigera koden i enlighet därmed och använd samma adressbussbreddsspecifikationer. Samma teknik för Altera FPGA.
Rekommenderad:
Design av en enkel fyrvägsuppsättning associerad cachekontroller i VHDL: 4 steg
Utformning av en enkel fyrvägsuppsättning associerad cachekontroller i VHDL: I min tidigare instruerbarhet såg vi hur man utformar en enkel direktkartad cachekontroller. Den här gången går vi ett steg framåt. Vi kommer att utforma en enkel fyrvägsuppsättning associerad cache-kontroller. Fördel? Mindre missfrekvens, men på bekostnad av perfo
Design av en programmerbar avbrottsstyrenhet i VHDL: 4 steg
Design av en programmerbar avbrottsstyrenhet i VHDL: Jag är överväldigad av den typ av svar jag får i den här bloggen. Tack killar för att du besökte min blogg och motiverade mig att dela min kunskap med dig. Den här gången kommer jag att presentera designen av en annan intressant modul som vi ser i alla SOC - Interrupt C
Design av I2C Master i VHDL: 5 steg
Design av I2C Master i VHDL: I den här instruktionsboken diskuteras att designa en enkel I2C -master i VHDL. OBS: klicka på varje bild för att se hela bilden
Design av en enkel VGA -kontroller i VHDL och Verilog: 5 steg
Design av en enkel VGA -styrenhet i VHDL och Verilog: I den här instruktören ska vi designa en enkel VGA -styrenhet i RTL. VGA Controller är den digitala kretsen som är utformad för att driva VGA -skärmar. Den läser från Frame Buffer (VGA Memory) som representerar ramen som ska visas, och genererar nece
Design av SPI Master i VHDL: 6 steg
Design av SPI Master i VHDL: I denna instruktiva kommer vi att designa en SPI Bus Master från grunden i VHDL