基于NiosII控制的DDS数字信号发生器设计说明书_第1页
基于NiosII控制的DDS数字信号发生器设计说明书_第2页
基于NiosII控制的DDS数字信号发生器设计说明书_第3页
基于NiosII控制的DDS数字信号发生器设计说明书_第4页
基于NiosII控制的DDS数字信号发生器设计说明书_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

XXX(设计)I1绪论信号发生器是一种悠久的测量工具。直接数字频率合成技术即DDS技术是一种新型的信号产生方法,是现代信号源的发展方向。基于NiosII控制的DDS数字信号发生器系统,以理学院EL-EDA-VI实验箱为例,以Altera公司的CycloneⅡ的核心器件EP2C35F484C8为例,运用SOPC技术,NiosⅡCPU通过读取按键的值,来实现不同频率、不同波形的输出显示功能。本章介绍了信号发生器的和DDS的一些背景知识,和一些研究内容的概述。1.1DDS信号发生器背景概述在通讯领域和电子行业领域,函数发生器都是普遍的仪器。它可以生成不同频率和波形的信号,来对产品进行测试及其它用途。上个世纪,第一台正弦波发生器出现之后,信号发生器不断在创新设计,在当代通讯与电子领域中,直接数字合成(DDS)技术渐渐主流化。DDS在大部分操作中使用数字电路,提供了数字操作拥有的许多优势。信号在最后一步转换成模拟的之前,一直保持数字化,大大提高了函数发生器的稳定性,相对模拟电路也简化了很多。DDS的主要优点之一是输出信号的频率精度可以达到作为发生器参考信号使用的晶体控制振荡器的水平。如果想实现更高的精度,也可以采用函数发生器本身的温度补偿晶体振荡器产生。这些信号可以提供高于0.1PPM的频率精度。在许多情况下,函数发生器还可以把频率锁定到外部实验室频率参考源上,从而生成超高精度的信号。DDS发生器可以生成非常高的频率精度。DDS信号发生器的数字电路可以实现与数字电路相同的频率精度,控制数据位数越高分辨率越高,频率自然精度也会上去。如果DDS电路有一个64位计数器,便可以提供高达64位的频率分辨率。由于所有的波形都是以数字方式生成的,因此函数发生器中的调制功能、扫描功能和突发生成功能都受到数字控制,并可以以非常高的精度进行设置。不仅可以精确地设置/改变频率和定时,还可以精确地设置/改变相位和幅度。[2]DDS的第三个优点是如果拥有RAM波形存储器,它几乎可以发出任何波形。DDS发生器通过采集存储器中存储的波形来产生波。现有的产品来说,每个函数发生器中都会内置正弦波、方波、三角波和类似的波形。但是对于占空比为10%的方波,仅带有只读存储器的DDS发生器则无法实现。不过如果DDS电路有存储波形的RAM,那么控制器电路可以把任何波形写入RAM,并通过合成器重放波形。综上所述三个优点,函数发生器远远优于传统函数发生器。对称性可变的波形现在已是标配功能,另外还可以内置各种不常见的波形,如指数上升和下降型波形或正弦脉冲型波形等。最新的函数发生器利用了DDS的优势,能够把多台不同仪器中的功能融合到一部仪器中,像软件的IDE编译环境一样,以后的基于DDS的函数发生器能给人一条龙的服务。这些功能将会给传统测试方案带来一次革命。1.2DDS信号发生器的当下现状DDS信号发生器采用直接数字频率合成(DirectDigitalSynthesis,简称DDS)技术,具有能把频率稳定度、分辨率提高到与基准频率相同的水平的能力,而且可以在一定的频率范围内进行精细的频率调节。采用这种方法设计的信号源可工作于调制状态,可对输出电平进行调节,也可输出各种波形。在现代电子及通信领域中,DDS的应用极其广泛。它具有频率切换速度快、很容易提高频率分辨率、对硬件要求低且可编程全数字化方法便于单片集成、降低成本、提高可靠性、容易生产等优点。目前,实现DDS的方法主要有两种:第一种方式是采用专用DDS芯片,目前,市场上性能优良的DDS芯片很多,主要有Qualcomm和AD等公司的产品。Qualcomm公司推出了DDS系列Q2220、Q2334、Q2368;美国AD公司也推出了他们的DDS系列:AD9850、AD9851、AD9852、两路正交输出的AD9854以及以DDS为核心的QPSK调制器AD9853,AD9856和AD9857。AD公司的DDS产品性价比较高,应用较为广泛。2009年8月,中科院微电子所微波器件与集成电路研究室HBT超高速电路小组在刘新宇研究院和金智研究院的带领下研制成功两款基于lumGaAsHTB工艺的10GHz、8-bit超高速DDS芯片,这两款超高速DDS芯片的研制成功,大大提升了国内DDS电路的最高频率,显示了其当前国际上GaAsHTB基DDS芯片时钟频率的最高水平,同时也证明了中国科研人员走在世界前列。第二种方式是我们将采取的自行设计基于可编程逻辑器件的解决方案。DDS技术的实现依赖于数字器件。本论文便讨论了以理学院实验箱Altera公司的CycloneⅡ的核心器件(EP2C35F484C8)为核心,采用SOPC和DDS技术,实现不同频率、不同波形的输出功能的DDS信号发生器设计。1.3SOPC解决方案及本设计方案的选择电子系统的设计在近几年发生了革命性的变化,高性能产品的要求和微电子技术的发展使SOC(SystemonChip)技术成为主流设计技术。Altera提出了一种灵活高效的SOC解决方案—SOPC(SystemonaProgrammableChip)。它将处理器及各种外设存储器(ROM、RAM等)、总线和总线控制器、I/O口、DSP锁相环等集成到一片FPGA中,可裁剪、可扩充,具有灵活的设计方式并具备软硬件在系统可编程功能。在现代通信领域中,DDS的应用极其广泛,目前各大制造厂商都推出了采用COMS生产的高性能和多功能DDS芯片,专用DDS芯片采用特殊工艺,内部数字信号抖动很小,输出的质量高;但是在某些场合,专用的DDS芯片的控制方式是不能改变的,所以可能在工作方式及频率控制与系统的要求存在差距,这时如果用FPGA器件设计一个符合需求的DDS电路,就是一个很好的解决方案,可重配置性结构能方便地实现复杂的调制功能,具有很好的实用性和灵活性。[1]我们将采取第二种方式自行设计基于可编程逻辑器件的解决方案。本论文研究内容如下:DDS信号发生器频率可设置;DDS信号发生器波形可选择;输出频率范围为20KHz—5MHz(和分频部分、频率控制字长度以及外部DAC性能有关);能够输出正弦波,锯齿波以及三角波;

