概要
本文介绍一种常用的2.5分频电路的实现方式,以及其电路仿真波形。
整体架构流程
该部分电路的实现利用简单的Verilog描述语言进行实现。
技术名词解释
Verilog,点5分频
技术细节
电路结构如下:
Verilog代码如下:
reg[1:0] div_cnt;
wire clk_div3_div2_dly;
wire clk_src_tmp = clk_src ^ clk_div3_div2_dly;
always@(posedge clk_src_tmp or negedge rst_n)
begin
if(!rst_n)
div_cnt <= 2'b00;
else if(div_cnt==2'b10)
div_cnt <= 2'b00;
else //you can add clk enable
div_cnt <= div_cnt + 1'b1;
end
reg clk_div3;
always@(posedge clk_src_tmp or negedge rst_n)
begin
if(!rst_n)
clk_div3 = 1'b0;
else if(div_cnt==2'b00)
clk_div3 = 1'b1;
else if(div_cnt==2'b01)
clk_div3 = 1'b0;
end
reg clk_div3_div2;
always@(posedge clk_div3 or negedge rst_n)
begin
if(!rst_n)
clk_div3_div2 <= 1'b0;
else
clk_div3_div2 <= ~clk_div3_div2;
end
assign #1 clk_div3_div3_dly = clk_div3_div2;
assign clk_div_2p5 = clk_div3;
仿真波形如下:
小结
该电路实现的技术难点是:如果用数字方式实现的话,每次综合都需要对模块中的异或逻辑进行timing修正,我们可以看到clk_src_tmp的窄脉冲其实是靠clk_div3_div2进行delay得到的,在中后端由于有max pulse以及min pulse的要求,所以这个窄脉冲的宽度不宜太大,也不宜太小,因此这种电路最好用模拟电路搭,将其做成hardmarco,这样方便后续项目继承。
同时,该电路也可以扩展到其他的点5分频,只需要将前级的三分频修改为所需的整数分频即可。
例如:
电路结构相对简单,易实现,可继承性强。