Optimización de código de Verilog

1

Recientemente me he involucrado en el diseño de FPGA y solo estoy probando un nuevo hardware de SoC de Zync. He seguido un tutorial en línea para hacer parpadear algunos LED, sin embargo, lo he modificado para que parpadee todos los LED a diferentes velocidades. Mi código es el siguiente y describe un potencial contador de LED de 8 elementos:

//  Simple LED logic
// reg [28-1:0] led_reg2 [8-1:0]; // 28 bit wide, 8 element memory  
reg [28-1:0] led_cnt_0; // 29 bit LED counter 
reg [27-1:0] led_cnt_1;
...

always @(posedge sys_clk_i) begin // on every positive edge of system clock 
    if (!sys_rstn_i) begin // if the system is reset 
        // led_reg2{8-1:0} <= 28'h0; // failed attempt to describe resetting an 8 bit bank of registers to 0
        led_cnt_0 <= 28'h0; // reset the LED counter 
        led_cnt_1 <= 27'h0; 
        ...
    end 
    else begin 
        led_cnt_0 <= led_cnt_0 + 28'h1; // increment counter 
        led_cnt_1 <= led_cnt_1 + 27'h1;
        ...
    end 
end

assign led_o = {led_cnt_0[28-1],led_cnt_1[27-1],led_cnt_2[26-1],led_cnt_3[25-1],led_cnt_4[24-1],led_cnt_5[23-1],led_cnt_6[22-1],led_cnt_7[21-1]};

Mi código hace lo que desea y parpadean a velocidades iguales a 125e6 / 2 ^ n - Sin embargo, no estoy satisfecho con el diseño de mi código y la sintaxis, considerando que Verilog está diseñado para resolver este tipo de problemas de esta naturaleza.

Mi pregunta es:

¿Cuál es la sintaxis correcta / adecuada de tal problema? He intentado resolver esto haciendo un registro de 8 elementos de 28 bits de ancho, pero no sé cómo controlarlo correctamente. He pasado bastante tiempo buscando problemas y sintaxis similares, pero no he podido implementarlo correctamente. También creo que un enfoque de prueba y error no es el camino a seguir, ya que no se trata simplemente de programación.

Además, cualquiera podría recomendar material de lectura adecuado para aprender y practicar Verilog, estoy familiarizado con las estructuras, etc., a través de los profesores hace algunos años, pero no tengo ni idea sobre la implementación.

Muchas gracias.

    
pregunta Renegade243

0 respuestas

Lea otras preguntas en las etiquetas