Logikgatter-Diagramm

Über Logikgatter-Diagramme

Ein Logikgatter-Diagramm zeigt, wie Boolesche Funktionen in Hardware implementiert werden – Eingaben fließen von links durch kombinatorische Gatter und Flipflops zu Ausgaben auf der rechten Seite. Digitaldesign-Ingenieure nutzen sie, um RTL-Intent zu dokumentieren, Gate-Level-Netlists zu verifizieren und Boolesche Algebra zu lehren. Schematex leitet seinen Symbolsatz von IEEE Std 91-1984 / ANSI Y32.14 ab (charakteristische ANSI-Formen, der US-Standard) und IEC 60617-12 (einheitliche Rechtecksymbole, der internationale Standard), pro Diagramm wählbar.

Der DSL ist funktional: Sie deklarieren Signale und beschreiben die Eingaben jedes Gatters namentlich. Layout und Verdrahtung werden automatisch aus dem Abhängigkeitsgraphen berechnet – keine manuellen Koordinaten.

logic-gate·§ IEEE 91-1984
↘ preview
100%
1-bit Full Adder Logic gate diagram with 5 gates, 3 inputs, 2 outputs XOR AND XOR AND OR A B Cin Sum Cout 1-bit Full Adder
UTF-8 · LF · 10 lines · 200 chars✓ parsed·3.5 ms·5.3 KB SVG

1. Ihr erstes Logikgatter-Diagramm

Das kleinste nützliche Diagramm: zwei Eingaben, ein Gatter, ein Ausgang.

logic-gate·§ IEEE 91-1984
↘ preview
100%
NAND check Logic gate diagram with 1 gates, 2 inputs, 1 outputs NAND A B F NAND check
UTF-8 · LF · 4 lines · 53 chars✓ parsed·0.6 ms·3.0 KB SVG

Vier Regeln decken 80 % der Anwendungsfälle ab:

  1. Beginnen Sie mit dem Schlüsselwort logic, optional gefolgt von einem zitierten Titel und style: ansi oder style: iec.
  2. Deklarieren Sie Ports mit input- und output-Zeilen – durch Kommas getrennte Signalnamen.
  3. Jedes Gatter ist id = GATTER_TYP(eingang1, eingang2, …). Die id wird ein benannter Signaldraht.
  4. Ein output-Name, der einer Gatter-id entspricht, wird automatisch verdrahtet; verwenden Sie OUTPUT <- gate_id, wenn die Namen unterschiedlich sind.

Kommentare müssen mit # oder -- in einer eigenen Zeile beginnen (oder nach dem letzten Token in einer Gatterzeile).


2. Gattertypen

2.1 Kombinatorische Gatter

DSL-SchlüsselwortFunktionANSI-FormIEC-Symbol
ANDA · BD-förmiger KörperRechteck + &
ORA + BGekrümmter KörperRechteck + ≥1
NOTĀDreieck + BlaseRechteck + 1 + Blase
NAND¬(A · B)AND + BlaseRechteck + & + Blase
NOR¬(A + B)OR + BlaseRechteck + ≥1 + Blase
XORA ⊕ BOR + extra BogenRechteck + =1
XNOR¬(A ⊕ B)XOR + BlaseRechteck + =1 + Blase
BUFA (Puffer)Dreieck, keine BlaseRechteck + 1
logic-gate·§ IEEE 91-1984
↘ preview
100%
Gate gallery Logic gate diagram with 5 gates, 3 inputs, 5 outputs AND OR XOR NAND NOT A B C Y_and Y_or Y_xor Y_nand Y_not Gate gallery
UTF-8 · LF · 8 lines · 174 chars✓ parsed·0.8 ms·6.3 KB SVG

2.2 Sonderpuffer

DSL-SchlüsselwortFunktion
TRISTATE_BUFTristate-Puffer – Z-Ausgang, wenn Enable niedrig
TRISTATE_INVInvertierender Tristate-Puffer
OPEN_DRAINOpen-Drain / Open-Collector-Ausgang (externer Pull-up erforderlich)
SCHMITTSchmitt-Trigger – Hysterese-Symbol im Körper
logic-gate·§ IEEE 91-1984
↘ preview
100%
Special buffers Logic gate diagram with 3 gates, 2 inputs, 3 outputs EN TRISTATE_BUF EN OPEN_DRAIN SCHMITT A EN Y_tri Y_od Y_sch Special buffers
UTF-8 · LF · 6 lines · 141 chars✓ parsed·0.5 ms·4.4 KB SVG

