Tablas ROM combinacionales
Parte de la sección Diseño y verificación RTL del Journey de Verilog de Coddy. Lección 21 de 38.
Una tabla de consulta fija describe un mapeo de solo lectura de direcciones a datos. Un case o una function completos pueden expresar el contenido. Con una lectura combinacional, cambiar la dirección cambia la salida sin esperar a un reloj. La herramienta de síntesis elige una implementación; este código fuente no garantiza una primitiva de memoria FPGA específica.
Extracto relevante; las declaraciones y conexiones circundantes se proporcionan en el desafío.
function [7:0] lookup;
input [1:0] addr;
begin
case(addr)
0: lookup=3;
1: lookup=5;
2: lookup=8;
3: lookup=13;
default: lookup=0;
endcase
end
endfunctionCada dirección selecciona una constante definida sin conservar ninguna salida anterior.
Especifica cada entrada de la tabla y distingue la latencia de lectura combinacional de la latencia de lectura registrada.
Desafío
IntermedioImplementa una tabla de búsqueda combinacional de ocho entradas. Las direcciones 0 a 7 devuelven 3,5,8,13,21,34,55,89 respectivamente. Usa una function completa basada en case para controlar y. Columnas de salida: y. Todos los valores de estímulo son valores binarios conocidos.
Completa design.v y conserva sus nombres de módulo y puertos. El testbench.v bloqueado suministra cambios de entrada e imprime las salidas después de que se estabilicen. Elige un escenario usando un argumento del simulador como +CASE=1; no se requiere entrada estándar. No añadas impresión, retardos ni terminación de simulación al diseño. La salida esperada es una fila de valores decimales por observación, separados por un espacio y terminando con una nueva línea.
Pruébalo tú mismo
module dut (input [2:0] addr, output [7:0] y);
// Reemplaza este marcador de posición con tu diseño.
assign y = 0;
endmoduleEsta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Diseño y verificación RTL
1RTL combinacional confiable
Los valores predeterminados evitan los latchesCodificadores de prioridadValidación one-hotDecodificación segura de caseRepaso: enrutador de solicitudes4RTL secuencial controlado
Prioridad de reinicio y habilitaciónContadores con saturaciónPipeline de datos y validaciónDetección de flancos muestreadosRepaso: contador de eventos7Proyecto - Monitor de muestras
Acumular muestrasAceptar muestras habilitadas2Anchos y aritmética con signo
Conservar los bits de acarreoComparaciones con signoDesplazamientos aritméticos a la derechaDesbordamiento y saturaciónRepaso: diferencia con signo5Memoria y tablas de consulta
Tablas ROM combinacionalesAlmacenamiento en matriz de registrosPuertos de lectura registradosReenvío de lectura-escrituraRepaso: banco de doble lecturaPractica por tu cuenta: Compilador de Verilog online