简介:简单的二分频可以通过触发器实现,对于偶数分频系数较大,对分频系数 N 循环计数进行分频。在计数周期达到分频系数中间数值 N/2 时进行时钟翻转,可保证分频后时钟的占空比为 50%。
//任意偶数分频
module div_even #(parameter div_cyc=10)(
clk_in,rstn,clk_out
);
input clk_in;
input rstn;
output clk_out;
reg [3:0]cnt;//按需定义位宽
always @(posedge clk_in or negedge rstn) begin
if(!rstn)
cnt<='b0;
else if(cnt==(div_cyc/2)-1)
cnt<='b0;
else
cnt<=cnt+1'b1;
end
reg clk_temp;
always @(posedge clk_in or negedge rstn) begin
if(!rstn)
clk_temp <= 'b0;
else if(cnt==(div_cyc/2)-1)
clk_temp <= ~clk_temp;
end
assign clk_out=clk_temp;
endmodule //div_even
TB:
module tb();
wire clk_out;
reg clk_in;
reg rstn;
div_even u_div(clk_in,rstn,clk_out);
always #5 clk_in=~clk_in;
initial begin
clk_in=0;
rstn=0;
#11 rstn=1;
#200 $finish;
end
endmodule
电路结构:
波形分析
例:四分频
例:10分频