2.3 Flipflops und Latches

DSL-SchlüsselwortTypSchlüsselpins
DFFD-Flipflop (flankengesteuert)D, CLK, Q, Q̄
JKFFJK-FlipflopJ, K, CLK, Q, Q̄
SRFFSR-FlipflopS, R, CLK, Q, Q̄
TFFT-Flipflop (Toggle)T, CLK, Q, Q̄
LATCH_SRSR-Latch (pegelgesteuert, kein Takt)S, R, Q, Q̄
LATCH_DD-Latch (transparent wenn Enable=1)D, EN, Q, Q̄
logic-gate·§ IEEE 91-1984
↘ preview
100%
Flip-flop gallery Logic gate diagram with 3 gates, 5 inputs, 3 outputs D Q DFF J K Q JKFF D E Q LATCH_D D J K CLK EN Q_dff Q_jk Q_latch Flip-flop gallery
UTF-8 · LF · 6 lines · 156 chars✓ parsed·0.7 ms·6.3 KB SVG

2.4 Komplexe kombinatorische Bausteine

DSL-SchlüsselwortFunktion
MUXMultiplexer
DEMUXDemultiplexer
DECODERBinärdecoder
ENCODERPrioritätsencoder
logic-gate·§ IEEE 91-1984
↘ preview
100%
Combinational MSI Logic gate diagram with 2 gates, 3 inputs, 2 outputs I0 I1 I2 MUX I0 I1 DECODER A B S Y_mux Y_dec Combinational MSI
UTF-8 · LF · 5 lines · 114 chars✓ parsed·0.4 ms·4.3 KB SVG

2.5 Komplexe sequentielle Bausteine

DSL-SchlüsselwortFunktion
COUNTERGenerischer Binärzähler (CTR-Label, CLK/RESET/Q0–Q3)
SHIFT_REGGenerisches Schieberegister (SRG-Label, CLK/SER/Q0–Q7)
logic-gate·§ IEEE 91-1984
↘ preview
100%
Sequential MSI Logic gate diagram with 2 gates, 3 inputs, 2 outputs I0 I1 COUNTER I0 I1 SHIFT_REG DATA CLK RESET Q_cnt Q_sr Sequential MSI
UTF-8 · LF · 5 lines · 132 chars✓ parsed·0.3 ms·4.2 KB SVG

3. Eingaben und Ausgaben

3.1 Ports deklarieren

input A, B, Cin          # drei Eingabe-Ports
output Sum, Cout         # zwei Ausgabe-Ports

Jeder Name in einer input- oder output-Liste wird ein benannter Signaldraht, der im gesamten Diagramm verfügbar ist.

3.2 Aktiv-niedrig-Eingaben

Stellen Sie einem Signalnamen in der Eingabeliste ~ voran, um es als aktiv-niedrig zu markieren. Der Renderer zeichnet eine Blase am Port-Symbol.

input ~nRESET, CLK, DATA

Die Aktiv-niedrig-Notation funktioniert auch innerhalb von Gatter-Eingabelisten:

g1 = AND(~nRESET, CLK)

3.3 Ausgaben mit Gattern verdrahten

Wenn die Ausgabe-ID mit einer Gatter-ID übereinstimmt, ist die Verbindung implizit:

output Sum        # Sum ist auch eine Gatter-ID → automatisch verdrahtet
Sum = XOR(s1, Cin)

Wenn die Namen unterschiedlich sind, verwenden Sie den expliziten Zuweisungsoperator:

output F
q1 = NOR(A, B)
F <- q1           # F bezieht sich auf q1s Ausgang
logic-gate·§ IEEE 91-1984
↘ preview
100%
SR latch from NOR gates Logic gate diagram with 2 gates, 4 inputs, 2 outputs NOR NOR S R Qn Q Q Qn SR latch from NOR gates
UTF-8 · LF · 7 lines · 121 chars✓ parsed·0.4 ms·4.3 KB SVG

4. Symbolstil

Die Option style: in der Headerzeile wählt den Symbolstandard aus. Sie gilt für jedes Gatter im Diagramm.

