Menu
Coddy logo textTech

Repaso: banco de doble lectura

Parte de la sección Diseño y verificación RTL del Journey de Verilog de Coddy. Lección 25 de 38.

challenge icon

Desafío

Intermedio

Implementa cuatro palabras de 8 bits con una escritura sincronizada con reloj y dos salidas de lectura registradas de datos antiguos, qa y qb. we escribe en waddr. El rst síncrono borra únicamente qa y qb. De lo contrario, re habilita ambas lecturas desde raddr_a y raddr_b; las lecturas deshabilitadas conservan su valor. Las escrituras en el mismo flanco no cambian los valores antiguos capturados por estas lecturas. Las pruebas inicializan las palabras antes de leerlas. Columnas de salida: qa, qb. Todos los controles y datos permanecen estables antes de cada flanco ascendente del reloj; los resultados se observan después.

Completa design.v y conserva los nombres de sus módulos y puertos. El testbench.v bloqueado proporciona los cambios de entrada e imprime las salidas una vez estabilizadas. Elige un escenario mediante un argumento del simulador como +CASE=1; no se requiere entrada estándar. No añadas impresiones, retardos ni terminación de la simulación al diseño. La salida esperada es una fila de valores decimales por observación, separados por un espacio y terminada con un salto de línea.

Pruébalo tú mismo

module dut (input clk, input rst, input we, input re, input [1:0] waddr, input [1:0] raddr_a, input [1:0] raddr_b, input [7:0] data, output reg [7:0] qa, output reg [7:0] qb);
    // Reemplaza este marcador de posición con tu diseño.
    initial qa = 0;
    initial qb = 0;
endmodule

Todas las lecciones de Diseño y verificación RTL

Practica por tu cuenta: Compilador de Verilog online