2SOPC系统开发概述百万门级的FPGA芯片,复杂的IP核和可重构嵌入式软核处理器的出现,使得SOPC设计成为一种非常重要的设计办法。本章首先介绍了可编程逻辑器件FPGA、CLPD,然后介绍系统的SOPC设计流程。2.1可编程逻辑器件概述及开发环境概述2.1.1可编程逻辑器件概述随着时代的发展,数字集成电路不断的进行更新换代,设计与制造集成电路的任务已经不完全由厂商来承担。一些人更愿意自己设计专用集成电路(ASIC)芯片,而且希望设计周期尽可能短,在实验室里就设计出合适ASIC芯片,并立即投入应用之中,因而出现了可编程逻辑器件(PLD)。可编程逻辑器件的两种,现场可编程门阵列FPGA和复杂可编程逻辑器件CPLD。FPGA提供了最高的逻辑密度、最丰富特性和最高性能。现在最新FPGA器件,如XilinxVirtex™系列中的部分器件,可提供八百万"系统门"(相对逻辑密度)。这些器件还提供诸如内建的硬连线处理器(如IBMPowerPC)、大容量存储器、时钟管理系统等,并支持多种最新的超快速器件至器件(device-to-device)信号技术。FPGA应用广泛,数据处理和存储,以及到仪器仪表、信号处理等。与此相比,CPLD提供的逻辑资源少得多-最高1万门。但是,CPLD提供了好的可预测性,所以对于关键的控制应用非常理想。而且有的CLPD如XilinxCoolRunner™系列CPLD器件需要的功耗极低。FPGA/CPLD都是特殊的ASIC芯片,除了具有ASIC的特点之外,还有如下优点:可编程逻辑器件在设计过程中为客户提供了更大的灵活性,因为对于可编程逻辑器件来说,设计反复只需要简单地改变编程文件就可以了,而且设计改变的结果可立即查看。可编程逻辑器件不需要漫长前置时间来制造原型或正式产品。可编程逻辑器件不需要客户支付高昂的NRE成本和购买昂贵的掩模组,可编程逻辑器件供应商在设计其可编程器件时已经支付了这些成本,并且可通过PLD产品线多年的生命期来支付这些成本。可编程逻辑器件允许客户在需要时订购需要的数量,使客户可控制库存。采用固定逻辑器件的客户常会面临需要废弃过量库存,当对其产品的需求高涨时,他们又为器件供货不足所苦,不得不面对生产延迟的现实。可编程逻辑器件甚至在设备付运到客户那儿以后还可以重新编程。2.1.2SOPC介绍System-on-a-Programmable-Chip,即可编程片上系统。用可编程逻辑技术把整个系统放到一块硅片上,称作SOPC。可编程片上系统(SOPC)是一种特殊的嵌入式系统:首先它是片上系统(SOC),即由单个芯片完成整个系统的主要逻辑功能;其次,它是可编程系统,具有灵活的设计方式,可裁减、可扩充、可升级,并具备软硬件在系统可编程的功能。[3]SOPC结合了SOC和PLD、FPGA各自的优点,一般具备以下基本特征:(1)至少包含一个嵌入式处理器内核;(2)具有小容量片内高速RAM资源;(3)丰富的IPCore资源可供选择;(4)足够的片上可编程逻辑资源;(5)处理器调试接口和FPGA编程接口;(6)可能包含部分可编程模拟电路;(7)单芯片、低功耗、微封装。SOPC是PLD和ASIC技术融合的结果,目前0.13微米的ASIC产品制造价格仍然相当昂贵,相反,集成了硬核或软核CPU、DSP、存储器、外围I/O及可编程逻辑的SOPC芯片在应用的灵活性和价格上有极大的优势。SOPC被称为“半导体产业的未来”。2.1.3Cyclone器件与NiosII介绍Altera公司作为全球最大的可编程逻辑器件供应商之一,提供了多种型号的FPGA,可满足不同用户的需求。目前的主流产品包括MAXII系列PLD产品以及Cyclone,CycloneII,Stratix和StratixII系列FPGA。Cyclone系列FPGA是基于1.5V,0.13µm,SRAM工艺的中等规模FPGA,它具有以下特点:支持低成本串行配置器件,如EPCS1。支持LVTTLLVCMOS,SSTL-2和SSTL-3的I/O标准。支持33MHz到66Hz,32位到64位的PCI标准。支持高速(640Mbps)和低速(311Mbps)LVDSI/O接口,311-Mbps,RSDSI/O接口。支持DDRSDRAM(133MHz),FCRAM和SDRSDRAM的扩展内存。支持AlteraMegaCore和AlteraMegafuctionsPartnersProgram在内的多种IP核。每片FPGA中有最多2个锁相环,提供时钟相乘和时钟移相。多达8个全局时钟,且每个LAB可以使用6个时钟信号。考虑到设计需求及价格,在本逻辑分析仪中选用了Altera公司的CycloneⅡ系列中的EP2C35F484C8作为系统的FPGA芯片,同时选用了EPCS16配置芯片。NiosII是Altera公司推出的系列32位RSIC嵌入式处理器。他以软核的方式提供给用户,并专为在Altera的FPGA上事先做了优化,用于SOPC(片上可编程系统)集成,最后在FPGA上实现。NiosII系列软核处理器是Altera的第二代FPGA嵌入式处理器,其性能超过200DMIPS,在AlteraFPGA中实现仅需35美分。Altera的Stratix、StratixGX、StratixII和Cyclone系列FPGA全面支持NiosII处理器,以后推出的FPGA器件也将支持NiosII。NiosII是一种灵活的体系结构,它提供以下特性:(1)32位的指令集、数据总线以及地址空间。(2)32个通用寄存器和32个外部中断源。(3)32位乘除法的单周期指令(在运算结果也是32位的情况下)。拥有专门的指令计算64位以及128位结果的乘法。可访问多种片上组件,并拥有与片外设备的接口。拥有一个完整的开发环境NiosIIIDE,支撑程序的开始、停步、单步以及跟踪等多种调试手段。不同的NiosII处理器实现均完整的支持统一指令集。支持用户自定义指令,用户可以将一些复杂的重复度高的关键运算用硬件逻辑实现,并赋予一条指令使得NiosII可以通过该指令实现这个运算。性能在150Mbps以上。2.1.4SOPC开发硬件平台适配器布局及硬件资源:E_Play-SOPCEP2C35适配器(以下简称:适配器)布局如下图:图2.1整体效果图Fig.2.1Integratedeffectmap图2.2主板效果图Fig.2.2 Viewofmotherboard主板资源:1)主控制器FPGA芯片:EP2C35F484C8N2)配置芯片:EPCS16N3)两片SDRAM:HY57V561620CT-6,每片为4Bank×4M×16Bit(即32MB),总共64MB。4)FLASH:S29GL256N,32MB5)两片SRAM:IS61LV25616AL-10T,每片256K×16(即512KB),总共1MB。6)USB2.0控制器:CY7C68013A-56,24C32E2PROM7)100M网络控制器:LAN91C111-NE8)24位真彩VGA:ADV7125KSTZ1409)电源模块:AS28303.30413(3.3V),LM2678S-ADJ(1.2V)10)其它接口及资源:5V电源接口、USB接口、PS2接口、232串口、VGA接口、AS下载口、JTAG下载口、4位按键、4位LED灯、复位键、E-PLAY插槽PORTA、PORTB,64针扩展插槽。图2.3扩展板效果图Fig.2.3 Viewofexpansionboard扩展板资源:1)视频解码芯片:ADV7181B2)音频芯片:TLV320AIC233)实时时钟:PCF8563T4)E2PROM:24LC025)红外收发对管:HSDL-32016)其它接口及资源:SD卡接口、RCA视频接口,SV接口,音频接口LIN、LOUT、POUT。2.1.4QuartusII9.0开发环境介绍Altera公司的QuartusII软件提供了一个完整的多平台开发环境,它包含整个FPGA/CPLD设计阶段的解决方案,该软件提供了提完整的图形用户界面,可完成可编程片系统的整个开发流程各个阶段,包括输入、综合、仿真等,使设计的数字系统最后能够在硬件上实现。基于QuartusII9.0软件工具,设计者可以方便地完成数字系统设计的全过程。QuartusII9.0的软件界面如图2.4所示。[4]QuartusII软件的工程文件包含所有的设计文件、源文件以及完成其他操作相关文件。QuartusII9.0支持多种设计方式,设计文件的输入方法有原理图式的图形输入、硬件语言文本输入、内存编辑。其中文本输入支持AHDL、VHDL、VerilogHDL等。完成设计文件之后,需要定义输入输出引脚,之后才可以编译。图2.4QuartusII软件界面Fig.2.4QuartusIIsoftwareinterfaceQuartusII编译器主要任务是设计逻辑综合、在器件中布局、布线、计算设计与器件上产生的延时,最后生成器件的下载文件,为模拟和编程产生输出文件。在把设计项目配置到器件之前,可以用仿真对设计进行测试。在把设计项目的仿真和验证在QuartusII9.0仿真器中进行,可以实现功能仿真与时序仿真,同时支持多种输入信号格式:矢量表输出文件(.tbl)、矢量波形文件(.vwf)、MAX+PLUSII产生的向量文件(.vec)或仿真器通道文件(.scf)。也可直接在TCL控制台窗口输入激励信号。QuartusII的主要设计特性如下:基于模块的设计方法可提高工作效率。更快的集成IP,缩短设计时间。在设计周期的早期对I/O引脚进行分配和确认。存储器编译器可对AlteraFPGA中的嵌入式存储器进行轻松管理。支持CPLD、FPGA和基于HardCopy的ASIC。使用全新的命令行和脚本功能全自动化设计流程。高级教程帮助深入了解QuartusII的功能特性。另外,在使用QuartusII进行FPGA设计时,可以使用AlteraSignalTapII嵌入式逻辑分析仪对Altera部分系列的FPGA内部信号状态进行评估。因为SignaltapII是捕获实际的管脚逻辑值,储存在片内存储器中,并且通过下载线传给PC,所以是真实的输出。我们可以设置SingalTapII嵌入式逻辑分析仪的采样时钟,分配数据信号、选择触发类型和触发级数、触发位置。SignalTapII嵌入式逻辑分析仪的使用帮助设计者发现设计中存在问题的原因。QuartusII9.0里面的SOPCBuilder是一个自动化的系统开发工具,它能够极大地简化高性能SOPC的设计。该工具提供出一个直观的图形界面,用户通过图形界面简化系统的定义工作。SOPCBuilder不需要直接编写HDL代码来定义系统,极大地节约了开发时间。SOPCBuilder为每个元件提供向导,利用该想到能很容易定义元件功能。例如通过向导能够容易地在一个设计中加入Nios处理器、外设接口等。为了将微处理器核、外围设备、存储器和其他IP核相互连接起来,SOPCBuilder能够自生成片上总线和总线仲裁器等逻辑。SOPCBuilder在一个工具中实现了嵌入式系统方方面的开发,为利用SOPC技术提高电子系统性能、降低成本提供了有力的支持。2.2SOPC系统的设计流程2.2.1基于NiosII的SOPC系统开发流程基于NiosII的SOPC系统开发主要分为两部分:SOPC系统的定制、基于定制系统的软件开发,具体流程图如图2.5:[5]在采用NiosII处理器设计嵌入式系统时一般执行如下流程:分析系统需求说明,包括功能需求和性能要求等;建立QuartusII9.0工程,建立顶层实体;调用SOPCBuilder生成一个用户定制的系统模块(包括NiosII及标准外设模块);将SOPC系统模块集成到硬件工程中,并添加一些模块,可以使Altera公司提供的LPM模块、第三方提供的或用户自己定制的模块;在顶层实体中,将SOPC系统模块、Altera的LPM或用户自定义的模块连接起来;分配引脚和编译工程,分别生成系统的硬件配置文件.sof和.pof文件;下载工程,验证,将配置文件下载到开发板上进行验证;软件开发,开发可以使用IDE开发环境,也可以使用CommandShell;图2.5SOPC系统开发流程Fig.2.5SOPCsystemdevelopmentprocess编译软件工程,生成可执行文件.elf;调试程序,将硬件配置文件下载到开发板,将可执行文件下载到RAM,知道软硬件协同工作。在上面的过程中,用到的软件有QuartusII9.0和NiosIIIDE、ModleSim等,如果进行DSP的开发,还会用到Matlab和DSPBuilder。Quartus9.0用来建立硬件的系统,其中包括SOPCBuilder工具,它用来建立SOPC系统模块。软件开发使用NiosIISDKshell或NiosIIIDE,IDE开发环境采用图形化的开发环境,使用方便直观,而SDKshell采用命令窗口的方式进行横须的调试。在本系统中使用QuartusII9.0软件中SOPCBuilder功能将设计好的CPU(NiossII)模块和DDS信号发生器模块下载到cycloneII(EP2C35F484C8)FPGA器件中。CPU模块通过输出频率控制字和波形控制字来控制DDS信号发生器,最后将输出送到D/A转换器,经低通滤波器平滑得到所需信号,并采用NiosIIIDE进行编程开发实现频率可变,波形可选。所有软件开发任务都可以NiosIIIDE下完成,包括编辑、编译和调试程序。NiosIIIDE提供了一个统一的开发平台,用于所有NiosII处理器系统。仅仅通过一台PC机、一片Altera的FPGA以及一根JTAG下载电缆,软件开发人员就能够往NiosII处理器系统写入程序以及和NiosII处理器系统进行通讯。2.2.2Avalon总线概述图2.6Avalon交换架构Fig.2.6ExchangearchitectureoftheAvalon处理器与外设一般都是通过总线完成数据传输,NiosII也不例外。Avalon总线是Altera公司为SOPC系统开发的一种专用的内部连线技术,是一种理想的用于系统处理器和外设之间的内联总线。Avalon交换架构能进行多路数据同时处理,实现无与伦比的系统吞吐量。SOPCBuilder自动生成的Avalon交换架构针对系统处理器和外设的专用互联需求进行优化。传统总线架构中,单个总线仲裁器控制总线主机和从机之间的通信。每个总线主机发起总线控制请求,由总线仲裁器对某个主机授权接入总线。[6]Avalon交换架构同时多主机体系结构提高了系统的带宽,消除带宽瓶颈。采用Avalon交换架构,每个总线主机均有自己专用互联,总线主机只需要抢占共享从机,不是总线本身。每当系统加入模块或者外设接入优先权改变,SOPCBuilder利用最少FPGA资源,产生最佳的Avalon交换架构。2.3DDS信号发生器设计概述2.3.1系统设计方案本文使用理学院实验箱EI-EDA-VI,是Altera公司的CycloneⅡ的核心器件EP2C35F484C8,可嵌入CPU单元,有效避免了硬件电路设计的复杂性,所以采用FPGA方案,如图2.7所示图2.7FPGA+DAC实现DDS框图Fig.2.7FPGADDS+DACrealizeblockdiagram即CPU和DDS产生的数字信号输出之前部分全部由SOPCBuilder功能使用QuartusII9.0FPGA下载器下载到FPGA上,并对其进行编程控制来达到所需波形要求。其内部功能图如图2.8所示。[1]图2.8系统内部功能图Fig.2.8 Functionalblockdiagram2.4本章小结本章对SOPC系统开发软硬件流程进行了概要的介绍,开发环境、硬件、内部总线等。分析了基于NiosII控制的DDS信号发生器的总体设计,通过本章介绍对SOPC系统开发有了更进一步的了解,对DDS的设计有了初步构想。具体DDS模块的建立介绍在3章,CPU的设计在第4章。

