Forum: FPGA, VHDL & Co. Ist folgende Aussage zu FPGA & VHDL korrekt?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von A. A. (dieahnungslosen)


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!!

von Falk S. (falk_s831)


Lesenswert?

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.

von A. A. (dieahnungslosen)


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.

von Gustl B. (gustl_b)


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.

von A. A. (dieahnungslosen)


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?

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


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...

von A. A. (dieahnungslosen)


Lesenswert?

Andreas S. schrieb:
> Ist denn die Firmware schon funktionsfähig, insbesondere die Ansteuerung
> des echten ADC?

Ja, die Firmware ist komplett funktionsfähig und mit dem DAC 
funktioniert es super. Ich habe nicht noch vor das SPI Signal zu 
emulieren, jedoch würde ich die Alternative gerne in der Arbeit 
erwähnen.

von Gustl B. (gustl_b)


Lesenswert?

Ich würde so wenig emulieren wollen wie möglich, denn das sind 
Fehlerquellen. Nimm eine Hardware mit den DACs und erzeuge die 
Spannungen (auch das geht mit typischer Laborhardware) und dann kommt da 
die Hardware mit den Eingängen und ADCs ran.

von A. A. (dieahnungslosen)


Lesenswert?

Gustl B. schrieb:
> Nimm eine Hardware mit den DACs und erzeuge die
> Spannungen

Das habe ich auch gemacht. Damit lassen sich super Messwerte aller 
Sensoren emulieren. Ich würde es eben nur gerne als Alternative 
erwähnen.

von Gustl B. (gustl_b)


Lesenswert?

Ja dann erwähne es. Du kannst die SPI ADCs auch mit einem FPGA emulieren 
oder mit einem Mikrocontroller, ...

von Vancouver (vancouver)


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

von DSGV-Violator (Gast)


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?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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.

von Mann Fred (Gast)


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.

von A. A. (dieahnungslosen)


Lesenswert?

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

von Mann Fred (Gast)


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.

von DSGV-Violator (Gast)


Angehängte Dateien:

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.

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.