Inhoudsopgave:
- Stap 1: Specificaties:
- Stap 2: RTL-weergave van het hele systeem
- Stap 3: Testomgeving
- Stap 4: Bijgevoegde bestanden
Video: Ontwerp van een eenvoudige cachecontroller in VHDL - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
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:
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
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:
Game-saves kopiëren naar een MU van Microsoft of een derde partij op een eenvoudige manier: 9 stappen
Game Saves kopiëren naar een Microsoft of 3rd Party MU op de GEMAKKELIJKE MANIER .: Originele tutorial HIER Er zijn tal van Softmod-tutorials die er zijn en ze zijn allemaal goed, maar het is lastig om de opslagbestanden op de Xbox HDD te krijgen, ik heb een leven gemaakt cd die het eenvoudig maakt om dat te doen. Dit is geen complete softmod-tutorial, dit
Ontwerp van UART in VHDL: 5 stappen
Ontwerp van UART in VHDL: UART staat voor Universal Asynchronous Receiver Transmitter. Het is het meest populaire en eenvoudigste seriële communicatieprotocol. In deze instructable leert u hoe u een UART-module in VHDL ontwerpt
Een eenvoudige EPUB maken van een reeks afbeeldingen: 13 stappen
Maak een eenvoudige EPUB van een reeks afbeeldingen: dit is geen technisch project. Ik ga niet zeuren over wat een EPUB is en wat een EPUB niet is. Ik ga je niet vertellen hoe het verschilt van andere bestandsformaten. Een EPUB is een supercool formaat dat voor veel, veel meer kan worden gebruikt dan alleen publi
Ontwerp van een High Power PDB (Power Distribution Board) voor een Pixhawk: 5 stappen
Ontwerp van een High Power PDB (Power Distribution Board) voor een Pixhawk: een PCB om ze allemaal van stroom te voorzien! Momenteel zijn de meeste materialen die je nodig hebt om een drone te bouwen goedkoop verkrijgbaar op internet, dus het idee om een zelfontwikkelde PCB te maken is het helemaal niet waard, behalve een paar gevallen waarin je een rare en
Een batterijpakket van 4,5 volt maken van een batterij van 9 V: 4 stappen
Een 4,5 volt batterijpakket maken van een 9V-batterij: deze instructie gaat helemaal over het splitsen van een 9V-batterij in 2 kleinere 4,5V-batterijpakketten. De belangrijkste reden om dit te doen is 1. Je wilt 4,5 volt 2. Je wilt fysiek iets kleiners dan een 9V batterij