3DDS信号发生器的设计基于NiosII控制的DDS信号发生器的设计重点部分在于DDS信号发生器的设计,本章详细介绍了一个DDS信号发生器的原理和建立,并仿真。3.1DDS信号发生器的原理3.1.1DDS信号发生器的原理概述DDS是一种直接把数字量形式的信号,经过D/A转换器转换成模拟量的信号合成技术。目前使用广泛的直接数字频率合成方式就是高速存储器作查询表,通过高速D/A转换器产生已经用数字形式存入存储器中的波形。[3]根据奈奎斯特取样定理,对于任意一个频率带宽为B的连续信号f(t),可以用一系列的离散的取样值f(t1).f(t1+T)f(t1+2T)来表示,T为采样周期。只要这样取样点的时间间隔小于1/2B,则这样的表示是完整的,包含着连续信号f(t)的全部信息。因此,对于一个周期的正弦波连续信号,可以沿其相位轴方向,以等量的相位间隔对其进行取样,得到一个周期的正弦波信号的离散相位幅值序列,然后通过一定的手段放到存储器中。每一个存储单元的地址即是相位取样地址,存储单元的内容即是已经量化了的正弦波幅值。这样的一个存储器就够成了一个与2π周期内相位取样相对应的正弦函数功能表,因为他存储的是一个周期的正弦波波形幅值,又称其为正弦波波形存储器。对于一个连续的正弦波信号,其角频率ω可以用相位斜率/表示。当角频率ω为一确定值时,其相位斜率也是一个确定值。此时,正弦波信号的相位与时间成线性关系,即=ω。根据这一基本关系,在一定频率的时钟信号作用下,通过一个线性的计数时序数列发生器所产生的取样地址对已得到的正弦波波形存储器进行循环扫描,进而周期性地读取波形存储器中的数据,其输出通过D/A转换器及低通滤波器就可以合成一个完整的、具有一定频率的正弦波信号了。DDS信号发生器原理如图3.1所示。[7]3.1.2DDS信号发生器的性能分析图3.1中fc是一个稳定的晶体振荡器,其作用在于提供DDS中各部件同步工作。相位累加器在fc的控制下以步长K做累加后输出N位二进制码,与相位控制字、波形控制字相加后作为波形ROM的寻址地址,对波形ROM进行寻址,波形ROM输出D位的幅度码经D/A转换器变换成阶梯波输出。经过LPF低通滤波处理,变成平滑的波。原理如图:图3.1DDS原理框图Fig.3.1DDSprincipleblockdiagram若采用计数容量为2N的相位累加器,由DDS的数学模型可知,DDS的输出频率满足:所以K=1时有最小输出频率,为随着K的增大,输出频率也变大,但是根据抽样定理,DDS理论上最大频率为[1]本设计中N位8位并对系统时钟(50MHz)进行了10分频,输出最小频率为19.5KHz,通过调整N的位数和分频倍数,可进行调节。而最大输出频率理论为2.5MHz,但是实际最大频率约为:即1.66MHz(K=85时)。3.2DDS信号发生器各模块设计及其VHDL实现见附录A。3.2.1分频器因为FPGA芯片中的系统时钟为50MHz,我们采用的是8位累加器。为了达到更精确的频率步进(K位8位二进制必须为整数,每一步进即K加1),为了使整体产生频率稍低,必须对输入时钟进行分频处理。其编程原理是首先设置一个寄存器存储分频倍数的的溢出值。本文中对系统时钟进行了10分频,因此设置寄存器值为5,上升沿到来时高电平计数1到5,然后低电平计数1到5就得到了10分频。因此设置不同的分频与倍频,在DA转换器性能可以达到的要求范围内,可以使产生波形的频率范围变化。器元件图标如图3.2。图3.2分频器元件图标Fig.3.2Prescalercomponentsicon3.2.2累加器累加器是由N位加法器和N位寄存器级联成的,每一个时钟脉冲fc。加法器将频率控制字K与寄存器输出的累加相位数据相加,把相加后的结果送至寄存器的数据输入端,寄存器将加法器在上一个时钟作用所产生的相位数据反馈到加法器输入端,使加法器在下一个时钟作用下进行相位累加。当相位累加器累加满产生溢出,就完成一个周期性的动作。累加器连接图如图3.3图3.3累加器元件图标Fig.3.3Accumulatorscomponentsicon3.2.3波形存储器用相位累加器输出8位数据作为波形存储器的取样地址,进行相位到幅度转换。N位的寻址ROM相当于把一个周期的波形离散成具有2N个样值的序列,若波形ROM有D位的数据位,则2N个样值的幅值以D位二进制数值固化在ROM中,按照地址的不同可以输出相应的波形幅值。[3]本设计采用8位二进制数值存储波形幅值,波形存储器采用Altera公司提供的IP和建立,以正弦波为例对存储器的建立进行说明如下:首先用C语言或生成28个正弦波数据,建立存储器初值设定文件(.mif文件),File→New→Memoryinitialization,得到空的存储器初值文件,将张显波数据复制到表,得到文件样如图3.4。图3.4存储器初值设定文件Fig.3.4Memoryinitialvaluesetfile(2)下一步加入只读存储器ROM元件。在元件选择窗口中选择MegaWizardPlug-lnManager设置正弦信号存储器,第三步添加生成的.mif文件。生成元件如图3.5。图3.5正弦波存储器元件图标Fig.3.5Sinewavememoryelementfigure在时钟的同步作用下,对输入控制字进行不同的设置,可得到正弦波存储器中不同间隔的正弦数值,仿真如下图3.6所示。图3.6正弦波存储器仿真图形Fig.3.6Sinewavememorysimulationdiagram同样的方法得三角波、锯齿波元件依次如图3.7。图3.7其他波形存储器生成元件图标Fig.3.7Otherwaveformmemoryformationcomponentsicon3.2.4波形改变CPU内核输出波形控制字对波形进行控制,因此波形选择模块只需完成简单的根据输入选择不同波形即可,当输入为00时输出正弦波,输入为01是输出三角波,输入为10时输出锯齿波。元件图标如图所示图3.8波形选择模块元件图标Fig.3.8Waveformchoosemodulecomponentsicon3.2.5DDS整体DDS顶层连接如图3.9所示。图3.9DDS模块整体连接图Fig.3.9DDSmodulewholeconnectiondiagram在时钟控制下,选择输入端进行不同的赋值,得到不同波形存储器的数值输出,仿真图如下图3.10所示图3.10DDS模块整体仿真图Fig.3.10ThewholesimulationdiagramDDSmodule3.3DDS信号发生器性能扩展可行性分析本文要实现基于NiosII控制的DDS信号发生器,实现频率可调,波形可调。这其中涉及到DDS的性能问题,如输出频率范围、波形样式等,下面对想到的问题进行分析。3.3.1DDS信号发生器的频率分析因实验条件等因素限制,我采用了对系统时钟进行10分频,波形存储器位数8位,频率控制字8位,从而完成的频率范围理论只有20KHz—5MHz,实际基本可达19.5KHz—1.6MHz的范围。据理论波形输出频率公式,同步时钟改变可以改变输出频率的范围,而累加器步长和波形存储器的容量都可以改变输出频率的精度(最小输出频率和频率分辨率),因此改变频分部分值可以改变频率的范围,增加累加器步长同时增大波形存储器容量可以提高输出频率精度。尽量提高相位累加器的字长可以获得较高的频率分辨率,一般设置为32位,但随着相位累加器寻址位的增加,波形存储器的容量以2幂增长。各种参考资料显示一般波形存储器都选用8到16位的宽度。因此整个DDS模块需要做一个折中,以提高频率分辨率减低波形存储器的容量,一般会采用相位截断技术,选用高几位作为寻址位,剩余的低位全舍弃不用。[3]3.4本章小结本章主要介绍了DDS信号发生器的设计,本部分在D/A转换之前是要全部下载到FPGA上的。本章详细介绍各个模块的生成和DDS信号发生器的原理,其中分频器的改变可以完全改变生成的频率范围,此部分有极大的灵活性,并可灵活扩展功能(例如升级成模拟信号调制与数字信号调制)。4基于NiosII控制的DDS信号发生器的硬件开发我们首先来介绍NiosII的硬件部分开发,所谓硬件开发就是用QuartusII9.0和SOPCbuilder来建立自己需要的软核,并将其下载到FPGA上。4.1建立工程首先,打开QuartusII9.0软件。建立一个工程File→NewProjectWizard点击Next,选择CycloneII(EP2C35F484C8)FPGA器件其他不需要修改,点击Finish。[8]4.2构建Nios软核接下来,进入了构建软核环节,点击Tools→SOPCBuilder(1)配置CPU模块Altera提供了三种类型,NiosII/e占用资源最少600-800LEs,功能最简单,速度最慢。NiosII/s占资源比前者多一些,功能也多,速度快一些NiosII/f占资源最多,功能最多,速度最快。具体比较如下表4.1。表4.1NiosII可定制标准Table4.1standardoftheNiosIIcustomizable特性NiosII/f(快速)NiosII/s(标准)NiosII/e(经济)说明针对最佳性能优化平衡性能和尺寸针对逻辑资源占用优化流水线6级5级无乘法器1周期3周期软件仿真实现支路预测动态静态无指令缓冲可设置可设置无数据缓冲可设置无无定制指令256256256选择的时候要根据你的需求和你的芯片资源来决定。在返里,我选择NiosII/e,功能和速度都可以得到满足。下面的ResetVector是复位后启动时的Memory类型和偏移量,ExceptionVector是异常情况时的Memory类型和偏移量。现在不能配置,需要SDRAM和FLASH设置好以后才能修改这里。设置JTAGDebugModule,即JTAG调试时所用到的功能模块。功能越多,需要资源越多,返里,我们选择Level1即可,不需要过多其他功能图4.1SOPCBuilderFig.4.1SOPCBuilder(2)在理学院SdramCpu工程添加输入端口和两个输出端口用来控制波形变换,频率变换。图4.3输入输出端口Fig.4.3I/Oport(3)配置SDRAM控制器内核在Presets中选择第一项Custom,Bits中选择16,其他不动,Next→Finish,完成SDRAM控制器的设置。在这里选16位,因为我们用的SDRAM(HY57V641620)是16位的。[8]图4.2SDRAM模坑Fig.4.2SDRAMmouldpit(4)建立EPCS和SystemIDEPCS是一种串行Flash,因此EPCS可以作为配置芯片单独存储配置文件,这是主要作用,也可以替代并行的Flash存储程序,但必须使用存储器配置文件的剩余空间。SystemID是一种标示符,类似校验的东西,在下载程序之前或者重启之后,都会对它进行检验,以防止Quartus和Nios程序版本不一致的错误。图4.4配置的软核Fig.4.4Configurationofthesoft-core(5)建立JTAGUARTJTAGUART是实现PC和NiosII系统间串行通信接口,它用字符输入输出,在NiosII的开发调试过程中扮演了重要角色。如图4.5所示(6)配置及编译NiosII我们需要对cpu进行设置一下,双击cpu,ResetVector处的Memeory选择cfi_flash,ExceptioniVector选择SDRAM,我们需要对FLASH地址进行锁定,因为FLASH是系统重启后的起始位置,保证FLASH的起始地址为0x00000000,这样做的好处是利于我们操作。最后一步设置是对地址自动分配和对寄存器自动分配,这样做是为了不浪费空间,点击SYSTEM→Auto-assignBasicAddresses,SYSTEM→Auto-IRQs。系统进行编译,生成系统,如图4.5。图4.5系统生成Fig.4.5Systemgenerates在block界面双击添加,可得到生成的CPU,在Project里面,如图4.6所示。4.3连接DDS信号发生器部分将上一步构建的Nios软核输出的频率控制字与DDS信号发生器频率控制字连接,波形控制字与波形选择连接。图4.6生成的CPUFig.4.6GeneratedCPU4.4分配管脚和设置引脚将4.3生成的连接图,添加各个输入输出端口,并分别进行命名,为分配引脚做准备,这一步作用就是生成管脚。[9]接下来就要开始分配引脚了,在这一步之前我们首先要明白我们所用的FPGA芯片上个端口的对应地址,参看实验指导书,本设计通过试验箱上IO9—IO16作为DDS数字输出连接D/A转换器。试验箱板子上有四个小按钮作为频率控制和波形控制的输入。[10]图4.7引脚设定Fig.4.7Pinset分配引脚有两种方法,我觉得比较好的一种,就是选择Assignments→Pins,开始对各输入输出等引脚进行分配,如图4.7所示。此时就会发现各个端口有了固定的地址,如下图4.8所示。这种方法当然也可以生成引脚文件,即Project→GenerateTclFileForProject。图4.8硬件整体连接图Fig.4.8Overallthehardwareconnectiondiagram图4.9编译结果Fig.4.9Compileresults图4.10编程器下载的界面Fig.4.10Programmerinterface4.5本章小结本章介绍基于NiosII控制的DDS信号发生器的硬件设计概述,对CPU内核的建立进行了详细的说明,每一部分的添加都有很多的参数需要设置,有部分直接默认就是可以的。其中个引脚的设定是比较困难的,可参考配套实验书。

