Verilog: langsames Taktgeneratormodul (1 Hz ab 50 MHz)

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?

Sie haben Ihre Antwort erhalten, aber fügen Sie in Zukunft bitte einen Kommentar hinzu, der uns mitteilt, welche Zeile diejenige mit dem Fehler ist (in diesem Fall Zeile 74).

Antworten (2)

Ändern Sie im Reg4Modul:

reg clk_1Hz = 1'b0;

zu:

wire clk_1Hz;
Danke. Es hat funktioniert, aber die Warnung lautet: CLK Net:value_reg/clock_generator/clk_1Hz hat möglicherweise eine übermäßige Verzerrung, weil
Mein Projekt auf Basys-2 funktioniert jedoch trotz Warnung gut
@cihangirND fügen Sie ein BUFGGrundelement zwischen Ihrem 1-Hz-Taktregister und dem Ausgang des slowClockModuls 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).
@TomCarpenter wow danke. 0 Warnung. habe ich es richtig platziert? i.hizliresim.com/82a3Ed.jpg
@cihangirND In der Tat. Ich hätte es aus Gründen der Übersichtlichkeit in das slowClock-Modul platziert, aber wenn es synthetisiert wird, macht es überhaupt keinen Unterschied.
FERTIG ;););););)[Zeichenbegrenzung]

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.