三、基于Verilog的奇偶分频器设计

1、前言

在对时钟进行分频时,如果要保证设计出的时钟占空比为 50% ,需要考虑的问题是分频系数是偶数还是奇数。针对分频系数的奇偶性,设计出对应的 module 。

2、偶分频电路

偶分频电路指的是分频系数为 2、4、6、8  ... 等偶数整数的分频电路,我们可以直接进行分频。例如下面 divider.v 中,对输入时钟进行 6 分频,即假设 clk 为 50MHz ,分频后的时钟频率为  (50/6) MHz 。

module divider(

				input	    wire	clk,
				input	    wire	rst_n,
				output	    reg     clk_div

			);
			
	parameter NUM_DIV = 6;
			
	reg	[3:0]	cnt;
	
	always @(posedge clk or negedge rst_n)
	if(!rst_n) begin
		cnt <= 4'd0;
		clk_div	<= 1'b0;
	end
	else if(cnt < NUM_DIV / 2 - 1) begin
		cnt <= cnt + 1'b1;
		clk_div	<= clk_div;
	end
	else	begin
		cnt <= 4'd0;
		clk_div	<= ~clk_div;
	end

endmodule

3、奇分频

由于奇分频需要保持分频后的时钟占空比为 50% ,所以不能像偶分频那样直接在分频系数的一半时使时时钟信号翻转。在此我们需要利用输入时钟上升沿和下降沿来进行设计。

接下来我们设计一个 5 分频的模块,设计思路如下:

        采用计数器 cnt1 进行计数,在时钟上升沿进行加 1 操作,计数器的值为 0、1 时,输出时钟信号 clk_div 为高电平;计数器的值为2、3、4 时,输出时钟信号 clk_div 为低电平,计数到 5 时清零,从头开始计数。我们可以得到占空比为 40% 的波形 clk_div1。

        采用计数器 cnt12进行计数,在时钟下降沿进行加 1 操作,计数器的值为 0、1 时,输出时钟信号 clk_div 为高电平;计数器的值为2、3、4 时,输出时钟信号 clk_div 为低电平,计数到 5 时清零,从头开始计数。我们可以得到占空比为 40% 的波形 clk_div2。

       clk_div1 和clk_div2 的上升沿到来时间相差半个输入周期,所以将这两个信号进行或操作,即可得到占空比为 50% 的5分频时钟。

       具体代码如下:

module divider(

				input		wire		clk,
				input		wire		rst_n,
				output		wire		clk_div					

			);
	
	parameter NUM_DIV = 5;
	
	reg[2:0] cnt1;
	reg[2:0] cnt2;
	reg	clk_div1, clk_div2;
	
	always @(posedge clk or negedge rst_n)
	if(!rst_n)
		cnt1 <= 0;
	else if(cnt1 < NUM_DIV - 1)
		cnt1 <= cnt1 + 1'b1;
	else 
		cnt1 <= 0;
		
	always @(posedge clk or negedge rst_n)
	if(!rst_n)
		clk_div1 <= 1'b1;
	else if(cnt1 < NUM_DIV / 2) 
		clk_div1 <= 1'b1;
	else
		clk_div1 <= 1'b0;
		
	always @(negedge clk or negedge rst_n)
	if(!rst_n)
		cnt2 <= 0;
	else if(cnt2 < NUM_DIV - 1)
		cnt2 <= cnt2 + 1'b1;
	else 
		cnt2 <= 0;
		
	always @(negedge clk or negedge rst_n)
	if(!rst_n)
		clk_div2 <= 1'b1;
	else if(cnt2 < NUM_DIV / 2) 
		clk_div2 <= 1'b1;
	else
		clk_div2 <= 1'b0;
		
	assign clk_div = clk_div1 | clk_div2;
endmodule

对其进行测试和验证,得到如下波形:

三、基于Verilog的奇偶分频器设计_第1张图片

4、源码

具体的分频设计代码及相应设计代码已上传:https://download.csdn.net/download/qq_31799983/10581182

5、结束

童鞋们也可以关注我的公众号:深入浅出玩儿转FPGA,获取更多内容。

******************************************************************************************************************************************************

                                                                               听说,打赏是检验珍爱的唯一标准!

******************************************************************************************************************************************************


三、基于Verilog的奇偶分频器设计_第2张图片 听说,打赏是检验真爱的唯一标准

 

你可能感兴趣的:(三、基于Verilog的奇偶分频器设计)