Funkamateur 02/92

 

Achtkanal - Logikanalysator

B. JAHN

Ein Logikanalysator kann für viele Anwendungen in der Amateurpraxis sehr hilfreich sein, ob es nun um die Entwicklung eigener Schaltungen, um die Fehlersuche in digitalen Systemen oder um die Untersuchung des Verhaltens von komplexeren Digital-Schaltungen geht.
Daß ein solcher Vorsatz nicht unbedingt hohe Kosten verursachen muß, wenn man sich bei den technischen Daten etwas einschränkt, beweist der im Beitrag vorgestellte Achtkanal-Logikanalysator für Z80-Rechner, hier softwaremäßig für den AC1 konzipiert. Mit einem Achtkanal-Multiplexervorsatz ist auch der Anschluß an ein einfaches Einstrahloszilloskop möglich, um damit ebenfalls acht Kanäle gleichzeitig sichtbar zu machen.

Für meinen konkreten Bedarf habe ich den Logikanalysator mit folgenden technischen Daten realisiert:
- Abtastung von TTL-Pegeln mit einer Taktfrequenz von 5 MHz als zur Zeit maximaler Abtastrate (200 ns, variabel);
- Einlesen und Zwischenspeichern der Information in einem sRAM; damit ist eine beliebige Untersuchung des erfaßten Signalverlaufs möglich;
- Auswertung der Signale durch einen Mikrorechner oder einen 8-Kanal-Multiplexervorsatz an einem Einstrahloszilloskop. Ich habe den AC1 eingesetzt, für den auch die abgebildete Software konzipiert ist - er steuert alle Funktionen des Logikanalysators.

Rings um den sRAM - die Hardware

Das Kernstück der Schaltung bildet ein statischer RAM. Ich setzte einen U 6516 mit einer Zugriffszeit von 200 ns ein. Beim Einsatz schnellerer RAMs ist eine entsprechende Erhöhung der Abtastrate des Gesamtgeräts möglich.
Das Meßobjekt liegt im Modus "Daten schreiben" über einen Bustreiber direkt an den Datenleitungen des sRAMs; letztere sind im Modus "Daten lesen" zur Rechner-PIO durchgeschaltet. Die Anwahl des jeweiligen Datentreibers erfolgt durch den Schalter S2 bzw. eine Leitung des PIO-Ports B über ein statisches RS-Flipflop, das den entsprechenden Bustreiber freigibt. Die notwendige Taktfrequenz von 20 MHz erzeugt ein Taktgenerator nebst nachfolgender Teilerkette. Mit S1 ist der Taktgenerator abschaltbar (z.B. zur Einspeisung eines externen Takts). Mit Schalter S3 ist die Abtastrate einstellbar. Über eine Steuerlogik gelangt das so ausgewählte Signal zum Adressenzähler, der die Adressen A0 bis A10 für den RAM und A11 für die Statussignalisierung bildet.
Die Signale "RESET" und "Start" werden vom Rechner über zwei weitere Leitungen des PIO-Ports B gesteuert.
Der monostabile Multivibrator dient lediglich zur Anzeige des Schreib- und Lesezustands für den Bediener, da bei sehr geringen Abtastraten doch einige Zeit vergeht, bis die 2048 Meßwerte gespeichert sind.
Zum Lesen des RAM-Inhalts ist ein externer Zählimpuls an den Eingang "Zählimpuls ext:" anzulegen. Bei Rechnerkopplung wird dieser über die PIO ausgegeben.
Sollte es sich erforderlich machen, einen Start des Logikanalysators beim Vorhandensein eines bestimmten, am Eingang liegenden Datenworts vorzusehen, kann man den Eingang mit einem 8-Bit-Komparator, z.B. dem 74LS688, erweitern. Der Komparator vergleicht dabei ein mittels DIL-Schalter vorher einzustellendes Datenwort mit den anliegenden Eingangsinformationen. Bei Übereinstimmung wird der Ausgang des Komparators (A = B) L-aktiv. Diese Information wird mit dem Eingang "Start" des Logikanalysators verknüpft, und beim Anliegen der entsprechenden Bitfolge erfolgt der Start des Erfassungsablaufs, der im folgenden detaillierter beschrieben werden soll.

