FPGA奇分频的实现

在FPGA或CPLD里面,经常会用到分频模块。偶分频很容易实现,而奇分频相对复杂点,本文介绍两种奇分频的方法,生成占空比为50%频率为N(奇数)信号。

第一种方法设计思路:

分别用两个计数器cnt_up,cnt_down,当检测到输入时钟的上升沿时cnt_up加1,检测到输入时钟的下降沿时cnt_down加1。

1、当cnt_down=(N-1)/2 + 1时,输出时钟翻转一次

2、当cnt_up=N时,输出时钟再次翻转一次,同时将两个计数器都复位,即cnt_up=0,cnt_down=0,重新开始计数,变可生成占空比为50%的频率为N的信号。

第二种方法设计思路:

在生成占空比为50%频率为N(奇数)信号之前,看下如何生成占空比为(N-1)/(2N)的频率为N的信号clk1。

设计思路:每检测到输入时钟的上升沿,计数器cnt加1,当cnt=(N-1)/2时,输出信号clk1翻转一次;当cnt=N时,输出信号clk1再次翻转一次,同时计数器复位cnt=0,开始重新计数,如此重复就可以生成占空比为(N-1)/(2N)的频率为N的信号clk1。

信号clk1是根据检测输入时钟上升沿而生成,同理,可以检测输入时钟下降沿方式来生成占空比为(N-1)/(2N)的频率为N的信号clk2(其实clk1和clk2在示波器上观察只是相位不同)。

然后将clk1和clk2相或,即可生成占空比为50%的频率为N的信号。