GAL
Zurück Nach oben Vorwärts

Kurzbeschreibung Parameter Funktionsweise Ein/Ausgänge Limitierungen Querverweise Beispiele

Kurzbeschreibung
GAL stellt ein Gate Array Logic Modul dar.
Parameter
Der Dialog dieses Moduls dient der Definition von Algorithmen, hierbei wird das Laden, Speichern und eine Syntaxüberprüfung des Definitionstextes unterstützt.
Es kann eingestellt werden, daß die Ausgänge immer ihren Zustand ausgeben (sobald im Modul Daten verarbeitet werden), oder nur Änderungen ihres Zustands ausgeben.
Es gibt folgende Variablen bzw. Konstanten:
>...    Eingang
<...    Ausgang
#...    Temporäre Variable
0       Konstante
1       Konstante

Außerdem gibt es die Operatoren = (Zuweisung), () (Klammern), * (AND), + (OR), ^ (XOR) und /(NOT)
Der Aufbau eines Programms sieht folgendermaßen aus:
Variable = beliebige Variable Operator beliebige Variable;
Ausgang = beliebige Variable Operator beliebige Variable;
z.B.:
<O1= >I1 * >I2;

#tmp= (>I1 + >I2) * (/>I3 ^ #tmp);
Funktionsweise
Ausgänge stellen das Ergebnis logisch verknüpfter Eingänge dar.
Syntaxdiagramm:
Die Vorrangsstufen der Operatoren lautet wie folgt:
Operator    Vorrangstufe    Erläuterung

    ()       1         Runde Klammern
    /        2         NOT (negieren des folgenden Faktors)
    *        3         AND (Und-Verknüpfung des linken und rechten Faktors)
    ^        4         XOR (Exklusiv Oder-Verknüpfung des linken und rechten Terms)
    +        5         OR (Oder-Verknüpfung des linken und rechten einfachen Ausdrucks)
    =        6         Zuweisung des rechten Ausdrucks an den Ausgang/Variable links

Ein-/Ausgänge
Eingänge
Frei definierbarer Bezeichner TYPEINFO{TypeInfo}
SWORD[1]{BIN}
Beliebige Anzahl von Eingängen
Ausgänge
Frei definierbarer Bezeichner TYPEINFO{TypeInfo}
SWORD[1]{BIN}
Beliebige Anzahl von Ausgängen
Limitierungen
-
Querverweise
Gate
Beispiele
Mit folgenden Anweisung erhält das GAL Modul die Funktionalität eines RS-FlipFlops:

// RS-Flipflop
#tmp= /(>S + <Q);     // Variable #tmp = NOT (Eingang >S OR Ausgang <Q);
<Q =  /(>R + #tmp);   // Ausgang <Q = NOT (Eingang >R OR Variable #tmp);
<Qn = /(>S + <Q);     // Ausgang <Qn = NOT (Eingang >S OR Ausgang <Q);


Der dazugehörige Signalgraph kann wie folgt aussehen:
gal_rsflipflop.bmp (254048 bytes)


Mehr Beispiele...