Schreiben und Lesen

Nach dem manuellen Einstellen der gewünschten Abtastrate mit S3 (Stufen zu 200 ns; 400 ns; 800 ns; 1,6 µs; 3,2 µs; 6,4 µs; 12,8 µs und 25.6 µs) und dem Einstellen des Schalters S2 auf "Schreiben" übernimmt nun der Rechner die Steuerung des Analysators
- auf Schreiben schalten (bzw. Status testen);
- Reset für Adreßzähler ausgeben;
- Startimpuls ausgeben;
- ständig Statusleitung abfragen (ist der RAM vollständig beschrieben, schaltet die Leitung A11 über eine Steuerlogik die Zählimpulse für den Adressenzähler ab; dies erkennt der Rechner durch die Pegeländerung der Statusleitung).
Die Änderung des Pegels auf der Statusleitung hat zur Folge:
- der Rechner schaltet auf Lesen um;
- er gibt den Reset für den Adreßzähler aus;
- er liest die Information aus dem sRAM aus und
- das Impulsdiagramm der ersten 53 Byte erscheint auf dem Bildschirm.

Die Software

Die Software ist, wie gesagt, für den AC1 geschrieben (das Assemblerlisting kann bei der Redaktion gegen 2,50 DM in Briefmarken mit plus 1,70 DM frankierten Rückumschlag angefordert werden, damit ist eine einfache Anpassung auch an andere Z80-Geräte möglich). Sie belegt folgenden Speicherplatz:
2000H bis 23F3H: Programm Logikanalysator
2800H bis 2FFFH: Zwischenspeicher für den Bildinhalt
3000H bis 37FFH: Meßwertspeicher 1
3800H bis 3FFFH: Meßwertspeicher 2.
Das Programm verfügt über eine Bedienerführung, die die Bedienung sehr vereinfacht. Nach dem Start auf Adresse 2000H erscheint ein Menübild ähnlich Bild 5 (die dort dargestellten Pegelverläufe erscheinen selbstverständlich erst nach einem Meßdurchlauf).

Die Arbeit mit dem Analysator

Zunächst ist der Analysator mit dem (ausgeschalteten) Rechner über ein 25poliges Canon-Kabel entsprechend dem Stromlaufplan zu verbinden. Danach legen Sie die zu untersuchende Information an den Eingang des Analysators und starten das Programm bei 2000H. Es erscheint zunächst das Menübild. Die Einleitung des Meßvorgangs erfolgt mit der Taste "M". Dabei wird die Information zunächst im sRAM gespeichert. Der Meßvorgang ist mit dem Erreichen der Adresse 2048 im Logikanalysator-RAM beendet. Danach erfolgt das Auslesen des Meßwertspeichers über den PIO-Port A in den Rechner.
Das Programm beginnt nun mit der Auswertung der ersten 53 Byte des Speicherinhalts. Die Darstellung des H-Pegels erfolgt als weißes Grafikzeichen. und der L-Pegel erscheint als Tiefstrich. Die Auswertung der eingelesenen Informationen erfolgt byteweise. Da bei dieser Auswertung der Meßwertspeicher 1 "zerstörend" gelesen wird, muß die Information im Meßwertspeicher 2 für weitere Auswertungen zwischengespeichert werden.
Mit den Tasten "V" und "Z" ist ein seitliches Verschieben vorwärts und rückwärts im Speicher möglich. Das machte sich erforderlich, da der AC1 nur eine Pseudografik besitzt, die lediglich die Auswertung von gleichzeitig 53 Byte möglich macht. Die restlichen Bildschirmpositionen je Zeile werden vom Diagrammaufbau belegt.
Durch ein mit den Kursortasten links und rechts verschiebbares Lineal kann man nun die gesamte Kanalinformation entlang der senkrechten Lineallinie vergleichen. Das hierbei erfaßte Byte (links vom Lineal) wird in der Statuszeile bei "Byte:" in Hex-Darstellung angezeigt. Die Anzeige bei "ZEIT:" entspricht der Stellung des Lineals im Meßintervall (1 bis 2048). So lassen sich bei bekannten Abtastraten Zeiten zwischen bestimmten Informationen ermitteln. Beispielsweise ergibt eine Differenz von 3 bei einer Abtastrate von 5 MHz 600 ns Zeitdifferenz. Durch die Betätigung der Taste "L" erfolgt ein erneutes Auslesen des Logikanalysators. Die Taste "D" ermöglicht eine dynamische Betriebsart des Logikanalysators mit dem Rechner. Dabei wird ständig zwischen den Betriebsarten Meßvorgang im Logikanalysator sowie Anzeigen der ersten 53 Byte und wieder zurück in den Meßvorgang usw. gesteuert. Damit kann man besonders gut zeitkritische Vorgänge, u.a. auch bei Abgleicharbeiten, zeitnah verfolgen.
Das Verlassen des Programms erfolgt schließlich mit "Q".
Anmerkung der Redaktion: Für MC-Programmierer bietet sich hier auch die Möglichkeit des Abspeicherns bzw. Ladens ganzer Speicherinhalte auf ein externes Speichermedium, um so ggf. ganze Meßabläufe zu Vergleichs- und Demonstrationszwecken reproduzierbar zu machen.

