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?
En el Reg4
módulo, cambie:
reg clk_1Hz = 1'b0;
a:
wire clk_1Hz;
BUFG
primitiva entre su registro de reloj de 1Hz y la salida del slowClock
mó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).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.
el fotón