5基于NiosII控制的DDS信号发生器的软件设计SOPC系统,不仅仅依赖于系统硬件的设计,而且还需要配套软件进行管理,本系统软件采用NiosIIIDE进行开发,实现DDS模块的控制和键盘信息的的处理。本章介绍了软件构造和论文产生的结果。5.1软件整体架构根据功能设计需要,本程序需完成波形切换、频率可变的操作,软件流程图如图5.1。图5.1软件流程图Fig.5.1softwareflowchart软件主题包括初始化、设定波形、设定频率3部分。初始化时,将波形设定为正弦波,频率控制字设定为1;小板子上四个按键,左边两个控制频率,另外两个控制波形。5.2软件操作流程本设计中采用NiosIIIDE进行开发,使用C语言编写程序。下面介绍开发的详细过程:(1)建立软件工程将NiosIIIDE9.0软件打开,打开后如图5.2,选择硬件部分生产成的CPU,工程建好以后右键点击工程名选择SystemLibraryProperties,进行进一步配置一定要对存储器的使用进行合理分配。[11]图5.2建立NiosIIIDE工程文件Fig.5.2EstablishNiosIIIDEengineeringdocuments(2)工程模板的编译工程建立设置完成后,我们正式进入NiosIIIDE的界面了,现有HelloNiosII简单程序,现就其BuildProject,若两者匹配,各方面正确会得到如下图5.3所示的结果图5.3编译HelloNiosII结果Fig.5.3HelloNiosIIresultscompiled(3)软件编译接下来开始编译,第一次的编译时间比较长,因为编译过程中会生成一个重要的文件system.h,这个文件是根据我们的NiosII软核产生的,system.h的内容与软核的模块一一对应。如果软核发生发化,就需要重新编译,重新产生system.h文件。而后右键选择所建NiosIIIDE工程选择RunAs→NiosII Hardware,运行程序,结果如图5.4。[m]图5.4运行程序Fig.5.4Toruntheprogramresults5.3所得结果及分析因为直接输出的数字量,我先使用嵌入式逻辑分析仪来进行系统输出测试。[12][13]5.3.1频率变化以正弦波输出为例:图5.5为初始状态下,图5.6和图5.7均为提高频率以后的波形。据以上三个不同频率的波形分析可得,因为仿真为数字信号输出,随着频率的增大波形看到了明显的不连续性,是因为取样数减小了。通过仿真看到DDS信号发生器的稳定性,频率的变化并不会引起信号的不稳定。图5.5初始状态下正弦波Fig.5.5Theinitialstatesinewave图5.6提高频率的正弦波Fig.5.6Raisethefrequencysinewave图5.7再次提高频率的正弦波Fig.5.7Onceagainraisefrequencysinewave5.3.2波形变换如下图5.8-5.10所示为进行DDS信号发生器的波形变换输出,波形变换只需按键简单控制,切换所需输出即可,又可以看出DDS的灵活性,如将ROM改成RAM存储读取数据,更减小了所需内存,增强了波形变换的灵活性。[14]图5.9锯齿波仿真Fig.5.9Toothwavesimulation图5.10三角波仿真Fig.5.10Trianglewavesimulation5.3.4结果分析及优化方案毕业设计要求的功能基本上能够实现,但是实验也存在一些不足。因为频率控制字和ROM的位数都比较低,所以达得的精度比较低,频率以19KHz的速度增长。因为我设计的ROM位数以及频率控制字字长的限制,累加器步长增长以后达到更高的精度我们就有条件设计需要的频率,比如以0.5KHz为最小精度,根据设定自己所需的频率。希望以后的方案有条件的话,在精度和分辨率上进行必要的优化,不过还是合适的是最好的。5.4本章小结至此,我们完成预期的基于NiosII控制的DDS信号发生器的功能。本章通过分析总体C语言控制流程,进行C语言编程,NiosIIIDE使用详细流程介绍,最终显示了结果。当然真正的基于NiosII控制的DDS信号发生器的功能更强大的,要更多功能的扩展和延伸,我还需要在此基础上进行深层次的研究和学习。

