Red de conocimiento informático - Material del sitio web - Cómo utilizar el lenguaje Verilog HDL para implementar la detección de períodos de secuencias de ondas cuadradas

Cómo utilizar el lenguaje Verilog HDL para implementar la detección de períodos de secuencias de ondas cuadradas

módulo (clk,

clk2,

rst_2,

período);

entrada clk,clk2,rst_2;

período de salida [9:0];

período reg [9:0];

reg clk_1d;

reg cnt[9: p>

cable clk_pos;

siempre @ ( posedge clk2 o negedge rst_2 ) comienza

si ( rst_2 == 1'b0 ) comienza

clk_1d <= 1'b0;

fin

más comenzar

clk_1d <= clk;

fin

fin

asignar clk_pos = clk & (~clk_1d);

siempre @ ( posedge clk2 o negedge rst_2 ) comenzar

if ( rst_2 == 1' b0 ) comenzar

cnt[9:0] <= 10'd0;

finalizar

else if ( clk_pos == 1' b1 ) comenzar

cnt[9:0] <= 10'd0;

fin

si no comienza

cnt[9:0] < = cnt [9:0] + 10'd1;

fin

fin

siempre @ ( posedge clk2 o negedge rst_2 ) comienzo

si (rst_2 == 1'b0) comienza

período[9:0] <= 10'd0;

final

si no (clk_pos == 1'b1 ) comenzar

período[9:0] <= cnt[9:0];

finalizar

si no comenzar

;

end

end

endmodule

Nota adicional: El período de reloj a medir es como máximo 1024 veces el frecuencia de reloj.

Buena suerte,

Timoteo