Sadržaj:

Dizajn jednostavnog upravljača predmemorijom u VHDL -u: 4 koraka
Dizajn jednostavnog upravljača predmemorijom u VHDL -u: 4 koraka

Video: Dizajn jednostavnog upravljača predmemorijom u VHDL -u: 4 koraka

Video: Dizajn jednostavnog upravljača predmemorijom u VHDL -u: 4 koraka
Video: ТЕПЕРЬ НЕ ПРОПАДУ 10-ть самоделок ВЫРУЧАТ ГДЕ УГОДНО! 2024, Lipanj
Anonim
Dizajn jednostavnog upravljača predmemorijom u VHDL -u
Dizajn jednostavnog upravljača predmemorijom u VHDL -u

Pišem ovo uputstvo jer mi je bilo malo teško nabaviti neki referentni VHDL kôd za naučiti i početi dizajnirati kontroler predmemorije. Stoga sam sam dizajnirao predmemorijski kontroler od nule i uspješno ga testirao na FPGA. Ovdje sam predstavio jednostavan kontroler predmemorije s izravnim preslikavanjem, kao i modelirao cijeli procesorsko-memorijski sustav za testiranje kontrolera predmemorije. Nadam se da će vam ovo uputstvo biti korisno kao referenca za dizajniranje vlastitih kontrolera predmemorije.

Korak 1: Specifikacije

Tehnički podaci
Tehnički podaci

Ovo su glavne specifikacije Cache Controllera koji ćemo dizajnirati:

  • Izravno preslikano. (idite na ovu vezu ako tražite Associative Mapped Cache Controller)
  • Jednostruka banka, predmemorija koja blokira.
  • Politika pisanja kroz pogotke zapisivanja.
  • Politika dodjeljivanja zabranjenog pisanja ili pisanje oko pogrešaka pri pisanju.
  • Nema međuspremnika za pisanje ili drugih optimizacija.
  • Niz oznaka je uključen.

Osim toga, dizajnirat ćemo i predmemoriju i glavni memorijski sustav.

Zadane (konfigurabilne) specifikacije predmemorije:

  • 256-bitna predmemorija s jednom bankom.
  • 16 linija predmemorije, svaka linija predmemorije (blok) = 16 bajtova.

Specifikacije glavne memorije:

  • Sinhrona memorija za čitanje/pisanje.
  • Više bankovna isprepletena memorija - četiri memorijske banke.
  • Svaka banka = 1 kB svaka. Dakle, ukupna veličina = 4 kB.
  • Word (4 bajta) adresabilna memorija s 10-bitnom sabirnicom adresa.
  • Veća propusnost za čitanje. Očitajte širinu podataka = 16 bajtova u jednom ciklusu takta.
  • Širina zapisa podataka = 4 bajta.

NAPOMENA: provjerite moju noviju uputu ako tražite dizajn 4-smjernog asocijativnog upravljača predmemorije

Korak 2: RTL pogled na cijeli sustav

RTL Pogled na cijeli sustav
RTL Pogled na cijeli sustav

Cjeloviti RTL prikaz gornjeg modula prikazan je na slici (isključujući procesor). Zadane specifikacije za autobuse su:

  • Svi podatkovni sabirnici su 32-bitni sabirnici.
  • Adresna sabirnica = 32-bitna sabirnica (ali memorija može adresirati samo 10 bita).
  • Blok podataka = 128 bita (sabirnica široke propusnosti za čitanje).
  • Sve komponente pokreću isti sat.

Korak 3: Ispitno okruženje

Vrhunski modul testiran je pomoću Test Bencha, koji jednostavno modelira procesor bez cjevovoda (jer projektiranje 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 ispitivanja uspješno su potvrdili funkcionalnost Cache Controllera. Slijedi statistika ispitivanja:

  • Svi signali propuštanja i pisanja čitanja/pisanja ispravno su generirani.
  • Sve operacije čitanja/pisanja podataka bile su uspješne.
  • Nisu otkriveni problemi nekoherentnosti/nedosljednosti podataka.
  • Dizajn je uspješno provjerio vrijeme za Maxm. Sat Frekvencija rada = 110 MHz na Xilinx Virtex-4 ML-403 ploči (cijeli sustav), 195 MHz samo za Cache Controller.
  • Za glavnu memoriju zaključeno je da su blokirani RAM -ovi. Svi ostali nizovi implementirani su na LUT -ovima.

Korak 4: Priložene datoteke

Sljedeće datoteke su priložene ovdje uz ovaj blog:

  • . VHD datoteke Cache Controllera, Cache Data Array, Main Memory System.
  • Testna klupa.
  • Dokumentacija o Cache Controller -u.

Bilješke:

  • 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 se iz bilo kojeg razloga ne blokiraju RAM -ovi za glavnu memoriju, 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 ili distribuiranoj RAM -u. Time ćete uštedjeti vrijeme i resurse usmjeravanja. Ili idite na posebnu dokumentaciju o FPGA -i 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čeni: