Forum: FPGA, VHDL & Co. AXI auf Zynq7000 über C in SDK ansprechen


von Michi (Gast)


Lesenswert?

Hallo zusammen,

ich versuche mich gerade daran, diverse Beispiele auf dem Zedboard 
nachzubauen.
Grade bin ich dabei meinen eigenen Hardware-Multiplizierer (32-bit) über 
den AXI anzusprechen. Das VHDL-Design ist korrekt simuliert und gewrappt 
(Vivavdo). Wenn ich nun versuche in SDK die Register meines IP-Cores zu 
lesen/schreiben passiert einfach nichts mehr. Im Debugging Mode sowie im 
Run Mode, beide Male wird das Programm einfach abgebrochen.

ps7_init.tcl wird ordnungsgemäß ausgeführt und auch xil_printf() 
funktioniert, das bedeuted der Zynq läuft schonmal.

Für das Lesen und Schreiben habe ich die vordefinierten Defines benutzt 
die mir Vivado im Wrapper geliefert hat (in meinem Fall: 
AXI_HW_MULTIPLIER_mWriteReg/ AXI_HW_MULTIPLIER_mReadReg).

Hatte jemand von euch schonmal dieses Problem und weiß wie man es 
behebt?

So etwas grundlegendes kann ja eigenlich nicht so schwer sein...


Grüße,

Michi

von Simon L. (dfgh)


Lesenswert?

Bei mir funktioniert das automatische Übernehmen der Adressen nicht.

Prüfe mal die ???_BASEADDR und ???_HIGHADDR Defines.

Bei mir war BASEADDR immer nur 0xFFFFFFFF. Ich habe die entsprechenden 
Defines dann manuell gemacht.

von Timmo H. (masterfx)


Lesenswert?

gucke auch mal dass in der xparameters.h die Adressen nach deinem Design 
entsprechend aktualisiert wurden. Habe es schon öfeter gehabt, dass man 
manuell nochmal einen refresh vom FSBL, BSP etc machen muss.
Deine Hardware hast du denke ich ja vorher aus Vivado heraus exportiert 
nehme ich mal an?!

: Bearbeitet durch User
von Michi (Gast)


Lesenswert?

Hallo,

habe nach langen rumprobieren das Problem gelöst.

Adressen waren alle richig.

Ich musste allerdings zusätzlich zum ps7_init Skript in den 
Run/Debug-Einstellungen das Häkchen bei Post-Init-Config machen.

Jetzt funktionert alles einwandfrei.


Danke für eure Hilfe :)

Grüße,
Michi

von Weltbester FPGA-Pongo (Gast)


Lesenswert?

Das muss man sich echt mal zu Gemüte führen: Schnelle 
FPGA-Multiplizierer, die 500 MHz packen, werden über C und AXI 
angesprochen. Der Wahnsinn, wie man im Frankenland sagt.

von Dipl.-Ing. (Gast)


Lesenswert?

@Weltbester FPGA-Pongo
Sicherlich ist das nur der erste schritt in der Iteration.
Es ist eine wirklich feine Sache über einen einfachen Linux Treiber z.B. 
um einen Axi-Fifo abzufragen der von einem Multipliziere/ADC oder 
sonstwas gefüttert wird um per RTP/UDP die Daten wgezuschaufeln. Um das 
in Hardware zu gießen ist viel mehr Aufwand notwendig.
Gerade das finde ich am Zynq so genial... viel Rechenleistung mit Linux 
(welches mir TCP/IP etc. zur Verfügung stellt) und einfach alles über 
standardisierte Schnittstellen ohne viel CPU-Last wegschaufelt. Früher 
musste man für die "Software Sachen" noch einen langsamen MicroBlaze ins 
FPGA knallen. Da ist der A9 und um einiges besser.

von Michael W. (Gast)


Lesenswert?

Für sowas gab es aber schon vor einer Dekade die Power-PCs.

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.