Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja izmjena: 2025-01-23 14:37
Pišem ovo uputstvo, jer mi je bilo malo teško nabaviti neki referentni VHDL kôd za učenje i započeti dizajniranje kontrolera predmemorije. Zato sam sam dizajnirao keš kontroler od nule i uspješno ga testirao na FPGA. Ovdje sam predstavio jednostavan kontroler predmemorije s direktnim mapiranjem, kao i modelirao cijeli procesorsko-memorijski sistem za testiranje kontrolera predmemorije. Nadam se da će vam ovo uputstvo biti korisno kao referenca za dizajniranje vlastitih kontrolera predmemorije.
Korak 1: Specifikacije
Ovo su glavne specifikacije Cache Controllera koji ćemo dizajnirati:
- Direktno mapirano. (idite na ovu vezu ako tražite Associative Mapped Cache Controller)
- Jednoručni, predmemorija koja blokira.
- Politika pisanja na pogotke za pisanje.
- Politika alociranja bez pisanja ili pisanja oko propusta pisanja.
- Nema međumemorije za pisanje ili drugih optimizacija.
- Tag Array je ugrađen.
Osim toga, dizajnirat ćemo i keš memoriju i glavni memorijski sistem.
Zadane (konfigurabilne) specifikacije keš memorije:
- 256-bitna predmemorija s jednom bankom.
- 16 linija predmemorije, svaka linija predmemorije (blok) = 16 bajtova.
Specifikacije glavne memorije:
- Sinhrona memorija za čitanje/pisanje.
- Višebankarska isprepletena memorija - četiri memorijske banke.
- Svaka banka = 1 kB svaka. Dakle, ukupna veličina = 4 kB.
- Word (4 bajta) adresabilna memorija sa 10-bitnom sabirnicom adresa.
- Veća propusnost za čitanje. Širina podataka za čitanje = 16 bajtova u jednom ciklusu takta.
- Širina zapisa podataka = 4 bajta.
NAPOMENA: provjerite moju noviju upute ako tražite dizajn 4-smjernog asocijativnog upravljača predmemorije
Korak 2: RTL pogled na cijeli sistem
Kompletan RTL prikaz gornjeg modula prikazan je na slici (isključujući procesor). Zadane specifikacije za autobuse su:
- Sve sabirnice podataka su 32-bitne sabirnice.
- Adresna magistrala = 32-bitna sabirnica (ali memorija može adresirati samo 10 bita).
- Blok podataka = 128 bita (sabirnica širokog propusnog opsega za čitanje).
- Sve komponente pokreću isti sat.
Korak 3: Test okruženje
Top Modul je testiran pomoću Test Bench-a, koji jednostavno modelira procesor bez cjevovoda (jer dizajniranje cijelog procesora nije nimalo jednostavno !!). Testna ploča često generira zahtjeve za čitanje/pisanje podataka u memoriju. Ovo ismijava tipične upute "Učitaj" i "Spremi", uobičajene u svim programima koje izvodi procesor. Rezultati testa uspješno su potvrdili funkcionalnost Cache Controllera. Slijedi statistika testa:
- Svi propušteni i hitni signali za čitanje/pisanje pravilno su generirani.
- Sve operacije čitanja/pisanja podataka su bile uspješne.
- Nisu otkriveni problemi nekoherentnosti/nedosljednosti podataka.
- Dizajn je uspješno verificiran za Maxm. Takt Frekvencija rada = 110 MHz na Xilinx Virtex-4 ML-403 ploči (cijeli sistem), 195 MHz samo za Cache Controller.
- Za glavnu memoriju zaključeno je da su blokirani RAM -ovi. Svi ostali nizovi su implementirani na LUT -ovima.
Korak 4: Priložene datoteke
Sljedeći fajlovi su priloženi ovdje uz ovaj blog:
- . VHD datoteke Cache Controllera, Cache Data Array, Main Memory System.
- Test Bench.
- Dokumentacija o Cache Controller -u.
Napomene:
- Pregledajte dokumentaciju za potpuno razumijevanje ovdje prikazanih specifikacija Cache Controllera.
- Sve promjene u kodu ovise o drugim modulima. Dakle, promjene treba obaviti razumno. Obratite pažnju na sve komentare i zaglavlja koja sam dao.
- Ako iz bilo kojeg razloga za glavnu memoriju nije zaključeno blokiranje RAM -a, SMANJITE veličinu memorije, nakon čega slijede promjene širine sabirnice adresa po datotekama itd. Tako da se ista memorija može implementirati bilo na LUT -ovima bilo na distribuiranoj RAM -u. Ovo će uštedjeti vrijeme i resurse usmjeravanja. Ili idite na posebnu FPGA dokumentaciju i pronađite kompatibilan kod za Blokiranje RAM -a i prema tome uredite kôd te upotrijebite iste specifikacije širine sabirnice adresa. Ista tehnika za Altera FPGAs.
Preporučuje se:
Dizajn jednostavnog četvorosmjernog asocijativnog kontrolera predmemorije u VHDL-u: 4 koraka
Dizajn jednostavnog četvorosmjernog asocijativnog kontrolera predmemorije u VHDL-u: U mojim prethodnim uputama vidjeli smo kako dizajnirati jednostavan kontroler predmemorije s direktnim mapiranjem. Ovaj put idemo korak dalje. Dizajnirat ćemo jednostavan četverosmjerni set asocijativnih kontrolera predmemorije. Prednost? Manje propuštanja, ali po cijenu performanse
Dizajn programabilnog kontrolera prekida u VHDL -u: 4 koraka
Dizajn programabilnog kontrolera prekida u VHDL -u: Oduševljen sam vrstama odgovora koje dobivam na ovom blogu. Hvala momci što ste posjetili moj blog i motivirali me da podijelim svoje znanje s vama. Ovaj put ću predstaviti dizajn još jednog zanimljivog modula koji vidimo u svim SOC -ovima - Interrupt C
Dizajn I2C Master u VHDL -u: 5 koraka
Dizajn I2C Master -a u VHDL -u: U ovom uputstvu se raspravlja o dizajniranju jednostavnog I2C master -a u VHDL -u. NAPOMENA: kliknite na svaku sliku da biste vidjeli cijelu sliku
Dizajn jednostavnog VGA kontrolera u VHDL -u i Verilogu: 5 koraka
Dizajn jednostavnog VGA kontrolera u VHDL -u i Verilogu: U ovom uputstvu ćemo dizajnirati jednostavan VGA kontroler u RTL -u. VGA kontroler je digitalno kolo dizajnirano za pogon VGA ekrana. Čita iz Frame Buffer -a (VGA memorija) koji predstavlja okvir za prikaz i generira potrebno
Dizajn SPI Master -a u VHDL -u: 6 koraka
Dizajn SPI Master -a u VHDL -u: U ovom uputstvu, dizajnirat ćemo SPI Bus Master od nule u VHDL -u