直接数字频率合成(DDS)的FPGA实现(毕业论文).doc

上传人:laozhun 文档编号:4016583 上传时间:2023-04-01 格式:DOC 页数:15 大小:58.50KB
返回 下载 相关 举报
直接数字频率合成(DDS)的FPGA实现(毕业论文).doc_第1页
第1页 / 共15页
直接数字频率合成(DDS)的FPGA实现(毕业论文).doc_第2页
第2页 / 共15页
直接数字频率合成(DDS)的FPGA实现(毕业论文).doc_第3页
第3页 / 共15页
直接数字频率合成(DDS)的FPGA实现(毕业论文).doc_第4页
第4页 / 共15页
直接数字频率合成(DDS)的FPGA实现(毕业论文).doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《直接数字频率合成(DDS)的FPGA实现(毕业论文).doc》由会员分享,可在线阅读,更多相关《直接数字频率合成(DDS)的FPGA实现(毕业论文).doc(15页珍藏版)》请在三一办公上搜索。

1、直接数字频率合成(DDS)的FPGA实现引言直接数字频率合成(DDS)技术是60年代末出现的第三代频率合成技术,以Nyquist时域采样定理为基础,在时域中进行频率合成。DDS具有相对带宽很宽,频率转换时间极短(可小于20ns),频率分辨率可以做到很高(典型值为0.001Hz)等优点;另外,全数字化结构便于集成,输出相位连续,频率、相位、幅度都可以实现程控,通过更换波形数据可以轻易实现任意波形功能。总的来说,新一代的直接数字频率合成器采用全数字的方式实现频率合成,与传统的频率合成技术相比,具有以下特点:(1)频率转换快。直接数字频率合成是一个开环系统,无任何反馈环节,其频率转换时间主要由频率控

2、制字状态改变所需的时间及各电路的延时时间所决定,转换时间很短。(2)频率分辨率高、频点数多。DDS输出频率的分辨率和频点数随机位累加器的位数的增长而呈指数增长。分辨率高达Hz。(3)相位连续。DDS在改变频率时只需改变频率控制字(即累加器累加步长),而不需改变原有的累加值,故改变频率时相位是连续的。(4)相位噪声小。DDS的相位噪声主要取决于参考源的相位噪声。(5)控制容易、稳定可靠。高集成度、高速和高可靠是FPGA/CPLD最明显的特点,其时钟延迟可达纳秒级,结合其并行工作方式,在超高速应用领域和实时测控方面有非常广阔的应用前景。在高可靠应用领域,如果设计得当,将不会存在类似于MCU的复位不

3、可靠和PC可能跑飞等问题。CPLD/FPGA的高可靠性还表现在,几乎可将整个系统下载于同一芯片中,实现所谓片上系统,从而大大缩小了体积,易于管理和屏蔽。所以,采用FPGA来实现DDS有明显的好处。1设计任务设计一基于FPGA的直接数字频率合成实验系统。设计目标为,可以实现稳定的正弦波输出,输出频率范围:100Hz10KHz,且频率可调(步进100Hz),幅度可调(步进0.1V)。2 设计思路及原理DDS的工作原理是以数控振荡器的方式产生频率、相位可控制的正弦波。电路一般包括基准时钟、频率累加器、相位累加器、幅度/相位转换电路、D/A转换器和低通滤波器(LPF)。频率累加器对输入信号进行累加运算

4、,产生频率控制数据X(frequency data或相位步进量)。相位累加器由N位全加器和N位累加寄存器级联而成,对代表频率的2进制码进行累加运算,是典型的反馈电路,产生累加结果Y。幅度/相位转换电路实质上是一个波形寄存器,以供查表使用。读出的数据送入D/A转换器和低通滤波器。2.1 DDS工作原理框图图1所示是一个DDS电路的基本工作原理框图。2.2 具体工作过程每来一个时钟脉冲Fclk,N位加法器将频率控制数据X与累加寄存器输出的累加相位数据相加,把相加后的结果Y送至累加寄存器的输入端。累加寄存器一方面将在上一时钟周期作用后所产生的新的相位数据反馈到加法器的输入端,以使加法器在下一时钟的作

