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.
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?
Generier dir mit dem Coregenerator einen passenden dual-Port ram siehe Anhang.
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.
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.
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.
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
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.
Tim S. schrieb: > Dann müsste man natürlich noch eine Art timeout einbauen, damit bei > nicht vollständiger übertragung auch wieder am Anfang hereingeschoben > wird. Nicht zwingend nötig. Start und Ende einer Transkation kann man beispielsweise auch über Slave Select signalisieren.
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.
:
Bearbeitet durch Moderator
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.