基于FPGA的任意波形发生器设计与实现 下载本文

20

基于FPGA的任意波形发生器的设计与实现

fm?m?m??fc 式(2-32) 2?mk 同时由式(2-31)可知只有当m?i?mk?pk,对应的谱线幅度才不为零,因此有:

fm?fc?(i?K)?i?fc?fo0000i?0,?1,?2,... 式(2-33) N2 第m根谱线的幅值为:

Cm?1m1Ksinc()?sinc(i?N) 式(2-34) 2mk22 因此DDS系统中D/A转换器输出信号的傅立叶展开式为:

j?2?(i?fc?fo)t??(i?N)?1?K2? 式(2-35) S(t)??sinc(i?N)?e?2i???2?K? 由式(2-34)和式(2-35)可知,D/A转换器的输出信号除了主频fo外,还存在分布在fc,2fc,...两边?fo处的非谐波分量,幅值包络为sinc函数,如图2.13所示。

通过图2.13可以看出,当fo接近fc/2时,非谐波分量fc?fo也接近fc/2,且两者幅度趋于相等,这时很难设计出能滤除fc?fo分量的低通滤波器,这是DDS最大输出频率不取fc/2而取0.4fc的原因,因为实际的低通滤波器总存在一定的过渡带,在设计DDS最大输出频率时要留有一定的余量。为了取出干净的主频fo,常在D/A输出端接入截止频率为fc/2的低通滤波器以抑制杂散信号。

Cmfc奈圭斯特采样带宽2Ofofc?fofcfc?fo2fc2fc?fo2fc?fo3fc3fc?fof

图2.13 理想情况下DDS的输出频谱特性

2.3.2 非理想情况下DDS的频谱特性

在DDS工程应用中,其输出包含的杂散信号频谱并不像图2.13描绘的那样只分布在某些频率点上,有的时候甚至是分布在整个频带范围内。实际上,由于波形存储器的地址线宽度A与相位累加器的位数往往是不相等的(在2.2节已经

第二章 任意波形发生器的理论分析

21

解释过原因),通常情况下A?N,这就引入了相位截断误差。另外,由于波形存储器的字长有限,存放在波形存储器中的幅度量化数据也不是无限字长的,这必然带来幅度量化误差。因此在分析DDS系统的实际频谱时一定要考虑到这两个因素。除此之外,D/A转换器的非线性和低通滤波器的非理想特性也会影响到DDS的输出频谱。图2.14描述了DDS的杂散引入数学模型。

相位累加器ep频率控制字ecfc波形存储器eA数模转换器eDA低通滤波器eFfo

图2.14 DDS杂散信号引入数学模型

其中ec是参考时钟引入的杂散信号(该杂散在2.3.1小节中已经分析), e p 是相位截断引入的杂散信号,eA是有限位数据量化引入的杂散信号,eDA是DAC非线性引入的杂散信号,eF是低通滤波器的非理想特性引入的杂散信号。此外,电源噪声干扰、外来电磁干扰等因素都会造成DDS输出频谱杂散指标恶化。

下面我们对相位截断误差和幅度量化误差对DDS输出频谱的影响进行定量分析。

(1)相位截断误差的影响[9]

我们假设相位累加器的N中只有高A位被用来对波形存储器寻址,也就是说低B(B?N?A)位被截去了。那么截断后高A位输出的相位序列 ? p ( n )为:

?p(n)??(n)???(n)mod2B?

?nKmod2N?nKmod2B 式(2-36)

其对应的正弦相位序列 ? p为:

?p(n)?2??p(n) 式(2-37) 2N 由相位截断引起的相位误差序列 e p (n ) 为:

ep(n)??(n)??p(n)?nKmod2B 式(2-38)

由式(2-38)可知,当K?2B?m(m取正整数)时误差量 e p ,不存在相位? 0'截断误差;当K?2B?m时,误差量 e p ? 0 。设 e p (n ) 的周期为mk,有:

2Bm? 式(2-39) BBGCD(2,Kmod2)'k

22

基于FPGA的任意波形发生器的设计与实现

当波形存储器内存的是正弦波序列时,在有相位误差的情况下,波形存储器输出的正弦序列 S p ( n )为:

2??2??Sp(n)?sin?NK?n?Nep(n)? 式(2-40)

2?2?考虑到实际情况有:

ep(n)2N对式(2-40)展开并化简得

Sp(n)?sin(2B?N?2?A??1 22?2?2?K?n)?e(n)cos(K?n) 式(2-41) p2N2N2N当无相位截断误差时,波形存储器输出的序列为:

S(n)?sin(2?K?n) 式(2-42) 2N由式(2-41)和式(2-42)得到波形误差序列为:

?p(n)?S(n)?Sp(n)

