Schieberegister als BRAM

Gast #6961774
Lesenswert?

Ich brauche mal euren rat wie man folgendes am besten in VHDL in einem 
Spartan 6 umsetzt. Ich brauche ein RAM, welches in per Adresse auslesen 
kann aber wie ein Schieberegister beschreiben kann. Hintergrund ist eine 
Lookup Table, die ich per Mikroprozessor zur Laufzeit immer mal wieder 
verändern möchte und per SPI einen Datenstrom in den FPGA gebe, der mir 
dieses Schieberegister beschreiben soll. SPI kommt mir da sehr einfach 
vor. Hat natürlich dann keine Bitfehlererkennung aber das ist erstmal 
egal.
Gast #6961782
Lesenswert?

Dann beschreibe es doch ebenfalls über Adressen. Also klar du schickst 
über SPI die Daten aber die landen dann nacheinander an aufsteigenden 
Adressen. Ich sehe da keinen Grund wieso das ein Schieberegister seien 
muss. Willst du nur Teile der LUT neu updaten über SPI?
Gast #6961796
Lesenswert?

Gustl schrieb:
> Dann beschreibe es doch ebenfalls über Adressen. Also klar du
> schickst
> über SPI die Daten aber die landen dann nacheinander an aufsteigenden
> Adressen. Ich sehe da keinen Grund wieso das ein Schieberegister seien
> muss. Willst du nur Teile der LUT neu updaten über SPI?

Nein ich möchte das ganze LUT updaten in einem Durchgang, aber beliebig 
lesen. Deswegen die Idee mit dem Schieberegister. Alternativ könnte ich 
natürlich per SPI auch Adresse und Daten mitsenden.
Gast #6961887
Lesenswert?

Samuel C. schrieb:
> Tim S. schrieb:
>> Alternativ könnte ich natürlich per SPI auch Adresse und Daten mitsenden.
>
> Entweder das, dann bist du flexibler. Oder du fängst einfach am Anfang
> der Übertragung bei Adresse 0 an und zählst mit jedem Wort hoch.

Dann müsste man natürlich noch eine Art timeout einbauen, damit bei 
nicht vollständiger übertragung auch wieder am Anfang hereingeschoben 
wird.
Gast #6962011
Lesenswert?

Das soll also genauso wie ein SPI Flash funktionieren, aber eben nicht 
als Flash Speicher, sondern als RAM.
Die gibt es doch mit SPI Interface.
Warum implementierst du das nicht direkt so?
In den Datenblättern der Speicher steht alles drin, wie das funktionert.

Oder übersehe ich da was?

Grüße, Jens
Gast #6962055
Lesenswert?

Jens schrieb:
> Das soll also genauso wie ein SPI Flash funktionieren, aber eben
> nicht
> als Flash Speicher, sondern als RAM.
> Die gibt es doch mit SPI Interface.
> Warum implementierst du das nicht direkt so?
> In den Datenblättern der Speicher steht alles drin, wie das funktionert.
>
> Oder übersehe ich da was?
>
> Grüße, Jens

Weil ich das im FPGA haben will und nicht als Extra IC auf der Platine, 
die wirklich voll ist.
Moderator (Firma: Titel) Persönliche Seite #6962772
Lesenswert?

Tim S. schrieb:
> Dann müsste man natürlich noch eine Art timeout einbauen
Lass mich raten: du machst sonst eher Software?

Beim SPI gehört der Slaveselect SS# zum Bus und zeigt mit seiner 
fallenden Flanke an, wann eine Übertragung beginnt.

Und so ein DPRAM zwischen SPI und dem Rest-FPGA bringt auch den Vorteil, 
dass man auf der SPI-Seite eine SCLK-Taktdomäne aufmachen kann und im 
Rest-FPGA ein beliebig anders getaktetes Design haben kann.
Gast #6963344
Lesenswert?

Hallo Tim,

ich sprach nicht von einem externen Chip.
Dass du da nichts extra drauf bauen willst ist mir schon klar.
Ich meinte:
Es gibt SPI Flash Chips. Da ist alles beschrieben wie die funktionieren.
Das bildest du im FPGA nach (also das SPI Interface und den Zugriff auf 
die einzelnen Speicherzellen) und anstatt in eine Flash Zelle zu 
schreiben, schreibst du eben in dein internes RAM.

Das sollte doch alle deine Probleme lösen.
Du brauchst dir dann keine Gedanken machen, das Rad neu zu erfinden.

Grüße, Jens

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren