Я написал модуль тактового генератора. Я думаю, что проблема в моем модуле 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
Вы видите проблему в моем коде?
В Reg4
модуле изменить:
reg clk_1Hz = 1'b0;
к:
wire clk_1Hz;
BUFG
примитив между вашим тактовым регистром 1 Гц и выходом slowClock
модуля. В противном случае тактовый сигнал будет направляться в обычные сети маршрутизации, а не в глобальную тактовую сеть (о чем и говорится в предупреждении о чрезмерном перекосе).В коде 1 Гц вы не присвоили никакого значения clk_1hz. Следовательно, ему не будет присвоено никакого значения. Просто включите assign clk_1hz = counter[24]; за пределами всегда блока.
Фотон