Hallo, ich habe ein Clock-Signal mit 50MHz und möchte daraus ein Clocksignal mit 25MHz erstellen. Ich habe schon Verilog-Code geschrieben, leider funktioniert er nicht richtig. Wo ist der Fehler? Wie kann ich das besser/ einfacher machen? Marcel module clk25_generator( clk50, reset, clk25 ); input clk50, reset; output clk25; reg clk25; reg state; always @(posedge clk50) begin if (reset==1'b1) begin state<=1'b0; clk25<=1'b0; end else begin if (state==1'b1) begin clk25=~clk25; state<=state+1; end state<=state+1; end end always @(negedge clk50) begin if (state==1'b1) begin clk25=~clk25; end state<=state+1; end endmodule
Nicht, dass ich Verilog könnte, aber wie wäre das: module clk25_generator( clk50, reset, clk25 ); input clk50, reset; output clk25; reg clk25; always @(posedge clk50) begin if (reset==1'b1) begin clk25<=1'b0; end else begin clk25=~clk25; >>>>>>>> toggeln des Bits = teilen durch 2 end end endmodule Insbesondere, weil ich nicht glaube, dass du ein FF (innerhalb des FPGAs) findest, das du auf die pos. und die neg. Flanke triggern kannst.
Die Frage ist auch, ob dein geteiltes Clocksignal unbedingt von Reset abhängig sein muss. Wenn nicht, kannst du es dir auch noch einfacher machen: reg clk2 = 1'b0; always @(posedge clk) begin clk2 <= ~clk2; end
Das wird ein Schweiss Clock signal, wenn man es in derselben Domäne nutzen will,
>Das wird ein Schweiss Clock signal, wenn man es in derselben >Domäne nutzen will Sowas nutzt man eh nur als Enable, dann hat das mit Schweiß nichts zu tun. : : always @(posedge clk50) begin clk25=~clk25; >>>>>>>> toggeln des Bits = teilen durch 2 end always @(posedge clk50) begin if (clk25==1'b1) begin >>>>>>> Clock-Domain 50MHz mit Enable 25MHz : : end end : :
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.