备忘_数字IC_verilog_分频
1.偶数
要实现一个N分频(N为偶数)的分频器,可以先写一个计数器,当计数到(N/2-1)时,让输出状态翻转,并将计数器清零,这样输出的信号就是输入时钟的N分频
偶数分频器示例,20分频即N=20,占空比50%
module clk_div(
clk,
rst,
div,
clk_out
);
input clk; //50MHZ
input rst;
input div; //divide number ,int
output clk_out;
reg clk_out = 1'b0;
reg [31:0] cnt;
wire [31:0] div;
always @(posedge clk) begin
if (rst) begin
cnt <= 32'b0;
clk_out <= 1'b0;
end
else if (cnt == ((div/2) - 32'd1)) begin
clk_out <= ~clk_out;
cnt <= 32'b0;
end
else begin
cnt <= cnt + 1'b1;
end
end
endmodule
2.奇数
如果对占空比没有明确的要求,则可以直接对上升沿计数,计数到(N-1)/2 时让输出翻转,计数到(N-1)时让输出状态再次翻转,并将计数器清零,这样就可以得到一个占空比为2:3的N分频(N为奇数)的分频器。而如果要实现50%的占空比,可以通过“错位相