Suchen

A/D-Wandler im FPGA Keine Angst vor halben Bits

| Autor / Redakteur: Harald Flügel * / Holger Heller

Ein Softwareentwickler könnte Schwierigkeiten haben, sich Bruchteile von Bits vorzustellen – ist doch das Bit, das „Binary Digit“, die kleinste vorkommende Informationsmenge. Alle Datentypen lassen sich immer nur mit einer ganzzahligen Anzahl von Bit darstellen. Was soll ein halbes, ein viertel, oder gar 0,123 Bit sein?

Firmen zum Thema

Einfaches Voltmeter mit einem FPGA: Entwicklungsboard mit MachXO2-Baustein von Lattice
Einfaches Voltmeter mit einem FPGA: Entwicklungsboard mit MachXO2-Baustein von Lattice
(Arrow)

Bruchteile von Bits gibt es wirklich, nur nicht in der Informatik, sondern in der von Claude Shannon begründeten Informationstheorie. Dort ist das Bit eine Einheit für eine Größe, wie das Kilogramm oder die Sekunde in der Physik. Es ist die Einheit für den Informationsgehalt einer Nachricht, und die Maßzahl des Informationsgehalts kann alle möglichen positiven, realen Werte inklusive der Null annehmen. Die internationale Organisation für Standards (ISO) hat versucht, das „Bit nach der Definition von Claude Shannon“ in Shannon (Sh) umzubenennen, hatte damit aber keinen Erfolg.

Doch was ist ein Bit nach Shannon? Wenn man annimmt, dass aus einer Menge von 256 Lottokugeln alle mit gleicher Wahrscheinlichkeit (1/256) gezogen werden, so hat eine durchgeführte erste Ziehung den Informationsgehalt von I = -log2 (1/256) = 8 Bit.

Bildergalerie

Genauso viele Bits braucht man in der Informatik, um anzuzeigen, welche Kugel gezogen wurde. Bei einer Menge von 49 Kugeln hätte eine erste Ziehung einen Informationsgehalt von ca. 5,615 Bit. Bei so viel Theorie fragt man sich zu Recht, ob es für Bruchteile von Bits reale Anwendungen gibt, oder ob das nur eine Haarspalterei (bzw. Bitspalterei) ist. Solche Anwendungen gibt es sehr wohl, wie die hier vorgestellte Schaltung zeigt.

Analog-Digital-Wandler in einem FPGA-Baustein

Schon seit einigen Jahren ist die Methode bekannt, in einem rein digitalen FPGA einen Analog-Digital-Wandler unterzubringen. Man macht sich dabei die Erkenntnisse der A/D-Wandlertechnik zunutze und implementiert einen Sigma-Delta-Wandler mit ein paar Logikzellen eines FPGAs und einem einfachen, externen RC-Glied. Alle drei großen Anbieter von FPGAs (Xilinx, Altera und Lattice) haben für diese Methode Referenzdesigns oder Applikationsberichte veröffentlicht und auch unabhängige Stellen haben sich dem Thema zugewendet. Zielanwendung ist dabei meist die digitale Signalverarbeitung von Audiosignalen.

Doch es gibt auch andere sinnvolle Anwendungen solcher Wandler. Ein FPGA kommuniziert ja im Allgemeinen über eine Vielzahl von digitalen Signalen mit seiner Umgebung, wobei jeder Pin immer nur eine binäre Information übertragen kann. Wenn in einem FPGA aber nicht nur eine einfache 0/1-Information gebraucht wird sondern ein mehr oder weniger analoger Wert, so sind dafür schnell viele Pins nötig.

Dabei werden analoge Signale extern digitalisiert und parallel über mehrere Pins in das FPGA gegeben. Seit der Veröffentlichung der Referenzdesigns ist es ein Leichtes, analoge Werte ohne Verwendung externen A/D Wandler in ein FPGA hineinzugeben. Pro analoges Signal benötigt man dabei drei Pins des FPGAs, von denen zwei zu einem LVDS-Empfänger gehören müssen.

8-Bit-A/D-Wandler mit 3,3 V Referenzspannung

Mit diesen Kenntnissen lässt sich ein einfaches Voltmeter mit einem FPGA bauen. Lattice bietet ein Entwicklungsboard an, auf dem sich ein FPGA der MachXO2-Familie befindet. An das FPGA ist ein einfaches, numerisches LCD mit vier Stellen angeschlossen. Diese beiden Komponenten sowie ein RC-Glied für den analogen Teil des Sigma-Delta-Wandlers reichen bereits für ein Voltmeter aus. Der Spannungsregler für die Core-Spannung des FPGAs, der Flash-Speicher für die Konfigurationsdaten und ein Oszillator sind alle im FPGA integriert, was den Aufbau stark vereinfacht.

Wenn man nun einen 8-Bit-A/D-Wandler mit einer Referenzspannung von 3,3 V im FPGA implementiert, dann führt das dazu, dass der Zahlenwert 0 der Spannung 0 V entspricht und der Zahlenwert FF der Spannung 3,3 V. Für die Anzeige einer Spannung auf einem Display ist ein „FF“ aber ein ungeeignetes Format; eine dezimale Anzeige ist hier absolut notwendig. Den dafür nötigen Umsetzer kann man entweder in einer Gatterlogik oder als kleinen Mikrocontroller im FPGA realisieren, der die Wandlung in Software macht.

(ID:36311210)