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.
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.
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.
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 ;)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.