5、用下继续与频率控制数据X相加;另一方面将这个值作为取样地址值送入幅度/相位转换电路(即图1中的波形存储器),幅度/相位转换电路根据这个地址输出相应的波形数据。最后经D/A转换器和低通滤波器将波形数据转换成所需要的模拟波形。相位累加器在基准时钟的作用下,进行线性相位累加,当相位累加器加满量时就会产生一次溢出,这样就完成了一个周期,这个周期也就是DDS信号的一频率周期。DDS输出信号的频率由下式给定:Fout=(X/Y)Fclk。假定基准时钟为70MHz,累加器为16位,则Y= =65536,Fclk=70MHz。再假定X=4096,则Fout=(4096/65536) 70=4.375MHz。可

6、见,通过设定相位累加器位数、频率控制字X和基准时钟的值,就可以产生任一频率的输出。DDS的频率分辨率定义为:Fout=Fclk/Y (2)由于基准时钟一般固定,因此相位累加器的位数就决定了频率分辨率。如上面的例子,相位累加器为16位,那么频率分辨率就可以认为是16位。位数越多,分频率越高。3 系统电路的设计及原理3.1 系统框图根据要求,经过仔细分析,充分考虑各种因素,制定了整体的设计方案;以FPGA为核心,处理8位拨码开关送来的频率控制字将存在EAB的波形数据相应输出给DAC0832完成数模转换,再由另一块DAC0832的内部的电阻分压网络结合外部8位拨码开关的输入值实现幅度控制,继而经过低

7、通滤波器进行滤波,从而得到正弦波。系统总框图如图2所示。 频率数据输出 频率控制 幅度控制 输出图2 系统整体框图3.2 各模块具体实现原理分析和说明3.2.1频率控制模块 这一模块是由FPGA实现的,FPGA完成相位累加器的功能,而频率控制字X是由外部拨码开关给出的。 相位累加器(见图3)是实现DDS的核心,它由一个N位字长的二进制加法器和一个固定时钟脉冲取样的N位相位寄存器组成。相位寄存器的输出与加法器的一个输入端在 fc 频率控制字X 输出序列N图3 相位累加器结构内部相连,加法器的另一个输入端是外部输入的频率控制字X。这样,在每个时钟到达时,相位寄存器采样上个时钟周期内相位寄存器的值与

8、频率控制字X之和,并作为相位累加器在这一时钟周期的输出。频率控制字X决定了相应的相位增量,相位累加器则不断地对该相位增量进行线性累加,当相位累加器积满两时就会产生一次溢出,从而完成一个周期性的动作,这个动作周期即是DDS合成信号的一个频率周期。于是,输出信号波形的频率表示式为由该式可知,输出信号频率主要取决于频率控制字X,当X增大时, 可以不断的增高,由抽样定理,最高输出频率不得大于 /2,而根据实验所得,实际工作频率小于 /3时较为合适。由于受到FPGA芯片资源限制,所能达到的频率不是很高,范围也不是很广。根据设计目标,决定取 =51200Hz,选取4.096MHz有源晶振,经过80分频,得

9、到基准频率为51200Hz。N为9位。这样,频率分辨率为可以达到的最高最佳频率为51200/317KHz。另外Altera还在它们公司的VHDL设计平台MAX +PLU S上提供了LPM_ADD_SUB核和LPM_DFF核,利用MAX+PLUS综合可以自动编译包含LPM_ADD_SUB和LPM_DFF元件的文件,本设计利用LPM_ADD_SUB核以及LPM_DFF核在FPGA上实现相位累加器。具体设置和连接如下图4所示。图4 相位累加器VHDL实现3.2.2 80分频器的实现以下是160分频器的VHDL程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;US

