Forum: FPGA, VHDL & Co. XADC mit AXI


von Gustl B. (-gb-)


Lesenswert?

Hallo zusammen, hat hier schon Jemand den XADC mit AXI am Laufen? Also 
ich kann Register lesen aber der konvertiert nichts, also auch wenn ich 
im Event Mode die Konvertierung manuell anstoße. Mit dem DRP 
funktioniert alles super.

AXI Stream habe ich auch probiert aber da kommen einfach keine Daten 
raus ...

Edit:
Also wenn ich convst_in egal wann auf '1' setze egal für wie lange, dann 
geht busy_out auch auf '1' und bleibt da beliebig lange.

Edit2:
Fehler gefunden, aber ich weiß nicht wie ich den beheben kann:
1
Warning: *** Warning: The analog data file for XADC was not found. Use the SIM_MONITOR_FILE generic to specify the input analog data file name or use default name: design.txt.

Steht irgendwo wo diese Datei "design.txt" liegen muss relativ zu 
welcher anderen Datei? Bei mir existiert nämlich diese design.txt im IP 
Core Ordner.

: Bearbeitet durch User
von Christian R. (supachris)


Lesenswert?

Das File ist nur für die Simulation, da kannst du Werte reinschreiben, 
die die analogen Eingänge darstellen. In welchem Format steht im User 
Guide.

von Gustl B. (-gb-)


Lesenswert?

Ja das Format ist mir bekannt und der Coregen generiert ja auch die 
Datei mit Werten, aber bei der Simulation wird die Datei nicht gefunden 
obwohl sie im IP Ordner liegt.

Edit:

Es gibt da zwei generics:

SIM_FILE_REL_PATH und SIM_FILE_SEL

1. Sim_File_Rel_Path parameter is relative to the directory where Vivado 
example
design is evoked.
2. Sim_File_Name parameter must not include any file extensions (such as 
.txt or csv).

Jetzt liegt mein Projekt in
D:\vhdl\Elektronik_FPGA\pxx_xadc_axi\

und die design.txt liegt in
D:\vhdl\Elektronik_FPGA\pxx_xadc_axi\pxx_xadc_axi.srcs\sources_1\ip\xadc 
_wiz_0\

Also ist der Relative Pfad SIM_FILE_REL_PATH:
.\pxx_xadc_axi.srcs\sources_1\ip\xadc_wiz_0\

Und SIM_FILE_SEL:
design

Aber: Die Fehlermeldung bleibt die gleiche ...

Edit:

Jetzt habe ich den Pfad sogar direkt angegeben in der xadc_wiz_0.vhd und 
nicht nur im Coregen eingegeben.
1
C_SIM_MONITOR_FILE      => "D:/vhdl/Elektronik_FPGA/pxx_xadc_axi/pxx_xadc_axi.srcs/sources_1/ip/xadc_wiz_0/design.txt"
Aber das wird immer noch nicht gefunden.

: Bearbeitet durch User
von Gustl B. (-gb-)


Angehängte Dateien:

Lesenswert?

Irgendwie ist das alles sehr verwirrend. Ich habe das Projekt wie im 
Bild im Anhang.

Pfad zum XADC IP ist
1
D:/vhdl/Elektronik_FPGA/pxx_xadc_axi/pxx_xadc_axi.srcs/sources_1/ip/xadc_wiz_0/

Jetzt gibt es da eine xadc_wiz_0.vho Datei und auch eine xadc_wiz_0.vhd 
Datei. Die beiden Dateien haben eine Port Beschreibung, aber die ist 
nicht identisch, sondern unterscheidet sich durch die Reihenfolge der 
Ports.

Welche soll man ins Top VHDL einbauen?

: Bearbeitet durch User
von Gustl B. (-gb-)


Lesenswert?

Das ist alles noch viel schlimmer:

