Forum: FPGA, VHDL & Co. XADC - ARTY-S7 Board


von Syrius (Gast)


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.

von -gb- (Gast)


Lesenswert?

Hier https://gus.tl/fpga ist auch ein XADC Minimalprojekt. Allerdings 
für ein leicht anderes Board. Sprich du musst es noch anpassen. 
Simulation funktioniert aber.

von Christian R. (supachris)


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.

von Syrius (Gast)


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 ;)

von Christian R. (supachris)


Lesenswert?

Naja, der ADC Core hat 12 Bit. Aber die Werte werden linksbündig in 16 
Bit einsortiert, damit passt das an das DRP.

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.