Menu
Coddy logo textTech

Portes AND OR NOT

Fait partie de la section Fondamentaux du Journey Verilog de Coddy — leçon 40 sur 90.

Cette leçon couvre les trois portes logiques les plus fondamentales : AND, OR et NOT. Ces portes constituent le fondement de la conception logique numérique.

Porte ET

La porte ET produit une sortie de 1 uniquement lorsque toutes les entrées sont à 1.

Table de vérité (2 entrées) :

about
000
010
100
111

Primitive de porte Verilog :

and(out, a, b);

Équivalent d'assignation continue :

assign out = a & b;

Porte OU

La porte OU produit une sortie de 1 lorsqu'au moins une entrée est 1.

Table de vérité (2 entrées) :

about
000
011
101
111

Primitive de porte Verilog :

or(out, a, b);

Équivalent en assignation continue :

assign out = a | b;

Porte NON

La porte NON produit l'opposé de son unique entrée. Elle est également appelée un inverseur.

Table de vérité :

aout
01
10

Primitive de porte Verilog :

not(out, a);

Équivalent en assignation continue :

assign out = ~a;

Entrées multiples

Les portes AND et OR peuvent avoir plus de 2 entrées :

and(out, a, b, c);     // AND à 3 entrées (out = a & b & c)
or(out, x, y, z, w);   // OR à 4 entrées

Les portes NOT ont toujours exactement 1 entrée.

Exemple de code

module and_or_not (
  input a, b,
  output and_out,
  output or_out,
  output not_out
);
  and(and_out, a, b);   // porte ET
  or(or_out, a, b);     // porte OU
  not(not_out, a);      // porte NON (inverseur)
endmodule
challenge icon

Défi

Ajoutez les primitives de portes manquantes en fonction des tâches.

Ce qu'il faut faire :

  1. Créez une porte AND avec la sortie and_result et les entrées p et q
  2. Créez une porte OR avec la sortie or_result et les entrées p et q
  3. Créez une porte NOT avec la sortie not_result et l'entrée p

Aide-mémoire

Portes logiques de base en Verilog utilisant des primitives de porte et l'assignation continue :

PortePrimitiveAssignationLa sortie est 1 quand...
ANDand(out, a, b);assign out = a & b;Toutes les entrées sont à 1
ORor(out, a, b);assign out = a | b;Au moins une entrée est à 1
NOTnot(out, a);assign out = ~a;L'entrée est à 0

AND et OR supportent plus de 2 entrées ; NOT a toujours exactement 1 entrée :

and(out, a, b, c);   // AND à 3 entrées
or(out, a, b, c, d); // OR à 4 entrées
module example (input a, b, output and_out, or_out, not_out);
  and(and_out, a, b);
  or(or_out, a, b);
  not(not_out, a);
endmodule

Essayez vous-même

module gates_challenge (
  input p,
  input q,
  output and_result,
  output or_result,
  output not_result
);
  
  // TODO: Ajouter une porte ET (and_result = p & q)
  
  // TODO: Ajouter une porte OU (or_result = p | q)
  
  // TODO: Ajouter une porte NON (not_result = ~p)

endmodule
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Fondamentaux