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):
| a | b | out |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
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):
| a | b | out |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
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:
| a | out |
|---|---|
| 0 | 1 |
| 1 | 0 |
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 entradasLas 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)
endmoduleDesafío
Agrega las primitivas de compuertas faltantes basándote en las tareas.
Qué hacer:
- Crea una compuerta AND con la salida
and_resulty las entradaspyq - Crea una compuerta OR con la salida
or_resulty las entradaspyq - Crea una compuerta NOT con la salida
not_resulty la entradap
Hoja de referencia
Comuertas lógicas básicas en Verilog utilizando primitivas de compuerta y asignación continua:
| Comuerta | Primitiva | Asignación (Assign) | La salida es 1 cuando... |
|---|---|---|---|
| AND | and(out, a, b); | assign out = a & b; | Todas las entradas son 1 |
| OR | or(out, a, b); | assign out = a | b; | Al menos una entrada es 1 |
| NOT | not(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 entradasmodule 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);
endmodulePrué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)
endmoduleEsta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
1Introducción
¿Qué es Verilog?Hardware vs SoftwareNiveles de abstracción de diseñoTu primer móduloComentarios4Operadores Parte 1
Operadores aritméticosOperador de móduloOperadores de comparaciónRepaso - Matemáticas simplesOperadores bit a bit7Asignación y Compuertas
Asignación ContinuaAsignación con OperadoresPrimitivas de Compuertas IntegradasCompuertas AND OR NOTCompuertas XOR XNORResumen - Circuito de Compuertas Lógicas10Toma de decisiones
Sentencia IfIf - ElseRepaso - Comparador simpleSentencia CaseCasex y CasezRepaso - Diseño de ALU5Operadores Parte 2
Operadores lógicosOperadores de reducciónOperadores de desplazamientoOperador de concatenaciónOperador condicionalResumen - Desafío de operadores3Sistema de numeración
Representación binariaNúmeros con tamaño definidoNúmeros sin tamaño definidoNúmeros negativosValores especiales X y ZResumen - Formatos de números6Módulos
Estructura del móduloPuertos de entrada y salidaPuertos InoutInstanciación de módulosMapeo de puertos por nombreMapeo de puertos por ordenResumen: Construye un módulo