Parámetros seguros en anchura
Parte de la sección Diseño y verificación RTL del Journey de Verilog de Coddy. Lección 12 de 38.
Los fundamentos introdujeron anchos configurables. El RTL reutilizable también debe manejar el ancho legal más pequeño, dimensionar las expresiones intermedias deliberadamente y evitar posiciones de bits codificadas de forma fija. La replicación {WIDTH{1'b1}} construye una máscara coincidente con el ancho. Los parámetros son constantes de elaboración, no controles en tiempo de ejecución.
Fragmento relevante; las declaraciones y conexiones circundantes se proporcionan en el desafío.
wire [WIDTH:0] sum;
assign sum = {1'b0,a} + {1'b0,b};
assign y = sum[WIDTH] ? {WIDTH{1'b1}} : sum[WIDTH-1:0];Tanto la posición del acarreo como el valor de saturación se adaptan al ancho configurado.
Prueba el ancho legal mínimo y deriva cada segmento y constante dependientes del ancho a partir de los parámetros.
Desafío
IntermedioConstruye un incrementador de WIDTH bits que devuelva los WIDTH bits inferiores de a+1. La entrada b no se utiliza. El mismo módulo debe funcionar tanto para WIDTH=1 como para anchos mayores. WIDTH es positivo. El banco de pruebas bloqueado instancia los valores 1, 4 y 8 de WIDTH, utilizando los bits inferiores de a y b para las instancias más estrechas. Las columnas de salida son y1, y4 e y8 en decimal.
Completa design.v y conserva los nombres de sus módulos y puertos. El testbench.v bloqueado proporciona cambios en las entradas e imprime las salidas después de que se estabilicen. 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 terminados con un salto de línea.
Pruébalo tú mismo
module dut #(parameter WIDTH=4) (input [WIDTH-1:0] a,b, output [WIDTH-1:0] y);
// Implementa el circuito parametrizado.
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 signo3RTL reutilizable
Funciones combinacionalesParámetros seguros en anchuraBucles generateGenerate condicionalRepaso - Máscara de bits reutilizablePractica por tu cuenta: Compilador de Verilog online