Der zustandsbasierte Auslösen-Flow ermöglicht es Ihnen, einen benutzerdefinierten Triggering-Flow zu definieren, um Ihre Auslösensbedingungen zu organisieren. Diese Beispiele zeigen Vorlagen für gängige Triggering-Flow-Szenarien und veranschaulichen verschiedene Szenarien, bei denen der zustandsbasierte auslösende Fluss nützlich ist. Für alle diese Beispiele können Sie die Flussbeschreibung direkt in das Register SignalTap II State-Based Trigger Flow einfügen, indem Sie den Display-Modus Alle Status in einem Fenster verwenden und die Beschreibung entsprechend Ihrem Debugging-Szenario ändern.
Zustandsbasierte Auslösende Flussbeschreibung
Stellen Sie sicher, dass die Bedingung mit der Auslösen-Aktion zuerst ist,
da bedingte Anweisungen prioritätsbasiert sind.
wenn (c1 >= 5)
Auslöser;
else if (! bedingung1)
Erhöhung c1;
else if (Bedingung1 && c1 < 5)
c1 zurücksetzen;
Datenanalyseergebnis
Zustandsbasierte Auslösende Flussbeschreibung
Zustand ST1:
if (Bedingung1 && c1 > 0 && c1 < 5)
Auslöser;
else if ( ! condition1 && & c1 < 6)
Erhöhung c1;
else if (Bedingung1 && c1 > 5)
c1 zurücksetzen;
Im Falle einer langen Sequenz, bei der Bedingung1 nicht auftritt, wurde die "Warnbedingung" c1 <6 in der zweiten else wenn Bedingungsaussage hinzugefügt, um zu verhindern, dass der Zähler nicht verwendet wird.
Datenanalyseergebnis
Zustandsbasierte Auslösende Flussbeschreibung
Zustand ST1:
wenn (c1 >= 5)
Auslöser;
else if (Bedingung1)
Erhöhung c1;
Datenanalyseergebnis
Auslöser beim 5. Übergang eines Gruppenwertes
Methode 1: Einsatz eines edge-sensitiven Triggers
Setup for Trigger Condition
In diesem Fall können wir eine edge-sensitive Trigger-Bedingung definieren, um alle Busübergänge zum gewünschten Gruppenwert zu erkennen. Wir benötigen eine Edge-Erkennung für jedes Bit auf unserem Datenbus, das logischerweise ANDed ist, mit einem Vergleich zu unserem gewünschten Gruppenwert. In diesem Fall ist eine erweiterte Auslösebedingung erforderlich. Die Einrichtung über den erweiterten Trigger-Bedingungseditor wird unten angezeigt.
Zustandsbasierte Auslösende Flussbeschreibung
Zustand ST1:
wenn (c1 >= 5)
Auslöser;
else if (Bedingung1)
Erhöhung c1;
Datenanalyseergebnis
Methode 2: Verwendung eines einfachen Auslösers und des zustandsbasierten Auslösensflusses
Setup for Trigger Condition
Da die Einrichtung einer erweiterten Triggerbedingung für einen großen Buswert umständlich sein kann, verwendet diese alternative Methode einen grundlegenden Auslöser und verwendet den zustandsbasierten auslösenden Fluss, um den Übergang des Bus zum gewünschten Gruppenwert zu erkennen.
Zustandsbasierte Auslösende Flussbeschreibung
Zustand ST1:
if (Bedingung1)
Beginnen
Erhöhung c1;
goto ST2;
Ende
Zustand ST2:
wenn (c1 >= 5)
Auslöser;
Wartezustand; Bleiben Sie in diesem Zustand, bis Bedingung 1 falsch ist, um sie zu ignorieren
alle Vorkommnisse von Condition1, die keine Busübergänge sind
else if (! bedingung1)
Beginnen
goto ST1;
Ende
Datenanalyseergebnis
Beachten Sie, dass im Vergleich zur ersten Methode ein geringfügiger Unterschied bei der Erfassung von Daten besteht. In diesem Fall wird ein level sensitiver Trigger für die Triggerbedingung verwendet. Wenn der Buswert zu Beginn der Datenanalyse mit dem gewünschten Gruppenwert ge parkt wird, schließt diese Methode den Gruppenwert in die Anzahl ein. Da bei der ersten Methode nur ein Bus-Übergang zum gewünschten Gruppenwert zählt, würde die erste Methode das erste Auftreten des Gruppenwertes ignorieren, wenn der Gruppenwert bereits zu Beginn der Übernahme auf dem Bus ge parkt ist.
Trigger After Condition1 folgt auf Bedingung 2
Setup for Trigger Condition
Drei grundlegende Auslösebedingungen werden in der Setup-Registerkarte auf die gewünschten Werte festgelegt. Die ersten beiden Auslösebedingungen sind auf die gewünschten Gruppenwerte eingestellt. Die dritte Auslösebedingung ist dafür gedacht, eine Art von Leerlauftransaktion im Bus zwischen der ersten und zweiten Bedingung zu erfassen. Sie können diese Auslösebedingung als "egal" setzen, wenn es besser ist. Beachten Sie die Verwendung von Mnemonics für TrigCond1, TrigCond2 und IDLE.
Zustandsbasierte Auslösende Flussbeschreibung
Zustand ST1:
if (Bedingung1)
goto ST2;
Zustand ST2:
if (Bedingung1 || Bedingung3)
goto ST2;
else if (Bedingung2)
goto ST3;
else if (! bedingung2)
goto ST1;
Zustand ST3:
Auslöser;
Datenanalyseergebnis
Zustandsbasierte Auslösende Flussbeschreibung
Zustand ST1:
if (Bedingung1)
goto ST2;
Zustand ST2:
if (Bedingung1)
goto ST2;
else if (Bedingung2)
Auslöser;
oder
goto ST1;
Datenanalyseergebnis
Auslöser unter Bedingung2, die nicht zwischen Bedingung1 und Bedingung3 auftritt
Setup for Trigger Condition
Drei grundlegende Auslösebedingungen sind auf die gewünschten Gruppenwerte definiert. Beachten Sie noch einmal die Verwendung von Mnemonics.
Zustandsbasierte Auslösende Flussbeschreibung
Zustand ST1:
if (Bedingung1)
goto ST2;
Zustand ST2:
if (Bedingung3)
goto ST4;
else if (! bedingung2)
goto ST3;
oder
goto ST1;
Zustand ST3:
if (Bedingung3)
goto ST4;
Zustand ST4:
Auslöser;
Datenanalyseergebnis
Auslöser beim 5. auftreten von Zustand1
Setup for Trigger Condition
Eine grundlegende Auslösebedingung wird in der Setup-Registerkarte mit dem gewünschten Wert definiert. TrigCond1 in der folgenden Abbildung ist ein Alias für den Wert AA setup using a Mnemonic table setup.
Zustandsbasierte Auslösende Flussbeschreibung
Zustand ST1:
wenn (c1 >= 5)
Auslöser;
else if (Bedingung1)
Erhöhung c1;
else if (! bedingung1)
c1 zurücksetzen;
Datenanalyseergebnis
Auslöser nach Sequenzverletzung: Bedingung1-> Condition2-> Condition3-> Bedingung4
Setup for Trigger Condition
Vier grundlegende Auslösebedingungen sind auf die gewünschten Sequenzwerte eingestellt. Mnemonics wird für alle vier angezeigten Auslösebedingungen verwendet.
Zustandsbasierte Auslösende Flussbeschreibung
Zustand ST1:
if (Bedingung1)
goto ST3;
else if (Bedingung2)
goto ST4;
else if (Bedingung3)
goto ST5;
else if (Bedingung4)
goto ST2;
oder
Auslöser;
Zustand ST2:
if (Bedingung4)
goto ST2;
else if (Bedingung1)
goto ST3;
oder
Auslöser;
Zustand ST3:
if (Bedingung1)
goto ST3;
else if (Bedingung2)
goto ST4 ;
oder
Auslöser;
Zustand ST4:
if (Bedingung2)
goto ST4;
else if (Bedingung3)
goto ST5;
oder
Auslöser;
Zustand ST5:
if (Bedingung3)
goto ST5;
else if (Bedingung4)
goto ST2;
oder
Auslöser;
Datenanalyseergebnis
Auslöser bei einer Kantenfolge
Setup for Trigger Condition
Drei randempfindliche grundlegende Auslösebedingungen sind für die gewünschte Sequenz eingerichtet. Dieses Beispiel sucht nach einer ansteigenden Kante auf Kanal 1, einer herabfallenden Kante auf Kanal 2, gefolgt von einer ansteigenden Kante auf Kanal 3.
Zustandsbasierte Auslösende Flussbeschreibung
Zustand ST1:
if (Bedingung1)
goto ST2;
Zustand ST2:
if (Bedingung2)
goto ST3;
Zustand ST3:
if (Bedingung3)
Auslöser;
oder
goto ST1;
Datenanalyseergebnis
Trigger on Condition1 gefolgt von Condition2 nach 5 Taktzyklen
Setup for Trigger Condition
Zwei grundlegende Auslösebedingungen sind für die gewünschten Gruppenwerte definiert. Beachten Sie erneut die Verwendung von Mnemonics für TrigCond1 und TrigCond2.
Zustandsbasierte Auslösende Flussbeschreibung
Zustand ST1:
if (Bedingung1)
goto ST2;
Zustand ST2:
if (Bedingung1)
goto ST2;
else if (! bedingung2)
Erhöhung c1;
else if (bedingung2 && c1 >= 5)
Auslöser;
else if (Bedingung2 && c1 < 5)
goto ST1;
Datenanalyseergebnis
Trigger on Condition1 gefolgt von Condition2 innerhalb von 5 Proben
Setup for Trigger Condition
Zwei grundlegende Auslösebedingungen sind für die gewünschten Gruppenwerte definiert. Beachten Sie erneut die Verwendung von Mnemonics für TrigCond1 und TrigCond2.
Zustandsbasierte Auslösende Flussbeschreibung
Zustand ST1:
if (Bedingung1)
goto ST2;
Zustand ST2:
if (Bedingung1)
goto ST2;
else if (! bedingung2)
Erhöhung c1;
else if (Bedingung2 && c1 <= 5)
Auslöser;
else if (Bedingung2 && c1 > 5)
goto ST1;
Datenanalyseergebnis
Trigger on Condition1 Nicht gefolgt von Condition2 innerhalb von 5 Proben
Setup for Trigger Condition
Zwei grundlegende Auslösebedingungen sind für die gewünschten Gruppenwerte definiert. Beachten Sie erneut die Verwendung von Mnemonics für TrigCond1 und TrigCond2.
Zustandsbasierte Auslösende Flussbeschreibung
Zustand ST1:
if (Bedingung1)
goto ST2;
Zustand ST2:
wenn (c1 == 5)
Auslöser;
else if (Bedingung1)
goto ST2;
else if (! bedingung2)
Erhöhung c1;
Datenanalyseergebnis
Auslöser nach 5 Übergängen
Setup for Trigger Condition
Dieses Beispiel benötigt eine Auslösebedingung, um alle Wechselaktivitäten auf dem überwachten Bus zu erfassen. Da eine OR-Bedingung erforderlich ist, ist eine erweiterte Auslösebedingung erforderlich.
Zustandsbasierte Auslösende Flussbeschreibung
Zustand ST1:
if (c1 == 5)
Auslöser;
else if (! bedingung1)
c1 zurücksetzen;
else if (Bedingung1)
Erhöhung c1;
Datenanalyseergebnis
Auslöser, wenn Bedingung1 weniger als 5-mal zwischen Bedingung2 und Bedingung3 auftritt
Setup for Trigger Condition
Dieses Beispiel erfordert drei edge-sensitive Trigger-Bedingungen mit jeder Trigger-Bedingung, die einen Vergleich zum gewünschten Gruppenwert enthält. Dies kann mit dem erweiterten Trigger-Bedingungseditor erfolgen. Die folgende Abbildung zeigt ein Beispiel für eine der drei randempfindlichen Auslösebedingungen.
Zustandsbasierte Auslösende Flussbeschreibung
Zustand ST1:
if (Bedingung2)
Beginnen
c1 zurücksetzen;
goto ST2;
Ende
Zustand ST2:
if (Bedingung3)
goto ST3;
else if (Bedingung2)
goto ST1;
else if (Bedingung1)
Erhöhung c1;
else if (Bedingung3 && (c1 >= 5))
goto ST1;
Zustand ST3:
Auslöser;