特殊的分频计数器技巧总结
时间:06-10 14:25 阅读:3253次
*温馨提示:点击图片可以放大观看高清大图
简介:软件使用版本:Quartus II 13.0+Modelsim_Altera10.1d
最近一帮朋友忙着找工作,期间面试问了我很多分频计数的题目,当时我傻了。感觉自己学的真是一坨坨。。。反思之后,也查了不少资料。逐渐把这问题解决掉,现简单地总结下。
1、 奇数分频器
如何实现占空比为50%的方波波形的奇数分频?
方法:用两个计数器,分别由时钟的上升沿和下降沿奇数,将其输出结果相或。即可得到占空比为50%的方波波形。
写了个奇数为9,占空比为50%的分频计数器。
仿真图如下所示:
2、半整数分频器
假设一个10Mhz的时钟信号,想要得到4Mhz的频率,分频系数为2.5。
该分频器设计方法:设计一个模3计数器,再设计一个脉冲扣除电路,每来3个时钟周期时,扣除半个周期,即可实现分频系数为2.5的半整数分频。采用类似方法,可实现任意半整数的分频器。如下图所示,采用异或门和2分频模块设计出脉冲扣除电路,脉冲扣除是输入频率和2分频输出相异或的结果。
当然,改方法得到的脉冲信号并非占空比为50%的,但可以增加两行代码来近似做占空比为50%的周期信号。如下代码中,2.5倍分频结果,输出CLK_OUT2。再通过或逻辑得到近似占空比为50%的CLK_OUT。
仿真图如下所示:
3、DDS思想的任意分频
曾经在CB的《从零开始走进FPGA的世界》当中看到的一种分频思想,当时不以为然。不过现在想想,这种思想还真不错。
根据相位累加的原理,流程如下所示:
下面写了个输入频率50Mhz,输出10Mhz的例程。
仿真结果如下:
当然,网上还有许多分频思路。其中一种就是利用脉冲删减电路,进行小数分频,但该方法得到的时钟不符合自己的习惯,也就不深入研究了。