Portes logiques
Les portes logiques fondamentales : AND, OR, NOT, NAND, NOR, XOR et leurs propriétés.
Introduction à la logique numérique
La logique numérique opère sur deux niveaux : 0 (faux, bas, GND) et 1 (vrai, haut, VCC).
Une porte logique est un circuit électronique qui effectue une opération logique sur un ou plusieurs bits d'entrée pour produire un bit de sortie.
Les portes fondamentales
NOT (Inverseur)
| A | Y |
|---|---|
| 0 | 1 |
| 1 | 0 |
o_y <= NOT i_a;AND
| A | B | Y |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
o_y <= i_a AND i_b;OR
| A | B | Y |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
o_y <= i_a OR i_b;Les portes dérivées
NAND (NOT AND)
La porte universelle — n'importe quelle fonction logique peut être construite avec des NAND seules.
| A | B | Y = NOT(A AND B) |
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
o_y <= i_a NAND i_b;NOR (NOT OR)
Également universelle.
| A | B | Y = NOT(A OR B) |
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 0 |
o_y <= i_a NOR i_b;XOR (Exclusive OR)
Sort 1 uniquement si les entrées sont différentes.
| A | B | Y |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
o_y <= i_a XOR i_b;Usage courant : détection de parité, additionneur 1 bit (somme).
XNOR (Exclusive NOR)
Sort 1 si les entrées sont identiques (comparateur 1 bit).
| A | B | Y |
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
o_y <= i_a XNOR i_b;Symboles et équivalences
| Porte | Équivalence NAND | Équivalence NOR |
|---|---|---|
| NOT A | NAND(A, A) | NOR(A, A) |
| A AND B | NAND(NAND(A,B), NAND(A,B)) | — |
| A OR B | — | NOR(NOR(A,B), NOR(A,B)) |
Implémentation sur FPGA
Sur FPGA, les portes logiques ne sont pas des composants physiques discrets — elles sont implémentées dans des LUTs.
Une LUT-6 peut réaliser n'importe quelle combinaison de portes logiques sur jusqu'à 6 entrées. C'est le synthétiseur qui décide comment mapper votre expression logique sur les LUTs disponibles.
-- Cette expression complexe tient probablement dans 1 LUT
o_y <= (i_a AND i_b) OR (i_c XOR i_d) OR (NOT i_e);Demi-additionneur et additionneur complet
Demi-additionneur (Half Adder)
Somme = A XOR B
Retenue = A AND Bo_sum <= i_a XOR i_b;
o_carry <= i_a AND i_b;Additionneur complet (Full Adder)
Somme = A XOR B XOR Cin
Retenue = (A AND B) OR (Cin AND (A XOR B))o_sum <= i_a XOR i_b XOR i_cin;
o_carry <= (i_a AND i_b) OR (i_cin AND (i_a XOR i_b));Ces blocs s'enchaînent pour former un additionneur N bits (Ripple-Carry Adder).