ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:26.02KB ,
资源ID:5347689      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-5347689.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(任意信号发生器设计DDS.docx)为本站会员(b****4)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

任意信号发生器设计DDS.docx

1、任意信号发生器设计DDS任意信号发生器设计发布时间:2011-07-08 12:45:53技术类别:CPLD/FPGA修改|删除|置顶目录绪论第1章DDS原理1.1 DDS原理和结构1.2 DDS的特点第2章 系统总体设计2.1设计思路2.2系统设计2.2.2各底层文件管脚图第3章 程序设计与分析3.1程序设计概要3.2核心程序分析3.2.1数控分频器3.2.2多路选择器3.2.3三角波生成器3.2.4可调节占空比的方波3.2.5振幅键控(ASK-Amplitude Shift Keying)3.2.6移频键控(FSK-Frequency Shift Keying)3.2.7移相键控(PSK-

2、Phase Shift Keying)3.2.8任意波的产生3.2.9正弦信号的产生第4章 仿真与测试4.1 QUARTUSII简介4.2各模块时序仿真结果4.2.1数控分频模块4.2.2波形发生模块4.2.3多路选择器模块4.3硬件测试结束语参考文献谢辞绪论EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。硬件描述语言HDL是EDA技术的重要组成部分,常见的HDL主要有VHDL、VerilogHDL、ABEL、AHDL、S

3、ystemVerilog和SystemC。其中VHDL、VerilogHDL在现在的EDA设计中使用最多,并且我们学习的是VHDL的编程方法和实用技术。VHDL的英文全名是VHSIC(Very High Speed Integrated Circuit)Hardware Description Language,由IEEE(The Institute of Electrical and Electronics Engineers)进一步发展,并在1987年作为“IEEE标准1076”公布。从此VHDL成为硬件描述语言的业界标准之一。EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了

4、设计者的劳动强度。利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。现在对EDA的概念或范畴用得很宽。包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。本文主要介绍了EDA在设计波形发生器中的应用,完成了锯齿波、三角波、占空比可调的方波、占空比50%的方波以及正弦波

5、设计,同时还能起到对频率、幅值、占空比的调节,用原理图及VHDL语言完成了整个系统的设计,并用实验箱完成了所有功能硬件调试。第1章DDS原理1.1DDS原理和结构基于DDS技术的函数信号发生器由相位累加器、波形存储器ROM、数模转换器DAC和低通滤波器LPF组成,相位累加器和波形存储器ROM在FPGA器件EP1K30TC144-3中实现,系统框图如图1所示:图1 DDS系统框图在系统时钟脉冲fc的作用下,相位累加器以步长K不停地累加(K又称为频率控制字),累加输出作为ROM地址输入进行查表,ROM输出值即是波形数字幅度值,把该数据送至DAC转换成模拟量输出,再经滤波器平滑后输出所需波形。由相位

6、累加器字长N的限制,累加到一定值后输出将会溢出,这样波形存储器的地址就会循环一次,即输出波形循环一周。因此改变步长就可以改变相位累加器的溢出时间,在时钟不变的条件下就可改变输出频率。输出波形的频率为(1)由式(1),合成信号最低频率,最高频率, 当相位累加器位宽N和基准时钟频率达到一定要求时,输出频率范围可以很宽,输出分辨率可以很小,趋近于0,这是传统信号发生器无法达到的。1.2DDS的特点优点:(1)输出频率相对带宽较宽输出频率带宽为50%fs(理论值)。但考虑到低通滤波器的特性和设计难度以及对输出信号杂散的抑制,实际的输出频率带宽仍能达到40%fs。(2)频率转换时间短DDS是一个开环系统

7、,无任何反馈环节,这种结构使得DDS的频率转换时间极短。事实上,在DDS的频率控制字改变之后,需经过一个时钟周期之后按照新的相位增量累加,才能实现频率的转换。因此,频率时间等于频率控制字的传输,也就是一个时钟周期的时间。时钟频率越高,转换时间越短。DDS的频率转换时间可达纳秒数量级,比使用其它的频率合成方法都要短数个数量级。(3)频率分辨率极高若时钟fs的频率不变,DDS的频率分辨率就是则相位累加器的位数N决定。只要增加相位累加器的位数N即可获得任意小的频率分辨率。目前,大多数DDS的分辨率在1Hz数量级,许多小于1mHz甚至更小。(4)相位变化连续改变DDS输出频率,实际上改变的每一个时钟周

