Forum: Projekte & Code [VHDL] Barrel Shifter und Cache


von Mike G. (atom-dragon) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hey

Habe gestern Abend für mich 2 kleine VHDL Sachen beschrieben, erstens 
einen Barrel Shifter den man ganz fix durch Generics einstellen kann und 
zweitens ein kleines Cache System.

Zu dem Barrel Shifter muss ich denke ich nichts sagen doch das Cache 
System erkläre ich mal kurz:

Eigentlich ist der Cache sehr einfach aufgebaut und belegt bei mir im 
Spartan 3 ca 180 Slices und je nach Einstellung auch BRAMs.

Das einzige was man noch schnell machen muss ist das interne FIFO an 
seine Ram Schnittstelle anzubinden.
Die macht man über den Ausgang CMD, er besteht aus den Daten die 
geschrieben werden sollen einem Bit was ausacht ob geschrieben oder 
gelesen werden soll und der Adresse, also so:

Daten + Bit + Adresse

Für das Lesen muss man die Daten an Data anlegen und NewData auf High 
ziehen.

Das Bit bedeutet wenn es Low ist das gelesen wird und wenn es High ist 
nat. das geschrieben wird.

So jetzt einmal kurz zu der Technik:

Wenn man in den Cache schreibt wird der Eintrag mit einem Teil der 
Adresse assoziiert und der Rest der Adresse + die Daten in den Cache 
geschrieben.
Gleichzeitig wird genau das selbe in den FIFO geschrieben aus dem Ja der 
Ram gefüttert wird.

Das heißt dass, das FIFO als Warteschlange fungiert, falls der FIFO voll 
ist wird solange gewartet bis ein Eintrag Frei ist.

Dadurch wir der Ram immer Aktuell gehalten und durch die FIFO Struktur 
gibt es auch keine Probleme von wegen das der Cache nicht aktuell ist.

Beim Lesen ist es dann so, das falls der Eintrag vorhanden ist er aus 
dem Cache gelesen wird und sonst über das FIFO angefordert wird.

Solange der Cache arbeitet ist übrigens Bussy High.

Bei Fragen könnt ihr einfach hier Fragen!

mfg-AD

PS: Hänge den Cache im nächsten Beitrag an.

von Mike G. (atom-dragon) Benutzerseite


Angehängte Dateien:

Lesenswert?

Und noch der Cache

von Kest (Gast)


Lesenswert?

Hi Maximilian,

versuche
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

Bibliotheken zu vermeiden. Stattdessen besser

use ieee.numeric_std.all;

verwenden.

Grüße,
Kest

von Mike G. (atom-dragon) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hey

Ja habe ich ganz vergessen ^^

Eig. benutze ich die Lib schon die ganze Zeit doch wenn man das am 
Anfang vergisst dann denkt man da später nicht mehr dran ^^
Kann man bei Xilinx iwie das Standard Template ändern ?

Hier einmal Cache auf die Numeric Std. Lib umgebaut ^^

mfg-AD

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.