《基于FPGA的DDS的移相信号发生器.docx》由会员分享,可在线阅读,更多相关《基于FPGA的DDS的移相信号发生器.docx(32页珍藏版)》请在课桌文档上搜索。
1、目录摘要:AbstractII第1章绪论1Ll弓I口.11.2 研发背景及意义11.3 DDS技术的发展2第2章系统硬件平台及技术原理31. 1可编程逻辑器件FPGA介绍32. 2硬件描述语言VHDL43. 3可编程逻辑器件开发软件QUartUSII54. 4Modelsim仿真软件55. 5DDSJEW62.5.1DDS原理62.5.2DDS特点72.6DDS内82. 6.1相位累加器83. 6.2波形ROM9第3章软件设计模块114. 1系统模块构造与分析H3.1.1系统模块之十位加法器123.1.2系统模块之10位寄存器123.1.3系统模块之32位加法器133.1.4系统模块之32位寄
2、存器133.1.5系统模块之ROM模块143.2基于FPGA的DDS软件顶层结构设计153.3模拟仿真波形16第4章硬件连接模块184.1 硬件连接184.2 D/A转换模块194.3 3低通滤波器模块204.4波形结果分析22结论25参考文献26致谢28基于FPGA的DDS移相信号发生器的设计与制作摘要:本文介绍了一种基于FPGA(现场可编程门阵列)的DDS(直接数字合成)移相信号发生器设计。该设计以FPGA为核心,采用精确的数字相位累加技术实现高速移相,并通过DAC(数字模拟转换器)将数字信号转换为模拟电压输出。通过将相位累加器实现在FPGA芯片上,减少了外部电路中的元件数量。通过使用查找
3、表,可以更快地计算正弦和余弦值,从而获得更精确的输出信号。在系统开发过程中,采用了AItera公司的CycloneV系列的FPGA芯片作为波形数据的主控制芯片,使用QuartusII软件并结合VHDL语言作为本次设计的主要工具。该设计具有体积小、功耗低、信号稳定等优点,适合于在通讯、测量等领域中广泛应用。首先,介绍了DDS技术和FPGA技术的相关知识以及研究背景,并对DDS的算法进行了简要说明;然后,详细介绍了该移相信号发生器的硬件电路设计和软件流程设计,包括FPGA内部的寄存器配置、相位累加器的设计以及输出信号的控制等关键技术。通过实际测试数据表明,所设计的移相信号发生器能够满足高精度、大频
4、率范围、低相位噪声等多种应用需求。关键词:FPGA;DDS;VHDL;相位累加;数字模拟转换器;模拟电压输出DIGITALPHASESHIFTINGGENERATORBASEDONFPGAAbstract;ThispaperpresentsaDDS(directdigitalsynthesis)phaseshiftingsignalgeneratordesignedonFPGA(fieldprogrammablegatearray).ThedesigntakesFPGAasthecore,adoptsaccuratedigitalphaseaccumulationtechnologytoach
5、ievehigh-speedphaseshifting,andconvertdigitalsignalsintoanalogvoltageoutputthroughDAC(Digital-to-AnalogConverter).ByimplementingthephaseaccumulatorontheFPGAchip,thenumberofcomponentsintheexternalcircuitisreduced.Byusingalookuptable,sineandcosinevaluescanbecalculatedfastertoobtainmoreaccurateoutputsi
6、gnals.Inthesystemdevelopmentprocess,Altera,sCycloneVseriesFPGAchipwasusedasthemaincontrolchipforwaveformdata,andQuartusIIsoftwarewasusedandVHDLlanguagewasusedasthemaintoolforthisdesign.Thedesignhastheadvantagesofsmallsize,lowpowerconsumption,stablesignal,etc.,whichissuitableforcommunication,measurem
7、entandotherfields.Firstly,therelevantknowledgeofDDStechnologyandFPGAtechnologyisintroduced,andthealgorithmofDDSisbrieflydescribed.Then,thehardwarecircuitdesignandsoftwareprocessdesignofthephaseshiftingsignalgeneratorareintroducedindetail,includingtheregisterconfigurationinsidetheFPGA,thedesignofthep
8、haseaccumulatorandthecontroloftheoutputsignal.Keytechnologiessuchasphasenoisereductionarediscussed.Theactualtestdatashowsthatthedesignedphase-shiftingsignalgeneratorcanmeetvariousapplicationrequirementssuchashighprecision,largefrequencyrange,andlowphasenoise.Keywords:FPGAQDS;VHDL;Phaseaccumulation;d
9、igital-to-analogconverter;analogvoltageoutput.1.1 引言信号发生器已成为电子电路设计、通信、测试、测量等领域中必不可少的设备之一。信号发生器除了能够产生各种类型的信号波形外,还能够输出不同频率、幅度、相位的信号,并能调节信号的上升时间、下降时间等特性。在集成电路设计中,信号发生器常被用作模拟测试和验证原型电路的正确性,以及测量电路的性能指标。同时,在通信系统中,信号发生器也被广泛应用于模拟信号通讯,帮助工程师调试和测试电信网络的可靠性和稳定性。,已大量使用于信息传递、系统检测等方面。随着科学技术的不断发展,高精度、高速度、高可靠性的信号发生器在科
10、研领域和实际应用中得到了广泛的应用。基于FPGA的DDS移相信号发生器具有频率和相位控制灵活、输出高质量信号等优点,成为目前应用较为广泛的信号源之一。选取DDS技术为主要研究内容,针对传统DDS技术设备调节复杂的问题,采用移相技术,实现简单、快捷的频率和相位控制。采用VerilogHDL语言或VHDL语言对移相DDS信号发生器的核心模块进行设计与编码,并将其综合后下载到FPGA芯片上,完成信号发生器的构建。利用多路数码显示器显示实验结果,同时用示波器观测输出信号的正弦波形,证明信号发生器的性能符合设计需求。本论文的研究成果对于相关领域的研究和应用具有较大的参考意义,也可以为数字信号处理器和基于
11、FPGA的信号发生器的设计提供指导。1.2 研发背景及意义DDS移相信号发生器是一种基于数字技术的信号发生器,具有频率和相位控制灵活、输出精度高等优点,在工业、医疗、军事等领域中得到广泛应用。DDS技术结合FPGA技术可以实现对信号发生器的高度自由定制,成为了目前信号源构建领域的重要技术之-b0然而,传统DDS技术存在调节复杂、精度不够高和运算速度慢等问题,难以满足精密设计和高速信号处理的需求。本论文选取DDS移相技术为研究对象,通过利用FPGA硬件资源和高级语言Verik)gHDL或VHDL进行开发,设计实现一款功能强大、性能稳定的DDS移相信号发生器,以解决这一难题。合成技术具有高精度、高
12、分辨率、低杂散、快速切换和自校准等优点,其在精密仪器仪表、医学系统、广播电视等领域的应用也越来越广泛。与DDS技术相比,直接数字频率合成技术的本质区别在于其使用数字信号处理器(DSP)或专用的数字信号产生器(DG)代替了数模转换器和低通滤波器。直接数字频率合成技术中,频率合成器直接由内部数字信号产生器产生频率,不需要外部时钟源或参考频率,因此其频率和相位的稳定性和准确性更高。尽管直接数字频率合成技术相较于DDS技术代替了数模转换器和低通滤波器,杂散性能和相位噪声也有了大幅度的改善,但是仍然需要在实现过程中考虑一定的误差以及温度、气候等因素的影响,因此还有提高的空间和需要进一步研究。此外,对于F
13、PGA设备的学习与应用对于计算机、通信工程等相关课程也十分重要。本论文的研究成果可以将这些知识点进行融合,使读者更加深入理解FPGA技术在信号处理中的应用。因此,本论文的研究背景和意义在于:为相关领域提供更加完善和高精度的信号发生器。同时,通过实践操作,增强读者的综合素质能力,使其具备一定的工程设计能力。1.3 DDS技术的发展直接数字频率合成(directdigitalfrequencysynthesis,DDFS)技术是一种通过数字信号处理器(digitalsignalprocessor,DSP)实现信号发生和调制的技术。它的发展可以分为以下几个阶段:阶段一:1998年,美国ObjeCtm
14、anagementgrOUP(OMG)开始着手研发DDS。阶段二:2003年,DDS1.0版本发布,其中包括data-centricPUblish-SUbscribe(DSPS)规范和realtimepublishsubscribe(RTPS)协议。阶段三:2007年,DDS1.2版本发布,引入QoS(qualityofservice)机制,允许用户定义数据传输的可靠性、时效性等特性,并支持Webservices互操作性。阶段四:2011年,DDS1.3版本发布,新增数据类型定义语言(IDL)和状态表达式语言(DDL),方便用户进行数据模型设计和状态编排。阶段五:2015年,DDS1.4版本发
15、布,进一步增强了QOS机制,支持多种数据传输模式和安全机制,并引入更多的API和工具集。第2章系统硬件平台及技术原理2.1 可编程逻辑器件FPGA介绍FPGA全称为field-programmablegatearray(现场可编程门阵列)。与微控制(MCU)相比,FPGA是一种可以动态重构数字电路的可编程芯片。它由许多查找表(LUT)和寄存器以及可编程互联组成,在设计时开发者可以灵活地配置这些逻辑块和互连来实现特定的硬件功能和任务。FPGA是除了CPLD之外的另一类型的可编程逻辑设备,而FPGA则使用了另一种可编程逻辑的构成方式,也就是编成的查表系统,。在FPGA中,各种逻辑门和触发器等基本单
16、元通过漏斗、交叉、定向等方式连接起来,形成任意复杂度的数字逻辑功能。所以FPGA支持广泛的应用领域,并且提供了很高的灵活性和容错能力,尤其在应对大数据处理等高速处理场景下表现优异。FPGA包括三个主要部分:输入/输出、基本单元和内部通信。输入/输出是FPGA于外部接口的接口,使FPGA能够与外部器件或平台进行通信或交互。基本单元是成千上万个可再编程的逻辑门与其他辅助逻辑的组合,使得开发人员可以根据自己的需求设计出最优的逻辑结构。内部通信模块包括可编程互连,可以将单个模块连接起来,满足复杂设计的要求。图2.1FPGA查表单元内部结构输入1输入2输入3杳找表LUT图2.2FPGA查找表单元2.2
17、硬件描述语言VerilogVeriIOg是一种严谨的语言,可以支持面向对象的编程方法,具有高度的可重用性和精确的语义定义。它可以用来描述数字电路中的信号、寄存器、门电路、状态机等元素,并使用这些元素构建出更为复杂的模块和系统.它提供了大量可用于模拟、测试和验证电路的工具和库,并且可以与不同的EDA(ElectronicDesignAutomation)软件进行集成。使用VeriIog可以描述一个数字系统的功能、结构和行为,包括其输入和输出、门电路、寄存器、运算器以及时序逻辑。此外,VHDL还允许我们定义设计约束条件,例如时序约束或占用约束等。VeriIog代码由实体(entity)体系结构(a
18、rchitecture)过程(process)等部分组成。其中,实体部分定义了该电路的输入和输出端口,并且提供必要的元数据。体系结构部分描述了该电路的状态转换行为,定义了布局和连接的基本方式,它还可以包含一些处理逻辑。而过程部分则描述了设计的底层电路的行为,也就是每条线路应该如何响应输入信号。既可以采用结构化的方法,按照电路的层次结构分阶段设计,也可以采用面向对象的方法,将电路看作对象进行设计和建模。VeriIog语言还支持设计重用,可以将设计中的复杂模块作为子模块重用,从而节省设计时间和成本。此外,VerilOg语言还可以进行仿真、综合、布局布线等后续流程,以进行验证和实现。VeriIOg语
19、言具有丰富的描述功能和强大的设计能力,可以满足复杂数字电路设计的要求,并且可以结合EDA工具和FPGA、ASlC等硬件进行完整的电路设计、验证和实现流程。它是数字电路设计领域中不可或缺的工具和语言之一。VeriIog语言的设计方法多种多样,主要有两大类别,一种是自上而下的顶层设计,另一种是自下而上的顶层设计;这两者方式都支持分层设计与模块化设计结果可以在设计人员之间轻松沟通和共享,从而减少电路设计的工作量,缩短开发周期。2.3 可编程逻辑器件开发软件QuartusIlQuartus11是由英特尔公司开发的可编程逻辑器件开发软件,用于设计、编译和验证FPGA(现场可编程门阵列)和CPLD(复杂可
20、编程逻辑器件)。QllartIlSn提供了一个集成的设计环境,包括设计入口、设计分析工具、合成器、仿真器、布局和布线工具等,使用户可以在一个综合的平台上完成整个FPGA设计流程。QuartusII支持多种硬件描述语言,包括VeriIOgHDL和VHDL也支持SOPCbuilder和QSYS等设计工具。在Verilog/VHDL中,QuartusII支持行为级别、RTL(寄存器传输级)、门级别和物理级电路表示。除此之外,QuartusII还提供了强大的优化功能和分析工具,如时序分析、资源使用率分析、占用分析等,帮助用户进行设计优化和性能调试。同时,Quartus11也可以生成不同格式的输出文件,
21、如bitstream数据、板级约束文件、仿真波形文件等。QuartusII是一款功能强大的可编程逻辑器件开发软件,广泛应用于各种数字电路设计领域。2.4 Modelsim仿真软件ModelSim是一款由MentorGraPhiCS开发的硬件描述语言仿真器,用于数字电子系统级设计验证和仿真,可支持多种硬件描述语言(HDL)如VHDL、VerilOg等。Mentor的ModelSim软件是市面上比较好的的HDL语言模拟软件。在MOdeISim中,设计人员可以一步一步地执行仿真过程,以逐步完成所需的操作。同时,他们可以随时查看程序中任何变量的当前值,以便了解单元或模块的输入和输出等连续变化。MOde
22、ISim还具有高级图形界面,可以显示波形图、状态机图、层次结构等各种信息,从而使设计人员更加直观地了解设计过程。而比起QuartusII附带的该模拟器功能强大得多,是当今行业中使用最广泛的模拟器之一。它使用直接优化编译技术也采用了TcVTk技术,采用单核仿真技术,所以对仿真进行编译快速且独立于平台的编译代码,方便IP核保护,用户界面和图形界面设计极其个性化,为用户提供了加快误差调整速度的手段,是FPGA/ASIC设计的首选仿真软件项目叫2.5 DDS技术及原理DirectDigitalSynthesizer(DDS)是一种数字信号处理技术,用于产生高质量的频率合成信号。DDS使用一个数字输入来
23、直接生成输出信号的数字表示或样本点,该信号经过一个数模转换器之后就可以输出成为一个具体的频率信号。在DDS中,输入的数字信号由参考时钟和累加器组成。参考时钟是DDS内部时钟的基础,它定义了DDS系统输出信号所需要的固定频率。累加器被用来将参考时钟与数字输入相乘,并产生相应的输出信号。通过改变计数器中的数字QDS系统可以直接控制生成的输出信号频率。FPGA对于DDS电路的设计和实现具有很大的灵活性和可扩展性。与专用DDS芯片相比,使用FPGA实现DDS电路可以根据具体的需求进行定制化设计,可以实现更高的精度和更复杂的功能。此外,FPGA具有现场可编程的特点,可以在设计完成后进行现场修改和调试,从
24、而更加方便地进行电路调试和验证。另外,使用FPGA实现DDS电路的成本较低,不需要购买昂贵的专用芯片,并且FPGA的设计工具和开发环境也比较成熟,相对容易上手和使用。FPGA器件的可编程性和可扩展性也使得它具有广泛的应用范围,包括数字信号处理、信号调制、通信、图像处理等领域。总体上,采用FPGA实现DDS电路具有灵活、可扩展、成本低廉等优势,对于需要进行大规模集成和精密控制的应用场景具有较好的适应性和实际价值。2.5.1 DDS原理DDS的基本原理是利用采样定理,通过查表法产生波形,对于正弦信号发生器,其输出的波形可以用下式来描述:y(D=Asin(t+O),DDS模块主要由相位累加器、查找表
25、、DAC转换器和低通滤波器组成,基本结构如下:图2.1数字频率合成器设计图2.5.2 DDS特点高精度:DDS可达到非常高的频率和相位稳定性。由于它是完全由数字信号驱动的,因此可以实现非常稳定和可重复的频率输出。当DDS在40MHz的时钟下工作的时,根据抽样定理DDS输出的最高频率会小于系统时钟频率义的一半.同时由于低通滤波器的非理想因素,因此DDS通常最大能输出的频率为的40%o灵活性:DDS具有非常大的灵活性,可以产生任何所需的波形,并且可以瞬间切换到其他波形。这使其非常适合需要经常更换频率或波形的应用。快速响应:DDS的频率、相位和振幅可以很快地改变。由于其内部时钟是固态的,即没有机械部
26、件或移动部件,因此能够提供非常快速的响应时间。低噪声:DDS的输出非常稳定,并且通常比传统的模拟振荡器具有更低的噪声水平。这意味着其输出可以在测量、测试和其他需要高精度和低噪声输出的应用中使用。数字化:DDS是数字式的,因此易于与其他数字系统集成,例如微控制器、FPGA和DSP等。这使得可以通过软编程进行班车调整,还可以进行多功能和远程控制。2.6 DDS内部结构2.6.1 相位累加器图3.2相位累加器原理图在工作时,DDS模块会通过参考时钟进行驱动,并不断累加相位累加器的值,来生成对应频率的信号。其中,相位累加器的单次累加值由频率控制字K决定,K值表示相位累加器每个时钟周期累加的相位角度,也
27、就是每次向相位累加器中累加的值。频率控制字K是一个可编程的数值,通过改变K值,就可以改变相位累加器的单次累加值,从而改变输出信号的频率。例如,如果K=2nfsClk,其中fs为输出信号的频率,Clk为相位累加器的时钟频率,则相位累加器在每次时钟触发时就累加1个K值,即相位累加器每隔1/clk的时间,其输出的相位值就会增加2nfsclk,从而产生对应频率的信号。当相位累加器的值大于等于2徇时,就会对2他求余数并从头开始循环累加,以此来保证输出信号是周期性的,DDS输出信号的频率满足下列公式(fc为参考时钟):具体而言,DDS通过累加程序计数器(即频率控制字),从而生成所需的波形。通过更改ROM表
28、格中存储的数据,可生成任意的波形。当相位累加器收到频率控制字时,它会将上一个时刻的相位值与频率控制字相加,并将结果作为下一个时刻的相位值输出到数字转模拟转换器(DAe),以生成模拟信号。同时它也可以实现高精度的数字频率合成,从而实现微小的相位增量。此外,相位累加器还可以通过添加不同比特数的加法器和寄存器来改变其分辨率,从而满足不同应用场景的需求。它还是是一种重要的数字电路,在数字频率合成器和数字调制器等领域得到广泛应用,以实现高精度、高性能的信号处理和产生模拟信号。为了使加法器在下一个FClk时钟周期中继续累加寄存器的高M位数值,同时与频率控制字K相加,将作为地址值查找ROM表中的取样数据。2
29、.6.2波形ROM数据波形ROM正施福度夏化月列 图3.3波形ROM示意图波形ROM是一种只读储存器,用于储存数字化波形数据。在波形ROM中,波形数据以二进制码的形式存储在内存芯片中。可以使用地址线来请求要访问的特定位置,并从数据线读取该位置处的内容。由于波形ROM是只读的,因此存储的数据不能被修改或删除。当需要扭曲、过滤、操作或生成新的波形时,数字电路会从波形Rc)M中读取原始波形数据,并将其传递到数据处理单元以进行进一步处理。对于波形ROM,步长(stepsize)指的是在存储波形数据时每一个点之间的时间差。换句话说,它是离散采样的时间间隔。例如,如果一个波形数据是以IkhZ的采样率采集的
30、,那么在波形ROM中每个采样点之间的时间间隔就是1ms。如果这个波形数据需要存储在一个8-bit的波形ROM中,那么该波形ROM可以存储256个采样点的数据,其中每两个相邻采样点之间的时间间隔是相同的,即步长固定。在使用波形ROM时,使用正确的步长很重要,因为它决定了波形输出值的精度和波形重现的质量。如果步长太大,则可能导致波形的粗糙性;反之,如果步长太小,则会增加波形ROM的容量,并可能影响系统的实时性能。波形ROM存储的是数字信号的离散化幅度序列,每个地址对应的幅度值被对应到振荡器输出的正弦或余弦波上,形成一个数字信号。输出信号的频率、相位和幅度均可通过相位累加器、频率控制字和振荡器实现。
31、由于波形ROM存储的序列并不是连续的,其存储容量有限,因此相位累加器的字长不一定等于M地址线的位数,即相位累加器能输出的精度可能高于波形ROM的幅度量化精度,这种情况就会发生相位截断误差。相位误差的大小取决于相位累加器的精度和波形ROM的幅度量化位数之差,若相位误差超过幅度步进因子,则会对输出信号的质量产生影响。为了解决这个问题,需要将数字信号转换为模拟信号来得到平滑的波形输出。通常采用数模转换器(DAe)将离散化的数字幅度序列转换为相应的模拟信号,经过一定的滤波和放大等处理之后,就可以得到质量较高的平滑模拟信号输出。采用高分辨率的DAC,可以降低相位截断误差带来的影响,提高DDS输出信号的精
32、度和稳定性。ROM查找表可以将输入值映射到特定的输出值。RoM查找表由一组已预先编程的二进制值构成,因此也被称为“编程逻辑阵列”(PLA)o每个Re)M查找表通常由两个部分组成:地址线和数据线。地址线可以接受一个N位的二进制输入值,其中N是ROM查找表的地址宽度。数据线则从ROM查找表中输出一个M位的结果,其中M是ROM查找表的输出宽度。当输入值被应用于ROM查找表的地址线时,它会导致ROM查找表的相关位置处的数据从数据线输出。ROM查找表可用于各种数字电路和系统,例如控制电路、计数电路、状态机等。在这些应用中,查找表在不同的时钟周期生成不同的输出值,然后根据输出值驱动其他电路或控制逻辑。总之
33、,ROM查找表能让工程师将逻辑功能实现为硬件,以提高速度和性能。第3章软件设计模块3.1 系统模块构造与分析DDS数字移相信号发生器完全是由VHDL语言完成设计。并在FPGA器件上实现的。电路要求能输出2路正弦信号,由2路10位D/A实现波形输出。信号频率用频率控制字PWORD来输入,移相信号用相位控制字FWORD来输入。FPGA中的频率控制字是通过将一个数字信号输入到FPGA芯片中来实现的。具体而言,需要使用FPGA芯片上的一些特定IO引脚,例如GPK)(通用输入/输出)或PLL(锁相环)引脚。如果要使用GPIO引脚进行频率控制字输入,则需要将数字信号连接到FPGA开发板上分配给GPIO引脚
34、的物理引脚。然后,在FPGA的设计代码中,可以使用VerilogHDL或VHDL等硬件描述语言编写代码,以读取GPIO引脚上的数字信号,并将其转换为需要的频率控制字。如果要使用PLL引脚进行频率控制字输入,则需要先在FPGA开发板上配置PLL外部电路。然后,在FPGA的设计代码中,可以使用特定的PLl模块和模块参数设置来控制PLL的工作方式,从而实现对频率控制字的控制。总之,实现FPGA中频率控制字的输入涉及到硬件的配置和设计代码的编写。具体实现方法根据具体的FPGA型号和开发板型号而定,需要结合相关的用户手册或资料进行详细参考。Address32B及AddresslOB分别为32位和10位加
35、法器:SIN_R0M是存放波形数据的查找表。DFF32B和DFFlOB分别是32位和10位寄存器;使用一个32位寄存器,将高8位作为ROM的地址位,其余24位无特殊作用,寄存器按照系统时钟进行自加,此时高8位的变化频率与用于自加的系统时钟频率有了成倍的关系,很像计数器计数频率变化但存在区别;32位寄存器使用低位向高位进位可以确保每次加的数据都产生了效果,都向高位产生了进位:PoUT和Fe)UT为8位输出,可以分别与两个高速D/A连接,输出参考信号和可移相波形信号口叫本设计将分为5个功能模块来完成DDS移相信号发生器,即波形数据ROM模块,10位加法器模块,10位寄存器模块,32位加法器模块和3
36、2寄存器模块。由于功能模块主要依赖于需要同位锁存器和加法器共同构建的相位累加器,因此,相位累加器在此环节上相当关键;在DDS电路中,也可以采用模块化设计方法,将相位累加器、频率控制字、波形ROM、DAC,滤波器等不同的功能模块分离出来,然后独立设计、测试和优化。这样可以有效减少整个系统的复杂度和开发难度,同时也有利于提高电路系统的性能和可靠性,利用QUartUSn将各个模块的原理图进行编译,利用Verik)g设计各个功能模块,再整体进行设计,从而实现了一个完整的相位移动信号发生器电路。相位累加器通常采用32位的寄存器,其范围为O到2人32-1,相当于将一个圆(360度)分成2人32份,每一份为
37、一个相位角度,可以达到非常高的分辨率和精度。初始相位控制字是用于控制输出信号的相位的,它可以控制输出信号的相位从任意位置开始,通过改变相位累加器的初始值来实现。例如,当我们需要让输出信号在某一特定相位上开始,可以将相位累加器的初始值设为相应的相位,这样输出信号就可以从该相位上开始输出。3.1.1 系统模块之十位加法器此模块为10位相位累加器中的一部分,功能模块主要依赖于需要同位锁存器和加法器共同构建的相位累加器。同位相位累加器由同位加法器和同位寄存器构成,此时的加法器是在下一个Fclk时钟周期中继续累加32位寄存器的高8位数值,同时与频率控制字PWORD相加,将作为地址值查找ROM表中的取样数
38、据。输入端口数据为频率控制字与32位寄存器高八位存储数据,输出端口为10位寄存器的输入口。图3.1十位加法器示意图(含输入端口与输出端口)3.1.2 系统模块之10位寄存器此模块同样为10位相位累加器中的一部分,锁存器作为相位累加器的第二环,负责将前一环加法器上的数据存储所需的数据和指令地址,以及中间结果和状态信息等,并将数据输入到Rc)M中进行查找,其输入端,一端接前一环加法器的输出端,另一环接50M时钟脉冲信号,寄存器输出端连接RoM的输入端口,将数据发送到RoM中图3.2十位锁存器示意图(含输入端与输出端)3.1.3 系统模块之32位加法器此模块为132位相位累加器中的一部分,功能模块同
39、样主要依赖于需要同位锁存器和加法器共同构建的相位累加器。同位相位累加器由同位加法器和同位寄存器构成,此时的加法器是在下一个Fclk时钟周期中继续累加同位寄存器的高8位数值,同时与相位控制字FWORD相加,将作为地址值查找第二个ROM表中的取样数据。输入端口数据为相位控制字与32位寄存器高八位存储数据,输出端口为32位寄存器的输入口。形成一个锁循环模块。F1华希年案;H- insE图3.3三十二位加法器示意图(含输入端与输出端)3.1.4 系统模块之32位寄存器此模块同样为32位相位累加器中的一部分,锁存器作为相位累加器的第二环,负责将前一环加法器上的数据存储所需的数据和指令地址,以及中间结果和
40、状态信息等,并将数据输入到ROM中进行查找,其输入端,一端接前一环加法器的输出端,另一环接50M时钟脉冲信号,寄存器输出端高8位连接ROM的输入端口,将数据发送到ROM中;同时,该32位寄存器与同位加法器形成循环,不断提供数据。;address3二二二二二二 i dff 3 2L Loa(:二二二二二 L DINBLODUTI3L F 盛2TA31.0lSI31.0BI31.0图3.4三十二位锁存器(含输入端与输出如)3.1.5 系统模块之ROM模块在建立波形ROM模块之前首先要进行波形存储器ROM的初始化。波形ROM初始化则是指在设计电路时将需要的波形数据预先加载到ROM芯片中,以便在运行时
41、快速访问。Rc)M输入端接时钟信号与对应寄存器的输出端,输出端直接接DAC模块的对应部位.A10B7address7.0Sin FOR I _L,q7.0clock;=:1;*;后二=FQ7.1Qu,If1图3.5ROM示意图RoM初始化是DDS电路中非常重要的一步,它决定了输出波形的幅度量化和精度,直接影响到DDS输出信号的质量和性能。RoM初始化包括将待存储的波形数据转换为适合存储的数据格式,并将其存储到RoM中。通过C程序编写正弦波形,将编写好的C程序自动生成的mif文件放入Quartus中进行记忆储存,生成所需要的rom查找表1。Addr-H)+1+2+3+4+5+6+7ASCD051
42、151451752052452753053385365395425455495525555581656156456757057457758058324586589592595598602605608326116146176206236266296324063563864164464765065365648659662665668671674677680566836866896926956987017046470771071371571872172472772730733735738741744747749807527557587607637667697718877477777978278578
43、779079396795798800803806808811813104816818821823826828831833112835838840843845847850852120855857859861864866868870128873875877879881884886888136890892894896898900902904144906908910912914916918920图3.5生成的ROM查找表3.2 基于FPGA的DDS软件顶层结构设计顶层结构是指系统、软件或网络中最高级别的组织结构,通常包括系统或软件的主要模块、功能和层次关系。在软件开发中,通常会先设计出顶层结构,以便更
44、好地组织和管理整个系统或软件的开发过程。在软件开发和系统设计中,设计良好的顶层结构可以提高系统的可维护性、可扩展性和可重用性,更容易进行模块化开发和测试。而在QUartUSll中,顶层结构决定一整个框架是否能编译成功,是否能将对应的数据下载到硬件程序中。所有的原理图文件的生成需要确定顶层文件的正确与否。图3.6顶层设计结果示意图3.3模拟仿真波形眈0回匕口明区色-运运胜运圮江电H 明interval: 53.56 usPointer: 53.56 usIJ=O-LrLrTJTTm-二一口nm1;=一mLLL1111ME!(976X984dX丽7ecziXO17X1O19X1O21X 而五1EC
45、J寂 414 X 433 X 452 RFX 486 6和X 524 灯而XagX5ZZjXSlU(6475X)QiJS图37模拟仿真结果示意图第4章硬件连接模块4.1 硬件连接硬件部分主要由个人笔记本电脑。实验室EDA试验箱与数字示波器构成。将个人笔记本电脑与实验室EDA箱FPGA部分连接,固定好芯片所对应的引脚,此时在QuartusII中下载驱动,待驱动下载成功后,方可将DA模块的输出接示波器。图4.1驱动下载成功图4.2 D/A转换模块模块使用实验室的DACO832是一种常用的8位数字模拟转换器(DAC),可以将数字信号(通常是一个8位二进制数)转换成相应的模拟电压或电流输出。DAC0832采用双电源供电模式,具有高速、低失调、低电流、稳定性好等优点,在DDS电路中,DACO832常用于将DDS芯片输出的数字信号转换为模拟信号,然后进行滤波和放大等处理,最终得到输出的正弦或余弦波。同时,DACO832的引脚接口和控制方式也比较简单,易于与其他电路组合,具有较高的通用性和适用性。DAC0832具有8位分辨率,即它可以将28=256个不同的数字信号转换成不同的模拟输出电压或电流。DACO832使用的是双极性输出,这意味着它可以输出正电压、负电压甚至零点电平。DAC0832内部包含一个稳压电源和一个运放以确保高精度的输出和线性度。在DACO832中,稳压电源可使输入电压范围增强,