Ein 1-Bit-Datenoszilloskop

ArticleCategory: Hardware

Hardware

AuthorImage:

[Photo of the Author]

TranslationInfo:[Author + translation history. mailto: or http://homepage]

original in en Bob Smith

en to de Hubert Kai�er 

AboutTheAuthor:

Bob ist ein Elektronik-Bastler und Linuxprogrammierer. Sie k�nnen sein neuestes Projekt auf www.linuxappliancedesign.com finden und seine Homepage auf www.linuxtoys.org.

Abstract:

Das 1-Bit-Datenoszilloskop (Logic-analyser) erfa�t ein Bit an Daten mit einer Rate von 46080 (oder 92160) Impulsen pro Sekunde und kodiert die Daten in einen Strom von RS-232-Zeichen, die mit 57.6 (oder 115.2) Kilobaud gelesen werden k�nnen. Das Datenoszilloskop ist ein ziemlich einfacher Projektaufbau, der weniger als sechs billige ICs braucht.

ArticleIllustration:

Hardware

ArticleBody:

Bild des Ein-Bit-Datenoszilloskops

 

 

Einf�hrung

In diesem Artikel wird der Entwurf, der Aufbau und die Benutzung des 1-Bit-Datenoszilloskops beschrieben. Ein Programm f�r die Erfassung und die Ausgabe des Datenstroms wird mitgeliefert.

Entwurf und Theorie der Ausf�hrung

Entwurfsziele

- Mindestbitmusterrate, um mehr als 8000 Muster pro Sekunde zu verarbeiten
- Ausgabe der Daten auf eine serielle PC-Schnittstelle
- Durchgehend Bitmusterdaten verarbeiten, ohne ein einziges Bit zu verlieren
- Strom von der seriellen Schnittstelle Strom abzapfen. Keine seperate Stromquelle.

Entwurfs�berblick

Das Ziel ist, mit einer geregelten Frequenz Eingaben zu erzeugen und die Daten in einem seriellen Zeichen auszugeben mit einem Startbit, acht Datenbits und einem Stopbit. Die Verwaltungskosten der Start- und Stopbits erfordern, da� die Bitdatenrate acht Zehntel der seriellen Baudrate entsprechen mu�. Bei einer 57.6 Kbaud schnellen seriellen Schnittstelle ist die Datenrate (8 * 5.76 k) bzw. 46080 Bitmuster pro Sekunde.

Das Problem ist, da� wir die Eingabemuster zwischenspreichern m�ssen w�hrend wir die Start- und Stopbits versenden. Die folgende Zeichnung zeigt das Problem. Abstimmung Datentakt gegen Baudtakt
W�hrend den Bits 0, 1, 2 und 3 wollen wir, da� die Daten um zwei Datentakte verz�gert werden, damit wir Q(B) vom Schieberegister des 4015 holen k�nnen. W�hrend den Bits 4, 5, 6 und 7 wollen wir die Daten verz�gert um einen Datentakt, damit wir Q(A) vom Schieberegister holen k�nnen. W�hrend den Stop- und Startbits (Bit 8 und 9) wollen wir eine Null und eine Eins, damit wir Q(0) vom Bitz�hler holen k�nnen.

 

Schaltplan des 1-Bit-Datenoszilloskops

Schema des Ein-Bit-Datenoszilloskops

Der Schaltplan wurde mit einem sehr netten Softwarepaket namens "EAGLE" gemacht, erh�ltlich bei Cadsoft. Die Schemadatei f�r obigen Schaltkreis ist erh�ltlich als 1bitla.sch.gz (hier klicken).

Erzeugung des Taktes

Der Taktschaltkreis hat zwei Ausg�nge: eine beim Baudtakt und eine bei acht Zehnteln des Baudtakts. Der Taktschaltkreis benutzt drei Inverter vom 4049, den 7-stufige Bin�rzahler im 4024 und ein Zehnerz�hler einer H�lfte des 4518. Der Oszillator l�uft mit 1.8432 MHz und Q(2) des 4024 hat eine Rechteckwelle bei 460.8 kHz. Der Q(3)-Ausgang des Zehntelz�hlers, 4518, hat 46.08 kHz. Der Q(5)-Ausgang des siebenstufigen asynchronen Z�hlers hat eine Rechteckwelle bei 57.6 kHz.

Um den Schaltkreis bei 115.2 kHz laufen zu lassen, benutzt man die Ausg�nge des 4024 anstatt der Ausg�nge von Q(2) und Q(5). Andere Baudraten sind m�glich, wenn man andere Werte f�r den Kristall nimmt oder indem man den Kristalloszillator durch einen RC-Oszillator ersetzt.

Es wird sich wahrscheinlich herausstellen, da� der Kristalloszillator bei der gleichen Frequenz weniger Strom verbraucht als ein RC-Schaltkreis. Um Strom zu sparen, sollte man sichergehen, da� die unbenutzten Eing�nge des 4049-Hex-Inverters auf Masse liegen.

 

Puffern der Eingabe

Es gibt zwei einfache Arten, wie man Eingabepufferung zu obiger Schaltung hinzuf�gt. Man kann den Dateneingang mit dem Eingang einer der unbenutzten Inverter im 4049 verbinden. Das bringt nicht wirklich viel, da der Eingang eine CMOS-Ladung darstellt und dazu noch CMOS-Schwellwerte hat (was in dieser Schaltung ungef�hr drei Volt sind).

Ein besserer Eingabepuffer k�nnte der zweite Operationsverst�rker im TL082 sein. Man kann einen Widerstandsteiler benutzen, den man an einen Operationsverst�rkereingang klemmt und den anderen Eingang f�r die Eingabedaten benutzen. Dadurch kann man den Schwellwert sehr genau kontrollieren und es ergibt eine hohe Impedanz gegen�ber dem Me�objekt.

Konverter von CMOS nach RS-232

Eine H�lfte des TL082 Operationsvert�rkers stellt eine Konvertierung von CMOS nach RS-232 zur Verf�gung. Die Widerstandsteiler R1, R2 richten die negative Eingabe auf ungef�hr 3 Volt. Sobald der Ausgang des 4015-Registers �ber und unter 3 Volt ist, schaltet der Ausgang des Operationsverst�rkers auf positive und negative Stromversorgung. Wichig ist, da� die Bitmusterdaten auf der RS-232-Leitung invertiert werden und die datenlesende Software mu� diese Umkehrung ber�cksichtigen.

Stromversorgung

Strom f�r die Schaltung wird von den RS-232-Leitungen des Computers geliefert. Tx vom Computer liefert die negative Spannung f�r den RS-232-Konverter (der TL082P) und DTR liefert die positive Spannung. Im Prototypen waren die Dioden D1 unf D2 nicht wirklich n�tig. Sie wollen die Schaltung vielleicht ohne sie ausprobieren.

RTS stellt Strom (Vcc) f�r den Rest der Schaltung bereit. Im Prototypen war Vcc ungef�hr 7 Volt stark. Ihre Spannung Vcc kann anders sein, das h�ngt von der RS-232-Schnittstelle ab. Die Software, die das Datenoszilloskop nutzt, mu� sowohl DTR und RTS hochsetzen.

Aufbau

Die Frequenzen im Datenoszilloskop sind relativ niedrig und fast jede Bauform wird funktionieren. Wirewrap-Technik hat recht gute Ergebnisse gebracht. Vielleicht wollen Sie zuerst die Stromversorgung aufbauen und testen. Die ICs haben wie zu erwarten Vcc auf Pin 14/16, au�er der 4049-Hex-Invertierer, der Vcc auf Pin 1 geschaltet hat.

Hier sind ein paar Fotos, um Ihnen eine m�gliche Bauweise zu zeigen.

Sicht in das Ein-Bit-Datenoszilloskop
Draufsicht auf das Board
Details der Verkabelung im Innern

 

 

Einfaches Datenerfassungsprogramm

Bitmusterausgabe
-r -c -t
03
e3
ff
03
e3
ff
03
e3
ff
03
e3
ff
03
e3
ff
03
e3
ff
03
e3
ff
03
e3
ff
03
e3
ff
03
e3
ff
03
e3
ff
03
e3
0, 0
1, 5
0, 3
1, 10
0, 6
1, 5
0, 3
1, 10
0, 6
1, 5
0, 3
1, 10
0, 6
1, 5
0, 3
1, 10
0, 6
1, 5
0, 3
1, 10
0, 6
1, 5
0, 3
1, 10
0, 6
1, 5
0, 3
1, 10
0, 0.000000
1, 0.000065
0, 0.000065
1, 0.000217
0, 0.000130
1, 0.000109
0, 0.000065
1, 0.000217
0, 0.000130
1, 0.000109
0, 0.000065
1, 0.000217
0, 0.000130
1, 0.000109
0, 0.000065
1, 0.000217
0, 0.000130
1, 0.000109
0, 0.000065
1, 0.000217
0, 0.000130
1, 0.000109
0, 0.000065
1, 0.000217
0, 0.000130
1, 0.000109
0, 0.000065
1, 0.000217

Das einfache Programm 1bitla.c verarbeitet die seriellen Daten und kann die Daten in drei Formaten ausgeben. Das erste Format sind die Rohdaten, die ein Byte pro Zeile durch zwei Hex-Zeichen darstellen. Beachten Sie, da� das Programm die Daten invertiert und da� die Daten mit MSB zuerst verschickt werden. Rohdatenausgabe wird mit der Option -r aufgerufen. Das zweite Format ist ein Wert (0 oder 1) gefolgt von der Anzahl der 1-Bit-Muster, die der Wert hatte. Die Wert-/ Anzahlausgabe wird mit der Option -c aufgerufen. Die Aufl�sung bei 46080 kHz ist 21.7 Mikrosekunden. Die Wert-/Zeitausgabe wird mit der Option -t aufgerufen.

Das Programm wird mit
1bitla [option] serial_port
aufgerufen, wobei die Optionen -r, -c, oder -t sein k�nnen. Der bei Weglassen der Option wird Wert/Anzahl (-c) genommen.

Der Aufbau des Programms ist recht einfach. Wir verarbeiten die Kommandozeilenoptionen, �ffnen die serielle Schnittstelle und machen eine unendliche Schleife und zeigen die Bytes an. Da wir keine Verarbeitung im Hintergrund laufen haben, benutzen wir ein blockierendes read.

Vielleicht sind Sie zufrieden damit, nur die Bitmuster auf Konsole auszugeben oder sie in eine Datei zur sp�teren Bearbeitung umzuleiten oder Sie k�nnen auch eine echte "Logik-Analyse" mit den Daten durchf�hren, indem Sie einen Automaten basteln der die Bitmuster verarbeitet. Beispielautomaten k�nnen Dekoderbefehle haben, die ihnen von einer Infrarotfernsteuerung geschickt werden oder k�nnen die Position eines funkgesteuerten Takts mit modulierter Ausgabe dekodieren.

Referenz