Compuertas AND, OR y 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.
Puerta AND
La puerta AND produce 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 de Verilog:
and(out, a, b);Equivalente de asignación continua:
assign out = a & b;Puerta OR
La puerta OR produce 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 puerta de Verilog:
or(out, a, b);Equivalente de asignación continua:
assign out = a | b;Puerta NOT
La puerta NOT produce lo opuesto de su única entrada. También se denomina inversor.
Tabla de verdad:
| a | out |
|---|---|
| 0 | 1 |
| 1 | 0 |
Primitiva de compuerta de Verilog:
not(out, a);Equivalente de asignación continua:
assign out = ~a;Varias entradas
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); // puerta AND
or(or_out, a, b); // puerta OR
not(not_out, a); // puerta NOT (inversor)
endmoduleDesafío
Añade las primitivas de compuerta que faltan según 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
Pruébalo tú mismo
module gates_challenge (
input p,
input q,
output and_result,
output or_result,
output not_result
);
// TODO: Añade la compuerta AND (and_result = p & q)
// TODO: Añade la compuerta OR (or_result = p | q)
// TODO: Añade la 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 VerilogHardware frente a softwareTu primer móduloComentariosNiveles de abstracción del diseño4Operadores, parte 1
Operadores aritméticosOperador móduloOperadores de comparaciónRepaso: matemáticas simplesOperadores bit a bit7Asignaciones y compuertas
Asignación continuaAsignación con operadoresPrimitivas de compuertas integradasCompuertas AND, OR y NOTCompuertas XOR y XNORRepaso: 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 condicionalRepaso: desafío de operadores11Bucles
Bucle ForBucle WhileBucle de repeticiónBucle infinitoInstrucción DisableRepaso: patrones de bucles3Sistema numérico
Representación binariaNúmeros con tamañoNúmeros sin tamañoNúmeros negativosValores especiales X y ZRepaso: formatos numéricos6Módulos
Estructura de módulosPuertos de entrada y salidaPuertos inoutInstanciación de módulosAsignación de puertos por nombreAsignación de puertos por ordenRepaso: construir un móduloPractica por tu cuenta: Compilador de Verilog online