EDA技术与应用课程设计报告-基于FPGA的DDS函数信号发生器的设计.doc_第1页
EDA技术与应用课程设计报告-基于FPGA的DDS函数信号发生器的设计.doc_第2页
免费预览已结束,剩余14页可下载查看

下载本文档

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

文档简介

eda技术与应用课程论文题 目: 基于fpga的dds函数信号发生器的设计 院 (系): 电子工程学院 专 业: 测试计量技术及仪器 学生姓名: 学 号: 072081123 指导老师: 职 称: 教 授 2007 年 12 月 25 日评语得分eda技术与应用课程论文基于fpga的dds函数信号发生器的设计摘 要本系统采用直接数字频率合成(dds)技术,由fpga产生正弦信号、模拟频率调制(fm)信号和ask、psk载波信号系统主要以单片机c8051f020为辅助控制中心,完成人机对话并产生ask、psk所需要的调制和基带信号;以fpga芯片ep2c8为dds核心,经10位高速da变换得到模拟信号,经九阶巴特沃斯低通滤波(lpf)后,送到功率放大电路进行放大输出。关键字:单片机;混合信号;直接数字合成;单片机总线控制;多功能信号源;第15页 共30页1 dds的原理及特点介绍dds技术是根据奈奎斯特定理取样,从连续信号的相位出发,将一个正弦信号取样、量化和编码形成一个正弦函数表存在存储器中。合成时,通过改变相位累加器的频率控制字来改变相位增量。相位增量不同将导致一周期内的取样点数的不同,在取样频率不变的情况下,通过改变相位累加器的频率控制字,将这种变化的相位除以幅值量化的数字信号,通过d/a转换及低通滤波器即可得到合成的相位变化的模拟信号频率。1.1 dds原理简介直接数字频率合成(dds)是从相位概念出发直接合成所需波形的一种频率合成技术。一个典型的直接数字频率合成器由相位累加器、加法器、波形存储rom、d/a转换器和低通滤波器(lpf)构成。dds的原理框图如图1.1所示。s(n)s(t)累加器加器加法器加器rom加器d/a加器lpf加器d位参考时钟fc频率控制字kn位n位相位控制字p输出图1.1 dds原理框图其中k为频率控制字、p为相位控制字、为参考时钟频率、n为相位累加器的字长、d为rom数据位及d/a转换器的字长。相位累加器在时钟的控制下以步长k作累加,输出的n位二进制码与相位控制字p相加后作为波形rom的地址,对波形rom进行寻址,波形rom输出d位的幅度码s(n)经d/a转换器变成阶梯波s(t),再经过低通滤波器平滑后就可以得到合成的信号波形。合成的信号波形形状取决于波形rom中存放的幅度码,因此用dds可以产生任意波形。这里只用dds实现正弦波的合成作说明介绍:(1)频率预置与调节电路k被称为频率控制字,也叫相位增量。dds方程为 (为输出频率,为时钟频率) (2.1)当k=1时,dds输出最低频率(即频率分辨率)为/2n,而dds的最大输出频率由nyquist采样定理决定,即/2,也就是说k的最大值为2n-1。因此,只要n足够大,dds可以得到很小的频率间隔。要改变dds的输出频率,只要改变频率控制字k即可。(2)相位累加器相位累加器由n位加法器与n位寄存器级联构成。每来一个时钟脉冲,加法器将频率控制字k与寄存器输出的累加相位数据相加,再把相加后的结果送至寄存器的数据输入端。寄存器将加法器在上一个时钟作用后所产生的相位数据反馈到加法器的输入端;以使加法器在下一个时钟作用下继续与频率控制字进行相加。这样,相位累加器在时钟的作用下,进行相位累加。当相位累加器溢出时,就完成了一个周期的动作。(3)控制相位的加法器通过改变相位控制字p可以控制输出信号的相位参量。令相位加法器的字长为n,当相位控制字由0跃变到p(p0)时,波形存储器的输入为相位累加器的输出与相位控制字p之和,因而其输出的幅度编码相位会增加p/2n,从而使最后的输出的信号产生相移。(4)波形存储器用相位累加器输出的数据作为波形存储器的取样地址,进行波形的相位-幅值转换,即可在给定的时间上确定输出波形的抽样幅值。n位的寻址rom相当于0360的正弦信号离散成具有2n个样值的序列,若波形rom有d位数据位,则2n个样值的幅值以d位二进制数值固化在rom中,按照地址的不同可以输出相应的正弦信号的幅值。(5)d/a转换器d/a转换器的作用是把合成的正弦波数字量转换成模拟量。正弦幅度量化序列s(n)经d/a转换后变成了包络为正弦波的阶梯波s(t)。需要注意的是,频率合成器对d/a转换器的分辨率有一定的要求,d/a转换器的分辨率越高,合成的正弦s(t)台阶数就越多,输出的波形的精度也越高。(6)低通滤波器对d/a输出的阶梯波s(t)进行频谱分析,可知s(t)中除了主频外,还存在分布在,2两边处的非谐波分量,幅值包络为辛格函数。因此,为了取出主频,必须在d/a转换器的输出端接入截止频率为/2的低通滤波器。1.2 dds技术的特点dds技术之所以具有如此广阔的发展应用前景,是与dds技术的特点分不开的。与直接式频率合成(ds)、间接式频率合成(pll)相比,直接数字频率合成具有下述优点。(1)频率切换时间短:dds的频率转换可以近似认为是即时的,这是因为它的相位序列在时间上是离散的,在频率控制字k改变以后,要经一个时钟周期之后才能按照新的相位增量累加,所以也可以说它的频率转换时间就是频率控制字的传输时间,即一个时钟周期。如果=10m,转换时间即为1oons,当时钟频率进一步提高,转换时间将会更短,但再短也不能少于数门电路的延迟时间。目前,集成dds产品的频率转换时间可达10ns的量级,这是目前常用的锁相频率合成技术无法做到的。(2)频率分辨率高:dds的最小频率步进量就是它的最低输出频率, 即 可见只要累加器有足够的字长,实现非常精密的分辨率没有多大的困难。例如可以实现hz、mhz甚至nhz的频率分辨率,而传统的频率合成技术要实现这样的频率分辨率十分困难,甚至是不可能的。(3)相位变化连续:dds改变输出频率实际上改变的是每次的相位增量,即改变相位的增长速度。当频率控制字改变后,它是在已有的积累相位上,再每次累加,相位函数的曲线是连续的,只是在改变频率的瞬间其斜率发生了突变,因而保持了输出信号相位的连续性。这在很多对频率合成器的相位要求比较严格的场合非常有用。(4)具有低相位噪声和低漂移:dds系统中合成信号的频率稳定度直接由参考源的频率稳定度决定,合成信号的相位噪声与参考源的相位噪声相同。而在大多数dds系统应用中,一般由固定的晶振来产生基准频率,所以其具有极好的相位噪声和漂移特性。(5)易于集成、易于调整:dds中除了dac和滤波器之外,几乎所有的部件都属于数字信号处理器件,不需要任何调整。当然dds技术也有其不可避免的缺点。如:信号杂散比较丰富、输出信号的频带受限等,而这需要在算法或工艺上作进一步改进。2 dds函数信号发生器的软件设计与仿真2.1 正弦信号发生器的设计根据直接数字频率合成(dds)原理,设正弦波信号频率为,在32频率控制字时,频率分辨率,只要通过单片机向fpga送入与相对应的频率控制字,就可得到上式表示的正弦信号:。dds正弦信号信号源的顶层文件设计如下-项目名称:dds的顶层文件-文件名 :dds_all.vhd-功能描述:实现直接数字合成,含有32位频率控制字,-频率对应的由低到高控制地址是f00h,f01h,f02h,f03h,f04h,先写入数据-到前三个寄存器,最后随便写入一个控制字到f04h既启动dds.-psk对应的基带码寄存器是f05h,ask对应的寄存器是f06h,控制寄存器对应-的地址是f07h,控制由低位到高位控制的依次是ask,psk,fm,第3位与第四位-控制fm的频率偏移,01是5k,10是10k.用单片机总线复用方式写入外部ram的-方式写入. -library ieee;-用到的库use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;-entity dds_all isport(clk:in std_logic;-时钟 cs:in std_logic;-片选 ale:in std_logic;-地址琐存 wr:in std_logic;-写信号 rd:in std_logic;-读信号 addh:in std_logic_vector(6 downto 0);-地址高位 addl:inout std_logic_vector(7 downto 0);-地址低端 pskdaout:out std_logic;-psk基带信号输出 askdaout:out std_logic;-ask基带信号输出 daout:out std_logic_vector(9 downto 0);-到da的数据 daclkout:out std_logic);-da的时钟输出end dds_all;-architecture one of dds_all iscomponent pll-pll模块port(inclk0: in std_logic := 0;c0: out std_logic ;c1: out std_logic ;c2: out std_logic );end component;component sinrom-sina查找表port(address: in std_logic_vector (10 downto 0);clock: in std_logic ;q: out std_logic_vector (9 downto 0);end component;component mcu_inf-与mcu接口模块port(cs:in std_logic;-片选 rd:in std_logic;-读使能 ale:in std_logic;-地址锁存 wr:in std_logic;-写使能 rdata:in std_logic_vector(7 downto 0); addh:in std_logic_vector(6 downto 0);-地址高位 addl:inout std_logic_vector(7 downto 0);-地址低位 rlatch:out std_logic;-写到fpga内部的总线信号 wlatch:out std_logic;-读到fpga内部的总线信号 addout:out std_logic_vector(14 downto 0);-地址输出 wdata:out std_logic_vector(7 downto 0);-写到的数据end component;component psk_ddsport(clk:in std_logic;-时钟 pskreset:in std_logic;-psk使能; yiweiin:in std_logic_vector(7 downto 0);-数据移位输入 fword:in std_logic_vector(31 downto 0); pskout :out std_logic; daout:out std_logic_vector(10 downto 0);end component;component ask_ddsport(clk:in std_logic;-dds时钟 fskreset:in std_logic;-控制复位 dain:in std_logic_vector(7 downto 0);-基带码输入 pwordin:in std_logic_vector(10 downto 0);-相位输入最高位检测 askout:out std_logic; daout:out std_logic_vector(10 downto 0);-输出end component;component fm_ddsport(clk:in std_logic;-33m时钟 fsel:in std_logic_vector(1 downto 0);-拼偏控制 fmreset:in std_logic;-fm的使能信号 fword:in std_logic_vector(31 downto 0);-频率字输入 fwordout:out std_logic_vector(31 downto 0);-频率字输出end component;component regctport(wlatch:in std_logic;-写琐存 add:in std_logic_vector(14 downto 0);-地址 dain:in std_logic_vector(7 downto 0);-信号 fwordout:out std_logic_vector(31 downto 0);-频率字 pskout:out std_logic_vector(7 downto 0);-psk基带码 askout:out std_logic_vector(7 downto 0);-fsk基带码 assignout:out std_logic_vector(7 downto 0);-控制寄存器end component;signal daclkouts,clk120m,clk33m,wlatchs:std_logic;signal adds:std_logic_vector(14 downto 0);signal romadd:std_logic_vector(10 downto 0);signal ctreg,pskdareg,askdareg,wdatas: std_logic_vector(7 downto 0);signal fwords,fwordreg:std_logic_vector(31 downto 0);signal pskout:std_logic_vector(10 downto 0);begindaclkoutclk,c0=clk120m,c1=clk33m,c2=daclkouts);-pll模块连接关系u2:sinrom port map(address=romadd,clock=clk120m,q=daout);u3:mcu_inf port map(cs=cs,rd=rd,ale=ale,wr=wr,rdata=x00,addh=addh,addl=addl,wlatch=wlatchs,addout=adds,wdata=wdatas);-与mcu通信的模块连接关系u4:psk_dds port map(clk=clk120m,pskreset=ctreg(1),yiweiin=pskdareg,fword=fwords,pskout=pskdaout,daout=pskout);-psk产生模块的接关系u5:ask_dds port map(clk=clk120m,fskreset=ctreg(0),dain=askdareg,pwordin=pskout,askout=askdaout,daout=romadd);-ask模块连接关系u6:fm_dds port map(clk=clk33m,fsel=ctreg(4 downto 3), fmreset=ctreg(2),fword=fwordreg,fwordout=fwords);-fm模块连接关系u7:regct port map(wlatch=wlatchs,add=adds,dain=wdatas,fwordout=fwordreg,pskout=pskdareg,askout=askdareg,assignout=ctreg);-寄存器控制连接模块end one;dds仿真结果如下:图2.1 正弦信号输出仿真结果数字信号经过da变换器ths5651后得到模拟的正弦信号。由于da输出的是电流信号,在da的电流输出端iout、ioutb端各接100电阻进行取压,后经一级差分放大得到峰值为2v左右的信号。2.2 fm信号产生fm调制信号在fpga内部的产生是一个按规律不断改变频率字的过程。如图2.1。频偏控制字中心频率字到dds512kh时钟加乘512个频率偏移表dds频率字图2.1 fm调制信号的产生由模拟fm原理:。式中,f为瞬时频率,f0为载波频率,fm为瞬时最大频偏。在fpga中,上述调频过程是全数字化的,设fm、sint对应的数字式分别为fswm、vd,则有: ,di0,1,3,5,511 (vd送数周期为1ms,调制信号频率为1khz)因此,得数字调频公式如下:。(式中fsw对应瞬时频率f。)2.3 psk、ask信号产生psk信号的产生是在dds中的频率字累加器和相位加法器之间加psk模块构成。如图2.2所示。移位寄存器寄存着基带码,其输出位在非psk模式时送到相位累加器的相位为0,当相关的控制信号跳变时启动计数器和移位寄存器。由于题目要求在100k的载波上调制10kbs的信号。为了使基带信号能在正弦载波0相位时同步,而决定到达0相位时是数字信号的最高位,因而计数器对最高位下降沿记数,当为十次时,计数器产生一上升沿驱动移位寄存器移出一位基带码,决定相位加法器的相位跳变。这种设计在正弦频率字对应的100khz的时候基带的速率由计数器决定,即是载波的十分之一,即10kbs,为题目规定的要求,框图如2.2所示。psk基带字及控制信号到ask控制频率字最高位频率累加相位加法器记数十次移位寄存器图2.2 psk产生框图ask信号的产生是在dds正弦查找表之前加上了ask模块,正弦查找表中0地址代表的是正弦波的相位0,这时对应的幅度输出也为0,利用这一点,设计如图2.3 。当相关的ask控制信号产生时,记数器对相位字高位进行记数,每记数十次发出一个上升沿使移位寄存器移出一位基带信号,移出的如果是二进制0则数据选择器选择相位0到正弦查找表,这时输出为0,移出的如果是二进制1,则选择dds产生的相位字,经查找表输出的波形就为正弦波,由于记数器检测的是相位字每次到0的时候改变幅度,因此基带信号与载波同步的非常的好。这种设计在正弦频率字对应的100khz的时候基带的速率由计数器决定,即是载波的十分之一,即10kbs,为题目规定的要求。ask基带字及控制信号相位字到da全0最高位记数十次正弦查找表移位寄存器数据选择器图2.3 ask产生框图3 dds函数信号发生器的硬件实现3.1单片机控制系统单片机系统主要负责人机交互和相应功能的实现,由液晶面板显示各级功能菜单,通过按键来灵活实现调频、调幅,ask、psk等功能。3.2 fpga核心系统fpga作为核心系统,主要负责高速控制,生成dds所需的数据和控制信号,在单片机系统的控制下做出相应功能响应。因为fpga控制灵活、资源丰富,在完成底层控制的内时,还内建多个数字核,如:dds、bpsk控制、fsk控制、调频等。其硬件电路如图3.1所示。图3.1 fpga最小系统硬件电路图3.3 高速da模块图3.2 高速da输出电路图如图3.2所示,为da电路原理图。高速da负责将fpga送来的频率数据转换成模拟信号输出。因为所需信号频率达10mhz,要能很好的生成信号,必需取足够大转换速度的da芯片。我们采用ths5651 d/a芯片,其速率达125mps,能很好满足要求。增益放大电路采用运放ths4001,在15供电,增益为1情况下,3db带宽达270m,完全能满足要求。3.4 30mhz低通lc滤波器dds输出信号携带时钟和其高次谐波的高频分量是其固有特性,因此一个良好的滤波器也是设计成功的关键。本设计中,dac时钟频率使用120mhz,与10mhz相差较远,滤波比较容易实现,选取低通滤波器截止频率为30mhz。阶数相同而类型不同的滤波器中,椭圆滤波器的阻带下降最快,但通带内有波动,且对元件参数要求较高。与之相比巴特沃斯滤波器在通带内具有很高的平坦性,但阻带下降速度不如椭圆滤波器。考虑到本设计中对滤波器的要求不高,且巴特沃斯滤波器实现较容易,另外,为保证通带内具有较高的平坦性,选用巴特沃斯滤波器作为本次设计的滤波器。为了提高阻带衰减速度,取阶数为九阶,使用filter solutions软件设计的滤波器如图3.3所示。图3.3 九阶巴特沃斯低通滤波器3.5 末级放大要使输出信号具有一定幅度上和功率上的驱动能力,输出必须进行放大。为了保持幅频的平坦性,用两级ad811构成放大电路,第一级负责幅度放大,第二级负责功率驱动。因为保持反馈深度有利于提高动态范围和提高驱动能力,所以第二级放大选取放大倍数为1倍,幅度放大主要由第一级电路完成。电路图如3.4所示。图3.4 末级放大输出电路4 能与数据测试及结果分析4.1 测试仪器tds3032b 数字示波器4.2 测试方法及数据测试方法:示波器探头接信号输出端口,在其两端并50负载,探头调到x10档,进行数据测量。测得数据如表4. 1。表4.1单一正弦信号测量结果设定频率实测1峰-峰值100hz100.025hz5.88v1khz1.00023khz5.88v10khz10.0023khz5.82v100khz100.024khz5.76v1mhz1.00024mhz5.803v2mhz2.00047mhz5.700v4mhz4.00094mhz5.562v6mhz6.00141mhz5.422v8mhz8.00189mhz5.342v10mhz10.0024mhz5.324v 测试结果的波形图图下: 图4.1 测量1mhz时波形图 图4.2 测量5khz频偏时fm频谱图 图4.3 测量psk波形图 图4.4 测量ask波形图五 结束语采用系统级混合信号处理器c8051f020作为系统的控制中心,因而圆满完成了课题的要求。现总结如下:(1)实现了10hz-20mhz的高精度、高稳定度的频率输出,频率最小步进为10hz,步进可任意设置。(2)设计了50m的低通和相应的宽带放大器,使得10hz-20mhz波形无明显失真,10m以内信号幅度的平坦度为0.1db。(4)使用数字方法实现了模拟调频;没有增加任何硬件,仅使用软件就实现了此功能,简化了系统的复杂性。(5)由单片机同时控制载波和二进制基带信号产生,使得载波和基带信号之间的同步问题得到良好的解决。(6)人机接口采用hd7279智能键盘管理芯片和图形点阵液晶作为硬件构架,并设计了一套中文菜单式操作系统,使系统具有良好的人机交互界面。总之,我觉得此次毕业设计的收获不仅仅是完成了课题的任务,更重要的是通过这次毕业设计,我对学过的书本知识有了更深的理解,同时也学到了许多书本上学不到的知识。另外,我在

温馨提示

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

评论

0/150

提交评论