Ich hatte ja ein altes XADC Projekt mit DRP, das hat auch gut 
funktioniert bisher (in der Simulation), aber jetzt wollte ich das 
nochmal angucken und ... das neuere VIVADO hat das also aktualisiert. 
Siehe da, jetzt wird auch da diese Wertedatei zur Simulation nichtmehr 
gefunden.

Das Projekt liegt hier:
https://gus.tl/fpga/nexys4_xadc_minimal.zip

Was mich dabei wundert:
Früher stand in der xadc_wiz_0.vhd folgendes:

SIM_MONITOR_FILE => "design.txt"

Und jetzt steht da

C_SIM_MONITOR_FILE => "design.txt"

Der vollständige Fehler lautet:
1
Warning: *** Warning: The analog data file for XADC was not found. Use the SIM_MONITOR_FILE generic to specify the input analog data file name or use default name: design.txt. 
2
Time: 0 ps  Iteration: 0  Process: /nexys4_xadc_minimal_bench/xadc0/xadc/U0/READFILE_P  File: /wrk/2016.3/continuous/2016_10_10_1682563/data/vhdl/src/unisims/primitive/XADC.vhd

von Gustl B. (-gb-)


Lesenswert?

Diese Hilfe hier hilft mir leider auch nicht:
https://forums.xilinx.com/t5/Simulation-and-Verification/XADC-simulation-file-locatoin/td-p/679540

Und zwar weil es bei mir kein SIM_MONITOR_FILE gibt sondern nur ein 
C_SIM_MONITOR_FILE und selbst wenn ich da den kompletten Pfad zur Datei 
angebe wird die nicht gefunden. Man ist das alles kaputt oder ich 
unfassbar dumm.

Edit:

Das oben verlinkte Minimalbeispiel mit Simulation funktioniert jetzt 
auch unter VIVADO 2016.4. Das ist mit DRP und nicht mit AXI.

Man kann da SIM_MONITOR_FILE einstellen und es funktioniert nur, wenn 
ich den vollen Pfad angebe.
1
SIM_MONITOR_FILE => "D:\vhdl\nexys4_xadc_minimal\nexys4_xadc_minimal.srcs\sources_1\ip\xadc_wiz_0\design.txt"

Was nicht funktioniert ist:
1
SIM_MONITOR_FILE => "design.txt"
1
SIM_MONITOR_FILE => ".\design.txt"
1
SIM_MONITOR_FILE => ".\nexys4_xadc_minimal.srcs\sources_1\ip\xadc_wiz_0\design.txt"

Ausserdem habe ich das auch nicht mit AXI am laufen, da kommt immer der 
bekannte Fehler. Denn sobald ich das mit AXI im Coregen bauen lasse, 
gibt es den SIM_MONITOR_FILE nichtmehr im xadc_wiz_0.vhd sondern nurnoch 
den C_SIM_MONITOR_FILE.

Edit:
Zu C_SIM_MONITOR_FILE findet man fast nichts. Also nicht ob das ein Pfad 
ist, nur ein Dateiname, oder wo die Datei liegen muss.

: Bearbeitet durch User
von Rudolph (Gast)


Lesenswert?

Die Stimulus-Datei muss dort liegen, von wo die Simulation gestartet 
wird. Das ist bei einer normalen Verhaltensimulation hier:
\project\project.sim\sim_1\behav
Von dort aus kann man mit "..\" zu einem sinnvollen Verzeichnis 
navigieren.

Ich hab' den XADC nur direkt instanziiert, zu generierten Cores kann ich 
nichts sagen, würde aber vermuten, dass es dort ähnlich ist.

von Gustl B. (-gb-)


Lesenswert?

Vielen Dank, aber das hat nicht geholfen.

Die design.txt liegt jetzt hier, also

D:\vhdl\Elektronik_FPGA\pxx_xadc_axi\pxx_xadc_axi.sim\sim_1\behav\design 
.txt

und in der Datei

D:\vhdl\Elektronik_FPGA\pxx_xadc_axi\pxx_xadc_axi.srcs\sources_1\ip\xadc 
_wiz_0\xadc_wiz_0.vhd

