Verilog实现分频器设计(奇偶分频、半整数分频)

Verilog实现分频器设计(奇偶分频、半整数分频)

本文代码下载链接:https://download.csdn.net/download/xunleifeiyu/86502161?spm=1001.2014.3001.5503下载代码

一、偶分频

偶分频最简单,只需要对分频系数 N 进行循环计数。在计数器到达(N/2-1) 时进行时钟翻转,就可以保证分频后时钟占空比为 50%。

代码

always @(posedge clk or posedge rst)
begin
	if(rst)
		clock_cnt <= 10'b0;
	else if( clock_cnt == (N-1) )
		clock_cnt <= 10'b0;
	else
		clock_cnt <= clock_cnt + 1'b1;
end

always @(posedge clk or posedge rst)
begin
	if(rst)
		clock_divider <= 1'b0;
	else if(clock_cnt == (N/2 - 1) )
		clock_divider <= 1'b1;
	else if(clock_cnt == (N-1) )
		clock_divider <= 1'b0;
	else
		clock_divider <= clock_divider;
end	
		
assign clk_out = clock_divider;

仿真(四分频)

四分频

二、奇分频

跟偶分频非常相似,进行N分频,计数器从0计数到(N-1),只在(N-1)/2 处和(N-1)处进行时钟翻转,此时是在上升沿采样(clock_divider_pos);
为得到占空比为50%,还需要用下降沿采样,可以跟clock_divider_pos采用相同的计数方式进行翻转,也可以采用最简单的方法,直接将clock_divider_pos输出延迟半拍得到clock_divider_neg。
最终将两个结果进行或操作。
(如果不要求占空比为50%,则clock_divider_pos已经满足要求!)

仿真(五分频)

奇分频

三、半整数分频

利用时钟的双边沿采样,可以对时钟进行半整数分频。半整数分频最复杂,是在奇分频基础上进行进一步处理。占空比不可能为50%,只能最接近50%。有很多种方法实现,本设计使用较为简单高效的一种方法。
如果进行半整数分频,输入为N(如果是2.5分频,则N为2),一个思路是先进行类似5分频,然后进一步处理。
使用两个计数器,分别采用上升沿和下降沿采样,分别计数到N2。(0~4,代表5分频)
上升沿计数决定了占空比大小,如果是2.5分频、3.5分频,则占空比为1.5/2.5、1.5/3.5;如果是4.5分频、5.5分频,则占空比为2.5/4.5、2.5/5.5;以此类推。
下降沿计数就是为了得到半整数。
不论是上升沿还是下降沿,在一次循环计数中(0~N
2)需要有效两次。
最终,进行或操作。

仿真(7.5分频)

半整数分频

仿真(2.5分频)

半整数分频

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值