10、E IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY freqdiv80 ISPORT(clkin:IN STD_LOGIC; -输入时钟信号clkout:OUT STD_LOGIC);-输出时钟信号END;ARCHITECTURE a OF freqdiv80 ISSIGNAL temp:INTEGER RANGE 0 TO 65536;SIGNAL state:STD_LOGIC:=1;-输出电平预置为高BEGINPROCESS(clkin)BEGINIF rising_edge(clkin) THENIF te

11、mp=39 THENtemp=0;state=NOT state;-temp记数40次翻转一次输出电平ELSEtemp=temp+1;END IF;END IF;END PROCESS;clkout8;LPM_WIDTHAD=9; LPM_OUTDATA=”UNREGISTERED”;LPM_ADDRESS_CONTROL=UNREGISTERED;其中LPM_FILE的“.mif”中存放正弦的值,可由文本形式生成,也可由高级语言如C语言生成。ROM查找表在整个设计中是一个比较重要的部分。为了保证波形的平滑,设计时可将一个周期分为512个点。但是,点数太多时,用文本方式输入可能有很多困难。因此

12、,应当用C语言描述正弦方程式,最后再将其转化为所需的mif文件。下面是用TC来在512.mif文件里产生512个点的正弦波数据的源程序:#include#includemath.hint main() int s;int i;FILE *fp;fp=fopen(512.mif,r+);fprintf(fp, - MAX+plus II - generated Memory Initialization Filen );fprintf(fp, - By 00022809nnnnn);fprintf(fp,WIDTH=8;nn);fprintf(fp,DEPTH=512;nn);fprintf(f

13、p,ADDRESS_RADIX=HEX;nn);fprintf(fp,DATA_RADIX=HEX;nn);fprintf(fp,CONTENT BEGINn);for(i=0;i512;i+)s=abs(sin(atan(1.0)*8/512*i)*255);fprintf(fp,%xt:t%x;n,i,s);fprintf(fp,END;n);fclose(fp);这样就可以得到一个周期512个点的波形数据。3.2.4数模转换及幅度控制模块 (1)数模转换。本来欲打算采用转换速度为85ns,带宽为10MHz的8位单调高速乘法器AD DAC08或者是DAC0800。但由于都购买不到,而改为使

14、用转换速度为1us带宽为1MHz的DAC0832,这样最高频率就不是很高。DAC0832为电流输出型D/A转换器,需要外接运算放大器进行电流电压变换才能得到模拟电压输出。输出方式为单极性输出方式的时候,输出级接一低电压温漂运放op07作为电压电流转换器,在运算放大器的输出端就可以得到单极性模拟电压 :若参考电压为+5V,则当数字量从00HFFH变化时,对应的模拟电压 输出范围是0V -5V。 (2)幅度控制。使用DAC0832实现。利用DAC0832内部的电阻分压网络,将经前一个DAC0832产生的波形作为基准电压源输入,其输出波形幅度将为V = (N/256)*Vin,其中N由外部8位拨码开

15、关控制,从而实现步进0.1V峰-峰值的幅度调整,其接法如图5所示。数据 作为基准 电压输入 输出图5 幅度控制实现3.2.5滤波输出电路模块D/A输出后,通过滤波电路,使信号平滑。滤波器在通带内的平坦程度对我们而言,比其衰减更为重要,而且,巴特沃斯滤波器的元件值也较合乎实际情况,不像绝大多数其他类型滤波器对元件值要求那么苛刻。在截止频率附近,频率响应钝化可能使这些滤波器在要求锐截止的地方不合要求。二阶巴特沃斯有源低通滤波器设计(图6):正弦波的输出频率小于10KHz,为保证10KHz频带内输出幅度平坦,又要尽可能抑制谐波和高频噪声,综合考虑取R1 = 1 K,R2 = 1 K,C1 = 100

