因为偶数分频器过于简单,所以我们从奇数分频器开始说起8
01 奇数分频器
假设我们要实现一个2n+1分频的分频器,就需要高电平占n+0.5个周期,低电平占n+0.5个周期,这样进行处理的最小时间段就变成了0.5个周期,就不能通过clk的计数直接实现了。
然而,时钟信号的上升沿和下降沿之间正好相差0.5个周期,利用这个就可以实现奇数分频啦
第一步:分别使用原时钟上升沿和下降沿产生两个计数器(基于上升沿计数的cnt1和基于下降沿计数的cnt2),计数器在计数到2n时,计数器归零重新从零开始计数,依次循环
第二步:cnt1计数到0和n时,clk1翻转,从而得到占空比为n:2n+1的clk1;
第三步:cnt2计数到0和n时,clk2翻转,从而得到占空比为n:2n+1的clk2;
第四步:clk1和clk2时钟进行或操作后,即可得到输出时钟clk_out;
下面为3分频的实现
module divclk(
input wire clk,
input wire rst_n,
output wire clk_out
);
reg clk1;
reg clk2;
reg [1:0] cnt1;
reg [1:0] cnt2;
always @(posedge clk or negedge rst_n) begin
if (!rst_n) begin
cnt1 <= 2'd0;
clk1 <= 1'b0;
end
else if (cnt1==2'd2) begin
cnt1 <= 2'd0;
end
else if ((cnt1==2'd0)||(cnt1==2'd1))begin
clk1 <= ~clk1;
cnt1=cnt1+2'd1;
end
else
cnt1=cnt1+2'd1;
end
always @(negedge clk or negedge rst_n) begin
if (!rst_n) begin
cnt2 <= 2'd0;
clk2 <= 1'b0;
end
else if (cnt2==2'd2) begin
cnt2 <= 2'd0;
end
else if ((cnt2==2'd0)||(cnt2==2'd1))begin
clk2 <= ~clk2;
cnt2=cnt2+2'd1;
end
else
cnt2=cnt2+2'd1;
end
assign clk_out=clk1|clk2;
endmodule
02 任意小数分频
在实际设计中,可能会需要小数分频的办法的到时钟,如在38.88m的sdh同步系统中,对应stm-1的开销的提取,需要2.048m的时钟,无法通过整数分频得到,只能用小数分频。
小数分频原理如下:设输入时钟频率f0,输出频率为fx,则
即m为整数部分,n为小数部分。为了实现k分频,可以对f0进行a次m分频和b次m+1分频,则有
整理后得
由38.88m得到2.048m的时钟,带入上式可得到m=18,a=1,b=63,即对38.88m进行1次18分频和63次19分频后间插就得到2.048mhz啦
原文标题:关于分频器~
文章出处:【微信公众号:fpga之家】欢迎添加关注!文章转载请注明出处。
陶瓷电容与汽车行业的发展
AD7147 新的电容器数位转换器
新款Moto Razr曝光搭载了骁龙710处理器拥有6GB+128GB的存储
中美贸易战之后,装备制造业呈现三大拦路虎
基本半导体推出UPS的碳化硅MOSFET模块BMF240R12E2G3
奇数分频器的介绍和实现
PCBA打样上锡不饱满的常见原因
微分段为什么要用在物联网上
单片机的I/O接口电路的扩展
digilentIEEE 802.15射频收发器介绍
multisim运算放大器放大倍数在哪设置
济南祥控工业级无线网关
法拉电容应用电路图大全(八款模拟电路设计原理图详解)
生息代币cTokens和iTokens之间的区别对比分析
华为MateBook E明天正式开售
中医药信息化“十四五”规划发布,唐古以数字化赋能行业发展
AIMB-278第12/13代Intel Core处理器Mini-ITX主板高性能解决方案,助力提升计算性能
ROHM新推出了一款电池充电IC:BD99954GW/MWV
企业迁移到云计算的动机是什么?
利用RT-Thread与MQTT实现智慧班车管理系统的设计