Forum: FPGA, VHDL & Co. Microblaze Ram Problem - Ilmb Dlmb


von Tobi (Gast)


Lesenswert?

Hi zusammen

ich hab ein kleines Problem.

Wenn ich ein C programm in meinen microblaze brenne indem irgendwo
1
unsigned short  myarray[2048];

steht laeuft es fehlerfrei.

Aendere ich das auf
1
unsigend short myarray[4096]

laeuft es nicht mehr. Allerdings spuckt der compiler keinerlei 
Fehlermeldung aus und tut so als waere alles in Ordnung.

Ich kann das gleiche Problem hervorrufen wenn ich mein Main Programm 
aufblase also irgendwie mehr code reinpacke - dann laeuft es auch mit 
2048 nicht mehr.

Ich vermute das meine Daten meine Instructions ueberlagern und somit 
das Programm von den Daten ueberschrieben wird und nix mehr geht.
Waere auch logisch weil die 2 sich einen BRAM block teilen. (hab den uB 
mit dem Wizard generiert).

Wenn ich nun einen 2. BRAM block einfuege und ilmb und dlmb je einen 
eigenen zuweise geht nicht mal mehr die 2048 Variante die vorher lief.

Was mich auch wundert - laut EDK ist der BRAM block 2kB gross. Wenn sich 
die beiden den BRAM bei ersterem Teilen duerfte ja nicht mal die 2048 
variante laufen da die ja alleine schon 4 kB des RAMs frisst.

Irgendwer eine idee wo es da klemmt? Kann es sein das die Daten im ilmb 
abgelegt werden aus Versehen? Muss ich die speziell deklarieren wenn ich 
die im dlmb haben will oder tut es das mit "unsigend short"?

Fuer Hilfe Dankbar

 Tobi

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Alle Variablen sind im Data Memmory alles Programm im Instruction 
Memmory.. da muß man nix spezieles machen.
Wenn sich allerdings beide Bereiche überlagern gibt es Probleme.
Was sagt den der Compiler zur Speicherauslastung? Gff hast du auch ein 
Stackproblem. Du könntest auch das Blockram mal größer machen maximal 
größe ist glaub ich 64kb im EDK

von tobi (Gast)


Lesenswert?

Hi

ich habs gefunden. Ich hab 16kb fuer dlmb und ilmb angesetzt allerdings 
brauchen die beiden knapp 17 zusammen. Wenn ich nun runteroptimiere 
passt es wieder. Seltsamerweise meckert der compiler da nicht.

Es ist bisschen doof das das ding 24kb (Spartan 3 XC3S200) hat aber man 
nur 8 bzw 16 auswaehlen kann.

Wenn ich versuche ilmb und dlmb an verschiedene Rams anzuschliessen 
knallt es spaeter weil die startadressen dann zu weit von 0x00 wegliegen 
aber der addressgenerator sich auch nicht davon abbringen laesst das zo 
zu machen.

von Göran Bilski (Gast)


Lesenswert?

Hi,

Entschuldigung aber mein deutsch ist schrecklich.
Sie können zwei bram block genutzen, 16kb uns 8kb.
LMB bus kannt viele "LMB bram controller" gehabt.

Gruß,
Göran Bilski

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.