Logic Analyzer
Idee
In diesem Projekt soll ein Logic Analyzer selbst gebaut werden. Die digitalen Signale werden mit einem FPGA aufgezeichnet und dann auf einen Computer übertragen, wo sie angezeigt und analysiert werden.
Dieses Projekt ist ein Beispiel für eine Chip-Idee, die am besten in die Kategorie FPGA passt.
Top-Down-Design
Wie auch die anderen Chip-Ideen, ist der Logic Analyzer so umfangreich, dass man am Anfang alles gut planen sollte. Das Prinzip von grob zu fein (Top-Down) hat sich schon bestens bewährt.
Funktion
Natürlich kann man digitale Signale auch mit einem Mikrocontroller aufzeichnen. Ein Programm würde dann die Eingänge regelmäßig abfragen und diese Daten ins RAM speichern. Allerdings sind Mikrocontroller sehr langsam, und die Dauer zwischen zwei Aufzeichnungen könnte durch Interrupts und andere Ereignisse sehr unregelmäßig werden.
Daher soll dieses Projekt mit einem FPGA realisiert werden. Die Aufzeichnung wird als digitale Logik realisiert, die nur dafür vorgesehen ist. Damit gibt es auch keine unvorhergesehenen Unterbrechungen oder Unregelmäßigkeiten. In modernen FPGAs sind auch immer viele kleine RAM Blöcke enthalten, die wir zum Speichern der Eingangssignale verwenden.
Sobald diese RAM Blöcke voll sind, müssen die Daten zu einem PC übertragen werden, der sie dann darstellt. Diese Übertragung soll der Einfachheit halber mittels serieller Schnittstelle (RS232) erfolgen. Dazu muss im FPGA ein Block entwickelt werden, der die Daten parallel aus den RAM Blöcken liest, und sie seriell mit einer definierten Baud-Rate ausgibt.
Außerdem sollen auch verschiedene Parameter des Logic Analyzers vom PC aus eingestellt werden. Und der PC soll die Aufzeichnung der digitalen Eingangssignale starten können. Diese Befehle sollen auch über die serielle Schnittstelle vom PC zum FPGA übertragen werden. Der Empfangsteil im FPGA muss deshalb natürlich auch entwickelt werden.
FPGA, IOs
Dieses Bild ist noch recht grob. Die Realisierung ist in einzelne Blöcke aufgeteilt, und die Pfeile zeigen ungefähr, wie die Daten von einem Block in den nächsten geleitet werden. Was genau in jedem Block steckt, wird nicht gezeigt; auch nicht die Pins, Signale und Leitungen.
Module
In einem weiteren Schritt zu mehr Details legen wir die "Innereien" der einzelnen Module fest. Um Probleme zu vermeiden, wenn sich die Logik-Signale am Eingang genau dann ändern, wenn sie gerade abgespeichert werden sollen (so genannte Metastabilitäten), wird ein Input Register hinzugefügt. Die Steuer-Einheit (Control) braucht natürlich Signale zur Aufzeichnungseinheit (Acquisition) und zum Speicher (Memory). Letzterer wird als je ein FIFO für jedes aufzuzeichnende Logik-Signal implementiert. Zum Auslesen muss ein Multiplexer die FIFOs reihum zur Steuereinheit verbinden, die dann die Umwandlung in das serielle Signal der RS232-Schnittstelle durchführt.
Anschlüsse
Als nächstes müssen die Pins des FPGAs festgelegt werden. Neben der selbstverständlichen Stromversorgung braucht jeder digitale Chip ein Reset-Signal und einen Takt-Eingang. Das gilt auch für FPGAs.
Weiters brauchen wir natürlich Eingänge für die aufzuzeichnenden Logik-Signale. Die RS232 Schnittstelle kommt mit nur zwei Pins (RxD, TxD, also Receive Data und Transmit Data) aus.
VHDL, Verifikation und Synthese
Nachdem die einzelnen Module des Chips aufgeteilt und ihre Anschlüsse festgelegt sind, kann mit der eigentlichen Arbeit begonnen werden. Die Entwicklung für FPGAs ist am Anfang sehr ähnlich, wie für einen eigenen Chip. Darum bitten wir Dich, die Abschnitte VHDL, Verifikation und Synthese beim Beispiel Jack Energy Meter nachzulesen.
Bei FPGAs braucht man bei einem Fehler nicht den ganzen Chip neu produzieren lassen, sondern kann einfach die Logik darin umprogrammieren. Trotzdem ist eine gründliche Verifikation mit Simulation unbedingt notwendig, da reines Trial and Error bei so komplexen Systemen eher Frust als gute Ergebnisse bringt.
Platine

FPGAs sind mit VHDL relativ einfach zu entwickeln. Wenn allerdings eine Platine mit einem FPGA entwickelt werden soll, wird es enorm schwierig. Drei Punkte machen das sehr schwer.
- FPGAs brauchen mehrere verschiedene Versorgungsspannungen, die gut geglättet sein müssen und deren Reihenfolge beim Einschalten eine vorgegebene Ordnung nicht verletzen darf.
- Das Gehäuse von FPGAs hat meist sehr viele Anschlüsse, meist sogar als Ball Grid Array.
- Die Platine kann nicht selbst geätzt werden, sondern muss professionell als Multi-Layer Platine hergestellt werden.
Gott sei Dank gibt es aber für fast alle FPGAs schon fertige Platinen zu kaufen. Diese so genannten Evaluation Boards bieten eine Fülle von Anschlüssen und Bausteinen zum Experimentieren und Entwickeln. Es gibt sie ab knapp 100,- Euro; viele etwas größere kosten mehrere Hundert Euro, es gibt auch welche um etliche Tausend Euro. Für den Logic Analyzer kann aber fast jedes, auch sehr günstige, Eval Board verwendet werden.
PC Software
Die aufgezeichneten Logik Signale müssen natürlich auch angezeigt werden. Das soll mit einem PC erfolgen. Dazu muss eine eigene Software entwickelt werden, die die Signale graphisch darstellt. Außerdem hat der Benutzer die Möglichkeit, Einstellungen anzugeben und die Aufzeichnung zu starten.
Erweiterung: Protocol Analyzer
Das eigentliche Projekt ist damit abgeschlossen. Wer aber öfter mit einem Logic Analyzer digitale Signale von seriellen Bussen (z.B. I²C, SPI, 1-Wire, JTAG, ...) betrachtet, wird schnell merken, dass das händische Durchzählen der einzelnen Bits mühsam und fehleranfällig ist. Eine willkommene Erweiterung wäre daher, diese Interpretation der Bits vom Computer durchführen zu lassen. Das kann einfach in der PC Software programmiert werden. Die graphische Darstellung zeigt dann nicht mehr die einzelnen Logik-Pegel, sondern fasst ganze Bytes und Protokoll-Elemente (z. B. ACK bei I²C) zusammen. Die Analyse und Fehlersuche wird damit stark vereinfacht.
|