Inhoudsopgave:

Ontwerp van een eenvoudige cachecontroller in VHDL - Ajarnpa
Ontwerp van een eenvoudige cachecontroller in VHDL - Ajarnpa

Video: Ontwerp van een eenvoudige cachecontroller in VHDL - Ajarnpa

Video: Ontwerp van een eenvoudige cachecontroller in VHDL - Ajarnpa
Video: Бесшумное zigbee реле в подрозетник без нулевой линии, особенности монтажа, установка конденсатора 2024, Juni-
Anonim
Ontwerp van een eenvoudige cachecontroller in VHDL
Ontwerp van een eenvoudige cachecontroller in VHDL

Ik schrijf dit instructable, omdat ik het een beetje moeilijk vond om wat VHDL-referentiecode te krijgen om te leren en te beginnen met het ontwerpen van een cachecontroller. Dus ontwierp ik zelf een cachecontroller en testte deze met succes op FPGA. Ik heb hier een eenvoudige direct toegewezen cachecontroller gepresenteerd en een volledig processorgeheugensysteem gemodelleerd om de cachecontroller te testen. Ik hoop dat jullie dit instructable nuttig vinden als een referentie om je eigen cachecontrollers te ontwerpen.

Stap 1: Specificaties:

Specificaties
Specificaties

Dit zijn de belangrijkste specificaties van de Cache Controller die we gaan ontwerpen:

  • Direct in kaart gebracht. (ga naar deze link als u op zoek bent naar Associative Mapped Cache Controller)
  • Single-Banked, blokkerende cache.
  • Doorschrijfbeleid voor het schrijven van hits.
  • No-Write toewijzings- of Write Around-beleid voor schrijfmissers.
  • Geen schrijfbuffer of andere optimalisaties.
  • Tag-array is opgenomen.

Daarnaast zullen we ook een cachegeheugen en een hoofdgeheugensysteem ontwerpen.

De standaard (configureerbare) specificaties van het cachegeheugen:

  • 256 bytes single-banked cache.
  • 16 cacheregels, elke cacheregel (blok) = 16 bytes.

De specificaties van het hoofdgeheugen:

  • Synchrone lees-/schrijfgeheugen.
  • Interleaved geheugen met meerdere banken - vier geheugenbanken.
  • Elke bankgrootte = 1 kB elk. Dus totale grootte = 4 kB.
  • Word (4 bytes) adresseerbaar geheugen met 10-bit adresbus.
  • Hogere bandbreedte voor lezen. Lees gegevensbreedte = 16 bytes in één klokcyclus.
  • Schrijfgegevensbreedte = 4 bytes.

OPMERKING: bekijk mijn nieuwere instructable als u op zoek bent naar een 4-weg associatief cachecontroller-ontwerp

Stap 2: RTL-weergave van het hele systeem

RTL-weergave van het hele systeem
RTL-weergave van het hele systeem

De volledige RTL-weergave van de Top Module is weergegeven in de afbeelding (exclusief de processor). Standaardspecificaties voor de bussen zijn:

  • Alle databussen zijn 32-bits bussen.
  • Adresbus = 32-bits bus (maar slechts 10 bits zijn hier adresseerbaar door het geheugen).
  • Datablok = 128 bits (Wide Bandwidth Bus for Read).
  • Alle componenten worden aangedreven door dezelfde klok.

Stap 3: Testomgeving

De Top Module is getest met behulp van een testbank, die simpelweg een niet-gepipelinede processor modelleert (omdat het ontwerpen van een volledige processor helemaal niet eenvoudig is !!). De testbank genereert regelmatig lees-/schrijfgegevensverzoeken naar het geheugen. Dit bespot typische "Load" en "Store" instructies, gebruikelijk in alle programma's die door een processor worden uitgevoerd. De testresultaten hebben de functionaliteit van de Cache Controller met succes geverifieerd. Hieronder volgen de waargenomen teststatistieken:

  • Alle Read/Write Miss- en Hit-signalen zijn correct gegenereerd.
  • Alle bewerkingen voor het lezen/schrijven van gegevens zijn gelukt.
  • Geen gegevensincoherentie/inconsistentieproblemen gedetecteerd.
  • Het ontwerp is met succes gecontroleerd op timing voor een Maxm. Klokfrequentie van werking = 110 MHz in Xilinx Virtex-4 ML-403 Board (hele systeem), 195 MHz voor alleen cachecontroller.
  • Blok-RAM's werden afgeleid voor het hoofdgeheugen. Alle andere arrays zijn geïmplementeerd op LUT's.

Stap 4: Bijgevoegde bestanden

De volgende bestanden zijn hier bij deze blog bijgevoegd:

  • . VHD-bestanden van Cache Controller, Cache Data Array, Main Memory System.
  • Testbank.
  • Documentatie op Cache Controller.

Opmerkingen:

  • Ga door de documentatie voor een volledig begrip van de specificaties van de Cache Controller die hier wordt gepresenteerd.
  • Alle wijzigingen in de code zijn afhankelijk van andere modules. De veranderingen moeten dus oordeelkundig worden gedaan. Besteed aandacht aan alle opmerkingen en headers die ik heb gegeven.
  • Als om welke reden dan ook blok-RAM's niet worden afgeleid voor het hoofdgeheugen, VERMINDER dan de grootte van het geheugen, gevolgd door wijzigingen in de adresbusbreedtes over de bestanden, enzovoort. Zodat hetzelfde geheugen kan worden geïmplementeerd op LUT's of gedistribueerd RAM. Dit bespaart de routeringstijd en middelen. Of ga naar de specifieke FPGA-documentatie en zoek de compatibele code voor Block RAM en bewerk de code dienovereenkomstig, en gebruik dezelfde adresbusbreedtespecificaties. Dezelfde techniek voor Altera FPGA's.

Aanbevolen: