Verilog: módulo generador de reloj lento (1 Hz desde 50 MHz)

Escribí un módulo generador de reloj. Creo que el problema está en mi módulo Reg4. Los errores son:

ERROR:HDLCompilers:246 - "UpDownCounter.v" línea 74 La referencia al registro escalar 'clk_1Hz' no es un valor neto legal

ERROR:HDLCompilers:102 - "UpDownCounter.v" línea 74 La conexión al puerto de salida 'clk_1Hz' debe ser un valor neto

Generador de reloj de 1 Hz:

module slowClock(clk, reset, clk_1Hz);
input clk, reset;
output clk_1Hz;

reg clk_1Hz = 1'b0;
reg [27:0] counter;

always@(posedge reset or posedge clk)
begin
    if (reset == 1'b1)
        begin
            clk_1Hz <= 0;
            counter <= 0;
        end
    else
        begin
            counter <= counter + 1;
            if ( counter == 25_000_000)
                begin
                    counter <= 0;
                    clk_1Hz <= ~clk_1Hz;
                end
        end
end
endmodule   

Aquí está mi módulo de bit Reg4:

module Reg4(I, Q, clk, reset);
input clk, reset;
input [3:0] I;
output [3:0] Q;
reg [3:0] Q;

reg clk_1Hz = 1'b0;
slowClock clock_generator(clk, reset, clk_1Hz);

always@(posedge clk_1Hz) begin      
    if (reset == 1)
        Q <= 4'b0000;   
    else
        Q <= I;
end
endmodule

¿Puedes ver el problema en mi código?

Recibiste tu respuesta, pero en el futuro agrega un comentario diciéndonos qué línea es la que tiene el error (línea 74, en este caso).

Respuestas (2)

En el Reg4módulo, cambie:

reg clk_1Hz = 1'b0;

a:

wire clk_1Hz;
Gracias. Funcionó pero la advertencia es: CLK Net:value_reg/clock_generator/clk_1Hz puede tener un sesgo excesivo porque
sin embargo, mi proyecto en basys-2 funciona bien a pesar de la advertencia
@cihangirND agregue una BUFGprimitiva entre su registro de reloj de 1Hz y la salida del slowClockmódulo. De lo contrario, la señal del reloj se enrutará en redes de enrutamiento normales y no en la red de reloj global (que es de lo que se trata la advertencia de desviación excesiva).
@TomCarpenter guau, gracias. 0 advertencia. ¿Lo puse bien? i.hizliresim.com/82a3Ed.jpg
@cihangirND Efectivamente. Lo habría colocado dentro del módulo slowClock por orden, pero cuando se sintetice no hará ninguna diferencia.
HECHO ;););););) [límite de caracteres]

En el código de 1Hz no ha asignado ningún valor a clk_1hz. Por lo tanto, no se le asignará ningún valor. Solo incluye asignar clk_1hz = contador[24]; fuera del bloque siempre.