?2?2?e(n)cos(K?n) 式(2-43) pNN22可以看出, S p ( ) 的周期仍为mk?2N/GCD(2N,K)。 n )和 ? p (n从式(2-41)可以看出 S p ( n )由两部分组成,除了正弦量外还有一个余弦量,这个余弦量的值跟N的大小有关,N越大,这个余弦量越小,即波形误差序列越小,由波形误差序列引入的杂散也就越小,当N很大时,这一部分杂散分量可以得到有效的抑制。

(2)幅度量化误差的影响

存放在波形存储器中的幅度码都是经过量化的,因此会有量化误差的存在,在量化时一般采用的是舍入法,此时量化转移函数和误差转移函数分别如图2.14(a)和2.14(b)所示。

图2.15中,S为量化前正弦函数的幅度值,Sa为量化后正弦函数的幅度值,量化阶为q?2?(D?1),D为存储器字长。可以看出?a是?a?S?Sa为幅度量化误差,

幅度为q/2,周期为q的锯齿状的周期函数,其傅立叶级数展开式为:

(?1)n?12?n?a?q?sin(S) 式(2-44)

n?qn?1? 现在讨论的是正弦波的量化,因此S(t)?sin(2?fot),则式(2-44)可写为:

第二章 任意波形发生器的理论分析

?23

?2?n?(?1)n?1?a(t)?q?sin?sin(2?fot)? 式(2-45)

n?n?1?q?Sa2qq?aq/2?2q?qOq2qS?2q?qOq2q?q?2q?q/2S

(a) 量化特性曲线 (b) 误差特性曲线

图2.15 量化曲线

在DDS系统中,相位累加器输出去寻址波形存储器,波形存储器输出的幅度序列相当是以fc为采样频率,对频率为fc?K/2N的正弦波采样的结果,因此波形存储器输出幅度序列的量化误差?a(m)为:

?2?n?(?1)n?12??a(m)?q?sin?sin(NKm)? 式(2-46)

n?2n?1?q??由于S(m)?sin(2?mK/2N)是一个周期为mk的周期序列,因此?a(m)也是周期为mk的周期序列。

采用前面类似的分析方法,带幅度量化误差的波形存储器输出序列Sa(m)经过D/A转换器之后,其傅立叶级数Fn为:

1n?jmkFn?sinc()eXa(n) 式(2-47)

mkmkn? 其中Xa(n)为Sa(n)的离散傅立叶变换,Sa(n)?S(n)??a(n)。 第n根谱线的频率值fn为:

fn?n?nfcn??GCD(2N,K)?fo 式(2-48) 2?mkK 对于式(2-48),若GCD(2N,K)?K,则fn?nfo,那么由量化误差带来的杂散谱线只集中在0~fc/2频带内有限的几根谱线上。若GCD(2N,K)?K,则杂散谱线会散布在0~fc/2频带内比较宽的范围,且是离散谱。所以频率字K的取值对杂散的分布有相当大的影响。当频率字K和2N互质,即GCD(2N,K)?1时,杂散频率间隔最小,谱线数量最多,但由于杂散的总功率是一定的,所以此时杂散的幅度很小。反之,当K和2N的最大公约数最大时,即GCD(2N,K)?K时,谱线

24

基于FPGA的任意波形发生器的设计与实现

数量最小,杂散的总功率就分布在少量几根谱线上,所以杂散必然较大。

此外,我们还可以从功率的角度来衡量杂散的大小。下面给出杂散功率的计算方法。

通过前面的分析,波形存储器实际的输出序列St(n)为:

St(n)?S(n)??p(n)??a(n) 式(2-49)

其中 ? p (n ) 是由相位截断误差引起的幅度误差,?a(n)是幅度量化误差,那么由这两部分造成的总误差为:

?t(n)??p(n)??a(n)

?2?2?e(n)cos(nK)??a(n) 式(2-50) p2N2N由于 ? p (n ) 和?a(n)周期为mk?2N/GCD(2N,K),所以?t(n)的周期仍为mk,且?t(n)通过D/A转换器之后变成阶梯波,设为?t(t),显然其周期为T?mk?Tc,

?t(t)在一个周期内的波形可表示为:

?t(t)???t(n)??(nTc) 式(2-51)

n?0mk?1其中?(nTC)?u(t?nTc)?u?t?(n?1)Tc?,u(t)为单位阶跃函数。

?t(t)的平均功率Pt为:

1T2Pt???t(t)dt

T01mk?1??Tn?01?mk??(n?1)TcnTc?t2(n)dt

?mk?1n?0??2t(n) 式(2-52)

通常在一个周期内,相位量化误差 e p ( n ) 可以近似看作是位于[0,2B]内独立分布的平稳随机序列,幅度量化误差?a(n)也可近似看做是位于[?q/2,q/2]内独立分布的平稳随机序列, e p (n ) 和?a(n)均服从均匀分布,且二者不相关,那么可以在统计意义上求出Pt,对式(2-51)求均值,可得:

1E[Pt]?mkmk?11E[?(n)]??mkn?02pmk?1n?0?E[?2a(n)]

?E[Pp]?E[Pa] 式(2-53)

其中 E [ P p ]和E[Pa]分别是由相位截断误差引起的幅度误差平均功率和幅度量化误差平均功率的统计值。