XADC - ARTY-S7 Board

Gast #5775390
Lesenswert?

Moin Moin,

ich bin gerade dabei meine Masterarbeit durchzuführen und stehe momentan 
ein wenig auf dem Schlauch.
Das Projekt beinhaltet die Realisation und Verifizierung von mehreren 
Regelverfahren auf einem FPGA. Das Gerät welches geregelt werden soll, 
ist ein bidirektionaler DCDC-Wandler.

Als Hardware steht mir das ARTY-S7 Eva-Board von Digilent zur Verfügung 
mit einem Spartan XC750S.

Um später die Regelung aufbauen zu können, bin ich gerade dabei einen 
ADC zu implementieren.
Meine Idee ist es, den XADC-IP Core zu verwenden und die Daten im FPGA 
weiterzuverarbeiten.

Kommen wir zu den eigentlichen Fragen:

Ich kann in der Simulation in Vivado ja ein "Analog Stimulus File" 
angeben und dem ADC so die analog Werte vorgaukeln. Das mit der 
Instanzierung als Komponenten funktioniert soweit auch, nur dass die 
Analog-Eingänge auf Low-Pegel bleiben.
Kann man irgendwie die theoretisch anglegeten Spannung auslesen (über 
die Register), oder habe ich das Grundprinzip des "Analog Stimulus File" 
nicht verstanden?

Oder benötigeich für den XADC zwingend einen Prozessor, wie den 
Micorblaze, um den Umsetzer auslesen zu können?


Ich hoffe ihr könnt mir irgendwie weiterhelfen. Die Beispiele, die ich 
bisher gefunden habe, haben mich nur halb weitergebracht, vorallem, weil 
die meisten in Verilog geschrieben sind, ich jedoch VHDL nutze.
#5775607
Lesenswert?

Syrius schrieb:
> Kann man irgendwie die theoretisch anglegeten Spannung auslesen (über
> die Register), oder habe ich das Grundprinzip des "Analog Stimulus File"
> nicht verstanden?

Hast du schon richtig verstanden. Das Analog Stimulus file erzeugt 
ausschließlich für die Simulation die Spannungswerte, die kannst du über 
die Register des XADC auslesen, sofern parametriert zur Messung.

> Oder benötigeich für den XADC zwingend einen Prozessor, wie den
> Micorblaze, um den Umsetzer auslesen zu können?

Nö, da reicht eine simple "State Machine" in VHDL, wenn man den XADC für 
DRP konfiguriert und den Sequenzer anschaltet. Dann erzeugt der sich 
nämlich seinen Ablauf selber:
1
--after each channel sampling is finished, read the result via DRP interface
2
DADDR_IN <= "00" & CHANNEL_OUT;
3
DEN_IN <= EOC_OUT;

Und immer wenn DRDY_OUT = 1 ist, kannst du das Ergebnis des jeweiligen 
Register abspeichern, welches register gerade fertig ist, kommt an 
CHANNEL_OUT raus.
Gast #5776296
Lesenswert?

Danke für die Antworten, hat mir viel gebracht.

Ich schaffe es jetzt zumindest die Analogwerte aus dem Stimulus File 
richtig in der Simulation einzupflegen und die Werte stimmen dann auch 
:)

War anfangs ein wenig verwirrt, dass die Daten eigentlich 12 Bit breit 
sein müsten, aber nirgends ein 12Bit Vektor vorhanden ist.

Aber es ist ja wie immer: Das Datenblatt hilft schon ziemlich xD


Dann mal bis zur nächsten Frage, die kommt bestimmt ;)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren