Bucles generate
Parte de la sección Diseño y verificación RTL del Journey de Verilog de Coddy. Lección 13 de 38.
Un bucle generate-for crea hardware repetido durante la elaboración. Su índice genvar no es un registro de ejecución que cambie. Los bloques generate con nombre proporcionan nombres jerárquicos predecibles para las instancias o asignaciones creadas. Los límites del bucle deben ser constantes determinadas durante la elaboración.
Extracto relevante; las declaraciones y conexiones circundantes se proporcionan en el desafío.
genvar i;
generate
for(i=0;i<WIDTH;i=i+1) begin: bitcell
assign y[i] = a[i] ^ b[i];
end
endgenerateCada iteración desarrolla una operación independiente a nivel de bit en lugar de consumir un ciclo de reloj.
Usa genvar con límites constantes para describir la estructura repetida en la elaboración.
Desafío
IntermedioUsa un bucle generate-for con nombre, con genvar i, para instanciar una asignación continua por bit y producir y[i] = a[i] XOR b[i]. WIDTH es positivo. El banco de pruebas bloqueado instancia los valores 1, 4 y 8 de WIDTH, usando los bits bajos de a y b para las instancias más estrechas. Las columnas de salida son y1, y4 y y8 en decimal.
Completa design.v y conserva los nombres de sus módulos y sus 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