Forum: FPGA, VHDL & Co. Xilinx: ändern von BlockRAMs im Bitstream (data2mem)


von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Hallo,

ich versuche gerade die BlockRAMs in einem Bitstream zu ändern, ohne das 
ganze Projekt neu zu synthetisieren:
http://www.mikrocontroller.net/articles/Diskussion:T51-Core

Das Laden der BlockRAMs funktioniert im Prinzip auch einwandfrei. Das 
Problem: zwischen dem Arrayinhalt auf dem das BlockRAM basiert und dem 
BlockRAM-Inhalt im Bitstream besteht kein erkennbarer Zusammenhang. Kann 
es sein dass ISE Daten- und Adressleitungen verwürfelt, um das Routing 
zu optimieren? Wie könnte man das verhindern? Oder gibt es andere 
Möglichkeiten das gewünschte zu erreichen?

Gruß
Andreas

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Nach genauerem Nachsehen im Floorplanner hat sich herausgestellt, dass 
die BRAMs genau andersherum zusammengesetzt sind, nämlich 2 Bit breit 
und 8192 tief statt wie von mir angenommen 8 Bit breit und 2048 tief. 
Macht eigentlich auch Sinn. Im Floorplanner habe ich die genaue 
Zuordnung gefunden und daraus die korrekte BMM-Datei gebastelt:
1
ADDRESS_BLOCK t51_inst_rom RAMB16 [0x0000:0x1FFF]
2
  BUS_BLOCK
3
    T51_inst/inst_Mram_mem3 [7:6];
4
    T51_inst/inst_Mram_mem2 [5:4];
5
    T51_inst/inst_Mram_mem1 [3:2];
6
    T51_inst/inst_Mram_mem [1:0];
7
  END_BUS_BLOCK;
8
END_ADDRESS_BLOCK;

Damit funktioniert nun alles, aber ich frage mich warum ISE diese Datei 
nicht gleich selbst erzeugen konnte...

von Frager (Gast)


Lesenswert?

Wo erkennt man hier die Daten?

von Rick Dangerus (Gast)


Lesenswert?

Ich habe mir nach diesem [1] Vorbild was für den AX8 gebaut. Der Weg 
geht dann von .hex und .eep über ein Pythonscript in eine .svf Datei. 
Dafür gibt es dann svf2xsvf und den xsvfplayer. Das läuft dann alles 
verscriptet/per makefile unter Unix.

Bekommt Dein T51 auch einen (automatischen) Reset nach der 
Neukonfiguration des BRAM?

Rick

[1] 
http://www.xilinx.com/xlnx/xweb/xil_tx_display.jsp?sTechX_ID=krs_blockRAM

von Thomas P. (pototschnig)


Lesenswert?

Geht das manuelle Ändern überhaupt? Soweit ich weiß besitzt der 
Bitstream CRC-Informationen, die vom FPGA überprüft werden bei der 
Konfiguration ...

Mfg
Thomas Pototschnig

von Falk B. (falk)


Lesenswert?

@ Thomas Pototschnig (pototschnig)

>Geht das manuelle Ändern überhaupt? Soweit ich weiß besitzt der

Nun, wenn "manuell" die Benutzung von data2mem darstellt, dann ja. 
Schliesslich kennt das Tool die Dateistruktur und berechnet die CRC neu.

MFG
Falk

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Ich hab mal alles hier aufgeschrieben:
http://www.mikrocontroller.net/articles/T51-Core#Xilinx_ISE:_Laden_des_ROMs_ohne_Neusynthese

Rick: der FPGA wird komplett neu konfiguriert, also auch resettet.

von Rick Dangerus (Gast)


Lesenswert?

@Andreas:

Aso. Du änderst quasi nur die Daten im Bitfile.
Mit meiner Methode wandern die Daten ins BRAM (oder wohin auch immer man 
will), und anschließend wird ein Reset ausgelöst. Das geht fixer als neu 
zu konfigurieren.

Rick

P.S.: Ich nutze noch den Parallelen-Port.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Das Nexys Board braucht fürs Konfigurieren des Spartan 3-1000 nur 5 
Sekunden, da lohnt sich eine aufwendigere Lösung nicht.

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.