Gast
#880032
Hallo, Ich habe hier auf einem Virtex-II (XUP) einen Microblaze laufen, der auch soweit funktioniert. Ebenso habe ich bereits über Xilinx EDK einen IP-Block eingebunden der mir fest generierte (im VHDL-Code vorgegeben) Ausgaben liefert - funktioniert auch tadellos. Probleme habe ich allerdings bei der Übergabe von Daten aus dem C-Programm. Der IP-Block (regtest) ist die einfachste Variante (ohne MIR, FIFOs, DMA etc.) als Slave und soll schlichtweg die aufgenommenen Daten speichern und auf Wunsch wieder ausgeben. Hierzu habe ich eine FSM mit drei States implementiert: Idle, Lesen, Schreiben. Der Code dazu findet sich im Anhang. Funktioniert im ModelSim als ISE-Projekt ohne Probleme. Der C-Code für den Microblaze sieht so aus:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
Es soll also einfach "123" an den IP-Block geschrieben werden, der entsprechend speichert und beim Read-Request das gleiche wieder zurückgibt. Das ganze läuft über RS232. Als Ergebnis bekomme ich aber leider nur 0 zurück. Der FSM würde ich einfach mal unterstellen, dass sie korrekt ist - liegt das Problem am C-Code? Wäre um jede Hilfe sehr dankbar! Grüße, Patrick