首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于FPGA的通用数控分频器的设计与实现

基于FPGA的通用数控分频器的设计与实现

1.引言分频器是数字系统中非常重要的模块之一,被广泛应用于各种控制电路中。在实际中,设计人员往往需要将一个标准的频率源通过分频技术以满足不同的需求。常见的分频形式主要有:偶数分频、奇数分频、半整数分频、小数分频、分数分频。在某些严格的情况下,还有占空比的要求。其中非等占空比的偶数分频器和奇数分频器其实现比较容易,但对于半整数分频器和占空比为50%的奇数分频器实现比较困难。
本文首先介绍了各种分频器的实现原理,并结合VHDL硬件描述语言对其进行了仿真,最后提出一个可控的通用分频器的设计方法,该方法可实现任意分频,资源消耗低,具有可编程等优点。

2.偶数分频器
偶数分频器比较简单,即利用计数器对需要分频的原始时钟信号进行计数翻转。
例如:要进行M=2N(N为自然数)分频,当计数值为0~k-1时,输出高电平,当计数值为k-1~2N-1时输出低电平,同时计数值复位,如此循环可实现任意占空比的偶数分频,其中M和k为预置数,可根据分频倍数和占空比的要求进行置数。如图1所示,当k=N时,即可实现占空比为50%的偶数分频。



3.奇数分频器
任意占空比的奇数分频器的实现,其原理与偶数分频器类似。但对于占空比为50%的任意奇数次分频却无法用上述相同的方法实现。
下面介绍一种常用的实现方法。
实现原理:采用两个不同的边沿触发器(一个在上升沿和一个在下降沿)来实现,其细节在于实现1/2个原始时钟周期的时间差。
如图2所示,进行M=2N+1分频时,k1是在clk上升沿且计数周期为M变化的信号。当计数器值为0~N时,k1保持低电平,计数值为N+1~2N时,k1保持高电平。




k2与k1一样,唯一不同的是:k2是在clk的下降沿变化。最后将k2与k1进行或运算即可得到占空比50%的任意奇数分频器。
4.半整数分频器
半整数分频器原理如图3所示[3].主要包括模M计数器,异或模块和2分频模块三个部分。其设计思想是:通过异或门和2分频模块组成一个改变输入频率的脉冲添加电路,即在M-0.5个输入信号周期内产生M个计数脉冲,并将其中的一个计数脉冲的周期变为含有两个脉冲的周期。而这种改变的具体实现是将原始时钟信号与2分频模块的输出进行异或。




另外,不难发现此原理图还可以实现占空比为50%的2M-1倍的奇数分频。当M=3时,其仿真结果如图4所示。原理图的输出端口q即为占空比为50%的5分频,输出端口C为2.5分频。


the king of nerds
返回列表