尹其畅 任意波形发生器_第1页
尹其畅 任意波形发生器_第2页
尹其畅 任意波形发生器_第3页
尹其畅 任意波形发生器_第4页
尹其畅 任意波形发生器_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要任意波形发生器是不断发展的数字信号处理技术和大规模集成电路工艺蕴育出来的一种新型测量仪器,能够满足人们对各种复杂信号或特殊信号的需求,代表了信号源的发展方向。可编程门阵列(FPGA)具有高集成度、高速度、可重构等特性。使用FPGA来开发数字电路,可以大大缩短设计时间,减小印制电路板的面积,提高系统的可靠性和灵活性。本课题将DDS、USB接口和虚拟仪器技术有机地结合在一起,以FPGA为硬件基础,通过系统硬件电路设计、逻辑设计和软件设计,实现了一款基于FPGA的低成本、便携式、可扩展的即插即用任意波形发生器。本文系统的分析了DDS技术的基本组成、工作原理及其输出信号的频谱特性,给出了改善合成信号频谱纯度的方法,为任意波形发生器的设计与实现提供了理论指导。本课题从总体上规划了任意波形发生器的硬件结构,结合DDS输出信号的频谱特性实现了波形的调幅、调频及多种数字调制。关键词:直接频率合成可编程门阵列通用串行总线目录第一章任意波形发生器的理论分析 71.1频率合成技术及性能指标 71.2DDS原理分析 101.1.1DDS基本结构 101.2.2DDS原理 121.3DDS输出特性 17第二章任意波形发生器的硬件电路设计 272.1系统设计方案 272.2系统总体结构 272.3功能模块设计 282.3.1FPGA电路 282.3.2D/A转换电路 312.3.3滤波器的设计 332.3.4放大衰减及直流偏置电路 372.3.5外部接口电路 402.3.6电源电路 43第三章FPGA逻辑设计 453.1任意波形发生器的FPGA实现 473.1.1地址译码和控制数据寄存模块 483.1.2移位寄存器控制逻辑 493.1.3数字电位器控制逻辑 503.1.4相位累加器的设计 513.1.5波形存储器的设计 523.2任意波形调制器的研究 543.2.1幅度调制 553.2.2频率调制 563.2.3数字调制 57第四章任意波形发生器的软件设计 594.1系统软件结构 594.2固件程序设计 594.2.1功能分析 604.2.2固件程序结构 604.2.3固件程序开发 614.3USB设备驱动程序 624.3.1驱动程序的实现 624.3.2USB设备的访问 634.4用户应用程序 634.4.1任意波形发生器软件界面 644.4.2波形数据的产生4.4.3 参数提取和数据发送结束语致谢 77参考文献 79第一章任意波形发生器的理论分析1.1频率合成技术及性能指标所谓频率合成技术是指以一个或者多个高精确度和高稳定度的频率参考信号源为基准,在某一频段内,综合产生多个工作频率点的技术。频率合成技术是产生频率源的一种现代化手段,在通信、雷达、导航、广播电视、电子侦察、电子干扰与反干扰及现代仪器仪表中有着广泛的应用。依据频率合成原理制成的频率源称为频率合成器。对频率合成器的基本要求是既要合成所需频率,又要保证信号的纯净。综合来看,衡量频率合成器的主要性能指标为:(1)输出频率范围输出频率范围是指频率合成器输出最低频率和输出最高频率之间的变化范围。越大,频率合成器的输出频率范围越宽,有时候也用相对带宽来衡量其输出频率范围:式(2-1)(2)频率稳定度频率稳定度指在在规定的时间间隔内,频率合成器的实际输出频率与频率标定值偏差的数值,可分为长期、短期和瞬时稳定度。(3)频率分辨率频率合成器的输出频谱通常是不连续的。频率分辨率指两个输出频率之间的最小间隔。(4)频率切换时间频率切换时间指输出频率由一个频率切换到另一个频率并达到稳定工作所需的时间。该指标与频率合成所采用的技术紧密关联。(5)频谱纯度频率合成技术中常常提到的一个指标就是频谱纯度,频谱纯度以杂散分量和相位噪声来衡量。杂散又称寄生信号,分为谐波分量和非谐波分量,主要由频率合成过程中的非线性失真产生,也有频率合成器内外干扰的影响,还与频率合成方式有关;相位噪声是是瞬间频率稳定度的频域表示,在频谱上表现为主谱两边连续噪声边带。频谱纯度是衡量频率合成器质量的一个重要指标。(6)调制性能调制性能是指频率合成器的输出是否具有调幅、调频、调相、幅移键控、频移键控、相移键控、扫频、猝发等功能。频率合成理论形成于20世纪30年代,经过几十年的发展,经历了三代技术变革。第一代:直接频率合成技术。直接频率合成是一种早期的频率合成技术,它利用一个或者多个不同的晶体振荡器作为基准频率源,经过倍频、分频、混频及模拟开关等途径直接组合出多个离散频率的输出信号。图1.1直接频率合成原理框图图1.1是直接频率合成的一种示例。在这种频率合成技术中,由控制信号选择不同输入信号进行混频,在频率合成器的输出端可以得到任意一个输入频率的频率值,或者任意两个或两个以上频率的和频或差频。这种方法得到的信号长期和短期稳定度高,频率切换速度快,但是大量混频器和滤波器的使用使大规模集成不可能,因而体积大、功耗大、调试难度大,并且杂散抑制不易做好。目前仍有些雷达信号的产生采用此方法。第二代:锁相频率合成技术。锁相频率合成也称间接频率合成,是20世纪50年代出现的频率合成技术。它是利用一个或者几个参考频率源,通过谐波发生器混频或分频,产生大量的谐波或组合频率,然后用锁相环把压控振荡器(VotageControlledOscillator,VCO)的输出频率锁定在某一谐波或者组合频率上,由VCO间接产生所需频率输出信号。图1.2锁相环频率合成原理框图图1.2是锁相环频率合成框图,它的工作原理为:参考频率提供基准频率VCO输出频率经分频器分频后为,此信号与输入参考信号在鉴相器中进行相位比较,鉴相器输出两个信号的相位误差信号,再经过环路滤波器送到VCO,调整VCO的输出频率使得,环路进入锁定状态。若想改变输出频率,可以通过输入参考频率或者改变分频器的分频比来实现。如果固定参考频率不变,则VCO的输出频率是随变化的一组不连续的频率,其值是的整数倍。的值就是频率合成器的输出固定频率分辨率。由此可见,锁相环频率合成器实际上是一个反馈系数可变的误差反馈控制系统。这种频率合成方法的优点是频率稳定度高,杂散抑制好,频谱纯度高,电路简单可靠,调试简便。锁相频率合成的这些优点使其具有广泛的用途,其中一个重要的应用方向是用高稳定的参考频率振荡器作为参考时钟使用环路锁定,以提供一系列高纯,高稳定度的频率源。但是锁相频率合成存在一个问题:在改变锁相频率合成器的输出频率时,由改变导致失锁到频率重新锁定需要一个转换时间,而经过前面的分析可知,为了提高其频率合成的分辨率,需要减小参考频率,而这与频率转换时间是相矛盾的。根据工程中的经验公式:式(2-2)由上式可以看出,频率转换时间与参考频率成反比。提高频率分辨率要以增加频率切换时间为代价。目前解决这一问题的办法是采用小数分频合成方法。但总的来看,锁相频率合成引入了闭环系统,其频率切换速度比直接合成技术慢。在频率转换速度要求不高,但对相位噪声、杂散要求高的场合,锁相频率合成技术仍有着特殊的优势。第三代:直接数字频率合成(DDS)技术。DDS技术的出现是频率合成技术的一次重大变革,它突破了前两代频率合成技术的原理,从“相位”的概念出发进行频率合成。DDS的原始结构可以表示为图1.3的形式:图1.3DDS原始结构图1.3所示是DDS的最初结构,这是一种基于数字存储器的波形产生系统,又被称做数字波形存储直读法或者直接数字波形合成(DirectDigitalWaveformSynthesis,DDWS)。这种结构利用可程控的时钟信号作为地址计数器的计数时钟,地址计数器的输出作为波形存储器的扫描地址,波形存储器输出相应地址的数字幅度序列,再经过数模转换成模拟阶梯波形,最后通过低通滤波器平滑滤波得到最后的输出波形(对DDS结构详细说明请参照本章第2节)。假定地址计数器的时钟频率为,波形存储器内存有波形一周期内的个采样值,那么合成的波形频率为:式(2-3)可见,采用图1.3结构进行频率合成,输出信号的的频率必须通过更改参考时钟频率或者修改波形存储中的数据点个数来实现。通过进一步的研究,人们提出了一种更为灵活的DDS结构,图2.4所示是基于相位累加器的DDS改进模型。图2.4DDS改进结构为了区分它跟DDWS的不同,我们将这种结构称为直接数字频率合成(DirectDigitalFrequencySynthesis,DDFS)。这种结构用相位累加器取代了原来的地址计数器,使得输出频率的控制变得更加简便,只需要通过修改频率控制字就能实现。随着对DDS技术研究和工程应用的不断深入,DDFS已经逐渐成为DDS的主流结构,以至于人们习惯于用DDS来特指DDFS。DDS具有很高的频率分辨率、初始相位可控及频率切换时间快等突出优点,但同时存在比较严重的杂散。通过对DDS杂散形成机理及特点的深入研究,人们提出了一系列改进措施,大大提高了其输出信号的杂散指标。DDS另外一大优势在于它能方便的产生任意波形,在具体应用中,只需要修改波形存储器内的波形数据即可。在综合考虑DDS技术的这些优势后,本设计决定采用DDS来实现任意波形发生器,同时引入改进措施来降低DDS的杂散指标。1.2DDS原理分析1.2.1DDS基本结构DDS与大多数的数字信号处理技术一样,它的基础仍然是奈圭斯特采样定理。奈圭斯特采样定理是任何模拟信号进行数字化处理的基础,它描述的是一个带限的模拟信号经抽样变成离散值后可不可以由这些离散值恢复原始模拟信号的问题。奈圭斯特采样定理告诉我们,当抽样频率大于或者等于模拟信号最高频率的两倍时,可以由抽样得到的离散信号无失真地恢复出原始模拟信号。只不过在DDS技术中,这个过程被颠倒过来了。DDS不是对模拟信号进行抽样,而是一个假定抽样过程已经发生且抽样值已经量化完成,如何通过某种方法把已经量化的数值重建原始信号的问题。DDS电路一般由参考时钟、相位累加器、波形存储器、D/A转换器(DAC)和低通滤波器(LPF)组成。其结构框图如图2.5所示。图2.5DDS基本结构框图其中,为参考时钟频率,为频率控制字,为相位累加器位数,为波形存储器位数,为波形存储器的数据位字长和D/A转换器位数。DDS系统中的参考时钟通常由一个高稳定度的晶体振荡器来产生,用来作为整个系统各个组成部分的同步时钟。频率控制字(FrequencyControlWord,FCW)实际上是二进制编码的相位增量值,它作为相位累加器的输入累加值。相位累加器由加法器和寄存器级联构成,它将寄存器的输出反馈到加法器的输入端实现累加的功能。在每一个时钟脉冲,相位累加器把频率字累加一次,累加器的输出相应增加一个步长的相位增量,由此可以看出,相位累加器的输出数据实质上是以为步长的线性递增序列(在相位累加器产生溢出以前),它反映了合成信号的相位信息。相位累加器的输出与波形存储器的地址线相连,相当于对波形存储器进行查表,这样就可以把存储在波形存储器中的信号抽样值(二进制编码值)查出。在系统时钟脉冲的作用下,相位累加器不停的累加,即不停的查表。波形存储器的输出数据送到D/A转换器,D/A转换器将数字量形式的波形幅度值转换成所要求合成频率的模拟量形式信号,从而将波形重新合成出来。若波形存储器中存放的是正弦波幅度量化数据,那么D/A转换器的输出是近似正弦波的阶梯波,还需要后级的低通平滑滤波器进一步抑制不必要的杂波就可以得到频谱比较纯净的正弦波信号。图2.6所示为DDS各个部分的输出信号。由于受到字长的限制,相位累加器累加到一定值后,就会产生一次累加溢出,这样波形存储器的地址就会循环一次,输出波形循环一周。相位累加器的溢出频率即为合成信号的频率。可见,频率控制字K越大,相位累加器产生溢出的速度越快,输出频率也就越高。故改变频率字(即相位增量),就可以改变相位累加器的溢出时间,在参考频率不变的条件下就可以改变输出信号的频率。图2.6DDS各部分输出波形1.2.2DDS原理根据傅立叶变换定理,任何满足Dirichlet条件的周期信号都可以分解为一系列正弦或者余弦信号之和。为了不失一般性,下面以正弦信号的产生为例来说明DDS的基本原理。我们知道,正、余弦信号用可以用复数形式表示为:式(2-4)式(2-5)图2.7信号的复数表示形式图2.7描述了矢量绕原点沿正方向(逆时针)旋转时,其模值与轴夹角(相位角)及在轴上的投影三者之间的关系。当连续地绕原点旋转,将取之间的任意值,将以为模取之间的任意值。如果将看作我们欲重构正弦信号的幅度值,则相位角和的关系为:。现将相位数字化(采样、量化),将量化成等份,则相位量化的最小间隔为,这样造成的结果是重构信号的幅度值也相应离散化:式(2-6)由式(2-6)可以看出,只能取与相位对应的幅度值。图2.8相位数字化示图如图2.8所示,设此时不是绕原点连续旋转,而是在系统时钟的控制下以相位增量进行阶跃式旋转(图2.8中),很容易可以看出来,在相位周期变化的同时,输出信号的幅度也在周期重复着,因此,重构信号的周期在幅度中也就体现出来了。为了进一步探讨相位增量对输出信号频率的影响,我们分别以相位增量为和重构信号幅度,分别如图2.9和1.10所示。在此,我们假设相位累加是在相同的系统时钟的进行的,即对于不同的相位增量,是固定不变的,这是理解相位增量和重构信号频率关系的基础。图2.9相位增量为时相位幅度的映射关系图1.10相位增量为时相位幅度的映射关系对比图2.9和图1.10,我们很容易发现,当相位增量减少为原来的二分之一时,输出信号的采样值密集度就成了原来的两倍,那么旋转一周的时间自然也增大为原来的两倍,即。周期与频率成倒数关系,由此可得两种情况下输出重构信号的频率关系:,如图1.11所示。图1.11相位增量不同对重构信号频率的影响(仿真)分析到这里,我们可以得出结论,在DDS系统中,在参考时钟固定不变的前提下,通过改变相位增量的值,就可以得到不同频率的重构信号。那么相位增量跟我们的频率控制字之间有什么联系呢,频率控制字又是通过怎样的方式来控制输出信号的频率的呢?我们假设有一个频率为的正弦信号:式(2-7)现以采样频率对该信号进行抽样,得到离散序列为:式(2-8)其中为采样周期。习惯上将式(2-8)写成式(2-9)的形式:式(2-9)式(2-9)对应的相位序列为:式(2-10)该序列的显著特性是线性,即相邻样值之间的相位增量是一常数,且仅与信号频率有关,当式(2-10)中的取1时得到量化相位增量为:式(2-11)倘若我们将相位均匀量化等份,人为构造一个相位值:式(2-12)并且使得,那么就可以得到如下关系:式(2-13)根据以上原理,如果我们用变量构造一个量化序列:式(2-14)然后完成到另一个序列的映射,即由构造序列:式(2-15)将式(2-13)代入式(2-15)可得:式(2-16)对比式(2-9)跟式(2-16),我们不难发现,其实就是信号经过采样频率抽样后的离散时间序列。在满足奈圭斯特采样定律的的条件下,即:式(2-17)可以经过D/A转换和低通平滑滤波唯一地恢复出。可见,通过上述变换,变量将唯一地确定一个单频模拟正弦信号:式(2-18)该信号的频率为:式(2-19)式(2-19)就是DDS的基本方程,是利用DDS进行频率合成的立足点。在实际的DDS应用中,一般取,为正整数,于是DDS的基本方程可写成:式(2-20)由式(2-20)可以看出,当时,DDS系统输出信号频率最小,而这个最小频率同时也是DDS系统的频率分辨率:式(2-21)对于DDS系统从波形存储器中读数据的过程,我们可以将其看作是对波形存储器中的波形数据再次采样的过程,也就是说,DDS系统查表的过程就是从波形存储器中二次采样过程,一个周期内查表的点数即为采样的点数。DDS系统要恢复出原始波形,其在一个周期内至少要取样两点,这是受我们一直都在强调的奈圭斯特采样定理的限制。那么DDS系统在理论上能输出的最大频率是:式(2-22)经过以上的分析,我们得出以下几点结论:(1)DDS系统的输出频率只与频率控制字、系统时钟频率、相位累加器位数有关。在系统时钟频率和相位累加器位数固定时,通过改变频率控制字的值,就可以方便地改变输出信号的频率。(2)DDS系统的频率分辨率只与系统的系统时钟频率和相位累加器位数有关。想要提高系统的分辨率,可以增加相位累加器位数或者是降低系统时钟频率。(3)DDS理论上最大输出频率不会超过系统时钟频率的二分之一,但在实际应用中,由于DDS系统中的低通滤波器非理想特性,由通带到阻带之间存在着一个过渡带,工程中DDS最高输出频率只取到左右。1.3DDS输出特性作为一种全数字器件,杂散多是其固有特性,这一长期以来限制DDS应用的主要因素。为了获得低杂散输出信号,对DDS输出特性的分析显得尤为必要。要研究DDS的输出特性,从研究其频谱特性着手是一种比较好的方法。我们首先来分析一下理想情况下DDS输出的频谱特性。第二章任意波形发生器的硬件电路设计2.1系统设计方案采用DDS技术来实现波形合成不仅简单可靠、控制方便,而且可以实现可编程和全数字化。目前市场上有很多性能优良的专用DDS芯片,主要有Qualcomm、AD、Sciteg和Stanford等公司单片电路,具有代表性的如AD公司的AD9850、AD9852、AD9858等,这些DDS芯片不仅有比较高的工作频率,内部集了高精度的D/A转换器,并且还具备一定的调制功能。但DDS专用芯片中的波形存储器多采用只读存储器(ReadOnlyMemory,ROM),在芯片出产以前已经将波形数据固化到ROM中,无法按用户需求更改波形数据以产生任意波形。相比之下,采用现场可编程逻辑阵列(FieldProgrammableGateArray,FPGA)设计DDS电路比专用DDS芯片更具灵活性。因为只要通过改变FPGA内部波形存储器中的波形数据,就可以实现任意波形输出,这使得用FPGA来实现DDS具有相当大的灵活性。相比之下,FPGA所能实现的功能完全取决于设计需求,可以简单也可以复杂,另外,FPGA芯片还支持在系统升级,虽然在精度和速度上略有不足,但是基本上能满足绝大数系统的要求,另外,将DDS设计嵌入到FPGA内部所构成的系统中,其系统成本并不会增加多少,而专用DDS芯片的价格一般也比FPGA高。因此,采用FPGA来设计DDS系统具有较高的性价比。FPGA的应用不仅使得数字电路系统的设计非常方便,并且还大大缩减了系统的研制周期,缩小了数字电路系统的整体体积和所使用芯片的品种,而且,目前一些主流FPGA的时钟频率已可达数百MHz,加上它的灵活性、可编程以及强大的EDA软件的支持,非常适合用于实现任意波形发生器的数字电路部分。本方案利用FPGA可按需求灵活编程的特性,参考DDS专用芯片(AD9852)的内部结构自行设计DDS。2.2系统总体结构硬件电路设计中,所遵循的原则是:尽量使电路简单和模块化,并充分利用软件智能化。因为硬件多了,不但增加体积和成本,而且也使系统的可靠性和性价比下降。因此,本次任意波形发生器设计遵循这一原则:在实现硬件电路功能的前提下,尽量简化硬件电路设计,并将设计清晰地分成多个模块。任意波形发生器的总体设计框图如图2.1所示:图2.1任意波形发生器总体框图任意波形发生器模块硬件电路由下面个五部分组成:(1)USB接口电路 完成与PC机之间的通信(2)数字波形合成部分 波形合成,产生各种初始波形(3)控制部分 控制各个部分有序工作(4)模拟输出通道 波形处理,将DDS产生的初始波形转换成用户需要的模拟波形(5)外调制输入通道 实现外部信号调制功能其中数字波形合成部分是整个电路的核心部分,所有波形的生成都与它有关;控制部分完成输出波形的频率、相位及调制方式的控制,并控制模拟输出通道和外调制输入通道中的相关器件工作方式。这两个部分都是通过FPGA内部逻辑编程来实现的。模拟输出通道是设计中的难点,它位于波形发生的末端,包括D/A转换、低通滤波、幅度控制、电平调节、输出驱动,它的设计直接影响输出信号的质量。从任意波形发生器的结构框图看出,波形发生器工作时,根据软件界面参数设置,先在计算机中生成波形数据,然后通过USB总线将数据写入波形发生器的波形存储器中,再将相应的频率值、相移值写入FPGA的控制器中,并将调制方式、低通滤波器、放大衰减、电平调节命令也写到FPGA中,然后由FPGA中的DDS部分来合成信号。2.3功能模块设计2.3.1FPGA电路本设计选用的FPGA是Altera公司CycloneII系列FPGA芯片EP2C5Q208C8。CycloneII系列器件延续了第一代Cyclone系列器件的成功,提供针对低成本用的用户定制FPGA特性,支持常见的各种外部存储器接口和I/O协议,并且含有丰富的存储器和嵌入式乘法器,这些内嵌的存储器使我们在设计硬件电路时省去了外部存储器,节省了资源,而其硬件乘法器资源则非常适合用来实现高速DDS调制器。另外,CycloneII系列器件使用极低的1.2V内核电压,大大降低了芯片的功耗。在本文的设计中,FPGA对内主要实现DDS的功能,对外主要为ADC和DAC提供时钟,以及对外围器件提供控制信号和数据总线接口。(1)时钟电路由于ADC和DAC的工作时钟都是由FPGA来供给,而ADC和DAC的时钟频率是不一样的,因此应该先由外部晶振给FPGA提供一个时钟信号,由FPGA分频或者倍频再向外部提供工作时钟。具体电路如图2.2所示。图2.2FPGA时钟电路EP2C5内部共有2个锁相环(PLL),作为锁相环的输入引脚共有8个,分别是CLK0~CLK7,其中CLK0~CLK3共享PLL1,CLK4~CLK7共享PLL2,这些引脚既可以作为单端输入,也可以作为差分输入。本设计采用的是单端时钟输入,不用的时钟引脚全部接地以减少干扰。另外DDS合成信号的质量跟时钟的质量有关,因此使用了75MHz高稳定度的有源晶振来为FPGA提供初始时钟,图2.2中电阻R201起串联阻抗匹配的作用,以减少时钟的反射干扰。(2)下载配置电路CycloneII器件使用SRAM单元来存储配置信息,而SRAM作为易失性存储器,每次掉电其内部信息就会丢失,因此,CycloneII器件每次上电都必须下载配置数据。CycloneII器件支持多种配置方式,包括主动配置(AS)、被动配置(PS)和JTAG配置。考虑到JTAG配置每次都必须连接到计算机,通过计算机来下载配置信息,因此设计了两种配置电路:JTAG配置和AS配置。JTAG配置口在调试的时候使用,在调试完成后,可以将配置文件写入AS配置芯片,由AS方式来配置FPGA,这样就不用在每次使用任意波形发生器的时候都通过人手来下载配置信息。本设计所使用的配置芯片是EPCS1,这是Altera公司推出的为其FPGA配套使用的一款串行配置芯片。由于采用了非易失的闪存(flashmemory)结构,因此掉电之后数据得以保存。EPCS1具有1Mbits数据容量,支持压缩存储,而EP2C5的配置文件最大约1.2Mbits,压缩之后完全可以存入EPCS1,因此选用EPCS1完全能满足要求。EP2C5的下载配置电路如图2.3所示。图2.3EP2C5下载配置电路图2.3中,有两个地方需要注意,第一:nSTATUS、CONF_DONE、nCONFIG三个引脚必须用10KΩ电阻上拉到VCC(本设计中VCC取2.3V),否则将出现无法对FPGA进行配置的情况。第二:MSEL0和MSEL1是配置方式选择引脚,其选择方式如表2.1所示。MSEL0和MSEL1即使不用也不能悬空。由于EPCS1只支持低速AS配置,所以设计中将MSEL0和MSEL1接地。另外,JTAG配置具有最高优先权,在使用JTAG方式进行配置的时候,其他方式都将被屏蔽。表2.1CycloneII配置方式选择MSEL1MSEL0配置方式00低速AS(20MHz)01PS10高速AS(40MHz)--JTAG2.3.2D/A转换电路在第二章的分析中曾经提到在高频电路中,D/A转换的瞬间毛刺、非线性和数字噪声已经成了影响DDS性能的主要因素。因此在选择D/A转换芯片时除了字长和转换速度外,还应该将D/A的非线性和噪声特性也纳入我们的考虑范围之内。在综合各方面因素之后我们选择了AD公司的AD9740,它是AD公司TxDAC系列的第三代高性能产品,其基本特性[13]如下:(1)10位精度;(2)支持单端CMOS时钟输入,最高转换速率高达210MSPS;(3)采用了段电流源结构和特有的开关技术,具有优异的积分非线性、差分非线性性能和无杂散动态范围;(4)数据输入支持二进制补码和直接二进制码;(5)采用差分输出方式,有效抑制各种共模成分,如噪声、失真等,输出满量程电流在2mA到20mA可调;(6)内部集成了带有温度补偿的1.2V带隙参考电压;(7)低功耗:2.3V供电时消耗功率仅135mW,进入掉电模式后功耗进一步降低到15mW;(8)有多种封装可供选择。其内部功能框图如图3.4所示:图3.4AD9740内部功能框图AD9740内部集成了输入数据锁存器,在时钟的上升沿,数据会被打入锁存器,相应的模拟信号就会更新。管脚FSADJ外接的电阻是差分输出电流满量程调节电阻,其跟输出电流之间存在如下关系:式(3-1)式(3-2)其中是十进制表示的输入数据,为满量程输出电流,其值为。在两个输出端都接有负载电阻的情况下,有:式(3-3)式(3-4)那么两个输出端的差分电压为:式(3-5)AD9740的电路图如图3.5所示:图3.5AD9740电路连接图AD9740采用了模拟、数字、时钟部分单独供电的方式,以减小各部分的干扰。DB0~DB9为数据输入端,其中DB9为最高位,DB0为最低位,他们通过串联一个22Ω电阻连接到FPGA;REFIO为参考电压输入端,由于设计使用内部参考源,因此外接一个0.1uF的电容到地减少电源噪声;FSADJ为满刻度输出电流调节引脚,R81取2KΩ,那么根据,满刻度输出电流约19.2mA;CLOCK+和CLOCK-为时钟输入引脚,它们既可以作为差分时钟输入引脚,也可以作为单端时钟输入引脚,当作为单端时钟输入引脚时,CLOCK+接输入时钟,CLOCK-接地;CMODE为时钟工作模式选择引脚,当CMODE接高电平时为差分时钟输入,接地时为单端时钟输入,考虑到DAC时钟的质量与DDS输出信号质量密切相关,因此本设计采用差分输入时钟(差分时钟可以由FPGA的差分管脚来提供),CMODE接高电平;MODE为输入数据模式选择,接高电平为二进制补码输入,接地为直接二进制输入,在这里增加了一个跳线J4来选择输入数据模式;SLEEP为休眠选择引脚,SLEEP为高则进入低功耗模式,AD9740停止输出,为低则进入工作模式,这个引脚接到了FPGA,由FPGA来控制AD9740什么时候工作,这样可以有效降低波形发生器的功耗;IOUTA为DAC同相电流输出端,数据全“1”时输出满刻度电流,IOUTB为反相电流输出端,数据全“0”时输出满刻度电流。AD9740既可以单端输出,也可以设置成差分耦合方式输出,但差分耦合方式输出能够抑制共模干扰,具有更好的动态特性。差分耦合方式可以采用射频变压器或者运算放大器。采用变压器耦合不仅能够在更宽的频率范围提供良好的共模抑制比,还能够实现阻抗变换。但从体积上考虑,采用运算放大器耦合更适合本设计。图3.6是使用了运算放大器实现耦合的电路。图3.6运算放大器实现差分耦合电路采用如图3.6所示电路,根据式(3-5),a,b两点间的最大输出电压约±460mV,经过AD8055的放大(放大倍数约7.3dB),得到输出端C点的电压在±1.07V左右。这是我们后面设计放大电路放大倍数的依据。2.3.3滤波器的设计以离散数字序列经数模转换为模拟信号为基础实现波形发生器有其固有的优点,但同时也有频谱分量复杂,杂波多的缺点。在波形发生器中,滤波器起着保持有效分量、抑制杂波的作用。滤波器的设计主要从两个方面加以考虑,一是低通滤波器本身的传输特性,二是DDS系统输出信号的频谱结构。低通滤波器是用它的传递函数来表征的,归一化的理想低通滤波器应满足:式(3-6)实际上,理想的滤波器特性是不可能获得的,只能用某种方式按某种规律去逼近。采用不同的去曲线逼近理想滤波器,就获得了不同类型的滤波器。常见的滤波器有以下几种:巴特沃斯滤波器、契比雪夫滤波器、椭圆滤波器、贝塞尔滤波器和线性相位滤波器。图3.7描绘了这五种低通滤波器(同阶)的幅频特性。图3.7同阶低通滤波器幅频特性比较滤波器的传输特性可以用工作衰减、相移、群延迟及插入衰减等参数衡量,其中衰减特性和群延迟是设计滤波器时考虑的重点。图3.7所示五种滤波器有着各自的特点:(1)巴特沃斯滤波器也称为最大平滑滤波器,它的传递函数只有实数极点和无穷零点,因而其幅频特性在通带和阻带内都是单调的,但也造成了通带到阻带的过渡缓慢;(2)契比雪夫滤波器的传递函数有复数极点和无穷零点,因而其幅频特性表现为有波动,其中契比雪夫I型为通带波动、阻带单调,契比雪夫II型为通带单调、阻带波动。契比雪夫滤波器以引入波纹为代价,使其过渡特性比巴特沃斯滤波器陡峭;(3)椭圆滤波器也称为联立契比雪夫滤波器,其传递函数有复数极点和有限零点(在截止频率附近),因而其幅频特性在通带和阻带内都是有波动的,但它的过渡特性最陡峭;(4)贝塞尔滤波器的传递函数也只有实数极点和无穷零点,其幅频特性在通带和阻带内都是单调的,且衰减特性非常缓慢,但它采用了贝塞尔逼近来实现滤波器设计,因此在通带内具有最平坦延迟;(5)线性相位滤波器与贝塞尔滤波器相似,在其通带内具有线性相位的响应,但在整个通带内,滤波器的群延迟特性不是单调的,而是引入了波纹,从而在整个通带内达到了群延迟的均方误差最小。滤波器的选型跟DDS输出信号的频谱结构密切相关:对于正弦波,其频披分量单一,选择滤波器时主要考虑在通带内有一定的平坦度,在阻带内要保障足够的衰减来抑制衰减,并且希望该滤波器具有快速衰减特性。考虑到这些需求,我们设计了9阶椭圆滤波器。在第二章的时候我们曾研究过,DDS的输出频谱是被sinc函数加权过的,当DDS输出频率接近其最大输出频率时(即DDS参考频率的40%),波形幅度会存在一定的衰减,因此,我们在滤波器的入口加了一个谐振回路,对因sinc函数加权造成的幅度衰减作一个补偿。根据设计指标,正弦波信号最高输出频率是50MHz,因此所设计椭圆低通滤波器-3dB截止频率设置为50MHz,滤波器的入口的谐振回路谐振点设置在了49.5MHz左右,其电路图及幅频特性曲线分别如图3.8、图3.9所示。图3.89阶椭圆低通滤波器图3.99阶椭圆低通滤波器幅频特性曲线(仿真)从仿真结果可以看出来,所设计的9阶椭圆低通滤波器具有较平坦的通带和陡峭的过渡带,通带内纹波小于1dB,在58MHz处衰减达到了81dB,在整个阻带内,衰减大于60dB,可以很好的抑制谐波。对于任意波,由于其含有丰富的谐波分量,如果设计过渡带过窄的滤波器就会将一些有用的谐波分量滤除掉,这样会造成波形失真。当然过渡带过宽必然会带来镜像干扰,影响输出信号的频谱纯度。但是对与任意波形来说频谱纯度不是主要指标,加之输出频率较低,一般来说镜像分量不会产生很大影响。出于这方面考虑,对于任意波,我们设计了7阶贝塞尔低通滤波器,该滤波器的截止频率设置在任意波最高输出频率的10次谐波处,即50MHz处。具体电路如图2.10所示。它的幅频特性如图2.11所示。图2.107阶贝塞尔低通滤波器图2.117阶贝塞尔低通滤波器幅频特性曲线(仿真)从仿真结果来看,这个滤波器的过渡特性非常缓慢,75MHz的时候衰减才18.5dB左右,100MHz才衰减了31dB。但是由于贝塞尔低通滤波器具有很好的群延迟特性,能够无失真的传输诸如方波、三角波等频谱很宽的信号。由于该波形发生器时只设计了单通道输出,任意时刻只使用其中一个滤波器滤波,即两个滤波器是共享后端模拟通路的。选用哪个滤波器滤波由软件来控制,通过开关的选通来实现。我们选用的开关是固态继电器S1A050000,这种固态继电器控制端口兼容TTL电平。图2.12给出了S1A050000的内部结构。图2.12固态继电器S1A050000内部结构可以看出S1A050000其实是一种小型直流电磁继电器,1、7端为信号端,3、5端为控制端,只要在3、5端加上一定的驱动电流,开关闭合,1、7端导通,否则1、7端断开。由于S1A050000控制端至少需要3.75V的驱动电压,10mA的驱动电流,不能直接由FPGA来驱动,因此设计了一个继电器控制电路,如图2.13所示。(a)(b)图2.13继电器控制电路图2.13(a)中,用来控制继电器开断是是TI公司的TPIC6B596。TPIC6B596是专门用于驱动需要中电流或者高电压负载的单片8位移位寄存器。其中SRCK是串行移位寄存器时钟,SERIN是串行数据输入端,SEROUT是串行数据输出端;RCK是输出寄存器时钟,在RCK的上升沿,串行移位寄存器的内容被打入输出寄存器;SRCLR是寄存器低电平异步清零端;G是输出寄存器输出使能端,在G为低电平时输出寄存器的内容才能在输出端得到体现;DRAIN0~DRAIN7是8个漏极开路DMOS晶体管输出端,每个输出端能提供150mA灌电流能力。由于DRAIN0~DRAIN7是漏极开路输出,因此在使用时必须外接上拉电阻才能有高电平输出能力。当G端接地,与输出端对应的输出寄存器内容为1时,该输出端输出低电平,当输出寄存器内容为0时,该输出端输出高电平。通过改变TPIC6B596移位寄存器的内容,进而改变其输出寄存器的内容就能控制继电器的开断。图2.13(b)是继电器的典型接法,其中电容CK3是为了防止噪声引起开关的误动,二极管DK3是为在继电器关断时因为线圈感应效应而产生的瞬间尖峰电流提供一个泄放通路,以提高系统的可靠性。2.3.4放大衰减及直流偏置电路由于所设计的波形发生器输出信号的幅度范围要求在30mV~3V,而DAC的输出信号幅度约1V左右,另外,由于DAC后端的低通滤波器存在插入衰减,经过低通滤波器滤波后的信号幅度只有0.9V左右,因此必须经过经过放大和衰减电路才能达到波形发生器输出信号的幅度范围。此外,波形发生器还应该具有直流偏置能力,因此还要设计一个直流偏置电路。(1)放大电路我们设计的放大电路是用集成运算放大器来实现的。集成运放是模拟集成电路中应用最广泛的器件之一,其在信号的运算(如加、减、乘、除、微分、积分、指数、对数等)、信号的产生、有源滤波、波形变换、电源稳压、数模转换、模数转换等方面都有广泛的应用。表征集成运放的参数很多,如输入失调电压、输入失调电流、输入电阻、开环增益、带宽(有时用增益带宽积表示)、输出电阻、转换速率SR(也称压摆率)等。在模拟通道设计时,选择运算放大器主要考虑集成运放芯片的电源电压范围、带宽、输出电压范围、压摆率SR、功耗和谐波失真。其中压摆率SR是一个非常重要的参数,它是指运放在额定负载及输入大信号时,输出电压上升段或者下降段斜率所能达到的最大值。SR反映了运放的大信号瞬态特性。对于在运放带宽内的任意波形输入信号,如果其最大变化率小于运放的压摆率,那么运放就能无失真的输出相应的波形。以正弦波信号为例,要得到无失真的最大输出电压,对于正弦波的限制是:式(3-7)在本设计中,由于正弦波的输出频率是:0.1mHz~50MHz,输出信号最大幅度为3V。我们选用的运放是高速电流反馈运放AD8009。增益为10时小信号带宽为350MHz,大信号带宽为320MHz,另外具有5500V/us的压摆率,增益为10时建立为25ns,能采用+5V到±5V电源,在这里我们选用的是±5V电源。其电路如图2.14所示。图2.14放大电路这是一个同相放大电路,放大倍数为,通过调整可调电阻的电阻值,就可以改变放大器的放大倍数。(2)衰减电路所设计的衰减电路是通过电阻分压网络来实现的,如图2.15所示。图2.14衰减电路本文采用的是二级分压网络,整个衰减电路的衰减倍数为:式(3-8)通过调节和的阻值,就能实现不同的衰减倍数。同时,为了减少电阻分压网络之间以及分压网络对前后级电路的影响,中间插入了两个射极跟随器作为隔离。为了实现数字化,图2.13和图2.14中的可调电阻并不是使用的机械式可调电阻器,而是使用的模拟多路选择器来选择不同的电阻值。因为模拟多路选择器要作为信号的通路,所以选择时要考虑其带宽、传输时间和导通电阻。本设计选用的模拟多路选择器是ADG658,它的-3dB带宽为210MHz,传输时间为80ns,导通内阻为45Ω。(3)直流偏置电路直流偏置电路的设计如图2.15所示。图2.15直流偏置电路直流电压从U15的正向输入端加入,信号从U15的反相端加入,U15相当构成了一个减法器电路。直流电压的调节是通过数字电位器X9C103来实现的。X9C103是总阻值为10KΩ的数字电位器,其内部结构图如图2.16所示。按照图2.15的接法,VH端的电势约+0.7V,VL端的电势约-0.7V。通过改变滑动端VW的触点位置,就能改变U15正向输入端的直流电压(-0.7V~+0.7V),这个直流电压经过U15后放大两倍,在输出端就能得到-1.4V~+1.4V的直流电平。图2.16X9C103内部结构从图2.16来看,X9C103内部共有100个触点,触点位置的选择是通过U/D、INC端来控制的。U/D为触点滑动方向控制端,该端点的电平为高时,触点朝上(VH端)滑动,该端点的电平为低时,触点朝下(VL端)滑动;INC为触点动作控制端,每来一个负脉冲,触点位置朝滑动方向移动一次。触点位置每改变一次,波形发生器输出端直流电平改变约28mV。2.3.5外部接口电路(1)外调制接口电路外调制接口电路为波形发生器和外部信号提供一个接口,通过这个接口波形发生器可以实现外部信号调制功能。外调制接口电路的原理如图2.17所示。图2.17外调制接口电路原理图2.18中,由于衰减和放大电路的存在,可以使输入信号幅度在50mV~10V这个比较宽的动态范围内变化。考虑到调制信号的频率一般都在KHz范围,所以在设计时A/D采样芯片选择了相对低速的AD7470,其精度为10位,最高采样率为1.75MSPS,参考电平为2.5V,能达到的幅度分辨率为2.4mV。(2)USB接口电路任意波形发生器要产生任意波形,需要实时更新其波形存储器内的数据,为此,我们需要设计一个接口电路,通过此接口,可以实现波形发生器与计算机的通信,通过计算机下载波形数据和发送控制命令。USB总线具有热插拔、即插即用、传输速度快、接口体积小等特点,而且目前绝大多数的计算机配有USB接口,因此我们选择了USB接口方式。选用何种芯片来实现USB接口模块,一般是基于任务的需要,编程的难易度,性能价格比,可重复编程及提供的范例代码等几方面的因素来考虑。在综合权衡之后,选择了Cypress公司的EZ-USBFX2系列芯片CY7C68013,它实际上是内部集成了USB2.0协议的微处理器,它支持12Mbps的全速传输和480Mbps的高速传输。其内部结构如图2.18所示。图2.18EZ-USBFX2内部结构图EZ-USBFX2主要由USB2.0收发器、串行接口引擎(SIE)、增强型8051、8.5KB的RAM、4KB的FIFO存储器、I/O、数据总线、地址总线和通用可编程接口(GPIF)几部分组成。USB收发器负责提供USB2.0/1.1的物理接口到USB总线并管理数据的收发;串行接口引擎主要用于USB数据的串/并双向转换,并按照USB2.0协议来完成数据流的位填充/位反填充,以及循环冗余校验码的产生和检验,这个功能强大的USB内核可以自动完成USB协议的转换,大大简化了其固件代码的设计,使得开发者不需要深入了解USB的底层协议就可以顺利开发出所需要的USB外设;内部的增强型8051微处理器缩短了指令的执行时间,将一个指令周期缩短到4个时钟周期,并且它用内部的RAM存储数据和程序,使FX2具有了软配置的特征(所谓软配置,是指FX2未连接到PC机之前,其固件程序是存储在PC机上的,在它连接到PC机后,PC机将它的固件下载到其RAM中并执行)。这个特性给USB的外设开发者带来了许多方便,比如在开发过程中,当固件需要修改时,可以在PC机上修改好以后,下载到FX2中,从而可以省去烧写芯片的麻烦。FX2提供了三种接口方式:端口方式、从属FIFO方式和可编程GPIF方式:在端口方式下,FX2的I/O引脚可以作为其内部8051的通用I/O口;在从属FIFO方式下,外部控制器可以像对普通FIFO存储器一样对FX2的多重缓冲FIFO进行读写;可编程GPIF方式则更为灵活,可以通过软件编写读写控制波形来实现与外部接口的通信控制。本设计的USB接口电路如图2.19所示。图2.19USB接口电路这部分电路主要由USB接口芯片、时钟电路、复位电路和系统总线组成。设计中采用了软配置方式,因此在设计中省去了E2PROM(电可擦除只读存储器)。系统总线主要由数据总线和控制总线组成,这些总线与FPGA相连。PC机就是通过这些总线给任意波形发生器发送数据和控制命令的。2.3.6电源电路由于所设计任意波形发生器所需要供电电压种类比较多,有±5V,2.3V,2.5V,1.2V,因此需要专门的电源电路来提供电源的供给。在本系统中,±5V电源是由外部提供的,2.3V,2.5V,1.2V电源是由电源稳压芯片得到的。所使用的电源稳压芯片是LT1764A,这种电源稳压芯片具有宽输入电压范围(2.7V~20V)、低噪声(40),高输出电流(最高可达3A)、低压降(输出3A电流时只下降340mV)等特性,并且有多种型号可供选择,包括固定输出1.5V、1.8V、2.5V、2.3V,以及1.21V~20V可调电压输出。本系统所用的2.3V和2.5V电压是由LT1764A-2.3和LT1764A-2.5来提供的,其电路连接图如图2.20(a)所示。图2.20电源模块图2.20(b)所示是LT1764A输出电压可调电源稳压芯片,其输出电压与电阻R1、R2存在如下关系:式(3-9)在常温条件下,。取,,在输出端就能得到约1.2V电压。第三章FPGA逻辑设计3.1任意波形发生器的FPGA实现在第三章规划任意波形发生器总体框图时,曾经指出任意波形发生器的DDS部分、外部电路控制都是在FPGA内部实现的,下面对这些部分的逻辑设计给以叙述。3.1.1地址译码和控制数据寄存模块任意波形发生器要正常工作,必须对PC机下发的各种控制命令进行寄存。而这些控制数据寄存器都是共享数据总线的,因此,为了对不同的寄存器进行操作,还需要有译码电路。在设计USB与FPGA的接口时,采用了如下的方案:在PC机向下发波形数据时,将CY7C68013的接口配置成从属FIFO方式,在这种方式下,CY7C68013的PB口和PD口是组合成16位数据线使用的;而在PC机下发控制命令时,将CY7C68013的接口配置成端口方式,在这种方式下,CY7C68013的PA、PB、PD口都可作为独立的IO口使用,这时,我们将PB口用作数据总线,PD口低四位作为地址总线,而将PA的低两位作为控制总线(写寄存器时钟脉冲和寄存器复位脉冲)。在设计译码电路时,直接调用了QuartusII提供的LPM地址译码模块,使用了PB0~PB3四位地址线作为译码器的输入,共能得到即16位译码器输出。如图4.2所示。图4.2四位地址译码器CY7C68013的PB口作为数据总线使用时位数为8位,PC机在下发少于8位的控制数据时可以一次写入寄存器,而当控制数据大于8位时(例如频率控制字),则要分多次写入寄存器。下面以频率控制字寄存器为例说明这些控制数据寄存的设计。在设计中,使用了32位的相位累加器,这样对于一个频率控制字,PC机要分4次分别写入4个字节。基于这种要求,我们设计了频率控制字寄存器模块如图4.3所示。图4.3频率控制字寄存器Din[7..0]是数据输入端,与CY7C68013的PB端相连。clk是写入时钟端,rst为高电平异步复位端,en为使能端,Dout[31..0]是寄存器32位频率输出端,Ready为频率字下载完成标志信号输出端。该模块的工作过程是这样的,在en使能为高时,先由rst发一个高电平复位信号,然后在clk的上升沿逐次将数据线上的8bits数据移入寄存器,当4字节数据都写入寄存之后,ready输出一个高电平,标志频率字下载完毕,可以输出。图4.4是该模块的时序仿真。图4.4频率控制字寄存器模块时序仿真从时序仿真来看,Dout输出的数据中间存在一些不稳定态,但这并不影响频率字寄存器的功能,因为频率控制字是在其稳定的时刻(ready为高电平)输出的。3.1.2移位寄存器控制逻辑在第三章硬件电路设计中提到,DAC后端滤波器是通过继电器来选通的,而继电器的开断是由串行移位寄存器TPIC6B596来控制的,在设计中,并不是直接由PC机给TPIC6B596发送串行数据,而是先将控制继电器开断的并行数据下发给FPGA内部的数据寄存器,然后由移位寄存器控制逻辑将并行数据转换成串行数据输出到TPIC6B596。所设计的移位寄存器控制逻辑及时序仿真分别如图4.5和图4.6所示。图4.5移位寄存器控制逻辑图4.6移位寄存器控制逻辑时序仿真从图4.6可以看出,这部分的功能是产生8个移位时钟srck,将Din[7..0]拆分成8个串行数据在移位时钟的控制下从ser_in输出,在8个串行数据输出完毕后,在rck端输出一个正脉冲将TPIC6B596移位寄存器的数据送到其输出寄存器启动开关。3.1.3数字电位器控制逻辑设计中,波形发生器的输出信号的直流偏置电压是通过数字电位器X9C103来调节的(关于X9C103内部结构,请参考图2.17)。X9C103的控制逻辑及时序仿真如图4.7和图4.8所示。图4.7X9C103控制逻辑图4.8X9C103控制逻辑时序仿真图4.7中,dir是滑动端方向控制信号,inc是滑动端动作启动信号,inc每输出一个负脉冲,数字电位器的滑动端朝dir指定的方向滑动一次。该逻辑的工作方式是:每次rst高电平复位信号发出后,先由dir输出高电平,同时inc输出100个负脉冲,将X9C103的触点位置(VW端)滑动到其最上端(VH端),然后将dir输出改为低电平,同时根据输入Din[7..0]决定inc输出负脉冲的个数(输出脉冲个数=Din/2,其中Din为十进制表示的输入值),此时,可以将触点位置从X9C103的最上端(VH端)朝其最下端(VL端)移动到指定位置。3.1.4相位累加器的设计在利用FPGA设计DDS电路时,相位累加器是决定DDS电路性能的一个关键部分之一,小的累加器可以利用CycloneII器件的进位链得到快速高效的电路结构,而过长的进位链会制约整个系统速度的提高。在时序电路设计中,一种提高速度的办法是采用流水线技术,即把要在一个时钟周期内完成的逻辑操作拆分成几步较小的操作,并插入几个时钟周期来提高系统的工作频率。按设计要求,任意波形发生器采用的系统时钟是200MHz,要达到0.05Hz的频率分辨率,按照式,相位累加器的位数至少为32位。虽然QuartusII单元库中提供了32位LPM累加器模块,但是通过仿真,在EP2C5上实现该累加模,其最大工作频率只能达到159.36MHz,不满足200MHz系统时钟要求,因此在设计中并没有直接调用这个模块,而是采用了如图4.9的设计。图4.9采用了一级流水线的32位累加器我们是这样设计的:将32位的累加器拆成了2个16位的累加器,中间插入一级流水线,将高16位累加器相对于低16位累加器延迟一个时钟周期做累加,这样等高16位累积器进行累加的时候,低16位的累加器已经算出了进位结果,这时再将该进位作为高16位累加器的进位输入进行累加,同时为了保证输出结果的正确性,低16位累加器的计算结果必须延迟一个时钟周期才输出,这样就使得高16位累加器和低16位累加器的累加结果在同一时刻输出。这样的结果是,采用了一级流水线的32累加器要比没有采用流水线的32位累加器延迟一个时钟周期才输出结果。但这并不影响DDS相位累加器的工作,DDS输出的相位序列除了有一个时钟周期的延迟之外结果并没有发生任何变化,但累加器的速度确提高了。仿真证明,采用了一级流水线技术后,累加器的工作最高工作频率能达到223.05MHz。我们做了一个对比,直接调用QuartusII单元库中提供的32位LPM累加器模块资源消耗是33个逻辑单元(LE),而所设计的采用一级流水线的累加器资源消耗是67个LE,可见工作速度的提高是以资源消耗换来的,这就是FPGA设计中“面积换速度”的原则。虽然使用更多级的流水线能进一步提高累加器的速度,但是为了节省资源,在一级流水线能满足要求的前提下,没有多级流水线的设计。图4.10是一级流水线相位累加器时序仿真。从仿真图来看,相位累加器的输出端数据也会存在一些不稳定状态,因此在设计中要注意调整累加器后级寄存器的采样时钟,使其对准数据稳定的数据状态。图4.10一级流水线相位累加器时序仿真3.2.5波形存储器的设计EP2C5总共内嵌了26个M4KRAM块,总比特数达119,808bits,这为我们设计波形存储器提供了方便,因此并没有使用片外存储器。这些嵌入式RAM块可以配置成只读存储器(ROM)或随机存储器(RAM),但是要实现任意波形发生功能,必须能实时更新波形存储器内的波形数据,故设计中将这些嵌入式RAM块配置成了RAM。由于硬件电路设计中选用的DAC芯片位数为10位,因此RAM的字长应该设置为10bits,根据第二章的分析,从噪声功率的角度来看,波形RAM的地址线位数位要等于或者略大于DAC位数加2,即使用12位的地址线,那么RAM的存储深度为,存储容量为bits=40960bits。在设计中,我们总共使用2个这样的RAM,一个用于存储载波数据,另外一个用于存储调制波数据。那么消耗的总的M4KRAM资源为81920bits。RAM的设计我们直接调用了单元库中提供的LPMRAM模块,只要设置相应参数即可,其结构如图4.11。图4.11所示是一个双端口RAM,读和写的地址、时钟和数据线都被分开来。读时钟由系统参考时钟提供,读地址由相位累加器输出的的高12位数据提供,读数据线与后级调幅模块相连;写时钟由USB接口同步时钟提供,写地址由专门的写地址发生模块提供,写数据线与USB接口的数据总线相连。在下载波形数据时,USB接口方式配置成了从属FIFO方式,其数据总线为16位,因此只有其中的低10位与RAM的写数据线相连。图4.11波形RAM结构RAM的写地址发生器实际上是一个地址计数器,计数位与RAM的地址线位数相同,即12位。在设计RAM的写数据控制模块时需要用到USB接口芯片从属FIFO传输模式下的几个控制线,包括IFCLK(同步时钟信号)、FIFOADR[1..0](FIFO端点选择地址)、SLCS(输入输出门控信号)、SLOE(输入/输出使能信号)、SLRD(读使能信号)、FLAGC(FIFO空信号),除了IFCLK和FLAGC是USB接口芯片的输出信号,其他都是作为它的输入信号,另外要注意的是,在本设计中SLCS、SLOE、SLRD和FLAGC都是低电平有效。下面来看一下FIFO同步读(对于USB接口芯片来说是读,对于波形RAM来说是写)时序图[21],如图4.12。图4.12FIFO同步读时序通过分析图4.12我们可以得出如下的结论:当FIDOADR[1..0]指向的FIFO端点非空(即FLAGC为高电平)时,可以进行读FIFO操作,这时应该先将SLCS拉低,然后将SLOE也拉低,这时FIFO中FIFO指针所指向的数据就会出现在数据线上,但此时数据线上的数据一直维持不变,只有当SLRD也为低电平,在每个IFCLK的上升沿,FIFO指针才自动加1,指向下一个数据,数据线上的数据发生改变。也就是说,SLRD维持多少个时钟周期,数据线上就能读出多少组数据。并且,在读数据过程中,FIFOADR[1...0]必须维持不变。针对以上的分析,同时考虑到波形发生器的实际情况是只需要PC机往硬件板卡下发数据而不需要从板卡读数据,我们做了如下设计:将SLCS和SLOE始终接低电平,这样一来读控制信号就由三个减少为一个,使控制更为简单;此外,将FIFOADR[1..0]也始终接低,即只使用USB接口芯片CY7C68013的4个FIFO端点(包括EP2、EP4、EP6和EP8)中的端点2(EP2)进行数据的传输。所以在设计RAM的写地址发生器模块时,真正用到的USB控制线只有IFCLK、SLRD和FLAGC,如图4.13所示。图4.13RAM写地址发生器图4.13中,当检测到FIFO非空(即FLGAC为高电平),SLRD在延迟2个IFCLK时钟周期(由my_delay模块产生)之后输出低电平,ram_addr地址计数模块在延迟3个IFCLK时钟周期后开始计数产生写RAM的地址。ram_addr地址计数模块之所以要比SLRD有效延迟一个时钟才开始计数是因为SLRD需要一个至少18.7ns的建立时间,约一个IFCLK时钟周期(IFCLK频率为48MHz,周期约20.83ns)。ram_addr模块计数满后会由stop_wr产生一个停止写RAM的信号,直到rst_ram_addr发出复位信号才开始重新计数。ram_wr_en控制着图4.11中的RAM写使能端wren。3.2任意波形调制器的研究因为DDS是数字信号控制的设备,因此把幅度调制、频率调制加到DDS,并进行数字调制是完全可行的。频率调制是通过控制加在相位累加器前的加法器来实现的;幅度调制是通过控制加在波形存储器和DAC之间的乘法器完成的,即乘法器调整加到DAC上的数字幅度,也有一些DAC通过改变控制电压可以提供精确的模拟幅度控制。3.2.1幅度调制幅度调制(amplitudemodulation,AM)是指载波的幅度按照调制波幅度线性变化的调制方式。为了不失一般性,我们下面用余旋信号来分析。普通模拟调幅波的振幅定义是:式(4-1)其中为比例常数,为调制波角频率。因此,已调波可以用下式表示:式(4-2)式中为调制指数,该指数通常都小于1,最大等于1,为载波角频率。图4.14DDS调幅模块那么DDS调幅信号序列可以表示为:式(4-3)由于存储在调制波RAM和载波RAM中的都是相同的幅度相同的波形量化序列,因此有,因此有:式(4-4)图4.14是根据式(4-4)实现的DDS调幅模块。其中moduwave[9..0]和carrwave[9..0]分别是从调制波RAM和载波RAM的波形序列,m_index[9..0]为调幅指数控制字,en是调幅模块使能端。由于在RAM中波形幅度数据是以二进制补码的方式存储的(设计选用的DAC支持二进制补码格式输入,在第五章介绍波形数据产生的时候将有所说明),10位二进制补码能表示的的数范围在-512~511之间。首先调制波序列moduwave[9..0]与调幅指数控制字m_index[9..0]相乘(有符号数相乘),将相乘结果的低9位舍弃(相当于moduwave乘了一个小数),然后与511相加(相当加上中的,加法器输出的结果在0~1023之间),最后再将相加的结果与载波序列moduwave[9..0]相乘(有符号数相乘),相乘结果舍掉低10位转换为适合DAC的数据格式输出。图4.14中的三个寄存器有两个作用,一是实现数据位的转换,二是将大的逻辑拆分成三个小的逻辑,优化建立保持时间,以提高整个模块的工作频率。3.2.2频率调制频率调制(frequencymodulation,FM)是指载波的频率按照调制波幅度线性变化的调制方式。模拟调频信号的瞬时角频率为:式(4-5)其中为调制信号,为调频比例常数。那么调频最大角频偏为:式(4-6)图4.15DDS频率调制框图我们知道,DDS输出信号的频率跟其频率控制字息息相关,如果我们将调制波的幅度信号寄载在频率字当中,那么就能实现DDS调频信号。我们假设载波频率控制字为,调制波序列为,调频指数控制字为,如果按图4.15来设计:那么DDS输出端信号的瞬时频率为:式(4-7)其中为DDS参考时钟频率,为DDS相位累加器位数。DDS调频信号的最大频偏为:式(4-8)因此,只要按照图4.15的结构来设计DDS调频模块逻辑电路,就能得到DDS调频信号。3.2.3数字调制在数字调制度方式中,有三种数字调制分别

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论