16、 pF,C = 100pF图6 有源低通滤波器设计3.2.6FPGA程序下载电路模块 FLEX10K器件可以通过在线配置的手段来调整电路结构、延时信息等,这给设计人员调试电路带来了极大的方便。而并口下载电缆ByteBlaster正是将PC机中的配置信息传到PCB板FLEX器件中必不可少的器件,如图7所示。图7 FLEX10K器件下载电缆(1) 配置模式的选择。ByteBlaster有两种配置模式:被动串行模式(PS)-常用来配置重构FLEX10K、FLEX8000和FLEX6000系列器件;边界扫描模式(JTAG)-具有边界扫描电路的配置重构或在线编程。对CPLD的器件配置分为两类:主动配置方

17、式和被动配置方式。主动配置由CPLD器件引导配置操作过程,它控制着外部存储器和初始化过程。而被动配置由计算机或控制器控制配置过程。在本设计中由于须由上位机来控制配置过程,故采用了被动串行模式(PS)。在FLEX10K器件正常工作时,它的配置数据贮存在SRAM之中。由于SRAM的易失性,所以每次加电期间,配置数据都必须重新构造,将I/O引脚和寄存器初始化之后便进入用户状态。(2)被动串行配置模式(PS)。采用被动串行模式进行配置时要将用到的引脚描述如表1所示。在被动串行配置(PS)方式中,由上位机产生一个由低到高的跳变,通过ByteBlaster并口下载电缆送到nCONFIG引脚,然后将配置数据

18、送到DATA0引脚,该数据锁存至CONF-DONE变成高电平,它是先将每字节的最低位LSB送到FLEX10K器件。CONF-DONE变成高电平后,DCLK必须用多余的10个周期来初始化该器件,器件的初始化是由下载电缆执行的。在PS方式中没有握手信号,所以,配置时钟的工作频率要低于10MHz。表1 FLEX10K器件配置中用到的引脚引脚名引脚类型描 述MSEL1MSEL0输入00:AS 或 PS 10:PPS11:PPAnSTATUS双向漏极开路命令状态下器件的状态输出位。加电后,FLEX10K立即驱动该引脚到低电平,然后在100ms内释放它,nSTATUS必须经过1.0K电阻上拉到Vcc,如果

19、配置中发生错误,FLEX10K将其拉低。nCONFIG输入配置控制输入。低电平使FLEX10K器件复位,在由低到高的跳变过程中启动配置。接下页接上页CONF-DONE双向漏极开路状态输出。在配置期间,FLEX10K将其驱动为低,所有配置数据无误差接收后,FLEX10K将其置为三态。状态输入。输入高电平引导器件执行初始化过程并进入用户状态。CONF-DONE必须经由1.0K的上拉电阻上拉至Vcc,而且可以将外接电路驱动为低以延时FLEX10K的初始化过程。DCLK输入为外部数据源提供时钟nCE输入FLEX10K器件使能输入,nCE为低时使能配置过程,而且为单片配置时,nCE必须始终为低。DATA

20、0输入数据输入,在DATA0引脚上的一位配置数据。ByteBlaster下载电缆具有以下几部分:与PC机打印并口相连的25针插座头、与PCB板插座相连的10针插头、25针到10针的变换电路。 ByteBlaster 25针插头ByteBlaster与PC机并口相连的是一个25针的插头,其连接线名称与插头各引脚名称如表2所示。表2 ByteBlaster的25针连接线名称引脚引脚名称引脚引脚名称2DCLK13nSTATUS3nCONFIG15GND8DATA01825GND11CONF-DONE ByteBlaster 10针插头ByteBlaster的10针插头是与PCB板上的10针插座相连的

21、,表3列出了ByteBlaster插头在PS模式下的各引脚的名称。其中NC表示管脚是悬空的,下载电缆的电源Vcc和信号地GND由PCB板提供,PCB板所提供的电源Vcc为5V。表3 ByteBlaster插头引脚名称引脚信号名描 述1DCLK时钟2GND信号地3CONF-DONE配置控制4Vcc电源5nCONFIG配置控制6NC7nSTATUS配置状态8NC9DATA0配置的数据10GND信号地 ByteBlaster的数据变换电路在ByteBlaster下载电缆中,其数据交换实际上就只有一个74LS244和N个电阻,其原理如图8所示。图8 ByteBlaster下载电缆3.3 设计所用关键元

