Ich habe ein Taktgeneratormodul geschrieben. Ich denke, das Problem liegt in meinem Reg4-Modul. Die Fehler sind:
ERROR:HDLCompilers:246 - "UpDownCounter.v" line 74 Verweis auf skalare Registrierung 'clk_1Hz' ist kein gültiger Netto-Lvalue
ERROR:HDLCompilers:102 - "UpDownCounter.v" line 74 Connection to output port 'clk_1Hz' must be a net lvalue
1 Hz Taktgenerator:
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
Hier ist mein Reg4-Bit-Modul:
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
Kannst du das Problem in meinem Code sehen?
Ändern Sie im Reg4
Modul:
reg clk_1Hz = 1'b0;
zu:
wire clk_1Hz;
BUFG
Grundelement zwischen Ihrem 1-Hz-Taktregister und dem Ausgang des slowClock
Moduls hinzu. Andernfalls wird das Taktsignal über normale Routing-Netzwerke und nicht über das globale Taktnetzwerk geleitet (worum es bei der übermäßigen Skew-Warnung geht).Im 1Hz-Code haben Sie dem clk_1hz keinen Wert zugewiesen. Daher wird ihm kein Wert zugewiesen. Fügen Sie einfach assign clk_1hz = counter[24] hinzu; außerhalb des Always-Blocks.
Das Photon