www.mikrocontroller.net

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


Autor: Max P. (atom-dragon) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Max P. (atom-dragon) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Und noch der Cache

Autor: Kest (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Max P. (atom-dragon) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.