基于FPGA的DDS应用毕业论文.doc
基于FPGA的DDS应用摘 要随着我国经济和科技的发展,对相应的测试仪器和测试手段也提出了更高的要求,信号发生器己成为测试仪器中至关重要的一类,因此开发信号发生器具有重大意义。但传统的信号发生器大多采用专用芯片或单片机或模拟电路,成本高或控制方式不灵活或波形种类较少等不能满足要求。本课题的目的是研究函数信号发生器的设计方法,克服传统方法的缺点,以更好的方法设计出比较复杂的调频、调幅功能的信号发生器。本文采用直接数字合成(DDS)技术,以现场可编程门阵列(FPGA)作为硬件基础,设计函数信号发生器,直接数字频率合成(DDS)就是先将所需要产生的信号波形的一个周期的若干个样点的的二进制信息存储在波形存储器中,再通过硬件电路依次从波形存储器中读取出来。经数/模转换以及滤波后得到所需信号的波形,他的查表合成波形的方法可以满足产生任意波形的要求。关键词: 直接数字合成;现场可编程门阵列;数/模转换器; Abstract: Along with our country economy and the technical development, the paraphrase should the measuring instrument and the test method also proposed a higher request, signal generating device oneself becomes in the measuring instrument a very important kind, therefore the development signal generating device has the great significance.But the traditional signal generating device mostly uses the special-purpose chip either the monolithic integrated circuit or the analogous circuit, the cost high either the control mode not nimble or the profile type few and so on cannot satisfy the request. This topic goal is studies the function signal generating device the design method, the victory tradition method shortcoming, by better methods design quite complex frequency modulation, amplitude modulation function signal generating device.This article uses the Direct Digital synthesis the (DDS) technology, by scene programmable gate array (FPGA) took the hardware foundation, the design function signal generating device, the direct digital frequency synthesizes a waveform cycle certain type spot which (DDS) will be needs to produce first the binary message will save in the profile memory, then in turn will read through the hardware electric circuit from the profile memory.Obtains after the number/mold transformation as well as the filter needs the signal the profile, his table look-up synthetic waveform method may have the random profile request satisfiedly. 目录绪论5第一章 DDS的设计基础与实现工具5第二章 基于FPGA的DDS设计92.2 LM358的功能及介绍102.3 D/A转换及运放的实验原理图102.6 EP1C3T100C8芯片112.7 EP1C3T100C8核心电路电源电路122.8 原理图见附录B12第三章 QUARTUS II简介133.1 Quartus II优点133.2 Quartus II软件9.1的其他特性:13第四章 FPGA的介绍、工作原理、优势144.1 FPGA简介144.2 FPGA的基本特点144.3 FPGA的配置模式144.4 FPGA和CPLD的区别164.5 FPGA的工作原理174.6 FPGA的优势18第五章 产生正弦波形的设计及程序195.1 正弦波形指南195.1.1. 工程创建195.1.2. 正弦信号发生器顶层模块的设计195.1.3. 定制ROM存储正弦波形数据195.1.4 编译综合205.1.5 仿真205.1.6 管脚分配215.1.7 硬件设置下载215.2 VHDL程序22第六章 总结24致谢25参考文献26附录27附录A 元件清单27附录B 原理图28附录C 波形图291.输入波形。292.滤波前的波形293.滤波后的波形29附录D 实物图30连接板30D/A转换及运放电路板30EP1C3T100C8N核心板30绪论电子技术的飞速发展,现代测量工具对信号源的要求越来越高,不仅要求产生正弦波、方波、三角波、锯齿波等标准波形,还要求产生自己所需的任意波形,对波形的频率,相位改变的要求也越来越高。可见,为了适应现代电子技的发展和市场要求,对信号源的研究还是十分的必要,而且意义重大。 直接的数字频率合成(DDS)是19世纪70年代初提出的一种全新数字频率合成技术,其查表合成波形的方法可以满足产生任意波形的要求,现场可编程门阵列(FPGA)具有高集成度、高速度、高容量存储功能的特点,能够有效的实现DDS技术,大大的缩短开发周期,符合设计的要求。 接数字频率合成(Direct Digital Frequency Synthesis)是一种以奈奎斯特采样定理及数字信号处理为基础,从相位概念出发的全数字频率合成方法。实现DDS 功能可用专用的DDS芯片,也可利用高性能的现场可编程门阵列(Field Programmable Gate Array)。与前者相比,后者具有设计简单,开发灵活,应用成本低等优点。本文以FPGA 为基础,设计DDS 信号发生器。设计目标:输出频率范围1Hz1MHz,频率可调,输出频率精度大于0.1%,输出频率峰峰值为5V。 第一章 DDS的设计基础与实现工具1.1 DDS概述直接数字合成技术(Direet Digital Synthesis,简称DDS)是建立在采样定理基础上,首先对需要产生的波形进行采样,将采样值数字化后存入存储器作为查找表,然后通过查表读取数据,再经DA转换器转换为模拟量,将保存的波形重新合成出来。除了滤波器(LPF)之外,DDS系统都是以数字集成电路实现,因此DDS系统易于集成和小型化。DDS系统的参考时钟源通常是一个具有高稳定性的晶体振荡器,整个系统的各个组成部分提供同步时钟。频率字(FSW)实际上是相位增量值(二进制编码),作为相位累加器的累加值。相位累加器在每一个参考时钟脉冲输入时,累加一次频率字,其输出相应增加一个步长的相位增量。由于相位累加器的输出连接在波形存储器(ROM)的地址线上,因此其输出的改变就相当于查表。这样就可把存储在波形存储器内的波形抽样值(二进制编码)经查找表查出。ROM的输出送到DA转换器,经DA转换器转换成模拟量输出。1.2 DDS的基本参数及其计算在系统时钟脉冲的作用下,相位累加器不停累加,即不停查表,把波形数据送到DA转换器转换成模拟量输出,从而合成波形。滤波器则进一步平滑DA转换器输出的近似正弦波的锯齿阶梯波,同时衰减不必要的杂散信号。设频率字(FSW)的值为d,系统时钟频率为f,相位累加器的字长为N,则系统的输出频率为:基于DDS技术的任意波形发生器主要由微处理器控制模块、键盘与显示模块、DDS通道的FPGA实现模块、DA转换模块以及滤波器模块组成。同时片外扩展了4 KB程序存储器SRAM和6 KB数据存储器ROM,分别用于存储波形抽样数据和3种标准输出波形抽样数据。1.3 DDS通道的FPGA实现模块该模块设计是DDS信号合成的关键部分,主要由相位累加器、地址总线控制器、数据总线控制器与SRAM组成。其中,除了SRAM外,其余3个模块都由FPGA实现。相位累加器是整个DDS系统的关键,直接影响整个系统的功能。图5给出的FPGA结构框图中相位累加器实质上是一个带反馈的29位加法器,它把输出数据作为反馈数据和由微处理器送来的频率控制字连续相加,从而产生有规律的29位相位地址码。设计中采用流水线技术实现29位加法。当输入所需频率时,转换成频率控制字来驱动FPGA工作,从而产生所需波形频率。整个模块设计过程使用FPGA的开发软件实现并进行仿真。1.4 DA转换模块DA转换器是DDS系统的核心器件,其速度和特性直接影响整个系统的性能。从建立时间、尖峰脉冲能量、位数和积分线性等四个方面选择DA转换器。因为DDS系统的工作频率一般都很高,因此首先应选用高速DA转换器。其次是考虑信噪比问题,增大DA转换器的位数,可减小电压幅值量化误差,增大信噪比,因此,采用了12位的DA转换器。1.5 滤波器模块滤波器分为两组:一组是椭圆函数滤波器,用于正弦波的滤波;另一组是线性滤波器,用于其他标准波形的滤波。1.6 DDS的性能指标1.频率分辨率对于频率合成方式的DDS,只要是累加器的位数足够多,理论上可以达到任意无限高的频率分辨率。由式(1),若N=39,fclk=1,分辨率可达到0000 18 Hz。但是对于直读方式,分辨率是受到硬件DA速度限制的,一般如果用四倍的频率速度采集和恢复,分辨率只能达到O25 Hz。2.SFDR最常用的评价DDS工作性能的参数是带外抑制比(SFdR),它是指有效信号的频谱幅度与噪声频谱幅度的最大值之差。实际的频谱合成方式的DDS在累加器的输出和查找表之间还有个相位折断的过程。若累加器的输出A为N位,查找表的输入B为M位,一般情况下N>M,这是为了节约查找表的空间。正是由于这种相位折断才降低了SFDR,使得DDS的性能变坏。以上参数都是可以根据实际的要求估算出来的,例如要产生一个4 MHz、分辨率为O4 Hz、带外抑制比为60 dB的正弦信号,时钟频率为100 MHz。那么根据式(2),可以得到N=11;根据实际经验,查找表的每位可以产生6 dB的抑制比,所M=606=10 b。由于直接读取法DDS不存在相位折断的问题,所以往往能得到比较好的SFDR。3.信噪比由于SFDR只与最大噪声的频谱幅度有关,所以相同的SFDR可能有不同的频谱纯度,为此引入了另外一个DDS的性能指标信噪比(SNR )。信噪比是指信号功率和噪声功率之比,由于涉及到所有的噪声,所以跟频谱纯度息息相关,对于频率分辨率高的DDS,噪声的能量较低,信噪比较大,频谱纯度好。第二章 基于FPGA的DDS设计2.1 DAC0832的基本功能及介绍DAC0832是一个8位D/A转换器芯片,单电源供电,从+5V+15V均可正常工作,基准电压的范围为±10V,电流建立时间为1µs,CMOS工艺,低功耗20mm。其内部结构如图9.1所示,它由1个8位输入寄存器、1个8位DAC寄存器和1个8位D/A转换器组成和引脚排列。DAC0832D/A转换器为20引脚双列直插式封装,各引脚含义如下:(1)DI7DI0转换数据输入。(2)CS片选信号(输入),低电平有效。(3)ILE数据锁存允许信号(输入),高电平有效。(4)WR1第一信号(输入),低电平有效。该信号与ILE 信号共同控制输入寄存器是数据直通方式还是数据锁存方式:当ILE=1和XFER=0时,为输入寄存器直通方式;当ILE=1和WR1 =1时,为输入寄存器锁存方式。(5) WR2 第2写信号(输入),低电平有效.该信号与信号合在一起控制DAC寄存器是数据直通方式还是数据锁存方式:当 WR2=0和XFER=0时,为DAC寄存器直通方式; 当WR2=1和XFER=0时,为DAC寄存器锁存方式。 (6)XFER数据传送控制信号(输入),低电平有效 。 (7)Iout2电流输出“1”。当数据为全“1”时,输出电流最大;为全“0”时输出电流最小。(8)Iout2电流输出“2”。DAC转换器的特性之一是:Iout1 +Iout2=常数。(9)Rfb反馈电阻端既运算放大器的反馈电阻端,电阻(15K)已固化在芯片中。因为DAC0832是电流输出型D/A转换器,为得到电压的转换输出,使用时需在两个电流输出端接运算放大器,Rfb 即为运算放大器的反馈电阻,运算放大器的接法如图9.3所示。(10)Vref基准电压,是外加高精度电压源,与芯片内的电 阻网络相连接,该电压可正可负,范围为-10V+10V.(11)DGND数字地(12)AGND模拟地2.2 LM358的功能及介绍 LM358LM358 内部包括有两个独立的、高增益、内部频率补偿的双运算放大器,适合于电源电压范围很宽的单电源使用,也适用于双电源工作模式,在推荐的工作条件下,电源电流与电源电压无关。它的使用范围包括传感放大器、直流增益模块和其他所有可用单电源供电的使用运算放大器的场合。2.3 D/A转换及运放的实验原理图 DAC0832是电源输出型D/A转换器,加上LM358双电源运放将电流转换成电压,从而由DAC0832的第9管脚输出模拟的正弦波形。如附录C。2.4 调幅电路通过电位器R47调节基准电压,从而改变波形的幅度。电压在03v之间变化。2.5 RC滤波电路 截止频率f=30khz,取R=1KHZ,根据公式f=1/(2*Pi*R*C),则电容C=5.2Nf。2.6 EP1C3T100C8芯片2.7 EP1C3T100C8核心电路电源电路此电源电路输入5v电源,输出3.3v和1.5v。2.8 原理图见附录B第三章 QUARTUS II简介Altera公司推出新版QuartusII软件9.1,用于CPLD、FPGA和HardCopy ASIC设计。与以前的软件版本相比,Quartus II软件9.1新特性和增强功能将编译时间缩短了20,编译时间比竞争高密度40-nm和65-nm设计仍然快2到3倍。软件新特性是快速重新编译,对于较小的设计改动,这一特性大大缩短了编译时间,而且还支持Altera最新发布的CycloneIV FPGA。3.1 Quartus II优点1. 新的快速重新编译(Rapid Recompile)实现了更快的设计迭代快速重新编译新特性使Quartus II软件能够进一步缩短设计编译时间。运行全编译之后,快速重新编译特性支持更快的ECO设计小改动,提高了效能,与再次运行设计全编译相比,编译时间平均缩短了50。在时序逼近过程中,快速重新编译保留上次设计改动期间的关键时序,明显提高了效率。2. 新的并行综合功能,更快的多处理器支持Quartus II软件在多处理器支持上具有领先优势,是唯一能够在综合、布局布线、静态时序分析和汇编等所有设计阶段进行并行处理的FPGA设计软件。Quartus II软件将编译时间平均缩短了20。在9.1版中,新的并行综合支持大大缩短了分区设计的综合时间。3. 更快的时序驱动综合时序驱动综合在进行综合的同时注意时序约束,从而提高了设计性能。9.1版具有增强时序驱动综合特性,比前一版软件编译时间缩短10,更快的达到时序逼近,提高了设计性能。4. 增强渐进式编译(Incremental compile)设计中的一个或者两个关键模块一般在时序逼近上最耗时。采用渐进式编译特性,您只对关键模块进行修改和编译,直至达到时序逼近。相对于普通编译,这种方法使您能够将编译时间缩短70。9.1版能够更灵活的达到时序逼近,优化分区设计。对器件支持的改变3.2 Quartus II软件9.1的其他特性:渐进式编译非矩形分区非矩形区域使用户能够建立更紧凑、更高效的平面布局,更容易实现高质量标准。这一新特性为用户提供了更简单方便的介面,在设计划分过程中进行精确控制。增强SSN分析器工具这一工具增加了对Arria II GX FPGA和Stratix IV GX FPGA的支持,在引脚分配期间,及时反馈可能出现的同时开关噪声(SSN)违规问题。Altera, QuartusII, 软件第四章 FPGA的介绍、工作原理、优势4.1 FPGA简介FPGA是英文FieldProgrammable Gate Array的缩写,即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。 FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个新概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。4.2 FPGA的基本特点1)采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。2)FPGA可做其它全定制或半定制ASIC电路的中试样片。 3)FPGA内部有丰富的触发器和IO引脚。 4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。 5) FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。 4.3 FPGA的配置模式FPGA的配置与编程都是通过软件设计与仿真验证的功能写入实际的FPGA中才能完成的。所以,PFGA需要通过配置才能实现所需要的功能。Cyclone器件的配置数据存储在SRAM单元中,由于SRAM是易失性的存储器,因此Cyclone器件上电后,外部电路需要将配置数据重新下载到SRAM器件的单元中。在期间配置完成后,内部的寄存器以及I/O管脚必须先进性初始化,然后才会按照用户设计功能正常工作。Cyclone器件的配置方式有三种主穿行(AS)方式,被动串行方式(PS)方式和JTAG方式。本系统使用AS方式和JTAG方式。主串行方式AS只能够与Altera公司提供的制动主动配置芯片(EPCS系列)配置使用,而且只有在STRATIX系列和Cyclone系列的器件中支持。AS方式在FPGA主动方式下,有目标FPGA来主动输出控制和同步信号(包括配置时钟)给Altera专用的配置芯片(EPSCS1和EPCS4等)在芯片收到命令后就把配置数据发给FPGA,完成配置过程。AS配置方式比较简单,只需要DATA,DCLK,NCS。ASDI四条线与船型芯片连接即可。AS配置边界扫描方式(Joint Test Action Group,JTAG)是1 990年被IEEE批准为IEEEll4911990测试访问端口和边界扫描结构标准,主要用于芯片内部测试。现在多数的高级器件都支持JTAG协议,如DSP、FPGA器件等。JTAG方式是所有配置方式中优先级最高的一种,JTAG配置方式支持菊花链方式,可以级联多片FPGA,功能比较强大。JTAG引脚的定义为:TCK为测试时钟输入;TDI为测试数据输入,数据通过TDI引脚输入JTAG接口;TDO为测试数据输出,数据通过TDO引脚从JTAG接口输出;TMS为测试模式选择,TMS用来设置JTAG接口处于某种特定的测试模式;TRST为测试复位,输入引脚,低电平有效。 JTAG配置4.4 FPGA和CPLD的区别FPGA基于SRAM的架构,集成度高,以LE(包括查找表、触发器及其他)为基本单元,有内嵌Memory、DSP等,支持IO标准丰富。具有易挥发性,需要有上电加载过程。在实现复杂算法、队列调度、数据处理、高性能设计、大容量缓存设计等领域中有广泛应用。 CPLD基于EEPROM工艺,集成度低,以MicroCell(包括组合部分与寄存器)为基本单元。具有非挥发特性,可以重复写入。在粘合逻辑、地址译码、简单控制、FPGA加载等设计中有广泛应用,如Altera MAX3000A系列。 详细比较:尽管FPGA和CPLD都是可编程ASIC器件,有很多共同特点,但由于CPLD和FPGA结构上的差异,具有各自的特点:CPLD更适合完成各种算法和组合逻辑,FP GA更适合于完成时序逻辑。换句话说,FPGA更适合于触发器丰富的结构,而CPLD更适合于触发器有限而乘积项丰富的结构。CPLD的连续式布线结构决定了它的时序延迟是均匀的和可预测的,而FPGA的分段式布线结构决定了其延迟的不可预测性。在编程上FPGA比CPLD具有更大的灵活性。CPLD通过修改具有固定内连电路的逻辑功能来编程,FPGA主要通过改变内部连线的布线来编程;FP GA可在逻辑门下编程,而CPLD是在逻辑块下编程。FPGA的集成度比CPLD高,具有更复杂的布线结构和逻辑实现。CPLD比FPGA使用起来更方便。CPLD的编程采用E2PROM或FASTFLASH技术,无需外部存储器芯片,使用简单。而FPGA的编程信息需存放在外部存储器上,使用方法复杂。CPLD的速度比FPGA快,并且具有较大的时间可预测性。这是由于FPGA是门级编程,并且CLB之间采用分布式互联,而CPLD是逻辑块级编程,并且其逻辑块之间的互联是集总式的。在编程方式上,CPLD主要是基于E2PROM或FLASH存储器编程,编程次数可达1万次,优点是系统断电时编程信息也不丢失。CPLD又可分为在编程器上编程和在系统编程两类。FPGA大部分是基于SRAM编程,编程信息在系统断电时丢失,每次上电时,需从器件外部将编程数据重新写入SRAM中。其优点是可以编程任意次,可在工作中快速编程,从而实现板级和系统级的动态配置。CPLD保密性好,FPGA保密性差。一般情况下,CPLD的功耗要比FPGA大,且集成度越高越明显。4.5 FPGA的工作原理FPGA是在PAL、GAL、EPLD、CPLD等可编程器件的基础上进一步发展的产物。它是作为ASIC领域中的一种半定制电路而出现的,即解决了定制电路的不足,又克服了原有可编程器件门电路有限的缺点。根据数字电路的基本知识可以知道,对于一个n输入的逻辑运算,不管是与或非运算还是异或运算等等,最多只可能存在2n种结果。所以如果事先将相应的结果存放于一个存贮单元,就相当于实现了与非门电路的功能。FPGA的原理也是如此,它通过烧写文件去配置查找表的内容,从而在相同的电路情况下实现了不同的逻辑功能。查找表(Look-Up-Table)简称为LUT,LUT本质上就是一个RAM。目前FPGA中多使用4输入的LUT,所以每一个LUT可以看成一个有4位地址线的的RAM。当用户通过原理图或HDL语言描述了一个逻辑电路以后,PLD/FPGA开发软件会自动计算逻辑电路的所有可能结果,并把真值表(即结果)事先写入RAM,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。下面给出一个四输入与非门电路的例子来说明LUT实现逻辑功能的原理。表 使用LUT实现四输入与门电路的真值表从中可以看到,LUT具有和逻辑电路相同的功能。实际上,LUT具有更快的执行速度和更大的规模。查找表结构的FPGA逻辑实现原理。因为基于LUT的FPGA具有很高的集成度,其器件密度从数万门到数千万门不等,可以完成极其复杂的时序与逻辑组合逻辑电路功能,所以适用于高速、高密度的高端数字逻辑电路设计领域。其组成部分主要有可编程输入/输出单元、基本可编程逻辑单元、内嵌SRAM、丰富的布线资源、底层嵌入功能单元、内嵌专用单元等,主要设计和生产厂家有Xilinx、Altera、Lattice、Actel、Atmel和QuickLogic等公司,其中最大的是Xilinx、Altera、Lattice三家。4.6 FPGA的优势1.FPGA运行速度快FPGA内部集成锁项环,可以把外部时钟倍频,核心频率可以到几百M,而单片机运行速度低的多.在高速场合,单片机无法代替FPGA。2.FPGA管脚多,容易实现大规模系统单片机IO口有限,而FPGA动辄数百IO,可以方便连接外设.比如一个系统有多路AD,DA,单片机要进行仔细的资源分配,总线隔离,而FPGA由于丰富的IO资源,可以很容易用不同IO连接各外设。3.FPGA内部程序并行运行,有处理更复杂功能的能力单片机程序是串行执行的,执行完一条才能执行下一条,在处理突发事件时只能调用有限的中断资源;而FPGA不同逻辑可以并行执行,可以同时处理不同任务,这就导致了FPGA工作更有效率。4.FPGA有大量软核,可以方便进行二次开发FPGA甚至包含单片机和DSP软核,并且IO数仅受FPGA自身IO限制,所以,FPGA又是单片机和DSP的超集,也就是说,单片机和DSP能实现的功能,FPGA一般都能实现。第五章 产生正弦波形的设计及程序5.1 正弦波形指南本实验预备了两个文件:sin.vhd和sinwave.mif。sin.vhd是顶层设计文件;sinwave.mif是rom的初始化文件。这两个文件在下面设计将用到。实验之前建立一个sinwave文件夹将以上两个文件拷入其中。下面将详细介绍设计流程:5.1.1. 工程创建1.进入QuartusII开发软件,选择File-New Project Wizad。2.弹出工程向导对话框,点击Next。3.在对应位置填入工程名和顶层实体名,再点击Next。4.点击Next。5.实验所使用的是Cyclone系列的“EPIC3T100C8”,点击Finish。工程新建完成,此时只是配置了与工程相关的一些基本设置,在开发过程中如需要,仍然可以通过菜单Assignments->Settings来修改。5.1.2. 正弦信号发生器顶层模块的设计新建文件,打开File->New,选择Device Design Files子类中的VHDL File,点击OK,创建一个vhdl文件。在编辑区vhdl语言输入,或者用文本方式打开sin.vhd文件将其中的内容拷贝到编辑区,并以sinwave.vhd文件名保存。5.1.3. 定制ROM存储正弦波形数据1) 建立.mif文件.mif是FPGA片内rom的初始化文件。点击菜单File->New->Other Files项,选择Memory Initialization File点击确定mif文件中字宽和字的数目,如下图设置,点击OK。打开mif文件。填入正弦波的数据,以文件名sinwave.mif保存。本实验事先已准备了sinwave.mif文件,也可以通过右击Project Navigator 中Files,打开File对话框,直接将已经存在的mif文件添加到工程中。2)定制ROM下面我们将初始化数据文件sinwave.mif文件加载到硬件模块中,通过菜单Tools->MegaWizard Plug-In Manager 。弹出对话框,选择第一项,点击Next。选择Memory Compiler中的ROM: 1-PORT,并选择VHDL,输入文件名:drom.vhd。点击Next。下面是对生成rom的参数进行设置。如下图设置,点击Next。点击Next。指定rom所对应的初始化文件sinwave.mif。点击Finish。将生成的drom.vhd添加到工程中。右击Project Navigator中Files。选择Add/Remove Files in Project。找到drom.vhd文件,点击Add。至此已经完成了设计输入的所有工作,包括:顶层文件设计,rom生成和设置初始化文件。5.1.4 编译综合编译综合点击菜单Processing->Start Compilation。如果设计没有问题就会,弹出编译成功的对话框。如有错误,就必须根据提示来查找错误。5.1.5 仿真对工程编译通过后必须进行功能和时序仿真,以便了解系统是否满足要求,步骤如下:新建波形文件,File->New->Other Files->Vector Waveform file。点击OK。设定波形仿真文件的文件名,sinwave.vwf。点击保存。右击波形文件编辑区右边空白处,选择Insert Node or Bus。在Name中填入DOUT,点击OK。将DOUT信号输入到波形文件中。用同样的方式将CLK输入到波形文件中。右击CLK,设置输入信号CLK。点击菜单Processing->Start Simulation,对工程进行仿真。右击DOUT选择Properties,Radix选择Unsigned Decimal,点击确定。下面是正确仿真结果。5.1.6 管脚分配点击菜单Assignment->Pins,打开管脚编辑器,设置如下Location。将工程重新编译一次,用于保存管脚的设置。5.1.7 硬件设置下载在编译后工程文件夹中就会生成一个sinwave.sof文件,用于下载到FPGA中实现设计的功能。在下载前必须先对硬件进行连接和设置。当确认实验箱上的并口线已经和计算机正确之后,还需在Quartus II中作必要的设置。点击菜单Tools->Programmer。点击Hardware Setup。打开一个对话框。在点击Add Hardware。如下图设置,点击OK。 一般情况Quartus II能够自动的监测到sinwave.sof文件。也可以点击Add File来添加文件。选择Program/Configure。最后点击Start下载sinwave.sof到FPGA中。5.2 VHDL程序LIBRARY IEEE;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_1164.ALL;ENTITY sinwave ISPORT(CLK :IN STD_LOGIC; -/信号源时钟DOUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) -/8位波形数据输出);END;ARCHITECTURE DACC OF sinwave ISCOMPONENT drom -/调用波形数据存储器LPM_ROM文件:drom.vhdPORT(address:IN STD_LOGIC_VECTOR(5 DOWNTO 0);-/6位地址信号clock :IN STD_LOGIC; -/地址锁存时钟q :OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END COMPONENT;SIGNAL Q1 :STD_LOGIC_VECTOR(5 DOWNTO 0); -/内部节点作为地址计数器SIGNAL newclk :STD_LOGIC;SIGNAL clk_cnt:STD_LOGIC_VECTOR(4 DOWNTO 0);BEGINnewclk <= clk_cnt(4);-PROCESS (CLK)BEGINIF CLK'EVENT AND CLK= '1' THENclk_cnt <= clk_cnt+1;END IF;END PROCESS;-PROCESS (newclk)BEGINIF newclk'EVENT AND newclk= '1' THENQ1<=Q1+1;END IF;END PROCESS;u1:drom PORT MAP(address=>Q1,clock=>CLK,q=>DOUT); -/例化END DACC;第六章 总结我们的毕业设计的课题是:基于fpga的dds应用 。针对我们所学知识的整体理解,对整个课题的了解,通过我们的分工合作,我主要是涉及硬件语言编程这一块。