Guten Tag Zusammen Hardware: - TCRT1000 (Reflective Optical Sensor with Transistor Output) - Zync7000 (FPGA) - ADC128S102 Eine theoretische Trage an die Erfahrenen. Aktuell wird ein Externer ADC Konverter verwendet um den Analogen Ausgang von dem Sensor zu wandeln. Um das externe Bauteil zu sparen war eine Überlegung den ADC im FPGA zu integrieren. Nun meine Fragen: 1) Ist es möglich Analoge Signale in einen FPGA zu geben? 2) Ist es möglich einen ADC mit ausreichender Auflösung und Zeitverhalten im FPGA zu realisieren? Dies ist für eine Vertiefungsarbeit. Wenn dies möglich währe, wäre es ein genialer pluspunkt. Hat jemand Erfahrung hier ob dies möglich ist oder ist es besser einen externen ADC zu verwenden und die Finger hiervon zu lassen?
Was sagt das Data Sheet des FPGA dazu? Ist da ein ADC implementiert oder zumindest ein Komparator? Wenn nein, dann nein.
Good P. schrieb: > Ist es möglich Analoge Signale in einen FPGA zu geben? Zumindest der Zynq und einige Xilinx-Bausteine haben einen internen ADC mit mind 200kHz und 16 mehreren Kanälen. Alles andere an Analog-Digitalwandlung muss man manuell machen. (Also Sigma-Delta-Wandler, dual slope und solche Sachen).
Good P. schrieb: > Ist es möglich Analoge Signale in einen FPGA zu geben? Ja. Und solange die analoge Spannung im erlaubten Bereich bleibt, geht das FPGA nicht kaputt. > Ist es möglich einen ADC mit ausreichender Auflösung und Zeitverhalten > im FPGA zu realisieren? Wenn du "ausreichend" ausreichend niedrig ansetzt. Und für genau so einen analogen Optokoppler könnte ich mir da eine einfache RC-Schaltung als Analog-Digital Wandlung vorstellen. Dafür würde ein einfacher digitaler IO-Pin reichen.
Manche FPGAs haben richtige interne ADCs. Da musst du das Datenblatt deines FPGA konsultieren. Wenn die Ansprüche bzgl. Genauigkeit und Abtastrate nicht so hoch sind reichen auch 2 LVDS Pins und ein Tiefpass um einen Pseudo ADC aufzubauen.
Man kann das schon ohne echten ADC bauen, aber man braucht externe Bauteile und muss vermutlich auch kalibrieren. Man könnte ein RC Glied über einen IO aufladen und dann die Zeit zählen/messen wie lange es dauert bis die Spannung die am pseudo ADC Eingang trifft. Es gibt da schon einige Implementierungen aber wie schnell und genau weiß ich nicht.
Gustl B. schrieb: > Man könnte ein RC Glied über einen IO aufladen und dann die Zeit > zählen/messen wie lange es dauert bis die Spannung die am pseudo ADC > Eingang trifft. > Es gibt da schon einige Implementierungen aber wie schnell und genau > weiß ich nicht. Das wäre die eine Möglichkeit die ich meinte. Die Andere basiert auf dem Delta Sigma Prinzip. Bei Lattice und anderen findet man da Papers dazu.
:
Bearbeitet durch User
Gustl B. schrieb: > und muss vermutlich auch kalibrieren. > > Man könnte ein RC Glied über einen IO aufladen da musst du aber noch mehr kalibrieren :-) Ich würde einen DAC mit den LVDS-Eingängen nehmen: Die Eingangsspannung mit einem R/R auf 200 ... 300mV absenken, diesen auf einige kOhm dimensionieren und diesen Punkt über ebenfalls einige kOhm an den Ausgang eines Tiefpassfilters (RC) hängen und auf diesen mit einem 3. Pin PDM-Rauschen draufgeben. weiss für Messignale, rosa für Audio. Dann eintakten und filtern / das ebenso gefiltere Rauschen abziehen. Damit sind bis zu 12Bit x 50kHz drin, wenn man es richtig macht. Stumpf gefiltert 10Bit, 20kHz, reicht für Audio-to-MIDI-Conversion. Den LVDS-Komparator kann man auch noch offset-kalibieren, wenn man das Eingangssignal nullt und lange filtert, oder weis, dass der Eingang langfristig DC-frei ist, wie eben bei Audio.
N. M. schrieb: > Bei Lattice... https://www.latticesemi.com/-/media/LatticeSemi/Documents/WhitePapers/AG/CreatingAnADCUsingFPGAResources.ashx?document_id=36525
Bei Xilinx resp. AMD heisst der integrierte ADC system monitor resp. XADC. https://www.xilinx.com/products/technology/analog-mixed-signal.html Kurz: * 1 MSps total * auslesbar über JTAG deshalb für board/FPGA inbetriebnahme mit chipscope o.ä geeignet * einige externe und einige fest verdrahtetet interne Kanäle (Die-Temperatur, Voltage an Versorgung/IO-Rails https://www.xilinx.com/products/technology/analog-mixed-signal.html https://www.kampis-elektroecke.de/fpga/zynq/xadc/
DSGV-Violator schrieb: > AMD heisst der integrierte ADC system monitor resp. > XADC. Den meinte ich in meinem Beitrag oben. Wie ich gerade lese, hat der WAndler im Ultrascale weniger Abtastrate und auch 2 Bit weniger Auflösung. Der Ultrascale ist doch der bessere Chip?
Nun, wozu denn die vielen Bits und die Abtastrate? In den meisten Projekten wird der nur als Systemmonitor verwendet und da braucht man nicht schnell und hochauflösend. Xilinx/AMD sieht das so und hat das auch umbenannt in Sysmone1 bzw. Sysmone4. Vermutlich gibt es nur wenige Kunden die höhere Anforderungen haben und dann nehmen die wohl auch lieber externe ADCs. Da bekommt man für wenig Geld noch mehr Bits, noch schneller und rauschärmer. Klar, kostet dann ein paar wenige FPGA IOs, aber das ist es wohl wert.
Ja sicher, das wird der entscheidende Grund sein. Guck mal nach ADCs die grob das können was auch der XADC kann, also 12 Bits und 1 MSample/s. Die gibt es in sehr klein. Und billig. Ich habe bisher kein FPGA Design gesehen bei dem der XADC zu etwas Anderem als Systemmonitor verwendet wurde. Daher verstehe ich auch die Entscheidung von AMD den umzubenennen und etwas abzuspecken.
Gustl B. schrieb: > In den meisten Projekten wird der nur als Systemmonitor verwendet und da > braucht man nicht schnell und hochauflösend. Xilinx/AMD sieht das so und > hat das auch umbenannt in Sysmone1 bzw. Sysmone4. > > Vermutlich gibt es nur wenige Kunden die höhere Anforderungen haben und > dann nehmen die wohl auch lieber externe ADCs. Eigentlich erzählt die Geschichte das Ganze andersherum. Xilinx hat den internen ADC seit Einführung ca. 2005 nie zu was anderen als Monitoring IC-/Board-spannungen etc. vorgesehen, für "richtige" AD-Wandler, beispielsweise 50++ MSPs/ 12 bit in Ultraschallapplikationen (NDT, bildgebende Verfahren Medizintechnik) oder für Bildsensoren und Computervision wurden schon immer externe gern von AnalogDevices genommen. Deshalb hat AnalogDevices auch gute Appnotes samt FPGA-Code für die passenden Wandler, seit einigen Jahren auch Linux-treiber etc. https://www.analog.com/en/technical-articles/interfacing-fpgas-to-an-adcs-digital-data-output.html Als Interface gabs über die Jahre parallel TTL, LVDS und zuletzt JESD204 (rauf in die Gbit/s). Schaut man sich die Preise für diese High-End ADWandler an, verbietet es sich sofort, sowas als konfigurierbaren Vorrat als FPGA-Block einzubauen, erst recht wenn Digital-Konsumenten ohnehin schon 25$ zu teuer für einen FPGA-Chip sind. Abgesehen davon, das die Silizium-IC-Fertigungs-Technologie für Analog-Chips und die die für Digital-chips, nicht die selbe ist. Insbesonders der yield verschlechtert sich enorm wie Xilinx vor 20 Jahren beim Virtex-4 und den Gigabit-Transceivern erfahren musste. Wenn ich mich recht erinner wurde auch der Systemmonitor erst für den Virtex-2 oder Virtex-4 angekündigt, viel aber aber dann aus den Serienmodllen raus, weil nicht kostengerecht produzierbar. Schaut man zu Altera, sieht es ähnlich aus, braucht man schneller als 1 MSps oder genauer nimmt man externe AD-Wandler. Oder gleich einen µC weil der ist für eine solche Kleinscheiss-Anwendung wie Temperaturauslesen genau richtig und jeder FPGA überdimensioniert ist. Beispielsweise arrow, analogmax-Serie: * https://www.arrow.de/campaigns/arrow-adi-analogmax * https://www.konstruktion-entwicklung.de/arrow-electronics-datenerfassungsplattform
Beitrag #7484229 wurde vom Autor gelöscht.
Gustl B. schrieb: > In den meisten Projekten wird der nur als Systemmonitor verwendet und da > braucht man nicht schnell und hochauflösend. Xilinx/AMD sieht das so und > hat das auch umbenannt in Sysmone1 bzw. Sysmone4. Die Frage ist, wozu man den umbenennen muss und mit der Steigerung des Namens eine Reduzierung der Auflösung verbindet. So richtig logisch ist das nicht. DSGV-Violator schrieb: > Xilinx hat den internen ADC seit Einführung ca. 2005 nie zu was anderen > als Monitoring IC-/Board-spannungen etc. vorgesehen, Sehe ich ebenso und genau dafür ist der ja auch gut. Natürlich auch mit 10 Bit. Bei praktisch jedem PCB braucht es Überwachung der Spannungen und was UC angeht, durchaus auch hochauflösend in der Zeit, um Einbrüche zu verfolgen. Da kann der gar nicht genug Kanäle haben. DSGV-Violator schrieb: > * auslesbar über JTAG deshalb für board/FPGA inbetriebnahme mit > chipscope o.ä geeignet nicht nur, geht auch intern über VHDL / Verilog im FPGA zur internen Verarbeitung und Monitoring. Bei vielen sicherheitskritischen Anwendungen wird die Überwachung von Spannungen gefordert. Auch bei bestimmten Tests ist das ein Thema. Der JTAG-Zugriff ist da nur ein addy für die IB.
J. S. schrieb: > mit der Steigerung des Namens eine Reduzierung der Auflösung verbindet. Also Sysmone1 und Sysmone4 haben gleich viele Bits, aber weniger als der XADC wie das Teil bei der 7er Familie heißt.
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.