| ||
首先来了解分频比的概念,分频比是指原频率和分频后的频率的比值,为了更好的理解后边的内容,也可以理解为一段时间内原时钟出现的周期数和分频后的时钟所出现的周期数的比值(此处设为4.7),即满足关系:4.7*T1=T2。
只用verilog的话无法真正意义上的实现小数分频,比如说实现4.7分频,实际上是通过4分频和5分频来实现的,通过控制4分频和5分频的所占比例来调控交替产生4到5之间的任意分频比(准确的说这里的“任意”实际上要考虑精度的限制)。虽然短时间内看到的是4分频和5分频,但从更多的周期数来看的话(统计的周期数越多越精确)是4.7分频(分频比为周期数与周期数的比值)。
对照前面的关系式:4.7*T1=T2,可知,我们的目标是原时钟经过4.7个脉宽,分频后的时钟才经过1个脉宽,但是4.7个脉宽是无法实现的。那么我们再来转化一下目标,等式左右两边同时乘以10,化为整数(也可以乘以别的数,目标是化为整数,视分频比和精度而定),所以目标变为原时钟经过47个脉宽,分频后的时钟经过10个脉宽(其实这里的10个脉宽即周期不全是相等的,因为,有些是4分频的时钟,有些是5分频的时钟,只要满足公式就行了)。那么其中的脉宽哪些是4分频,哪些是5分频的呢,可以分别记为m和n,那么它们必须满足下面关系:
m+n=10
4m+5n=47
求得m=3,n=7,即在原时钟47个脉宽的时间内,要把其中的12个脉宽转化为3个4分频时钟的脉宽,即3*4=12,另外35个脉宽转化为7个5分频时钟的脉宽,即7*5=35。
值得注意的是,应当尽量使4分频时钟和5分频时钟均匀分配,所以,47个原时钟脉宽,你不能前35个脉宽产生5分频,后12个脉宽产生4分频,这样会使频谱出现更多的杂散,这点可以用MATLAB仿一下(待确认)。
最后,再来确认一下分频比,47/(3+7)=4.7,再次强调,这里的分频比是周期数除以周期数,前提是相同时间内。
值得思考的地方:
1、分频比4.7介于4到5之间,所以可以用4分频和5分频来交替产生,我们把范围扩展一下4.7也介于3到6之间,所以能用3分频和6分频来交替产生吗,推而广之,奇数分频产生比偶数分频产生更麻烦一点,那么为什么不用4分频和6分频呢,这个值得思考,个人认为可以从频谱的角度考虑。