6总结与展望6.1总结主要展开的工作以及取得的成果有:(1)收集、阅读及分析了有关SOPC系统设计和DDS信号发生器的文献资料,DDS信号发生器的发展和国内外研究现状有了解和认识。(2)研究了DDS信号发生器的原理、特点、实现过程和以及改进措施。(3)对SOPC系统开发进行了全方面的分析、研究、实践。(4)从单独的DDS信号发生器的仿真,到嵌入式逻辑分析仪的系统测试,每一步都努力达到设计预期目标。6.2展望大规模集成电路以及FPGA的高速发展,因为DDS信号发生器应用广泛,基于FPGA器件的DDS信号发生器发展成果不错,但是仍带来很多需要解决的问题,比如为了高分辨率和存储器相对小地中和而产生的相位截断;产生任意波形、任意频率还是有一定的限制。DDS在大部分操作中使用数字电路,提供了数字操作拥有的许多优势。由于信号只在合成的最后阶段转换到模拟信号,提高了函数发生器的稳定性。现代通信技术、电子、微电子技术的发展,对信号发生器提出了更高的要求。除对信号频率范围、带宽和频率分辨率的严格限制外,对信号波型及调制特性也有着苛刻规定。研究开发具有更高性价比的信号发生器是当前和今后一段时间内急需解决的课题。若能充分利用FPGA强大的数据运算处理能力以及编程灵活、运行速率快等各种优点,合理整合IP核资源和更好地利用SOPC技术,一定可以设计出性能更加出色的信号发生器[15]。致谢毕业设计能够得以顺利完成,真的要感谢所有指导过我的老师、同学,在这里对他们表示深深的谢意!要特别感谢我的指导老师——周越老师。每次遇到问题,周老师总是不厌其烦的帮我讲解,从老师那里也让我学到的不只是知识,更是一丝不苟的态度。当我感觉时间紧急来不及完成我的毕业设计的时候,也是周越老师跟我做思想工作,让我相信自己的能力,我开始耐心地去看那些对于我来说是天书的书,很多的不明白,还是周越老师得醍醐灌顶。最终让我完成了我的毕业设计,从中感觉到了不仅是知识的增加更是个人能力的提高。老师高度的敬业精神令我心悦诚服。而周越老师的分析过程,细微的掌握之处让我震惊,极高的科研能力令人折服。在此,对我的指导老师周越老师真诚的道一声:“老师您辛苦了,感谢您!”我还要感谢理学院全体老师对我的教育培养,是他们教会我做人,让我成为一个合格的大学生,在此由衷的感谢各位老师!最后,我要感谢养育我的父母,定会回报你们的养育之恩!四年的大学的生活就此结束,最后由衷的感谢母校——北京林业大学!我爱这里,不想离开。

