Logikanalysator triggern
Im Praktikum Digitale Impulse anzeigen hatten wir bei der einfachen Schaltung das Problem, dass die angezeigte Impulsfolge (des Zählers) nicht immer gleich begann. Mal begann sie mit einer 0, mal mit einer 1.
Wir betrachten nun eine Schaltung, die dieses Problem löst: eine Triggerschaltung.
Die Schaltung in Bild 2 entspricht der Schaltung in Bild 1. Wir haben jedoch eine einfache Schaltung mit einem D-Register U3A hinzugefügt.
Das D-Register wird durch die steigende Flanke ↑ des Eingangssignals getaktet und speichert dann eine 1. Wenn diese 1 übernommen wird, wird der Reset für den Zähler U1A zurückgenommen. Das entspricht dem Loslassen des Start-Tasters in Bild 1. Eine neue Sequenz der im Schieberegister gespeicherten Impulse beginnt.
In Bild 2 setzt die Start-Taste das D-Register U3A zurück. Dessen Ausgang Q wird 1 und setzt den Zähler U1A zurück. Durch eine positive Flanke ↑ des Eingangssignals wird der Ausgang Q von U3A 1 und gibt den Zähler U1A frei.
Der Zähler U1A wird also nicht sofort, sondern erst durch eine positive Flanke ↑ des Eingangssignals gestartet. Dieser Start der Aufzeichnung wird als Trigger bezeichnet, die Schaltung um U3A als Triggerschaltung.
Wir haben die Aufzeichnung zur positiven Flanke ↑ des Eingangssignals synchronisiert. Das ist wichtig, da fast immer das Eingangssignal eine andere Taktquelle hat als die Aufzeichnung.
Unsere Schaltung in Bild 2 soll das Prinzip verdeutlichen. In einer realen Schaltung mit mehreren Anzeigekanälen werden wir oft komplexere Triggerbedingungen benötigen. Wenn wir z.B. alle vier Ausgänge des gemessenen Zählers U1B anzeigen wollen, ist es sinnvoll, die Aufzeichnung immer dann zu starten, wenn der Zähler U1B 0 ist, d.h. Q1 bis Q4 von U1A sind 0. Wir brauchten eine Logik, die das erkennt. Wir brauchen eine Triggerlogik. Eine solche Schaltung betrachten wir hier nicht, stattdessen sehen wir uns an, wie wir eine Triggerbedingung in PulseView einstellen.
Triggerbedingung in PuseView
Wir messen die gleiche Schaltung wie in Logikanalysator mit PulseView. Den Fehler mit dem falschen Takt für den zweiten BCD-Zähler haben wir korrigiert.
Wir wiederholen die Messung.
Wir wollen, dass die angezeigte Sequenz für beide Zählstufen mit 0 beginnt. Das ist dann der Fall, wenn alle Ausgänge von U1A und U1B 0 sind. Dieser Zustand dauert genau betrachtet etwa 2ms. Wir müssen auf die Flanke der Bedingung Q1(U1A)=0 ... Q4(U1B)=0 triggern. Das ist genau dann der Fall, wenn Q4 von U1B eine fallende Flanke hat
Im Fenster von PulseView klicken wir mit der linken Maustaste auf D7, das ist Q4(U1B). Das Fester
erscheint.
In der unteren Zeile kann die Triggerbedingung eingestellt werden.
- Ignorieren (aktuell gewählt)
- Wert 0 (LOW)
- Wert 1 (HIGH)
- steigende Flanke ↑
- fallende Flanke ↓
- beliebige Flanke ↓↑
Wir wählen die fallende Flanke ↓.
Im Menü können wir außerdem
- die Bezeichnung des Eingangs,
- Farbe der Darstellung und
- die Höhe der Anzeige ändern.
Als Bezeichner geben wir den Ausgang des Zählers ein.
Dann starten wir Run.
In Bild 6 sehen wir, dass die Leitungen passend beschriftet sind. Für die Leitung Q4(U1B) ist rechts die Triggerbedingung angegeben. Wir sehen, dass die Impulsfolge links mit allen Leitungen bei 0 beginnt.
Wir möchten es etwas bequemer haben und wollen die fallende Flanke von Q4(U1B) sehen. Dann müssten die Zustände der Messleitungen vor der fallenden Flanke aufgezeichnet werden. Das kann PulseView natürlich auch.
Wir klicken auf das Werkzeugsymbol in der Menüleiste (nicht das neben Run). Das Pre-trigger capture ratio, d.h. wie viel % der Anzeige vor dem Trigger aufgezeichnet werden soll, kann eingestellt werden. Wir wählen 1%. Nach Run haben wir:
Die fallende Flanke von Q4(U1B) - und aller Leitungen - ist gut zu erkennen.
PulseView
An dieser Stelle betrachten wir einige weitere Fähigkeiten von PulseView.
-
Null der Zeitskala setzen:
Rechte Maustaste auf der Zeitskala für den neuen Nullpunkt -> Set as zero point.
-
Zeit-Markierung setzen
Rechte Maustaste auf eine Zeitskala -> Create here marker.
- Der Marker kann mit der Maus verschoben werden.
- Löschen mit: Rechte Maustaste über den Marker -> Delete
- Mit der rechten Maustaste auf das Symbol einer Leitung kann diese deaktiviert werden.
- Leitungen können wir im Menü unter aktivieren.
- Wir können eine Leitung verschieben, indem wir das Symbol einer Leitung mit der Maus halten und verschieben.
- Der Inhalt einer Messung kann in einer Datei gespeichert und wieder angezeigt werden.
- Unter können Protokolle, d.h. bestimmte Sequenzen von Impulsen, untersucht werden.
- Wir werden später gegebenenfalls darauf eingehen.
Grenzen eines Logikanalysators
- Mit PulseView und dem Saleae-kompatiblen Analysator kann der Logikpegel nicht eingestellt werden.
- Die Pegel sind eigentlich undefiniert.
- Die Logikpegel können nicht eingestellt werden.
- Zu langsame Flanken werden nicht erkannt / können nicht erkannt werden.
- Spikes / Glitches werden oft nicht erkannt.
Beispiel Spikes
Im Praktikum Impulse erzeugen haben wir uns mit sehr kurzen Impulsen, den Spikes, beschäftigt.
Eine Schaltung mit zwei Nand-Gattern erzeugt sehr kurze Impulse, wenn der Takt von 1 auf 0 wechselt.
Wenn wir die Schaltung mit dem 74HC00 (U1) mit PulseView und dem Saleae-kompatiblen Analysator untersuchen, werden die Spikes nicht erkannt. Der 74HC00 ist zu schnell für die 24MHz des Analysators.
Ersetzen wir den 74HC00 durch einen CMOS-Baustein 4011 (U2), können die Spikes bei einer Samplingrate von 24MHz angezeigt werden.
Der Spike ist beim CMOS 4011 deutlich zu erkennen. Die Breite des Spikes beträgt natürlich nicht genau 41,67µs, kann aber aufgrund der Samplingrate von 24MHz nicht besser aufgelöst werden.