任意倍数占空比为50%的偶数分频
以四分频为例,分频后的一个周期是分频前的四个周期,并且分频后的一个周期中,一半是高电平,一半是低电平,这就是占空比为50%的四分频。
要实现该功能,使用一个计数器在0~3之间计数,clk_out在0和2时翻转即可。
module even_divider
#( parameter DIVIDE_FACTOR = 4 )
(
input clk_in ,
input rst_n ,
output reg clk_out
);
parameter CNT_WIDTH = $clog2(DIVIDE_FACTOR) ;
reg [CNT_WIDTH : 0] cnt ;
// 1.计数器
always@(posedge clk_in or negedge rst_n) begin
if( ~rst_n ) begin
cnt <= 'b0;
end
else if( cnt == DIVIDE_FACTOR - 1 ) begin
cnt <= 'b0;
end
else begin
cnt <= cnt + 1'b1;
end
end
// 2.输出clk_out cnt为0和DIVIDE/2时跳变
always@