8、期的相位增量,相位函数的曲线是连续的,只是在改变频率的瞬间其频率发生了突变,因而保持了信号相位的连续性。(5)输出波形的灵活性只要在DDS内部加上相应控制如调频控制FM、调相控制PM和调幅控制AM,即可以方便灵活地实现调频、调相和调幅功能,产生FSK、PSK、ASK和MSK等信号。另外,只要在DDS的波形存储器存放不同波形数据,就可以实现各种波形输出,如三角波、锯齿波和矩形波甚至是任意的波形。当DDS的波形存储器分别存放正弦和余弦函数表时,既可得到正交的两路输出。(6)其他优点由于DDS中几乎所有部件都属于数字电路,易于集成,功耗低、体积小、重量轻、可靠性高,且易于程控,使用相当灵活,因此性价

9、比极高。缺点:DDS也有局限性,主要表现在:(1)输出频带范围有限由于DDS内部DAC和波形存储器(ROM)的工作速度限制,使得DDS输出的最高频有限。目前市场上采用CMOS、TTL、ECL工艺制作的DDS工习片,工作频率一般在几十MHz至400MHZ左右。采用GaAs工艺的DDS芯片工作频率可达2GHz左右。(2)输出杂散大由于DDS采用全数字结构,不可避免地引入了杂散。其来源主要有三个:相位累加器相位舍位误差造成的杂散;幅度量化误差(由存储器有限字长引起)造成的杂散和DAC非理想特性造成的杂散。第2章 系统总体设计2.1设计思路采用原理图与VHDL语言结合的方法完成整个系统的设计,其中,P

10、ULSE为数控分频模块,包括一个时钟输入、一个4位的数控值输入和一个频率输出,输出的频率用于递增锯齿波、递减锯齿波、三角波、占空比可调方波、正弦波和标准方波、振幅键控、移频键控、移相键控、任意波的时钟输入,以实现各信号的频率调节。r_zeng为递增锯齿波,其设计方法是每一次时钟信号出现上升沿,则给输出信号加1,直到输出信号为全1,此时将输出信号清零。Left_zeng为递减锯齿波,其设计方法是每一次时钟信号出现上升沿,则给输出信号减1,直到输出信号为0,此时将输出信号置为全1。sanjiaobo为三角波发生器,其设计方法是以一个信号a控制,当a为0时,每一次时钟信号出现上升沿,则给输出信号加1

11、,当a为1时,每一次时钟信号出现上升沿,则给输出信号减1,a由输出信号的值控制,当输出信号为全1时,给a置1,当输出信号为0时,给a清0。Square_ketiao为占空比可调方波,其设计方法是在标准方波的基础上,引入两个调节按键up和down,以增加和减小方波的占空比,在这两个按键的设计上,采用了上升沿和下降沿的判断方式,以调节控制变量z的大小,最后完成占空比的调节。sine为正弦波,其设计方法是设计一个正弦波的数据表和一个控制变量tmp,时钟上升沿控制tmp的增加,tmp对应正弦数据表中的相应数据。square为标准方波,其设计方法同占空比可调的方波,只是它的控制变量是一个恒定值,使其占空

12、比为50%。图2系统框架2.2系统设计2.2.2各底层文件管脚图根据给出的系统原理图,下面分别列出各底层文件管脚图。数控分频器如图4所示:图3数控分频器管脚其中,CLK为外部输入时钟,D3.0为数控分频的计数值输入端,FOUT为分频频率输出。多路选择器如图5所示:图4多路选择器其中,CLK为外部输入时钟,SEL为多路选择器的选择输入信号,D0-D5为6路信号的输入,Q7.0为频率输出,各波形产生器如图6所示:图5各波形发生器管脚其中,CLK为分频后的时钟信号输入端,Q7.0为输出的一个8位数据,供DAC0832的数据输入。第3章 程序设计与分析3.1程序设计概要本课程设计主要完成与任意波形信号

