t51-Core/8052: ROM erweitern

OP #1772984
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
OP #1775928
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

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.