Forum: FPGA, VHDL & Co. t51-Core/8052: ROM erweitern


von Alex S. (djlxs)


Lesenswert?

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

von Andi (Gast)


Lesenswert?

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

von Alex S. (djlxs)


Lesenswert?

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

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.