steht

C_SIM_MONITOR_FILE      => "design.txt"

Fehler ist wie zuvor. Verwendest Du auch
C_SIM_MONITOR_FILE oder SIM_MONITOR_FILE ?

Wenn ich den XADC mit AXI generieren lasse bekomme ich immer nur das 
C_SIM_MONITOR_FILE.

von Rudolph (Gast)


Lesenswert?

Ich hab' mal kurz ein Example generiert. C_SIM_MONITOR_FILE zeigt auf 
gar nichts, es geht in zwar in xadc_wiz_0_xadc_core_drp.vhd rein, wird 
dort aber nicht benutzt. Der XADC wird dann mit
 SIM_MONITOR_FILE => "design.txt"
eingebunden.

Es würde dann also \dein_projekt\dein_projekt.sim\sim_1\behav\design.txt 
gesucht werden, egal was in C_SIM_MONITOR_FILE steht.

Denke übrigens daran, dass das 
\dein_projekt\dein_projekt.sim\sim_1\behav jedemal bei Start seiner 
Simulation gelöscht wird, wenn die "Clean up simulation files" Option 
gesetzt ist. Schau also mal nach, ob Deine design.txt überhaupt noch da 
ist...

von Gustl B. (-gb-)


Lesenswert?

Hm, das ist alles komisch.

In meinem funktionierenden Projekt mit DRP liegt die design.txt nur in

D:\vhdl\nexys4_xadc_minimal\nexys4_xadc_minimal.srcs\sources_1\ip\xadc_w 
iz_0

und wird gefunden. Da gibt es auch den SIM_MONITOR_FILE wo man einen 
Pfad angeben kann.

Wenn ich das identisch baue, aber statt DRP AXI verwenden möchte, dann 
wird die Datei nichtmehr gefunden und es gibt auch kein SIM_MONITOR_FILE 
Parameter sondern C_SIM_MONITOR_FILE.

Hast Du DRP oder AXI verwendet? Mich würde interessieren wenn Jemand 
eine Simulation vom XADC mit AXI unter einem VIVADO 2016.x ans Laufen 
bekommt.

Edit:

Vielen Dank!

\dein_projekt\dein_projekt.sim\sim_1\behav\design.txt

Ist tatsächlich der richtige Ort. Was noch unklar ist:
- Wieso gibt es da einen Unterschied wenn man AXI statt DRP verwendet?
- Wenn man AXI Verwendet, wo kann man einstellen wo design.txt liegt?
(damit ich das nicht für jede Simulation da neu reinkopieren muss)

Danke!

Edit:

Wenn ich über Coregen den XADC generieren lasse werden folgende Befehle 
ausgeführt:
1
set_property -dict [list CONFIG.SIM_FILE_SEL {Relative_path} CONFIG.SIM_FILE_REL_PATH {./pxx_xadc_axi.srcs/sources_1/}] [get_ips xadc_wiz_0]
2
generate_target all [get_files  D:/vhdl/Elektronik_FPGA/pxx_xadc_axi/pxx_xadc_axi.srcs/sources_1/ip/xadc_wiz_0/xadc_wiz_0.xci]

Man kann also diesen Pfad setzen. Ich finde nur nicht wo der Startpunkt 
ist.

Wenn das der hier ist
D:\vhdl\Elektronik_FPGA\pxx_xadc_axi\pxx_xadc_axi.sim\sim_1\behav

und ich die Datei
D:\vhdl\Elektronik_FPGA\pxx_xadc_axi\pxx_xadc_axi.srcs\sources_1\design. 
txt

verwenden will müsste das relativ doch so aussehen:
../../../pxx_xadc_axi.srcs/sources_1/

aber wenn ich den Befehl dann so eintippe
1
set_property -dict [list CONFIG.SIM_FILE_SEL {Relative_path} CONFIG.SIM_FILE_REL_PATH {../../../pxx_xadc_axi.srcs/sources_1/}] [get_ips xadc_wiz_0]