WertStandardVerwenden wenn
ansi (Standard)IEEE Std 91 — charakteristische gebogene FormenUS-Bildung, Hardware-Dokumentation
iecIEC 60617-12 — einheitliche Rechtecke + FunktionslabelInternational, europäische Industrie
logic "ALU slice" style: iec
logic-gate·§ IEEE 91-1984
↘ preview
100%
1-bit Full Adder Logic gate diagram with 5 gates, 3 inputs, 2 outputs =1 & =1 & ≥1 A B Cin Sum Cout 1-bit Full Adder
UTF-8 · LF · 10 lines · 199 chars✓ parsed·0.9 ms·5.3 KB SVG
logic-gate·§ IEEE 91-1984
↘ preview
100%
Gate gallery — IEC style Logic gate diagram with 5 gates, 3 inputs, 5 outputs & ≥1 =1 & 1 A B C Y_and Y_or Y_xor Y_nand Y_not Gate gallery — IEC style
UTF-8 · LF · 8 lines · 185 chars✓ parsed·0.4 ms·6.3 KB SVG

5. Modulblöcke

Verwenden Sie module, um Gatter in einem beschrifteten Teilschaltungsblock zu gruppieren. Modulblöcke sind nützlich zur Dokumentation hierarchischer Designs – jedes Modul wird als benanntes Rechteck um seine Mitgliedsgatter gerendert.

logic "Hierarchical adder"
input A, B, Cin
output Sum, Cout

module "Half Adder" {
  s1 = XOR(A, B)
  c1 = AND(A, B)
}

Sum = XOR(s1, Cin)
Cout = OR(c1, AND(s1, Cin))

Modulregeln:

  • module "Label" { — öffnet ein Modul (Label in Anführungszeichen oder als einfacher Bezeichner). Die { muss in derselben Zeile wie module stehen.
  • } in einer eigenen Zeile schließt das zuletzt geöffnete Modul.
  • Module können verschachtelt werden.

6. Labels und Kommentare

  • Diagrammtitel: logic "Full Adder" – nur in der ersten Zeile.
  • Gattersignalnamen: die id in id = GATTER(…) ist sowohl der Gattername als auch der Name des Ausgabedrahtes.
  • Ausgabelabels: output Sum – das Ausgabe-Port-Label entspricht standardmäßig dem Signalnamen.
  • Aktiv-niedrig-Marker: ~-Präfix an einem Port oder Gattereingang.
  • Kommentare: # oder -- am Zeilenanfang oder nach dem letzten sinnvollen Token einer Zeile.

7. Reservierte Wörter und Escaping

Am Zeilenanfang reserviert: logic (Header), input, output, module, }.

Reservierte Operator-Token – vermeiden Sie diese in Signalnamen: =, (, ), ,, <-, ~.

Signalnamensregeln: muss dem Muster [a-zA-Z_][a-zA-Z0-9_]* entsprechen. Klein- und Großbuchstaben werden beide akzeptiert; Gattertyp-Schlüsselwörter (AND, OR usw.) sind im Parser Groß-/Kleinschreibung-unabhängig.


8. Häufige Fehler