13、发生相关的VHDL语言程序设计与控制综合,体现了VHDL从顶向下的设计思想,同时对初学者来说也是一个不错的练习机会。从整体设计上将要产生的几个波形分开设计,与C语言设计有点类似,不过VHDL语言作为一种硬件描述语言,其本质与C语言不同,它完成的是实际的硬件电路的配置,而C语言完成的是控制、运算等。3.2核心程序分析3.2.1数控分频器P_REG: PROCESS(CLK)VARIABLE CNT8 :STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF CLKEVENT AND CLK = 1 THENIF CNT8 = 1111 THENCNT8 := D;FULL =

14、1;ELSECNT8 := CNT8 + 1;FULL = 0;END IF;END IF;END PROCESS P_REG ;以D为基数的一个计数器,时钟上升沿触发,当CNT8“1111”时给CNT8载入初值,同时给FULL一个时钟周期的高电平,使其周期性的输出一个脉冲信号。P_DIV: PROCESS(FULL)VARIABLE CNT2 : STD_LOGIC;BEGINIF FULLEVENT AND FULL = 1 THENCNT2 := NOT CNT2;IF CNT2 = 1 THENFOUT = 1;ELSEFOUT out_boout_boout_boout_boout_

15、boout_boout_boout_boout_boout_boout_boout_bo=null;-其他情况下无输出end case;end process;此进程为一个case语句设计的多路选择器进程,其中,sel为选择哪一种波形的输出。3.2.3三角波生成器PROCESS(clk,reset)VARIABLEtmp:STD_LOGIC_VECTOR(7 DOWNTO 0);VARIABLEa:STD_LOGIC;BEGINIF reset=0 THENtmp:=00000000;-复位信号为0,置最小值ELSIFclkEVENTANDclk=1 THEN-检测时钟上升沿IF a=0 TH

16、ENIFtmp= THENtmp:=; -置最大值a:=1;ELSE-不是最大值时递增tmp:=tmp+1;-递增运算END IF;ELSEIFtmp=00000001 THENtmp:=00000000; -置最小值a:=0;ELSE-a为1时,执行递减运算tmp:=tmp-1;-递减运算END IF;END IF;END IF;q=tmp;END PROCESS;此进程是控制一个三角波发生的,其中以a作为计满标志。当tmp为“00000001”时a=0,下一时钟到来时,进入tmp加状态;当tmp为“”时,a=1,下一时钟到来时,进入tmp减状态。3.2.4可调节占空比的方波process(

17、clk,conup,condown),此进程与多路选择器相类似,这里不再最赘述。PROCESS(clk,clr)VARIABLEcnt:INTEGER; -定义内部整数变量BEGINIFclr=0 THENa=0;ELSIFclkEVENTANDclk=1 THEN-检测时钟上升沿cnt:=cnt+1;-计数IFcntz THENa=1;ELSifcnt128 thena=0;ELSEcnt:=0;END IF;END IF;END PROCESS;此进程是通过a的值调整一个占空比的信号的控制量。其中,时钟上升沿条件下,调节a的值,以控制clk的分频系数。PROCESS(clk,a)BEGIN

18、IFclkEVENTANDclk=1 THENIF a=1 THENq=255; -a=1,输出一个波形周期内的高电平ELSEqoutdata_bufoutdata_bufoutdata_buf=null;-其他情况下则无输出end case;end process;outdata=outdata_buf;-信号赋值indata_buf=indata; Shift Keying)主要是通过分频来实现FSK的,当输入信号为1的时候则对系统输入时钟进行4分频,当输入为0的时候则直接输出输入的时钟信号。然后将控制输出的时钟信号输到正弦波发生器的时钟脚。从而实现调频的目的。process(clk,xu

19、anze)variable count : integer range 0 to 4;beginifclkeventandclk=1 thenifxuanze=1 then如果输入信号是1的话则进行4分频if count=4 then四分频进程count:=0;full=1;elsecount:=count+1;full=0;end if;elsifxuanze=0 thenfull=not full;end if;end if;end process;outclk=full; Shift Keying)PSK实现主要根据输入信号进行判断,如果是0的话那么就将相位移动180度,这个是由255减去正弦波输入的幅度值来实现的,如果输入的是1的话就是直接和载波相位相同,直接输出正弦波信号。process(pskin)beginifclkeventandclk=1 thenifpskin=0 thenoutdata=255-indata;elsifpskin=1 thenoutdataqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqNULL;END CASE;elsetmp:=0;end if;END IF;END PROCESS;第4章 仿真与测试

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2