原创 可编程定时/计数器提高输出频率准确度方法

2009-8-13 11:26 2448 5 5 分类: MCU/ 嵌入式
摘要:用可编程定时/计数器作脉冲发生器时,输出脉冲频率等于输入时钟频率除以计数值,但其数值是离散的,期望输出频率只能用这些离散频率点来近似,频率准确度随输出频率升高而下降。提高输入时钟频率,增加输入时钟源数能提高脉冲发生器输出频率准确度。电子园51单片机学习网T rZt%V,l:wM

   关键词:计数器 脉冲发生器 频率准确度电子园51单片机学习网L4sE{{7C)P

电子园51单片机学习网6J4rEC)}&z

将单片机内置或专用可编程定时/计数器作脉冲发生器,一般输入脉冲由晶振产生经过整形或分频后形成,有很高的频率准确度和稳定度。设输入脉冲频率为fin,期望输出脉冲频率为f,应置入脉冲发生器的计数值N=fin/f。当f为fin的约数,则N为整数,f与fin的准确度相同;当f不为fin的约数,则N 也不为整数,N=n+δ,其中n为N的整数部分,δ为N 的纯小数部分。由于计数值只能为整数,实际计数值Np只能取N的近似数n或n+1,竞争输出脉冲频率fp=fin/Np。因Np的近似,fp与f间必然存在误差,且此误差分量较之因fin准确度和稳定度有限引起的误差分量可能大得多。f的准确度主要受Np的近似影响。本文在不计由fin准确度和稳定度影响的条件下,分析由Np引起f误差的特点,探讨消除或减小因Np引起f误差的方法,从而提高f的准确度。
|]-K8ff-f s#c0点击看大图
"{5~Q[8^4x1g)x#sT01 单时钟源时,因Np近似影响输出频率准确度分析
电子园51单片机学习网,GNj6q6E O3f;` t:s


C3M:t?:E2F0当脉冲发生器输入脉冲为fin时,若最大计数值为nmax,则Np取值可能为1,2,…,nmax,有nmax种可能,相应fp被离散为fin, fin/2,…,fin/nmax,也有nmax种取值的可能。令fin/(nmax+1)=0,这些离散频率将0~fin频段分成nmax个子频段,对于任一f∈(0,fin),总对应一n,使f∈(fin/n+1),fin/n)。Np取n或n+1,近似N,实际上是用fin/n或fin/(n+1) 来近似f。当f为fin的约数时,Np=N,fp=f,绝对误差Δf=fp-f=0,相对误差r=Δf/f=0;当f不为fin的约数时,Δf≠0,r≠0。Δf和r的值与Np的取值方案有关,有以下三种情况:

.\]n }O'k"k0电子园51单片机学习网@+j9uaZ)pC

①Np=n时,fp=fin/n>f,Δf>0,r>0Δf随f的增大而减小。F趋近于fin/(n+1)时,Δf和r趋于极大值;Δf趋近于fin/n-fin/(n+1)=fin/[n(n+1)]时,r趋近于1/n。采用此方案时,f越接近于fin/(n+1),f的准确性越差,如图1口Δf(f)曲线。电子园51单片机学习网eTvNh'y^ U m%hL

电子园51单片机学习网+g pGa(n0NhR~

②Np=n+1时,fp=fin/(n+1)<f,f<0,r<0,|Δf|随f的增大而增大。F趋近于fin/n时,|Δf|和|r|趋于极大值;Δf趋近于fin/(n+1)-fin/n=-fin/[n(n+1)])时,r趋近于-1/n。采用此方案时,f越接近于fin/n,f的准确性越差,如图2中-Δf(f)曲线。

F7p ^4])K0

|p#?6na0③以|Δf|为最小原则,f∈[fin/(n+1),fin/(n+1)+fin/2n(n+1)]时,Np=n+1,fp=fin/(n+1),则Δf<0,r<0;f∈[fin/(n+1)+fin/2n(n+1),fin/n]时,Np=n,fp=fin/n,则Δf>0,r>0;当f=fin/(n+1)+fin/[2n(n+1)]时,|Δf|和|r|达到极大值。Δf=±fin/2[n(n+1)],r=±1/(2n+1)。采用此方案时,f越接近fin/(n+1)+fin/[2n(n+1)],f的准确性越差(见图2)。

5l0w;e `0JZ&ui(E0电子园51单片机学习网(e'V;L4l"B|*Nj4OY%_v

综合以上三种方案的误差情况,因Np近似引起的输出频率误差有以下特点:

uCW.E"x@0电子园51单片机学习网X/z;[/?A%lo.wn

①三种方案的Δf(f)曲线都是由一组分辩率为-1的平行线段组成,子频段越宽,斜线段越长。说明各子频率的最大绝对误差值max(|Δf|)及max(|r|)与子频段宽度成正比,而子频段的宽度与n成反比。

#{Hpck(q3R6N g0

,x"CUY^ Z4OZ0②方案③各子频段的max(|Δf|)和max(|r|)为前面方案一半,说明方案③较前两方案更合理。以后讨论Np取值时都按方案③。

0uO-Rj[.B%X u~@0电子园51单片机学习网Z V `v.G)T6Lu*S|

③ 评价发生器的准确度,是用给定频段最大相对误差的大小。最大相对误差大小取值越小,则发生器的准确度越高。在子频段[fin/(n+1),fin/n] 中,其极大值为1/(2n+1)。由此可以看出,fin一定时,f越大,n越小;子频段的|r|极大值越大,准确度越低。对于给定输出频段的准确度,可以用该频段频率上限对应的子频段|r|的极大值来评价。换言之,提高了输出高频段的准确度,也就提高了整修输出频段的准确度。

y,[0h3M'v;Gw-l3b0电子园51单片机学习网$[*g*K5}]2fS

表1是设fin=10 7Hz,f在不同数量级Hz频段,由N近似影响f准确度的指标。
5}9?tQ TG!Z6i$k#u&U0电子园51单片机学习网 B[gAX/Z
表1 
电子园51单片机学习网G,~dY$W5})\j


频段10 210 310 410 5
max(|γ|)5×10 -65×10 -55×10 -45×10 -3
max(|Δf|)/Hz5×10 -45×10 -25446

XW@!U)ZtS I0l&yz0从表1可以看出,f每增加1个数量级,max(|r|)增加1个数量级,max(|Δf|)增加2个数量级。
Y n@ Dv:},@1f'x0点击看大图
(j'p(ikq7~b.Y02 提高输出频率准确度的方法

:M3Jt.b(i9^EwJt0电子园51单片机学习网6[Nm7zS&d;`b

在给定可编程定时/计时器条件下,针对Np引起输出频率误差的特点,可以采取不同方法消除或减小输出频率误差,从而提高输出频率的准确度。

a`M Q C^0电子园51单片机学习网mc2t"_9TPY?t$X

(2)脉冲发生器仅需有限个确定频点输出时的情况电子园51单片机学习网[Ms+T8F1z^;r


1[(}"Y!JUM T9Y @7D'W'[0|,b0脉冲发生器仅需有限个确定频点输出时,以下两种方法可以消除因计数值近似引起的输出频率误差。电子园51单片机学习网0I o'sj m/K


X|SK,iY0①单时钟公倍数法。若取fin为这些频点的公倍数,则其中每个频点f对尖的N都为整数,从而消除了因计数值近似引起的输出频率误差。采用此法须注意,一是fin不得超出脉冲发生器的允许输出频率上限;二是确定已知频点的有效位数时,要考虑到晶振的准确度和稳定度。电子园51单片机学习网~7Oe#w5[t(n,W


r,zZP+haOu0② 多时钟源公倍数法。采用单时钟公倍数法确定的fin超出脉冲发生器输入频率上限时,可以采用二时钟源或多时钟源公倍数法。二时钟源公倍数法的具体做法是,将各输出频点分成两级,分别求出各组对应的公倍数fin1及fin2,若此fin1或fin2有一个大于脉冲发生器输入频率上限时,则重新分且,直到两组的公倍数fin1及fin2都达到输入频率上限要求。电路上设置相应的两振荡电压及二选一开关,根据输出频率而将对应的fin1或fin2切换到脉冲发生器的输入端。若分成两组后,无论怎样调整分组都不能使fin1及fin2同时满足输入频率上限要求,则可采用多时钟源公倍数法。考虑到增加时钟源数后,给软硬件带来的复杂性,在满足输入频率上限要求的前提下,时钟源数应尽量少。电子园51单片机学习网h J oQ6z'a1m#f.o P

电子园51单片机学习网]cQ*lmq,PW

(2)已知输出频率上限,不能确定具体期望输出频率时的情况电子园51单片机学习网u2d,P2kH2m


5OjP ]8kr/ZB0已知输出频率上限,不能确定具期望输出频率时,尽量提高fin或增加时钟源数,缩小近似子频段宽度,减小子频段内可能出现的max(|r|)及max(|Δf|)。

5Z2] t.G(sC0电子园51单片机学习网x|*M2_g}

①提高时钟源fin法。若要求输出频率上限为fmax,则对应Nmin=fin/fmax=nmin+δ。输出频段可能出现的max(|r|)=1/(2nmin+1)若能使fin增大,则nmin增大,max(|r|)相应减小,从而提高了输出频率的准确度。

K"sRf/wT"Zx0电子园51单片机学习网,RD6s&j(x

②多时钟源等分子频段法。提高时钟源fin,受脉冲发生器允许输入上限频率的制约,若还要提高输出频率准确度,可以增加时钟源数,将[fin/(nmin+1),fin/nmin]子频段作M等分,则可钭max(|r|)缩小M倍。电子园51单片机学习网 rX#CY c?R"h

电子园51单片机学习网Mpj8Q2T$U"d

设有M个时钟源,其频率分别为fin,fin1,…,finM-1,可通过M选一开关,接入其一到脉冲发生器的输入端,经过nmin分频后,正好将[fin/(nmin+1),fin/nmin]M等分,即电子园51单片机学习网o^QM&x U$J)Ei)ol!g


*ymh0y3Co6o-i0fin1/nmin=fin/nmin-fin/[M·nmin(nmin+1)]电子园51单片机学习网'G2B!M3X4YI'|-\

电子园51单片机学习网[-o8A]1V6G)u D

fin2/nmin=fin/nmin-2fin/[M·nmin(nmin+1)]电子园51单片机学习网 S1oJ-d#R


G~p#@%Y Eu0.电子园51单片机学习网 G.}Gai*A6X6iu`


(M'|F^m#N0.

;qB-sX2` K Y/M4i0

R y?,zKp+` |n0.电子园51单片机学习网SG%pi9|9U,Y$U'h


wuw*nQ1oX5m'F0fin/nmin=fin/nmin-jfin/[M·nmin(nmin+1)]

2M#`}mVc9K&a0电子园51单片机学习网 `f IQT!Br

.

mP~3}PjTk\0

+^p%NX&j:xX'SIX0.

%L3orFf Q0电子园51单片机学习网 sH9rJ5HN NJ

.

#Q%fw1B'F$vS0电子园51单片机学习网A0bL+}v1tA&_'z5Jc

finM-1/nmin=fin/nmin-(M-1)/[M·nmin(nmin+1)]

4R)` |&~'q-H0

0q ] WG M^ o0也即只要:finj=fin[1-j/[M(nmin+1)](j=1,2,…,M-1),就可以将子频段[fin/(nmin+1),fin/nmin]等分为M个子敬意。用量小|Δf|原则通过切换进相应的时钟源,f可以用fin/(nmin+1),finM-1/nmin,…,fin1/nmin,fin/nmin来近似。各子区间 max(|r|M)=(|r|)/M。一般地,当n>nmin时,M-1个增加的时钟finj(j=1,2,…,M-1),经n分频后不一定能将 [fin/(n+1),fin/n]作M部分,但能使此子频段分割,且各子区间宽度都小于fin/[M·nmin(nmin+1)],各子区间内的max (|r|)小于max(|r|m)。电子园51单片机学习网 T&I |k'Eqgz$~

电子园51单片机学习网6C5\.B.^S2y|N

3 实验结果

@3[+R8Tmsg0电子园51单片机学习网Q{sy k3Dy+L

我们对多时钟源等分子频段法进行了实验,可编程定时/计数器采用Intel 8254-2,取fin=10MHz,fmax=10kHz,M=5,则nmin=1000,用频率计将各振荡器输出频率标定为:fin=10MHz,fin1=9 998 002.0Hz,fin2=9 996 004.0Hz,fin3=9 994 006.0Hz,fin4=9 992 008.0Hz。再将Intel 8254-2置入不同计数值,分别用各时钟源输入时,测出Intel 8254-2输出频率,结果如表2所列。电子园51单片机学习网?(U9Wn%gI0?

LYZ[NsK0表2 

/utJ9G@/I2n;F0
         输入
{N%@5bo}sHmZY0     输出电子园51单片机学习网`A9v F$Ffk5P
计数值
fin=1000000fin1=9998002.0fin2=99960 4.0fin3=9994006.0fin4=9992008.0
100010000.09998.09996.09994.09992.0
10019990.09988.09986.09984.09982.0
10029980.19978.09976.19974.19972.1
10039970.19968.19966.19964.19962.1
电子园51单片机学习网2Ye QS0d [ ]q_R

从表2可以看出,在单一时钟源时,计数器两相邻实际输出频率之差最大值为10.0Hz,输出频率准确度为±5.0 Hz,而在5时钟源时,计数器两相邻实际输出频率之差最大值为2.0Hz,输出频率准确度为±1.0Hz,输出频率准确度得到提高,为单时钟源时的5倍。

O9F p/U!e6nb0

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
5
关闭 站长推荐上一条 /3 下一条