Der Aufbau

Ich habe die aufgebaute Schaltung zusammen mit einem Achtkanal-Multiplexer in einem Gehäuse mit den Abmessungen 215 x 130 x 75 mm3 untergebracht und so ein kompaktes Vielzweckgerät realisiert. Die Stromversorgung kann sowohl vom Rechner aus als auch extern oder von der Meßschaltung her erfolgen.
Die Verbindung zum Rechner wird mit einem 25poligen Canon-Steckverbinder realisiert, dessen Belegung sich aus dem Stromlaufplan Bild 1 ergibt. Um auch einen rechnerunabhängigen Betrieb realisieren zu können, sind in der Frontplatte schließlich noch Schalter für Schreiben, Lesen und je ein Taster für Reset und zum Start angebracht.

Das Leiterplattenlayout ist in den Bildern 2 und 3 gezeigt. Für seine Entwicklung danken wir unserem Leiterplattenhersteller, der Fa. ABCOM-electronic Leipzig.

286 KByte 217 KByte 202 KByte
Bild 1 Bild 2 Bild 3

266 KByte 273 KByte 39 KByte
Bild 4 Listing Bild 5

Funkamateur 08/92

 

Nachtrag: Achtkanal - Logikanalysator

B. JAHN

Der Autor stellt zum Arbeiten mit dem Logikanalysator nach [1] eine überarbeitete Softwareversion vor.

Folgende Routinen wurden neu eingefügt:
- Kennbuchstabe: S Saven auf Kassette (Speichern einer Datei von Adresse 3800H bis 3FFFH - Meßwertspeicher 1 - auf ein externes Speichermedium - Kassette. Argumente ARG 1 - ARG3 werden übergeben.)
- Kennbuchstabe: K Laden von Kassette (Die auf Kassette gespeicherte Datei wird auf den Meßwertspeicher 1 - mit Übergabe des Argument ARG 1 - von Kassette zurückgelesen, kann wie in [1] beschrieben werden.)
- Kennbuchstabe: P Bildschirmkopie (Die aktuelle Bildschirmseite wird auf einen Drucker K6313 - ausgegeben, der Kennbuchstabe im Menübild nicht angezeigt; Umkodierung von Grafikzeichen des Bildschirms auf druckerspezifische Grafikzeichen.)
Zur besseren Anpassung an andere Rechnertypen wurde ein Sprungverteiler mit den wichtigsten rechnertypischen Routinen nach [2] eingearbeitet.

Das komplette Assemblerlisting kann bei der Redaktion bezogen werden (mit 2,40 DM frankierter Rückumschlag sowie lose beigelegten Briefmarken im Werte von 2,10 DM).

Literatur

[1] Jahn, B.: Achtkanal-Logikanalysator,
FUNKAMATEUR 41 (1992), H.2, S.77
[2] Heyder, F.: Der Amateurcomputer "AC1" (12)
FUNKAMATEUR 34 (1985), H.1, S.40

89 KByte 117 KByte 424 KByte
Hardcopy Sprungverteiler Listing