Diagramme de portes logiques

À propos des diagrammes de portes logiques

Un diagramme de portes logiques montre comment les fonctions booléennes sont implémentées dans le matériel — les entrées circulent de gauche à droite à travers des portes combinatoires et des bascules pour produire des sorties à droite. Les ingénieurs en conception numérique les utilisent pour documenter l'intention RTL, vérifier les netlists au niveau des portes et enseigner l'algèbre booléenne. Schematex dérive son jeu de symboles de la norme IEEE Std 91-1984 / ANSI Y32.14 (symboles ANSI à formes distinctives, valeur par défaut aux États-Unis) et de la norme IEC 60617-12 (symboles en rectangles uniformes, valeur par défaut internationale), sélectionnables par diagramme.

Le DSL est fonctionnel : vous déclarez des signaux et décrivez les entrées de chaque porte par leur nom. Le layout et le câblage sont calculés automatiquement à partir du graphe de dépendances — pas de coordonnées manuelles.

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·0.5 ms·5.3 KB SVG

1. Votre premier diagramme de portes logiques

Le diagramme minimal utile : deux entrées, une porte, une sortie.

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.3 ms·3.0 KB SVG

Quatre règles couvrent 80 % des usages :

  1. Commencer par le mot-clé logic, suivi optionnellement d'un titre entre guillemets et de style: ansi ou style: iec.
  2. Déclarer les ports avec des lignes input et output — noms de signaux séparés par des virgules.
  3. Chaque porte est id = GATE_TYPE(input1, input2, …). L'id devient un fil de signal nommé.
  4. Un nom d'output qui correspond à un id de porte est câblé automatiquement ; utiliser OUTPUT <- gate_id quand les noms diffèrent.

Les commentaires doivent commencer par # ou -- sur leur propre ligne (ou après le dernier token d'une ligne de porte).


2. Types de portes

2.1 Portes combinatoires

Mot-clé DSLFonctionForme ANSISymbole IEC
ANDA · BCorps en DRectangle + &
ORA + BCorps courbeRectangle + ≥1
NOTĀTriangle + bulleRectangle + 1 + bulle
NAND¬(A · B)AND + bulleRectangle + & + bulle
NOR¬(A + B)OR + bulleRectangle + ≥1 + bulle
XORA ⊕ BOR + arc supplémentaireRectangle + =1
XNOR¬(A ⊕ B)XOR + bulleRectangle + =1 + bulle
BUFA (buffer)Triangle, sans bulleRectangle + 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.4 ms·6.3 KB SVG

2.2 Buffers à sortie spéciale

Mot-clé DSLFonction
TRISTATE_BUFBuffer trois états — sortie Z quand l'enable est bas
TRISTATE_INVBuffer inverseur trois états
OPEN_DRAINSortie drain ouvert / collecteur ouvert (pull-up externe requis)
SCHMITTTrigger de Schmitt — symbole d'hystérésis à l'intérieur du corps
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.3 ms·4.4 KB SVG

2.3 Bascules et latchs

Mot-clé DSLTypeBroches principales
DFFBascule D (déclenchée par front)D, CLK, Q, Q̄
JKFFBascule JKJ, K, CLK, Q, Q̄
SRFFBascule SRS, R, CLK, Q, Q̄
TFFBascule T (bascule)T, CLK, Q, Q̄
LATCH_SRLatch SR (sensible au niveau, sans horloge)S, R, Q, Q̄
LATCH_DLatch D (transparent quand 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.4 ms·6.3 KB SVG

2.4 Combinatoire complexe

Mot-clé DSLFonction
MUXMultiplexeur
DEMUXDémultiplexeur
DECODERDécodeur binaire
ENCODEREncodeur à priorité
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.3 ms·4.3 KB SVG

2.5 Séquentiel complexe

Mot-clé DSLFonction
COUNTERCompteur binaire générique (label CTR, CLK/RESET/Q0–Q3)
SHIFT_REGRegistre à décalage générique (label SRG, 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.2 ms·4.2 KB SVG

3. Entrées et sorties

3.1 Déclarer les ports

input A, B, Cin          # three input ports
output Sum, Cout         # two output ports

Chaque nom dans une liste input ou output devient un fil de signal nommé disponible dans tout le diagramme.

3.2 Entrées actives basses

Préfixer un nom de signal avec ~ dans la liste d'entrées pour le marquer comme actif bas. Le rendu dessine une bulle au niveau du symbole de port.

input ~nRESET, CLK, DATA

La notation active basse fonctionne également à l'intérieur des listes d'entrées de portes :

g1 = AND(~nRESET, CLK)

3.3 Câbler les sorties aux portes

Si l'ID de sortie correspond à un ID de porte, la connexion est implicite :

output Sum        # Sum is also a gate id → auto-wired
Sum = XOR(s1, Cin)

Quand les noms diffèrent, utiliser l'opérateur d'affectation explicite :

output F
q1 = NOR(A, B)
F <- q1           # F draws from q1's output
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.2 ms·4.3 KB SVG

4. Style de symbole

L'option style: sur la ligne d'en-tête sélectionne le standard de symboles. Elle s'applique à toutes les portes du diagramme.

ValeurStandardUtiliser quand
ansi (par défaut)IEEE Std 91 — formes courbes distinctivesEnseignement aux États-Unis, documentation matériel
iecIEC 60617-12 — rectangles uniformes + label de fonctionInternational, industrie européenne
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.5 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. Blocs de module

Utiliser module pour regrouper des portes dans une boîte de sous-circuit étiquetée. Les blocs de module sont utiles pour documenter des conceptions hiérarchiques — chaque module se rend comme un rectangle nommé entourant ses portes membres.

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))

