|
方案一,此方法为传统的设计方法,如果分频系数N为偶数,采用具有二状态触发的(J,K)触发器或(D)触发器即可实现所要(求的)分频;如果分频系数N为奇数,根据公式fp=2f/2N,则先对基准信号倍频,再进行偶数分频(占空比为50%)。
显然这种方案不但设计复杂而且还大大降低了FPGA的工作频率,所以这种方法只会在设计一些分频系数较低且固定的场合下用到。
方案二,当分频系数N为偶数时,计数器从0到N-1循环计数,且计数器计数小于N/2时输出1,计数大于等于N/2则输出0;当分频系数N为奇数时,计数器从0到N-1循环计数,且计数器小于(N+1)/2时输出0,计数等于(N+1)/2时则输出0到1的跳变信号,且此跳变信号必须在标准时钟的下降沿跳变(满足50%占空比),计数大于(N+1)/2时则输出1。
很明显,采用这种方案没有利用倍频,可以充分利用器件的最高工作频率,且输出信号的占空比为50%。流程图如下:
但是在现实中我们很快发现用单计数器根本不能实现对双边沿的探测。所以说这个方案只能在理论上成立,实际上根本做不出来。
方案三,这里我们对方案二进行了改进,采用双计数器实现同样的功能,这也是本设计的突破点和创新点所在。当分频系数N为偶数时,方法同上;当分频系数N为奇数时,采用双计数器计数。两个计数器同时计数,一个沿上升沿计数,另一个则沿下降沿计数。计数器从0到N-1循环计数,且计数器计数小于(N-1)/2时输出1,计数大于等于(N-1)/2则输出0。在这样的控制方式下,分频后输出的波形恰好相差1/2时钟周期,将两个波形进行或(or)操作后,即可得到所要的波形(占空比50%)。下面是用这种方法进行5分频时的波形图:
其中,clk1是两计数器的时钟,p1是计数器1的输出波形,p2是计数器2的输出波形,q是最终的输出波形。
可见经过这样一个小小的技术改进,不但没有增加设计的复杂性,而且真正的实现了奇数分频的等占空比。
因此在奇数的等空比分频上我们最终选择了方案三。
3.1.3 非等占空比的设计
由于非等占空比的分频器设计较为简单,现实的技术也很成熟,从科技创新本身来说,真正创新的内容不多,所以在这里我们就不多加说明。
下面介绍的一种非等占空比的分频器是我们在做项目过程中发现的一种比较有特点分频器,其设计思想如下:
在一般的计数器中,参与计数(电平有变化)的计数器最高位的输出波形就是以此计数器的模数为分频系数的分频器。由这一思想,只需根据输入的分频系数判断出参与计数的计数器最高位,把此计数器的此位波形输出即可得到所要波形。如10进制计数器,其最高位第四位的输出波形是输入波形的10分频。波形图如下:
|
|