Kommen folgende Meldungen:
1
ERROR: [IP_Flow 19-3460] Validation failed on parameter 'Sim File Location(SIM_FILE_REL_PATH)' for Directory not found. Please provide valid file path
2
. IP 'xadc_wiz_0'
3
INFO: [IP_Flow 19-3438] Customization errors found on 'xadc_wiz_0'. Restoring to previous valid configuration.
4
INFO: [Common 17-17] undo 'set_property -dict [list CONFIG.SIM_FILE_SEL {Relative_path} CONFIG.SIM_FILE_REL_PATH {../../../pxx_xadc_axi.srcs/sources_1/}] [get_ips xadc_wiz_0]'
5
ERROR: [Common 17-39] 'set_property' failed due to earlier errors.

Irgendwie ist das auch schlecht dokumentiert.

: Bearbeitet durch User
von Gustl B. (-gb-)


Lesenswert?

Und es geht weiter:

Liegt die design.txt unter

D:\vhdl\Elektronik_FPGA\pxx_xadc_axi\pxx_xadc_axi.srcs\sources_1

dann bringt der folgende Befehl keinen Fehler.
1
set_property -dict [list CONFIG.SIM_FILE_SEL {Relative_path} CONFIG.SIM_FILE_REL_PATH {./pxx_xadc_axi.srcs/sources_1/}] [get_ips xadc_wiz_0]

Sprich das ist dann relativ zum Projektverzeichnis.
Aber: Die Simulation findet die Datei nicht.

Vermutung:
Die Routine von Xilinx die während der Eingabe prüft ob im angegebenen 
Pfad tatsächlich die angegebene Datei liegt prüft das relativ zum 
Projektverzeichnis, bei der Simulation muss das aber relativ sein zu:

\dein_projekt\dein_projekt.sim\sim_1\behav\

Eine Möglichkeit das passend einzustellen manuell habe ich bisher nicht 
gefunden. Aus meiner Sicht ist das ein Bug.

von Duke Scarring (Gast)


Lesenswert?

Gustl B. schrieb:
> Aus meiner Sicht ist das ein Bug.
Wäre ja nix neues.
Funktioniert es, wenn Du die Datei mehrfach auf der Platte (in 
verschiedenen Verzeichnissen) hast?

Duke

von Gustl B. (-gb-)


Lesenswert?

Juhu! Die Lösung:

In VIVADO die design.txt als simulation source hinzufügen.

Seltsamerweise braucht man das nicht zu tun wenn man DRP verwendet. 
Warum auch immer.

: Bearbeitet durch User
von Rudolph (Gast)


Lesenswert?

Gustl B. schrieb:
> In VIVADO die design.txt als simulation source hinzufügen.

Sehr gut! Das funktioniert auch hervorragend wenn man den XADC direkt 
instantiiert!

von Gustl B. (-gb-)


Lesenswert?

Komischerweise ist das wohl neu. Ich hatte mit einem Vivado 2015.x ein 
Projekt gemacht da musste man gar nichts machen, nur den XADC mit 
Coregen bauen und schon hat auch die Simulation funktioniert. Jetzt im 
neuen Vivado funktioniert dieses alte Projekt immer noch problemlos, 
aber wenn ich ein neues Projekt aufmache mit XADC  muss ich extra noch 
diese Simulationsdatei hinzufügen obwohl die ja weiterhin der Coregen 
generiert.

von Gustl B. (-gb-)


Lesenswert?

Und noch ein Bug im XADC bei Coregen:

Da kann man sich für die Simulation ein "analoges" Signal erzeugen 
lassen. Funktioniert auch, aber das kann kein Rechteck. Man kann zwar 
Konstant, Sinus, Dreieck und Rechteck einstellen, aber Rechteck liefert 
ebenfalls Dreieck.

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.