Hallo Leute, ich habe den 8052 aus dem t51-Core von opencores.org auf meinen Spartan-3A-DSP 1800 mit Hilfe der Xilinx ISE 10.1 implementiert. Meine Programme schreibe ich mit SDCC und baue sie über die ISE mit dem BMM-MEM-File-Verfahren in den FPGA-Bitstream ein. Mein Testprogramm zur Ansteuerung eines LCDs und zur Kommunikation über RS-232 funktioniert auf dem FPGA-Board einwandfrei, solange ich mit den standardmäßg konfigurierten 8 kB ROM arbeite. Nun wollte ich das ROM auf die maximalen 64 kB erweitern, habe aber Probleme, mein Testprogramm zum laufen zu bringen. Mein BMM-File habe ich gemäß der DATA2MEM-Anleitung um 7 weitere Busblöcke erweitert und die Initialisierung und die Adressleitungen des ROMs angepasst. Laut Floorplaner wurden 32 ROM-Blöcke erzeugt und nach dem Einbinden des MEM-Files korrekt initialisiert, soweit ich das beurteilen kann. Nun stellt sich mir die Frage, wo der Fehler liegen könnte? Liegt es am Adressraum? Könnten Timing-Probleme eine Rolle spielen? Ist der Core standardmäßig gar nicht für mehr als 8 kB ROM geeignetß Das selbe Problem tritt übrigens auch bei 16 kB, 32 kB, etc. auf. Ich bin um jeden Tipp dankbar! Grüße, Alex
Gast
#1773929
Hallo, Der T51 Core ist auf jeden Fall NICHT auf 8k limitiert (hab schon öfters für diverse Projekte mehr Speicher benötigt). Der Fehler muss in Deinem bmm-File oder der von Dir geänderten Speicheranbindung liegen. Hast Du versucht Deine Änderungen zu simulieren ? Gruss, Andreas
Hallo Andreas,
nach mehreren Tests muss es wohl am bmm-File liegen.
Sobald ich mehr als eine Busblock-Reihe definiere, bekomme ich mein
Testprogramm nicht mehr zum laufen.
Für 32 kB ROM benutze ich folgendes bmm-File:
ADDRESS_SPACE T51_ROM_Xilinx RAMB16 [0x0000:0x7FFF]
BUS_BLOCK
rom/Mrom_D_rom00008 [7:7];
rom/Mrom_D_rom00007 [6:6];
rom/Mrom_D_rom00006 [5:5];
rom/Mrom_D_rom00005 [4:4];
rom/Mrom_D_rom00004 [3:3];
rom/Mrom_D_rom00003 [2:2];
rom/Mrom_D_rom00002 [1:1];
rom/Mrom_D_rom00001 [0:0];
END_BUS_BLOCK;
BUS_BLOCK
rom/Mrom_D_rom000016 [7:7];
rom/Mrom_D_rom000015 [6:6];
rom/Mrom_D_rom000014 [5:5];
rom/Mrom_D_rom000013 [4:4];
rom/Mrom_D_rom000012 [3:3];
rom/Mrom_D_rom000011 [2:2];
rom/Mrom_D_rom000010 [1:1];
rom/Mrom_D_rom00009 [0:0];
END_BUS_BLOCK;
END_ADDRESS_SPACE;
Die ROM-Blöcke sind alle im Floorplaner aufgeführt mit korrekter
Initialisierung.
Was könnte hier nicht stimmen?
Grüße,
Alex
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.