Règles de syntaxe du module :

  • module "Label" { — ouvre un module (label entre guillemets ou identifiant nu). Le { doit être sur la même ligne.
  • } sur sa propre ligne ferme le module ouvert le plus récemment.
  • Les modules peuvent être imbriqués.

6. Labels et commentaires

  • Titre du diagramme : logic "Full Adder" — première ligne uniquement.
  • Noms de signaux de porte : l'id dans id = GATE(…) est à la fois le nom de la porte et le nom du fil de sortie.
  • Labels de sortie : output Sum — le label de port de sortie correspond par défaut au nom du signal.
  • Marqueur actif bas : préfixe ~ sur un port ou une entrée de porte.
  • Commentaires : # ou -- au début d'une ligne, ou après le dernier token significatif d'une ligne.

7. Mots réservés et échappement

Réservés en début de ligne : logic (en-tête), input, output, module, }.

Tokens opérateurs réservés — éviter à l'intérieur des noms de signaux : =, (, ), ,, <-, ~.

Règles pour les noms de signaux : doivent correspondre à [a-zA-Z_][a-zA-Z0-9_]*. Minuscules et majuscules sont toutes deux acceptées ; les mots-clés de type de porte (AND, OR, etc.) sont insensibles à la casse dans le parseur.


8. Erreurs courantes

Ce que vous avez écritCe que dit le parseurCorrection
f = and(A, B) (porte en minuscules)Accepté — les types de portes sont insensibles à la casseAND et and fonctionnent tous les deux
output F puis F <- q1 mais q1 non déclaréLogicParseError: Unknown signal "q1"Déclarer q1 comme porte avant d'y faire référence
input A B C (espaces, pas de virgules)Le parseur prend seulement A ; B et C sont ignorésUtiliser des virgules : input A, B, C
F = BUFFER(A)LogicParseError: Unknown gate type: BUFFERUtiliser BUF
module FullAdder { (sans accolade {)La ligne ne correspond pas au pattern module — ignorée silencieusementL'accolade ouvrante { est obligatoire sur la même ligne que module
style: IEEE dans l'en-têteValeur de style inconnue — revient silencieusement à ansiUtiliser style: ansi ou style: iec

9. Grammaire (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"
            // all case-insensitive

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

Source faisant autorité : src/diagrams/logic/parser.ts. En cas de divergence avec le parseur, le parseur prévaut — veuillez ouvrir un ticket.


10. Conformité aux normes

Les diagrammes de portes logiques Schematex suivent la norme IEEE Std 91-1984 / ANSI Y32.14 (symboles à formes distinctives) et la norme IEC 60617-12 (symboles rectangulaires avec qualificatifs de fonction).

Ce qui est implémenté aujourd'hui :

  • ✅ Les huit portes combinatoires : AND, OR, NOT, NAND, NOR, XOR, XNOR, BUF
  • ✅ Buffers à sortie spéciale : TRISTATE_BUF, TRISTATE_INV, OPEN_DRAIN, SCHMITT
  • ✅ Quatre bascules à déclenchement par front : DFF, JKFF, SRFF, TFF
  • ✅ Deux latchs : LATCH_SR, LATCH_D
  • ✅ MSI combinatoire : MUX, DEMUX, DECODER, ENCODER
  • ✅ MSI séquentiel : COUNTER, SHIFT_REG
  • ✅ Notation active basse (~) sur les entrées et les ports
  • ✅ Styles de symboles ANSI et IEC, sélectionnables par diagramme
  • ✅ Blocs de groupement de modules
  • ✅ Layout DAG automatique (tri topologique, flux de signal de gauche à droite)
  • ⏳ Routage explicite de fil fan-out (réseau partagé avec point de jonction)
  • ⏳ Notation de bus multi-bit (annotation /N slash sur le fil)
  • ⏳ Entrées d'horloge actives basses sur les bascules

Références :

  • IEEE Std 91-1984 / ANSI Y32.14 : IEEE Standard Graphic Symbols for Logic Functions
  • IEEE Std 91a-1991 : Supplément à IEEE Std 91
  • IEC 60617-12 : Graphical symbols for diagrams — binary logic elements

11. Exemples connexes

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. Feuille de route

Prévu — pas encore analysable. Ne pas utiliser dans un DSL généré aujourd'hui ; le parseur les rejettera ou les ignorera.

  • Fan-out / point de jonction explicite — fil nommé partagé par plusieurs entrées de portes, rendu avec un point de jonction à la bifurcation.
  • Notation de bus multi-bit — annotation bus N sur un fil pour désigner un groupe de signaux de N bits.
  • Horloge active basse~CLK dans une liste d'entrées de bascule rendant une bulle sur le triangle d'horloge.
  • Arc de rétroaction — fil explicite d'une sortie de porte vers une entrée de porte antérieure, routé au-dessus du chemin de signal principal.
  • Entrée de porte paramétréeAND(A, B, C, D) rendant directement une porte AND à 4 entrées.

Suivre dans les tickets GitHub si vous avez besoin de l'un de ces éléments plus tôt.

Found this useful?

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