电子说
偶数分频原理
偶数分频最为简单,很容易用模为N的计数器实现50%占空比的时钟信号,即每次计数满N(计到N-1)时输出时钟信号翻转。
以4分频为例,波形图如下:
奇数分频原理
方法一
使用模为2N+1的计数器,让输出时钟在X-1(X在0到2N-1之间)和2N时各翻转一次,则可得到奇数分频器,但是占空比并不是50%(应为 X/(2N+1))。
得到占空比为50%的奇数分频器的基本思想是:将得到的上升沿触发计数的奇数分频输出信号CLK1,和得到的下降沿触发计数的相同(时钟翻转值相同)奇数分频输出信号CLK2,CLK1和CLK2占空比不是50%而是低电平2周期,高电平1周期。
最后将CLK1和CLK2相或之后输出,就可以得到占空比为50%的奇数分频器。时序图如下,红线就是我们要的50%占空比三分频结果:
方法二
和方法一唯一的区别是,CLK1和CLK2相反,高电平变低电平,低电平变高电平,最终输出的分频时钟是CLK1&CLK2。所以注意区别。波形图如下:
整数数分频原理
总结1和2,设整数位N,当N为偶数时,cnt>1)。这是一个编程的技巧。
代码的一些具体技巧我将它放在了代码注释里面,希望大家好好看看。
设计思路
很多人在问我,拿到一个设计的时候如何去找思路。相信这也是很初学者的疑惑。一般推荐按照以下步骤来设计,一步步解决。
1.分解功能模块——分解到每个模块你都是能够想得到办法解决的为止,前期不要练习复杂的模块,推荐练习的有今天的各种分频,以后还可以尝试分数分频,UART,localbus,SPI,IIC这些是我推荐给大家练习的,由易到难。
2.每个分解的最小功能模块画出时序图,就像今天文章里分频的时序图一样,主要是帮你了解到每个时钟周期是怎么工作的,原理上是怎么实现的,时序图一出来,整个思路都清晰了。
3.组合功能模块,保证模块之间的时序是满足要求的,自底向上往上堆,每堆一个模块仿真一下,堆到顶层通过顶层仿真就算初步完成了功能的要求
设计整数分频
上面说了方法这里我们来试验下
1.分解模块功能,也就是画出总体框图
2.画时序图,每个分频模块的时序图前面已经画过了,奇偶选择没有时序图,就是一个选择开关,奇数分频系数选择奇数分频模块输出,偶数分频系数选择偶数分频输出。
3.拼凑——奇偶分频各写一个alwyas,最后加上奇偶选择,如果不熟悉可以分成两个单独的.v文件写,最后封装到顶层。
设计在以上步骤以及完成了,现在我们来看看仿真结果:
7分频
6分频
全部0条评论
快来发表一下你的评论吧 !