1 偶数分频
(1)2的幂分频
案例I 二分频
i: div_2.v
module div_2(
input i_clk,
input i_rst_n,
output o_clk
);
reg [0:0] cnt;
always @ (posedge i_clk, negedge i_rst_n)
if (!i_rst_n)
cnt <= 0;
else
cnt <= cnt + 1'b1;
assign o_clk = cnt[0];
endmodule
ii:RTL视图(QII综合结果)
图1 二分频的RTL视图
iii:仿真波形(QII仿真结果)
图2 二分频的仿真波形
案例II 四分频
i:div_4.v
module div_4(
input i_clk,
input i_rst_n,
output o_clk
);
reg [1:0] cnt;
always @ (posedge i_clk, negedge i_rst_n)
if (!i_rst_n)
cnt <= 0;
else
cnt <= cnt + 1'b1;
assign o_clk = cnt[1];
endmodule
ii:RTL视图(QII综合结果)
图3 四分频的RTL视图
iii:仿真波形(QII仿真结果)
图4 四分频的仿真波形
(2)不是2的幂分频
案例I 六分频
i:div_6.v
module div_6(
input i_clk,
input i_rst_n,
output reg o_clk
);
// log2(6) = 2.5850 <= 3
reg [2:0] cnt;
// 6 bit counter: 0 ~ 5
// 5 = 6 - 1
always @ (posedge i_clk, negedge i_rst_n)
begin
if (!i_rst_n)