¿Cómo puedo generar un reloj de 1 Hz a partir de un reloj de 50 MHz proveniente de una placa Altera? [duplicar]

-4

Tengo una placa Altera DE2 que genera un reloj de 50 MHz y estoy tratando de escribir un módulo verilog que pueda reducirlo a 1 Hz. ¿Cómo puedo hacer esto?

    
pregunta ninesalt

1 respuesta

1

Es bastante simple, solo necesitamos construir un gran contador. Queremos que nuestro reloj de salida sea 50 millones de veces más lento que nuestro reloj de entrada. Para generar un ciclo de salida completo necesitamos alternar la salida dos veces. Por lo tanto, queremos cambiar la salida cada 25 millones de ciclos.

En general, el mejor tipo de contador que se usa para este tipo de cosas es un contador de "cuenta regresiva a cero" Realizaremos una cuenta regresiva en el rango de 24999999 (uno menos de 25 millones) a cero, luego repetiremos. Cada vez que nuestro contador llega a cero, cambiamos la salida. Nuestro contador debe tener al menos 25 bits para adaptarse a este rango de valores.

reg [24:0] counter;
output reg clkout;
input clkin
initial begin
    counter = 0;
    clkout = 0;
end
always @(posedge clkin) begin
    if (counter == 0) begin
        counter <= 24999999;
        clkout <= ~clkout;
    end else begin
        counter <= counter -1;
    end
end
    
respondido por el Peter Green

Lea otras preguntas en las etiquetas