学习更多相关知识,关注博主知乎账号,用户名Trustintruth https://www.zhihu.com/people/suo-yi-xin-90/activities
分频对于许多FPGA的学习者来说很常见,无论是偶数分频还是奇数分频。但是分数分频在我们制作时并不常见。现在我们来说分数分频。
分数分频顾名思义分频比并不是一个整数,而是一个分数。往常我们接触的积分频,偶分频分频比都是整数,而分数分频的小数如何实现就是这个的核心问题。
在实现分数分频的过程中,我们并不是使用一个小数来实现计数器功能,而是使用变分频比取平均的方法来实现。分频器设置两个分频模数,分别为 M 和 M + 1,它们
的分频次数分别设置在 N2 和 N1,在一个输出信号的完整的 周期( N1 +N2)中,若输入信号的周期为 N2·M +N1·( M +1), 即在周期为 N2 ·M + N1 ·( M + 1) 的输入信号中,进行了 N2 次 M 分频和 N1 次( M + 1) 分频,则可得到周期为( N1 + N2) 的输出信号,所以,分频器的分频比为: N2·M + N1·( M +1) N1 + N2 = N . 令 Q = N1 + N2, P = N2·M + N1( M + 1) ,则分频比又可 以写成:
N =P/Q
其中 P、 Q 均为整数,且 P > Q。可得当基准时钟源每输入 P 个脉冲时,按照一定规律删除( P-Q) 个脉冲,并使删除的( PQ) 个脉冲位置相对均匀地分布在时钟源相对应的 P 个脉冲 中,输出 Q 个脉冲,便实现了平均意义上的 N 分频。 通过分析可知,分数分频的两种分频比可通过脉冲删除 电路来实现。具体设计思路为: 设置一个计数器,设其初始 值为0;在基准时钟源的每个上升沿到来时,计数器加上 Q, 若结果大于等于 P,则将计数器的值减去 P,并不删除脉冲; 若结果小于 P,则删除脉冲。
代码见下载页