Sie schriebenParser meldetBehebung
f = and(A, B) (Kleinbuchstaben-Gatter)Akzeptiert – Gattertypen sind Groß-/Kleinschreibung-unabhängigSowohl AND als auch and funktionieren
output F dann F <- q1 aber q1 nicht deklariertLogicParseError: Unknown signal "q1"Deklarieren Sie q1 als Gatter, bevor Sie darauf referenzieren
input A B C (Leerzeichen, keine Kommas)Parser nimmt nur A; B und C werden ignoriertVerwenden Sie Kommas: input A, B, C
F = BUFFER(A)LogicParseError: Unknown gate type: BUFFERVerwenden Sie BUF
module FullAdder { (keine {-Klammer)Zeile entspricht nicht dem Modulpatter – still übersprungenDie öffnende { ist in derselben Zeile wie module erforderlich
style: IEEE im HeaderUnbekannter Stilwert – still auf ansi zurückgesetztVerwenden Sie style: ansi oder style: iec

9. Grammatik (EBNF)

document    = header statement*

header      = "logic" ( WS quoted-string )? ( WS "style:" WS style )? NEWLINE
style       = "ansi" | "iec"
quoted-string = '"' any-char-but-quote* '"'

statement   = blank | comment | input-decl | output-decl | gate-def | assign | module-block

comment     = ( "#" | "--" ) any NEWLINE

input-decl  = "input" WS port-list NEWLINE
output-decl = "output" WS port-list NEWLINE
port-list   = port-id ( "," WS? port-id )*
port-id     = "~"? id

gate-def    = id WS "=" WS gate-type "(" input-list ")" NEWLINE
input-list  = ( "~"? id ) ( "," WS? ( "~"? id ) )*

assign      = id WS "<-" WS id NEWLINE

module-block = module-open ( statement | module-block )* module-close
module-open  = "module" WS ( quoted-string | id ) WS? "{" NEWLINE
module-close = "}" NEWLINE

gate-type   = "AND" | "OR" | "NOT" | "NAND" | "NOR" | "XOR" | "XNOR" | "BUF"
            | "TRISTATE_BUF" | "TRISTATE_INV" | "OPEN_DRAIN" | "SCHMITT"
            | "DFF" | "JKFF" | "SRFF" | "TFF"
            | "LATCH_SR" | "LATCH_D"
            | "MUX" | "DEMUX" | "DECODER" | "ENCODER"
            | "COUNTER" | "SHIFT_REG"
            // alle Groß-/Kleinschreibung-unabhängig

id          = [a-zA-Z_] [a-zA-Z0-9_]*

Maßgebliche Quelle: src/diagrams/logic/parser.ts. Wenn dies vom Parser abweicht, hat der Parser Vorrang – bitte öffnen Sie ein Issue.


10. Standardkonformität

Schematex-Logikgatter-Diagramme folgen IEEE Std 91-1984 / ANSI Y32.14 (charakteristische Formen) und IEC 60617-12 (Rechtecksymbole mit Funktionsqualifikatoren).

Was heute implementiert ist:

  • ✅ Alle acht kombinatorischen Gatter: AND, OR, NOT, NAND, NOR, XOR, XNOR, BUF
  • ✅ Sonderpuffer: TRISTATE_BUF, TRISTATE_INV, OPEN_DRAIN, SCHMITT
  • ✅ Vier flankengetriggerte Flipflops: DFF, JKFF, SRFF, TFF
  • ✅ Zwei Latches: LATCH_SR, LATCH_D
  • ✅ Kombinatorische MSI: MUX, DEMUX, DECODER, ENCODER
  • ✅ Sequentielle MSI: COUNTER, SHIFT_REG
  • ✅ Aktiv-niedrig (~)-Notation für Eingaben und Ports
  • ✅ ANSI- und IEC-Symbolstile, pro Diagramm wählbar
  • ✅ Modulgruppen-Blöcke
  • ✅ Automatisches DAG-Layout (topologische Sortierung, Signal-Fluss von links nach rechts)
  • ⏳ Explizites Fan-out-Drahtrouting (geteiltes Netz mit Verbindungspunkt)
  • ⏳ Multi-Bit-Bus-Notation (/N-Schrägstrich-Annotation am Draht)
  • ⏳ Aktiv-niedrig-Takteingänge an Flipflops

Referenzen:

  • IEEE Std 91-1984 / ANSI Y32.14: IEEE Standard Graphic Symbols for Logic Functions
  • IEEE Std 91a-1991: Ergänzung zu IEEE Std 91
  • IEC 60617-12: Graphical symbols for diagrams — binary logic elements

11. Verwandte Beispiele

logic·§ IEEE 91
1-bit Full Adder Logic gate diagram with 5 gates, 3 inputs, 2 outputs XOR AND XOR AND OR A B Cin Sum Cout 1-bit Full Adder
1-bit full adder
1-bit full adder built from XOR, AND, and OR gates — the foundational building block of every arithmetic logic unit, from a functional description.
education

12. Roadmap

Geplant – noch nicht parsebar. Verwenden Sie diese heute nicht in generiertem DSL; der Parser wird sie ablehnen oder ignorieren.

  • Expliziter Fan-out / Verbindungspunkt — benannter Draht, der von mehreren Gattereingaben geteilt wird, gerendert mit einem Verbindungspunkt an der Verzweigungsstelle.
  • Multi-Bit-Bus-Notationbus N-Annotation an einem Draht, um eine N-Bit-Signalgruppe zu kennzeichnen.
  • Aktiv-niedrig-Takt~CLK in einer Flipflop-Eingabeliste, das eine Blase am Taktdreieck rendert.
  • Rückkopplungsbogen — expliziter Draht vom Gatterausgang zurück zu einem früheren Gattereingang, oberhalb des Haupt-Signalpfads geroutet.
  • Parametrisierter Gatter-Fan-InAND(A, B, C, D) rendert direkt ein 4-Eingangs-AND-Gatter.

Verfolgen Sie den Fortschritt in den GitHub-Issues, wenn Sie eines davon früher benötigen.

Found this useful?

Schematex is free, fully open source, and zero-dependency. A star helps other developers discover it.