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