Sadržaj:

Dizajn jednostavnog kontrolera predmemorije u VHDL -u: 4 koraka
Dizajn jednostavnog kontrolera predmemorije u VHDL -u: 4 koraka

Video: Dizajn jednostavnog kontrolera predmemorije u VHDL -u: 4 koraka

Video: Dizajn jednostavnog kontrolera predmemorije u VHDL -u: 4 koraka
Video: «Развлечение с музыкой и программированием», Коннор Харрис и Стивен Крюсон 2024, Jun
Anonim
Dizajn jednostavnog kontrolera predmemorije u VHDL -u
Dizajn jednostavnog kontrolera predmemorije u VHDL -u

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

Specifikacije
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

RTL pogled na cijeli sistem
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: