Ist folgende Aussage zu FPGA & VHDL korrekt?

OP #7476257
Lesenswert?

Hallo liebe Community,

ich habe vor einem ADC eine analoge Spannung eingespeist, um diese auf einem Display als Messwert anzeigen zu lassen. Mir wurde gesagt, dass eine Alternative die EMulation des SPI-Signals des ADCs wäre. Ich muss einen kleinen Bericht darüber schreiben was ich gemacht habe und würde das gerne erwähnen. Da ich mich absolut nicht mit mit FPGA, VHDL,... auskenne, würde ich mich freuen, ob mir jemand bestätigen kann, ob folgende Aussage korrekt ist:

Eine Alternative zum Einspeisen von Spannungen vor dem ADC besteht darin, das Ausgangssignal des ADCs mittels eines Field-Programmable Gate Array (FPGA) und der Hardwarebeschreibungssprache VHDL zu emulieren. In diesem An-satz wird im FPGA ein virtuelles Ausgangssignal des ADCs erzeugt. Über eine nachgeahmte Serial Peripheral Interface (SPI)-Kommunikation, wird das Signal an den Microcontroller übertragen. Dieser Prozess wird durch die Entwicklung eines VHDL-Designs realisiert, welches das Verhalten des eigentlichen ADCs imitiert und die entsprechenden SPI-Signale generiert.

Kann man das so formulieren? Vielen Dank!!

OP #7476271
Lesenswert?

Falk S. schrieb:

Was möchteste machen, ne analoge Spannung via ADC diskretieren und die digitalisierten Werte vom ADC per SPI abholen? Sollte gehen... ansonsten versteh ich die Frage nicht.

Mal mal auf, was du eigentlich meinst.

Die Spannungen, die ich vor dem ADC eingespeist habe, emulieren (analoge) Sensorsignale. Ich mache das, um das Gerät testen zu können, ohne das Gerät echten Einflüssen aussetzen zu müssen. So kann ich beispielsweise testen wie das Gerät in Extremsituationen reagiert. Stattdessen hätte man ja auch das Ausgangsignal des ADCs, welcher über SPI mit dem Microcontroller, welche die Signale auswertet und auf einem Display anzeigt, simulieren können. Mir hat jemand gesagt, dass das über FPGA und VHDL geht. Deshalb würde ich gerne wissen, ob ich den Abschnitt so richtig formuliert habe.

#7476306
Lesenswert?

A. A. schrieb:

Mir hat jemand gesagt, dass das über FPGA und VHDL geht. Deshalb würde ich gerne wissen, ob ich den Abschnitt so richtig formuliert habe.

Ja das könnte man machen. Aber man könnte das auch mit einer Schaltung aus diskreten Bauteilen oder auch mit einen Mikrocontroller oder gar einem PC machen. Un SPI zu sprechen braucht man nur ein paar digitale IOs die man entsprechend schnell schalten kann. FPGAs können das, sind dabei aber nicht alleine.

OP #7476320
Lesenswert?

Gustl B. schrieb:

A. A. schrieb:

Mir hat jemand gesagt, dass das über FPGA und VHDL geht. Deshalb würde ich gerne wissen, ob ich den Abschnitt so richtig formuliert habe.

Ja das könnte man machen. Aber man könnte das auch mit einer Schaltung aus diskreten Bauteilen oder auch mit einen Mikrocontroller oder gar einem PC machen. Un SPI zu sprechen braucht man nur ein paar digitale IOs die man entsprechend schnell schalten kann. FPGAs können das, sind dabei aber nicht alleine.

Danke für deine Antwort. In meinem Fall wird vor dem ADC ein Multiplexer mit 8 Messsignalen geschalten. Der Microcontroller fragt zyklisch die Messwerte ab, indem er den MUX entsprechend schaltet. ICh habe das einfach mit einem 8-Kanal-DAC und einem eigenen MUX gelöst, damit ich mich darum nicht kümmern muss. Wäre für diese Anwendung das verwenden von FPGAs oder eines Microcontrollers so wie du es in deiner Antwort beschrieben hast besser? Und würdest du sagen, dass das arg aufwendig ist im vergleich zu meiner methode?

(Firma: Schweigstill IT) Persönliche Seite #7476340
Lesenswert?

Damit diese Emulation des ADC samt Multiplexer halbwegs realitätstreu erfolgt, muss natürlich der ADC bzw. sein Registermodell ordentlich nachgebildet werden, ebenso auch das Timing bzw. die SPI-Betriebsart. Es hängt ganz empfindlich von dem betreffenden Typ ab, ob das trivial oder schon ein aufwändiges Projekt wird.

Ist denn die Firmware schon funktionsfähig, insbesondere die Ansteuerung des echten ADC?

Und natürlich handelt es sich hier mal wieder um feinste Salamitaktik...

#7477592
Lesenswert?

Bei deinem Vorschlag würdest du einen wesentlichen Teil deiner Schaltung, nämlich den ADC, weglassen und durch einen FPGA ersetzen, der Dummydaten erzeugt. Damit kannst du die Datenübertragung über die SPI-Schnittstelle und die Controllersoftware testen, aber du kannst keine Spannungen messen. Insofern ist der FPGA keineswegs Alternative zum ADC, sondern ein Hilfsmittel, mit dem du einen Teil deiner Schaltung ohne ADC testen kannst. Also vermeide in diesem Fall bitte das Wort "Alternative" (das wird eh schon aufs Übelste missbraucht...).

Gast #7477607
Lesenswert?

Also für mich klingt das eher nach DDS im FPGA über R2R und ggf OPA zum ADC.

https://de.wikipedia.org/wiki/Direct_Digital_Synthesis https://de.wikipedia.org/wiki/R2R-Netzwerk https://de.wikipedia.org/wiki/Operationsverst%C3%A4rker

Könnte man auch als Arbiträrgenerator bezeichnen https://de.wikipedia.org/wiki/Arbitr%C3%A4rgenerator

Oder ist gemeint das man diesen konkreten ADC per SPI in einen Test-Mode kommandiert, in dem ohne Analog-Input Digitalwerte wie bspw. Simusverlauf gesendet werden?

Moderator (Firma: Titel) Persönliche Seite #7477673
Lesenswert?

A. A. schrieb:

wird im FPGA ein virtuelles Ausgangssignal des ADCs erzeugt.

Besser so: ... wird das ADC-Busprotokoll vom FPGA nachgebildet.

Denn das Ausgangssignal ist keineswegs "virtuell", sondern physikalisch messbar.

und die entsprechenden SPI-Signale generiert.

Das allein reicht nicht, denn du zum Nachahmen des kompletten ADC musst du nicht nur dessen Schnittstelle entsprechend nachahmen, sondern auch interne Konfigurationsregister nachbauen und auf deren Werte reagieren. Und zudem musst du irgendwelche vorhersehbaren oder zufälligen Daten über diese Schnittstelle senden.

Gast #7477684
Lesenswert?

Für solche Zwecke baut man ein komplementäres System , z.B. mit demselben Microcontroller und dessen SPI-Schnittstelle und lässt den die Testdaten generieren. Dafür braucht es keinen FPGA.

Im vorliegenden Fall geht es sogar nur um eine simple Spannung. Das, was das Zielsystem messen und erfassen kann, ist das Komplementärsystem auch in der Lage, zu erzeugen. Bei einem Microcontroller-board eventuell mit einem integrierten DAC.

Gast #7477797
Lesenswert?

A. A. schrieb:

Ja also es geht auch nur darum den Microcontrollern mit Daten des ADCs (also gewandelten Spannungen) zu füttern um diesen zu testen

Um den Controller zu testen, braucht man keine variablen Spannungen, sondern nur 4, nämlich 1 im range, 1 über dem range und das eventuell + / -. Damit kann man den Überlauf testen.

Alles weitere ist Auswertung im Controller, damit Software und somit IM Controller zu untersuchen, oder theoretisch.

Gast #7478493
Lesenswert?

A. A. schrieb:

Vancouver schrieb:

, mit dem du einen Teil deiner Schaltung ohne ADC testen kannst.

Ja also es geht auch nur darum den Microcontrollern mit Daten des ADCs (also gewandelten Spannungen) zu füttern um diesen zu testen

Dann schau mal, ob dein ADC nicht einen Testmode bietet, in dem er Digitalwerte sendet, ohne Analog erregt zu werden. Im Anhang ein Beispiel.

BTW: Für die Uninspirierten hat die Firma Analog Devices vor Jahren mal einen Handzettel mit Ideen zum Teseten von data converter systemen rausgeballert: https://www.analog.com/media/en/training-seminars/design-handbooks/Data-Conversion-Handbook/Chapter5.pdf

Sowas gibt es natürlichauch als AN von anderen Firmen und in Lehrtexten.

Angehängte Dateien:

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