参考文献[1]侯建军,郭勇.SOPC技术基础教程[M].北京:清华大学出版社,2008:1-55.[2]王晨,基于DDS的高精度任意波形发生器设计[J]电子科技大学,2010,23(7):60-65[3]刘铁新,高俊法.DDS输出品皮特点及改善方法[J].陕西天文台台刊,1999,6:1-22.[4]LiZhuo,ChenZhiliang.VerificationandautotestforLCDdriver/controller[M]2003.[5]肖铁军,黄建文.数字电路逻辑测试系统中的测试生成[J].江苏工学院学报,1993,14(6):67-72.[6]IGonzalez;FJGomezArribasCipheringalgorithmsinMicroBlaze-basedembeddedsystems[J]2006(02).[7]赫建国,倪德克,郑燕.基于NiosII内核的FPGA电路系统设计[M].电子工业出版社.2010,1(4):87-94.[8]TexasInstrumentsCorporation.TLV5580Datasheet[A].[9]AlteraCorporation.QuickStartGuideforQuartusⅡSoftware.2006.[10]李越,苏杰,宋凯.基于FPGA和EPP的芯片测试电路设计[J].无线电工程,2008,38(4):10-12.[11]AlteraCorporation.NiosⅡIEDHelpSystem.2006.[12]彭澄廉.挑战SOC—基于Nios的SOPC设计与实践[M].清华大学出版社,2004.7.[13]郭书军,王玉花,葛纫秋.嵌入式处理器原理及应用——Nios系统设计和C语言编程[M].北京:清华大学出版社,2004.[14]郭勇.SOPC技术及运用[EB/OL]./html/09-01/415519050917eGki.shtml.[15]罗毅.基于FPGA和单片机的DDS信号发生器的设计[D]电子科技大学,2012,3附录附录ADDS信号发生器各模块VHDL语言部分(1)频分--10fenpinarchitecturebehavoffenpinissignalcount:STD_LOGIC_VECTOR(2DOWNTO0);signalclk_temp:STD_LOGIC;beginprocess(clk)begin if(clk'eventandclk='1')then if(count="100")THEN count<="000"; clk_temp<=notclk_temp; else count<=count+1; endif; endif; endprocess; k_clk<=clk_temp;endbehav;寄存器architecturebehavofjicunqiisbeginprocess(Load,DIN)begin ifLoad'EVENTANDLoad='1'THEN DOUT<=DIN; endif;endprocess;endbehav;波形选择器architecturebehavofxuanzeisbegin process(s,clk) BEGIN ifclk'eventandclk='1'then ifs="00"then z<=A; elseifs="01"then z<=B; elseifs="10"then z<=C; ENDIF; ENDIF; ENDIF; endif; ENDPROCESS;endbehav;附录B工程源程序#include"sys/alt_irq.h"#include"stdio.h"#include"stdlib.h"#include"string.h"#include"system.h"#include"unistd.h"#include"alt_types.h"#include"altera_avalon_pio_regs.h"#include<io.h>#include"altera_avalon_timer_regs.h"volatilealt_u8data;volatilealt_u8box;unsignedchars[4][7]={"正弦","三角","锯齿"};unsignedcharAC_TABLE[]={0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,//第一行汉字位置0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,//第二行汉字位置0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,//第三行汉字位置0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,//第四行汉字位置};voidudelay(alt_u8us){alt_u8i;while(us--)for(i=1;i<=1;i++);}//串口发送一个字节voidSendByte(unsignedcharDbyte){unsignedchari,tmp_byte=Dbyte;for(i=0;i<8;i++){IOWR(E_BASE,0,0x00);IOWR(RW_BASE,1,0x01);IOWR(RW_BASE,0,(tmp_byte>>(7-i)));IOWR(E_BASE,0,0x01);IOWR(E_BASE,0,0x00);}}//串口接收一个字节//仅在读取数据的时候用到//而读出的数据是一次只能读出4bit的unsignedcharReceiveByte(void){unsignedchari,temp1,temp2,tmp_recv=0x00;temp1=temp2=0;for(i=0;i<8;i++){temp1=temp1<<1;IOWR(E_BASE,0,0x00);IOWR(E_BASE,0,0x01);IOWR(E_BASE,0,0x00);IOWR(RW_BASE,1,0x00);tmp_recv=IORD(RW_BASE,0)&0x01;if(tmp_recv)temp1++;}for(i=0;i<8;i++){temp2=temp2<<1;IOWR(E_BASE,0,0x00);IOWR(E_BASE,0,0x01);IOWR(E_BASE,0,0x00);IOWR(RW_BASE,1,0x00);tmp_recv=IORD(RW_BASE,0)&0x01;if(tmp_recv)temp2++;}return((0xf0&temp1)+(0x0f&temp2));}voidCheckBusy(void){doSendByte(0xfc);//11111,RW(1),RS(0),0while(0x80&ReceiveByte());//BF(.7)=1Busy}voidWriteCommand(unsignedcharCbyte){IOWR(RS_BASE,0,0x01);SendByte(0xf8);//11111,RW(0),RS(0),0SendByte(0xf0&Cbyte);//高四位SendByte(0xf0&Cbyte<<4);//低四位(先执行<;<;)IOWR(RS_BASE,0,0x00);}voidWriteData(unsignedcharDbyte){IOWR(RS_BASE,0,0x01);udelay(1);usleep(100);CheckBusy();SendByte(0xfa);//11111,RW(0),RS(1),0SendByte(0xf0&Dbyte);//高四位SendByte(0xf0&Dbyte<<4);//低四位(先执行<;<;)IOWR(RS_BASE,0,0x00);udelay(2);}voidLcmInit(void){WriteCommand(0x30);//8BitMCU,基本指令集合WriteCommand(0x03);//AC归0,不改变DDRAM内容WriteCommand(0x0C);//显示ON,游标OFF,游标位反白OFFWriteCommand(0x01);//清屏,AC归0Write

温馨提示

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

评论

0/150

提交评论