22、器件的介绍3.3.1 FLEX10K系列FPGA(1)概述。FLEX10K是工业界第一个嵌入式的可编程逻辑器件,采用可重构的CMOS SRAM工艺,把连续的快速通道互连与独特的嵌入式阵列结构相结合,同时也结合了众多可编程器件的优点来完成普通门阵列的宏功能。由于其具有高密度、低成本、低功率等特点,所以脱颖而出成为当今Altera PLD中应用最好的器件系列。其集成度已达到25万门。它能让设计人员轻松地开发出集存储器、数字信号处理器及特殊逻辑包括32位多总线系统等强大功能于一身的芯片。到目前为止,已经推出了FLEX10K、FLEX10KA、FLEX10KV、FLEX10KE等分支系列。FLEX10

23、K结构类似于嵌入式门阵列,是门阵列市场中成长最快的器件。像标准门阵列一样,嵌入式门阵列采用一般的门海(sea of gates)结构实现普通逻辑,因此,在实现大的特殊逻辑时会有潜在死区。与标准门阵列相比,嵌入式门阵列通过在硅片中嵌入逻辑块的方法来减少死区,提高速度。然而,典型的嵌入式宏功能模块通常是不能改变的,这就限制了设计人员的选择。相反,FLEX10K器件是可编程的,在调试时它允许设计人员全面控制嵌入式宏功能模块和一般的逻辑,可以方便地反复修改设计。 每个FLEX10K器件包含一个嵌入式阵列和一个逻辑阵列。嵌入式阵列用来实现各种存储器及复杂的逻辑功能,如数字信号处理、微控制器、数据传输等。

24、逻辑阵列用来实现普通逻辑功能,如计数器、加法器、状态机、多路选择器等。嵌入式阵列和逻辑阵列结合而成的嵌入式门阵列的高性能和高密度特性,使得设计人员可在单个器件中实现一个完整的系统。 FLEX10K器件的配置通常是在系统上电时,通过存储于一个串行PROM中的配置数据或者由系统控制器提供的配置数据来完成。Altera提供EPC1、EPC2、EPC16和EPC1441等配置用的PROM器件,配置数据也能从系统RAM和BitBlaster串行下载电缆或ByteBlasterMV并行下载电缆获得。对于配置过的器件,可以通过重新复位器件、加载新数据的方法实现在线可配置(ICR,In-Circuit Rec

25、onfigurability)。由于重新配置要求少于320ms,因此可在系统工作时实时改变配置。FLEX10K器件由MAX+PLUS II开发软件支持。(2)FLEX10K器件系列的特点。FLEX10K是工业界第一种嵌入式的PLD器件系列,具有实现宏功能的嵌入式阵列(例如实现高效存储器和特殊的逻辑功能)和实现普通功能的逻辑阵列,可提供可编程单芯片系统(SOPC)集成。 高密度:1万25万个可用门。高达40960位内部RAM(每个EAB有2048位),所有这些都可在不减少逻辑能力的情况下使用。 系统级特点:支持多电压接口;在FLEX10KA器件中允许输入的引脚电压为5.0V,在FLEX10KB器

