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
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...
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
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
@ 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
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.
@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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.