Niveles de abstracción de diseño
Parte de la sección Fundamentos del Journey de Verilog de Coddy — lección 3 de 90.
En el diseño digital, podemos describir el mismo circuito a diferentes niveles de detalle. Verilog es un lenguaje que puede describir circuitos en cualquiera de estos niveles de abstracción. ¡Eso es lo que lo hace potente!
Estos son los niveles:
Nivel 1: Conductual
Este nivel describe lo que hace el circuito, no cómo lo hace. Se centra en la función o el comportamiento, como "count up" o "add two numbers".
No se muestran los detalles internos de cómo ocurre el conteo o la suma. Este nivel es el más cercano al pensamiento humano y es más fácil de escribir.
Nivel 2: RTL
Este nivel muestra cómo se mueven los datos entre los registros y qué operaciones ocurren con esos datos. Puedes ver la ruta de datos: los datos van desde un registro a un sumador, y luego regresan al registro.
Este es el nivel en el que trabajan la mayoría de los diseñadores digitales porque ofrece un buen equilibrio entre ser comprensible y ser lo suficientemente detallado para crear hardware.
Nivel 3: Nivel de compuertas
Este nivel describe el circuito utilizando compuertas lógicas básicas como AND, OR y XOR. Cada conexión se muestra explícitamente.
Este nivel es muy detallado y difícil de escribir a mano. Normalmente es generado por herramientas a partir de descripciones de nivel superior, no escrito manualmente.
Por qué es importante
- **Nivel más alto** = Más fácil de escribir, menos control
- **Nivel más bajo** = Más difícil de escribir, más control
- **RTL** es el punto óptimo para la mayoría de los trabajos de diseño
Desafío
Qué hacer:
- Ejecuta este código y observa cómo la misma operación se describe en tres niveles diferentes:
Hoja de referencia
Verilog puede describir circuitos en diferentes niveles de abstracción:
- Conductual (Behavioral) – Describe qué hace el circuito (por ejemplo, "sumar dos números"). Es el más fácil de escribir, pero ofrece el menor control.
- RTL (Nivel de Transferencia de Registros) – Describe cómo se mueven los datos entre los registros y qué operaciones ocurren. Es el nivel estándar para la mayoría de los trabajos de diseño digital.
- Nivel de Compuertas (Gate Level) – Describe el circuito utilizando compuertas lógicas explícitas (AND, OR, XOR). Es el más detallado y difícil de escribir; generalmente es generado por herramientas.
Compromiso (Trade-off): Nivel más alto = más fácil de escribir, menos control. Nivel más bajo = más difícil de escribir, más control. RTL es el punto óptimo.
Pruébalo tú mismo
module abstraction_demo;
initial begin
$display("=== Design Abstraction Levels ===");
$display("");
$display("Level 1 (Behavioral):");
$display(" 'Add a and b' - no details how");
$display("");
$display("Level 2 (RTL):");
$display(" 'On clock edge, result <= a + b' - shows data flow");
$display("");
$display("Level 3 (Gate Level):");
$display(" 'XOR gates for sum, AND gates for carry' - actual gates");
$display("");
$finish;
end
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