26、件中允许输入的引脚电压为3.3V和5.0V;低功耗(维持状态小于0.5mA);遵守PCI总线规定;内带JTAG边界扫描测试电路;边界扫描测试电路;器件采用先进的工艺制造并可在2.5V、3.3V、5.0V电源电压下工作。所有器件都100%经过功能测试。 灵活的内部连接:快速、可预测连线延时的快速通道(Fast Track)连续式布线结构;实现快速加法器、计数器和比较器的专用进位链;实现高速、多输入逻辑函数的专用级联链;实现内部三态总线的三态模拟;多达六个全局时钟信号和四个全局清除信号。 强大的I/O引脚功能:每个引脚都有一个独立的三态输出使能控制及漏极开路配置选项(Open-drain opti

27、on);可编程输出电压的摆率控制,可有减少开关噪声。FLEX10KA、FLEX10KE、FLEX10KS器件支持热拔插。 多种封装方式:用户可任意选择84600引脚的各种封装。封装形式有PLCC、TQFP、PQFP、RQFP、PGA、BGA等,同一种封装中的各种FLEX10K系列器件的引脚相兼容。 FLEX10K还包括了一个优化界面,允许微处理器以串行方式或并行方式、同步方式或异步方式对FLEX10K器件进行配置。 FLEX10K的这些特点使得FLEX10K器件成为替代传统门阵列专用的理想选择,其使用非常广泛;又由于FLEX10K系列的芯片都带有JTAG口(Joint Test Action

28、Group联合测试行动组),能够使用JTAG PROGRAM指令进行配置;为了尽量简化电路,所以本设计采用FLEX10K系列产品中的FLEX10K器件,该型号芯片采用PLCC封装,有84个管脚,其中I/O引脚个数为59。FLEX10K的主要引脚和引脚名称的对应关系如表4所示。表4 FLEX10K10的主要引脚和引脚名称引脚名称输出引脚引脚名称输出引脚MSEL0(2)31MSEL1(2)32nSTATUS(2)55nCONFIG(2)34DCLK(2)13CONF-DONE(2)76INIT-DONE(3)69nCE(2)14nCEO(2)75nWS(4)80nRS(4)81nCS(4)78CS

29、(4)79RDYnBSY(4)70CLKUSR(4)73DATA7(4)5DATA6(4)6DATA5(4)7DATA4(4)8DATA3(4)9DATA2(4)10DATA1(4)11DATA0(2),(5)12TDI(2)15TDO(2)74TCK(2)77接下页接上页TMS(2)57TRST(2)56Dedicated Input2,42,44,84Dedicated Clock Pins1,43DEVB-CLRn(3)3DEV-OE(3)83VCCINT4,20,33,40,45,63GNDINT26,41,46,68,82Total User I/O Pins59注: 没有列出所有的

30、用户I/O引脚。 该引脚为专用引脚,不能用作用户I/O引脚。 该引脚如果没有用于器件配置功能,则它可用作用户I/O引脚。 该引脚在器件配置后可用作用户I/O引脚。 该引脚在用户模式中是三态。 用户I/O引脚数包括专用输入引脚、专用时钟引脚和所有I/O引脚。3.3.2 DAC0832芯片介绍(1) 芯片简介。DAC0832是NSC公司(美国国家半导体公司)生产的8位DAC芯片,可直接与多种CPU总线连接而不必增加任何附加逻辑。DAC0830、DAC0831与它兼容,可以完全相互代换。DAC0832由两级数据缓冲器和D/A转换器组成,第一级数据缓冲器称为输入寄存器,第二级称为DAC寄存器,如图9所

31、示。图9 DAC0832内部结构DAC0832各引脚的定义如下:D7D08位数据输入端。ILE允许输入锁存(输入),高电平有效。 片选(输入),低电平有效。 写信号1(输入),低电平有效。ILE、 、 为输入寄存器的选通信号,当ILE、 、 全部有效,LE1为高电平时,选通输入寄存器,数据总线D7D0上的输入数据进入输入寄存器;当ILE、 、 不同时有效,LE1为低电平时,输入寄存器中原有数据被锁存。 传送控制信号(输入),低电平有效。 写信号2(输入),输入低电平有效。 、 为DAC寄存器的选通信号,当 、 同时有效时,LE2为高电平,选通DAC寄存器,输入寄存器中锁存的数据进入DAC寄存器

