分频是fpga设计中经常会遇到的问题,通常如果我们要得到指定的频率的时钟,通过一个计数器就能搞定。比如我的系统时钟为50m,我需要得到一个9600hz的时钟,则计数器需要计数到2604后时钟翻转。计算方法是:(系统时钟/指定时钟)/2;
常见的偶数分频和奇数分频怎么实现呢?
(1)偶数分频:比较简单,也是通过计数器完成,分频比为N,时钟翻转条件为(N/2)-1。
(2) 奇数分频:稍微复杂一些,分两种情况。一种不要求占空比,设置两次翻转条件。在计数到(N-1)/2时翻转一次,再在(N-1)出翻转一次。像这样得到占空比为2:3的时钟。第二种若需得到占空比为50%的分频器,则需通过错位相或的方式得到,通过第一种的方法,第一路时钟通过上升沿进行计数,第二路通过下降沿计数得到分频后的时钟,他们之间相差一个时钟周期,通过或运算就得到了占空比为50%的奇数分频。