Verilog: модуль генератора медленных тактовых импульсов (1 Гц с 50 МГц)

Я написал модуль тактового генератора. Я думаю, что проблема в моем модуле Reg4. Ошибки:

ОШИБКА: HDLCompilers: 246 - строка 74 «UpDownCounter.v» Ссылка на скалярную регистрацию «clk_1Hz» не является допустимым чистым lvalue

ОШИБКА: HDLCompilers: 102 - «UpDownCounter.v», строка 74. Соединение с выходным портом «clk_1Hz» должно быть чистым lvalue

Тактовый генератор 1 Гц:

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   

Вот мой битовый модуль 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

Вы видите проблему в моем коде?

Вы получили свой ответ, но в будущем, пожалуйста, добавьте комментарий, сообщающий нам, в какой строке ошибка (строка 74, в данном случае).

Ответы (2)

В Reg4модуле изменить:

reg clk_1Hz = 1'b0;

к:

wire clk_1Hz;
Благодарю. Это сработало, но предупреждение: CLK Net:value_reg/clock_generator/clk_1Hz может иметь чрезмерный перекос, потому что
однако мой проект на басыс-2 работает хорошо несмотря на предупреждение
@cihangirND добавьте BUFGпримитив между вашим тактовым регистром 1 Гц и выходом slowClockмодуля. В противном случае тактовый сигнал будет направляться в обычные сети маршрутизации, а не в глобальную тактовую сеть (о чем и говорится в предупреждении о чрезмерном перекосе).
@TomCarpenter вау, спасибо. 0 предупреждение. я правильно поставил? i.hizliresim.com/82a3Ed.jpg
@cihangirND Действительно. Я бы поместил его внутрь модуля slowClock для аккуратности, но при синтезе это не будет иметь никакого значения.
ГОТОВО ;););););)[ограничение символов]

В коде 1 Гц вы не присвоили никакого значения clk_1hz. Следовательно, ему не будет присвоено никакого значения. Просто включите assign clk_1hz = counter[24]; за пределами всегда блока.