32、; 、 不同时有效时,LE2为低电平,DAC寄存器中原有数据被锁存。 模拟电流输出端1,它是逻辑电平为1的各位输出电流之和。 模拟电流输出端2,它是逻辑电平为0的各位输出电流之和。 + =常数。 基准电压输入,+10V -10V,此电压越稳定模拟输出精度越高。 反馈电阻引出端,DAC0832内部此端与 端之间已集成一反馈内阻 ,其值为15K,所以 可以直接接到外部运算放大器的输出端。(11) 电源电压,+5V +15V。(12)AGND模拟地,芯片模拟信号接地点。(13)DGND数字地,芯片数字信号接地点。必须注意的是:在使用DAC芯片和ADC芯片的电路中,必须正确处理地线和连接问题。电路中有

33、两种芯片:一种是模拟电路芯片,如DAC、ADC、运算放大器等;另一种是数字电路芯片,如CPU、译码器、寄存器等。这两种芯片应由两个独立的电源分别供电。模拟地线和数字地线应该分开、模拟地和数字地应分别连接到系统的模拟地线和数字地线。在整个系统中仅有一个共地点,避免造成回路,防止数字信号通过数字地线干扰微弱的模拟信号。(2)DAC0832的工作方式。DAC0832有两级锁存器,因此有3种工作方式:双缓冲工作方式、单缓冲工作方式和直通工作方式。双缓冲工作方式,就是把DAC0832的输入寄存器和DAC寄存器都接成受控方式。CPU对DAC芯片的写操作分两步进行:第一步把数据写进输入寄存器,第二步把输入寄

34、存器的内容写入DAC寄存器。双缓冲工作方式的优点是DAC0832的数据接收和启动转换异步进行。于是,可在D/A转换的同时进行下一数据的接收,可实现多个转换器的同时输出。单缓冲工作方式,就是使两个寄存器中一个处于直通状态,而另一个处于受控状态。这种方式可以减少一条输出指令,在不要求多个DAC同时进行D/A转换时普遍采用此种方式。当 、 、 和 引脚全部接数字地,ILE引脚为高电平时,芯片就处于直通工作状态。8位数字量一旦达到D7D0输入端,便立即进行D/A转换。此种方式下,DAC0832不能直接和CPU的数据总线相连,故很少采用。由于本设计要求数据一到立即转换,因此,采用了此种工作方式。(3)D

35、AC0832的输出方式。DAC0832为电流输出型D/A转换器,需要外接运算放大器进行电流电压变换才能得到模拟电压输出。输出方式有两种:单极性输出和双极性输出。单极性电压输出方式输出的电压极性是单一的,而双极性输出方式输出的电压极性是可变的,即有正有负。单极性输出时,在运算放大器的输出端就可以得到单极性模拟电压 :若参考电压为+5V,则当数字量从00HFFH变化时,对应的模拟电压 输出范围是0V -5V。双极性电压输出方式需要两级运算放大器级联输出电压,输出电压 与 及第一级运算放大器输出 的关系是: = (2 + )这时,当数字量从00H FFH变化时,对应的模拟电压 输出范围是 5V +5

36、V,显然,其分辨率较单极性输出降低一倍。 根据设计目标需要,本设计采用单极性电压输出方式。3.3.3其他的主要芯片 两片DAC0832的电流-电压转换都采用了低温漂电压的运算放大器op07,供电电压为 。有源滤波器使用了宽带宽的运算放大器LF351。4 FPGA部分VHDL仿真及说明 FPGA部分电路是整个电路设计系统中最主要的部分,所以其能否正常工作对整个系统的工作起关键作用。FPGA部分仿真主要是观察波形数据的值的输出是否正确和值输出的频率是否和预置的频率控制字相对应,在MAX+plus II的仿真文件.scf里对FPGA部分的电路进行了验证。由于外部有源晶振的频率为4.096MHz,故将

