Ultraschneller FPGA-basierter AD-Wandler
Digitalisierung
Ein neues Design für AD-Wandler, die mit Field Programmable Gate Arrays (FPGA) ohne zusätzliche externe Komponenten realisiert werden, ermöglicht es, fast jeden digitalen Ein-/Ausgang (I/O) eines FPGA als ADC-Kanal zu nutzen. Dank der vielen I/O-Ports in modernen FPGA-Systemen kann so ein dichtes und leistungsfähiges ADC-Array auf einem einzigen FPGA realisiert werden.
Analog-Digital-Wandler (ADCs) sind aus der heutigen Welt nicht mehr wegzudenken. Es gibt sie in zahlreichen Implementierungen und Spezifikationen, um den unterschiedlichen Anwendungsanforderungen gerecht zu werden. Um eine aufwendige analoge Signalverarbeitung zu vermeiden, geht der Trend zudem immer mehr dahin, den Digitalisierungsprozess möglichst früh in der Signalverarbeitungskette anzusiedeln. Daher werden ADCs zunehmend direkt in digitale Plattformen wie Field Programmable Gate Arrays (FPGAs) und Mikroprozessoren integriert. Solche ADCs sind jedoch oft für einen bestimmten Anwendungsbereich optimiert und bieten nur eine begrenzte Flexibilität.
Ein FPGA ist ein hochflexibler, rekonfigurierbarer integrierter Schaltkreis (IC), der aus einer grossen Anzahl programmierbarer Logikblöcke und Verbindungsstrukturen besteht. Im Gegensatz zu fest verdrahteten ICs kann ein FPGA nach der Herstellung vom Anwender programmiert werden. Durch diese Reprogrammierbarkeit können FPGAs in einem breiten Spektrum von Anwendungen eingesetzt werden, von der Videodatenverarbeitung über die Beschleunigung von Kryptographiealgorithmen bis hin zu schnellen Kommunikationssystemen und KI-Anwendungen. FPGAs enthalten zudem häufig noch verschiedene spezialisierte Hardwareelemente wie Digitale Signalverarbeitungsblöcke (DSP), Anbindungen an Hochgeschwindigkeitsspeicher und Schnittstellen mit hohen Datenraten. All diese Eigenschaften machen FPGAs besonders attraktiv für Aufgaben, die viel Rechenleistung und hohe Geschwindigkeiten erfordern.
Während herkömmliche FPGA-basierte ADCs immer auf externe Komponenten angewiesen sind, geht der am Institut für Mikroelektronik, Embedded Systems und Sensorik (IMES) der Ostschweizer Fachhochschule (OST) entwickelte FPGA-basierte ADC einen neuen Weg: Er kommt erstmals vollständig ohne zusätzliche externe Komponenten aus und nutzt ausschliesslich die im FPGA vorhandenen Ressourcen. Durch diesen Ansatz ist es möglich, einen flexibel an die Aufgabe angepassten ADC in ein bestehendes FPGA zu integrieren.
Funktionsprinzip
Der entwickelte ADC basiert auf dem Prinzip eines Rampen-ADC. In Bild 1 wird das Funktionsprinzip aufgezeigt. Bei einem solchen ADC wird aus einem Takt (blau) eine ansteigende und abfallende Spannungsrampe (gelb) erzeugt. Diese Spannungsrampe wird mit Hilfe eines Komparators (grün) ständig mit dem zu messenden analogen Eingangssignal (violett) verglichen. Der Komparator ändert dabei seinen Ausgangszustand, sobald die Rampe die Analogspannung über- respektive unterschreitet. Ein nachgeschalteter Zeitmessblock, genannt Zeit-Digital-Wandler (TDC), misst anschliessend die Zeit (schwarz) vom Beginn der Rampe bis zum Umschalten des Komparators. Mit der Kenntnis über die Form der Rampe sowie der ermittelten Zeitinformation kann anschliessend eine digitale Repräsentation (rot) des analogen Signals erstellt werden.
Neuartige Architektur
Rampen-ADCs eignen sich besonders gut für die Implementierung in einem FPGA, da sie keine hochpräzisen Analogkomponenten benötigen und alle nötigen Elemente in einem FPGA implementiert werden können. Eine Übersicht über die Architektur ist in Bild 2 dargestellt. Darüber hinaus wird in den folgenden Abschnitten näher auf die Implementierung der wichtigsten Funktionsblöcke eingegangen.
Spannungsrampe: Moderne FPGAs erlauben es, die Impedanz eines Ausgangs-Buffers zu verändern. Durch die Wahl einer hohen Impedanz und unter Ausnutzung der parasitären Kapazität eines FPGA-Pins und des zugehörigen Pads ist es möglich, einen in einem FPGA generierten Takt so zu verlangsamen, dass eine Rampe entsteht.
Komparator: Low Voltage Differential Signaling (LVDS) ist eine Schnittstelle, die für Hochgeschwindigkeits-Datenübertragungen verwendet wird und auch in FPGAs integriert ist. Mit Hilfe eines LVDS-Komparators wird ein differentielles LVDS-Signal in ein digitales Signal umgewandelt. Dieser LVDS-Komparator kann im entwickelten ADC verwendet werden, um die erzeugte Spannungsrampe mit der analogen Eingangsspannung zu vergleichen.
Zeit-Digital-Wandler: FPGAs bieten auch Strukturen, welche die Integration sogenannter Tapped-Delay-Line TDCs ermöglichen. Dabei wird eine Kette mit möglichst gleichen Verzögerungselementen aufgebaut. Dazu kann die in FPGAs vorhandene Carrychain genutzt werden. Dies ist eine Schaltung, die speziell für schnelle Additionen entwickelt wurde. Nach jedem Verzögerungselement wird ein Abgriff platziert und auf Speicherelemente, sogenannte Flip-Flops (FF), geführt.
In regelmässigen Abständen wird der Zustand der Verzögerungskette in ihnen gespeichert. Durch die Kenntnis über die Verzögerung eines Verzögerungselements kann anschliessend bestimmt werden, wann eine Veränderung im Signal auftritt. Mit dieser TDC-Architektur ist es möglich, eine Zeitauflösung von einigen Picosekunden zu erreichen.
Kalibrierung und Korrekturen
Um eine hohe Messgenauigkeit sicherzustellen, sind verschiedene Kalibrierungs- und Korrekturverfahren notwendig:
Verzögerung eines Verzögerungselements: Die mittlere Verzögerung in der Verzögerungskette hängt von der Temperatur sowie von Prozessparametern ab, die bei der Herstellung von FPGAs schwanken. In Messungen, durchgeführt am OpenLab@OST, wurden Unterschiede von bis zu 20% bei FPGAs des gleichen Typs gemessen. Die Kalibration kann aber gut mit im FPGA erzeugten Signalen durchgeführt werden und muss bei Temperaturänderungen wiederholt werden.
Alignierung der Spannungsrampe: Da die Signallaufzeiten innerhalb des FPGAs variieren können, muss der Abtasttaktzeitpunkt des TDC an die generierte Rampe angepasst werden. Dadurch wird sichergestellt, dass der Zeitpunkt des Umschaltens des Komparators genau bestimmt werden kann. Die Alignierung erfolgt durch die Verwendung von einstellbaren Verzögerungselementen, die direkt im FPGA-Pad vorhanden sind. Diese Kalibrierung muss einmalig für eine Implementation durchgeführt werden.
Korrektur nichtlinearer Effekte: Aufgrund der kleinen Strukturgrössen moderner FPGAs weisen die Verzögerungselemente der Verzögerungskette keine homogenen Verzögerungen auf. Mit der Hilfe einer sogenannten Bin-by-Bin-Korrektur wird die Nichtlinearität des TDCs ausgeglichen. Dadurch wird eine konstante Auflösung über den gesamten Messbereich gewährleistet. Auch diese Kalibration kann mit Hilfe von im FPGA generierten Signalen durchgeführt werden, muss jedoch nur einmalig beim Aufstarten durchgeführt werden.
Charakteristik der Spannungsrampe: Die im FPGA generierte Rampe ist nichtlinear und entspricht einer Lade- und Entlade-Kurve eines Kondensators. Um diese Charakteristik zu bestimmen, wird eine bekannte, langsame Rampe an den analogen Eingang des ADCs angelegt. Mit den so gewonnenen Messwerten kann anschliessend die Charakteristik der Rampe berechnet und mit einer einfachen Look-up-Tabelle korrigiert werden. Messungen haben zudem gezeigt, dass es ausreichend sein sollte, diese Messung einmalig im Rahmen eines Produktionstests durchzuführen.
Resultate
Der ADC wurde auf einem UltraScale+ FPGA von AMD-Xilinx implementiert und am OpenLab@OST ausgemessen. Er kann mit einer Abtastrate von 600 MSample/s oder 1,2 GSample/s betrieben werden. Mit dem 600 MSample/s ADC wird eine effektive Anzahl an Bits (ENOB) von 7 bit erreicht, während die 1,2 GSample/s Version des ADC eine ENOB von 5,3 bit erreicht. Der Spannungsbereich reicht von 0,15 V bis 1,45 V. Leider kann nicht der gesamte Spannungsbereich des FPGAs genutzt werden, da der LVDS-Komparator zwei Totbereiche hat, in denen er nicht funktioniert.
Die differentielle Nichtlinearität (DNL) liegt im Bereich von -0,9 bis 0,9 Bit für den 600 MSample/s-ADC und -1 bis 1,6 Bit für die 1,2 GSample/s-Version. Die integrale Nichtlinearität (INL) beträgt -1,1 bis 0,9 Bit für die langsamere Implementierung und -1,1 bis 1,2 Bit für die schnellere Variante.
In Bild 3 wird die Messung eines 30-MHz-Sinus dargestellt, wobei die blaue Kurve die Messung mit einem 600 MSample/s-ADC und die orange Kurve die Messung mit einer Abtastrate von 1,2 GSample/s zeigt. Bei beiden Messungen ist der 30-MHz-Sinus deutlich rekonstruierbar. Erwähnenswert ist auch die Latenz des ADCs. Diese beträgt gerade einmal 43 ns, was bedeutet, dass nach dieser Zeit bereits der Messwert am Ausgang des ADCs verfügbar ist.
Vielseitige Anwendungen
Die Architektur dieses ADCs ist aussergewöhnlich flexibel, da er nur aus FPGA-internen Komponenten aufgebaut ist. Dadurch werden keine externen Komponenten benötigt, was sowohl die Integration als auch die Anpassbarkeit erheblich vereinfacht. Durch seine vollständige Konfigurierbarkeit kann der ADC an eine Vielzahl von Anwendungen angepasst werden, indem lediglich die interne FPGA-Logik modifiziert wird.
Ein herausragendes Merkmal dieses Designs ist die Möglichkeit, nahezu jeden digitalen Ein-/Ausgang (I/O) eines FPGAs in einen eigenständigen ADC-Kanal umzuwandeln. Aufgrund der hohen Anzahl verfügbarer I/O-Ports in modernen FPGA-Systemen kann so ein hochdichtes und leistungsfähiges ADC-Array direkt auf einem einzigen FPGA realisiert werden. Dies ermöglicht ein Höchstmass an Parallelisierung und Skalierbarkeit, ohne dass zusätzlicher Platz benötigt wird oder externe Schaltungen zum Einsatz kommen müssen. Darüber hinaus ermöglicht die vollständige Integration in ein FPGA eine einfache Nachrüstung in bereits bestehenden Systemen. Da keine zusätzlichen Bauteile benötigt werden, lässt sich der ADC direkt im FPGA verwenden, ohne dass Änderungen an der Hardware wie zum Beispiel an der Leiterplatte (PCB) vorgenommen werden müssen. Dadurch bleibt das bestehende Design unverändert, während die Funktionalität erweitert wird.
Kommentare