Gui*_*ano 2 verilog frequency clock circuit digital-logic
我需要在verilog中使用分频器,我在下面编写了代码.它有效,但我想知道是否是最好的解决方案,谢谢!
module frquency_divider_by2 ( clk ,clk3 );
output clk3 ;
reg clk2, clk3 ;
input clk ;
wire clk ;
initial clk2 = 0;
initial clk3 = 0;
always @ (posedge (clk)) begin
clk2 <= ~clk2;
end
always @ (posedge (clk2)) begin
clk3 <= ~clk3;
end
endmodule
Run Code Online (Sandbox Code Playgroud)
由quartus生成的电路:

你的块将频率除以4而不是2. 维基百科数字分频器实际上有很好的描述.您的代码可以稍微整理一下,但只需要1个D-Type,这比JK触发器小,因此是最佳的.
module frquency_divider_by2(
input rst_n,
input clk_rx,
output reg clk_tx
);
always @ (posedge clk_rx) begin
if (~rst_n) begin
clk_tx <= 1'b0;
end
else begin
clk_tx <= ~clk_tx;
end
end
endmodule
Run Code Online (Sandbox Code Playgroud)
当将这些类型的时钟分频器链接在一起时,要意识到每次通过其中一个分频器时都会出现q延迟.如果通过综合无法正确管理,则不能将时钟视为同步.
EDAplayground上的示例应该在运行时打开波形.