37、.scf的option里的Grid size设置为244.1ns,即周期差不多是4.096MHz。运行仿真,得到的结果跟理论的结果几乎一样,因此,可以确定整个FPGA部分电路可以正常运行。仿真部分波形如图10所示。图 10 FPGA部分电路的仿真波形从图10的波形仿真结果中很难直观地看出DDS输出正弦波的情况。为了便于调试设计电路,我们可以利用计算机高级语言将MAX + plus II波形仿真结果转换为波形曲线,这就需要借助于MAX + plus II的表格文件(.tbl文件)。MAX + plus II的设计软件中的.tbl文件是纯文本文件,它包含了.scf文件或.wdf文件中的所有信息。.

38、tbl文件的生成很简单,在MAX + plus II波形仿真结束后,打开.scf文件,然后从“File”菜单中选择“Create Table File”选项,就可产生.tbl文件。.tbl文件的基本结构可分为四大部分,其中第三部分和第四部分是最关键的,可从中获取仿真波形数据,并利用计算机高级语言处理这些数据,将其转换为直观的波形曲线。需要注意的是,每做一次MAX + plus II波形仿真,都要重新生成一次.tbl文件,以更新.tbl文件内的数据。但是由于波形数据太大,而且,对用高级语言来实现这个部分不太熟练,因此,无法得到预想的DDS电路的仿真波形曲线。5 工程设计 EDA是电子设计自动化(

39、Electronic Design Automation)的缩写,是90年代初,从CAD(计算机辅助设计)、CAM(计算机辅助制造)、CAT(计算机辅助测试)和CAE(计算机辅助工程)的概念发展而来的。本设计主要使用了两个EDA工具,MAX + plus II和Protel 99SE,以下就分别对这两个工具在本设计中的应用进行简单的说明。5.1 MAX + plus II的使用以及VHDL程序的编写FPGA部分电路的VHDL程序主要是依靠MAX + plus II来处理。VHDL的英文全名是Very-High-Speed Integrated Circuit Hardware Descript

40、ion Language,诞生与1982年。1987年底,VHDL被IEEE(The Institute of Electrical and Electronics Engineers)和美国国防部确认为标准硬件描述语言。自IEEE公布了VHDL的标准版本(IEEE-1076)以后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准硬件描述语言。1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-19

41、93版本。现在,VHDL和Verilog语言将承担起几乎全部的数字系统设计任务。VHDL主要用于描述数字系统的结构、行为、功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件、一个电路模体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其它的设计就可以直接调用这个实体。这种将设计实体部分分成内外部分的概念是VHDL系统设计的基本点。应用VHDL进行工程设计的优点是多方面的,具体如下:(1)与其它的硬件描述语言相比,VHDL具有更强的行

42、为描述能力,从而决定了它成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。就目前流行的EDA工具和VHDL综合器而言,将基于抽象的行为描述风格的VHDL程序综合成为具体的FPGA和CPLD等目标器件的网表文件已不成问题,只是在综合与优化效率上略有差异。(2)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期(即尚未完成),就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。即在远离门级的高层次上进行模拟,使设计者对整个工程设计的结构和功能的可行性作出决策。 (3)VHDL语句的行为描述能力和程序结构决定了它具

43、有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效、高速的完成必须由多人甚至多个开发组共同并行工作才能实现。VHDL中设计实体的概念、程序包的概念、设计库的概念为设计的分解和并行工作提供了有力的支持。 (4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动地把VHDL描述设计转变成门级网表(根据不同的实现芯片)。这种方式突破了门级设计的瓶颈,极大地减少了电路设计的时间和可能发生的错误,降低了开发成本。应用EDA工具的逻辑优化功能,可以自动地把一个综合后的设计变成一个更小、更高速的电路系统。反过来,设计者还可以容易地从综合和优化后的电路获得设计信息,反回去更新修改VHDL设计描述,使之更为完善。 (5)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管最终设计实现的目标器件是什么,而进行独立的设计。正因为VHDL的硬件描述与具体的工艺技术和硬件结构无关,VHDL设计程序的

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号