Menu
Coddy logo textTech

Compuertas AND OR NOT

Parte de la sección Fundamentos del Journey de Verilog de Coddy — lección 40 de 90.

Esta lección cubre las tres puertas lógicas más básicas: AND, OR y NOT. Estas puertas forman la base del diseño de lógica digital.

Compuerta AND

La compuerta AND produce una salida de 1 solo cuando todas las entradas son 1.

Tabla de verdad (2 entradas):

about
000
010
100
111

Primitiva de compuerta Verilog:

and(out, a, b);

Equivalente de asignación continua:

assign out = a & b;

Compuerta OR

La compuerta OR produce una salida de 1 cuando al menos una entrada es 1.

Tabla de verdad (2 entradas):

about
000
011
101
111

Primitiva de compuerta Verilog:

or(out, a, b);

Equivalente de asignación continua:

assign out = a | b;

Compuerta NOT

La compuerta NOT devuelve lo opuesto a su única entrada. También se conoce como inversor.

Tabla de verdad:

aout
01
10

Primitiva de compuerta Verilog:

not(out, a);

Equivalente de asignación continua:

assign out = ~a;

Entradas múltiples

Las compuertas AND y OR pueden tener más de 2 entradas:

and(out, a, b, c);     // AND de 3 entradas (out = a & b & c)
or(out, x, y, z, w);   // OR de 4 entradas

Las compuertas NOT siempre tienen exactamente 1 entrada.

Ejemplo de código

module and_or_not (
  input a, b,
  output and_out,
  output or_out,
  output not_out
);
  and(and_out, a, b);   // compuerta AND
  or(or_out, a, b);     // compuerta OR
  not(not_out, a);      // compuerta NOT (inversor)
endmodule
challenge icon

Desafío

Agrega las primitivas de compuertas faltantes basándote en las tareas.

Qué hacer:

  1. Crea una compuerta AND con la salida and_result y las entradas p y q
  2. Crea una compuerta OR con la salida or_result y las entradas p y q
  3. Crea una compuerta NOT con la salida not_result y la entrada p

Hoja de referencia

Comuertas lógicas básicas en Verilog utilizando primitivas de compuerta y asignación continua:

ComuertaPrimitivaAsignación (Assign)La salida es 1 cuando...
ANDand(out, a, b);assign out = a & b;Todas las entradas son 1
ORor(out, a, b);assign out = a | b;Al menos una entrada es 1
NOTnot(out, a);assign out = ~a;La entrada es 0

AND y OR admiten más de 2 entradas; NOT siempre tiene exactamente 1 entrada:

and(out, a, b, c);   // AND de 3 entradas
or(out, a, b, c, d); // OR de 4 entradas
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

Pruébalo tú mismo

module gates_challenge (
  input p,
  input q,
  output and_result,
  output or_result,
  output not_result
);
  
  // TODO: Agregar compuerta AND (and_result = p & q)
  
  // TODO: Agregar compuerta OR (or_result = p | q)
  
  // TODO: Agregar compuerta NOT (not_result = ~p)

endmodule
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos