基于FPGA的直接数字频率合成器设计_第1页
基于FPGA的直接数字频率合成器设计_第2页
基于FPGA的直接数字频率合成器设计_第3页
基于FPGA的直接数字频率合成器设计_第4页
基于FPGA的直接数字频率合成器设计_第5页
免费预览已结束,剩余26页可下载查看

付费下载

下载本文档

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

文档简介

1、JANGSUUNIVERSITYOFTECHNOLOGYFPGA技术实验报告基于FPGA的直接数字频率合成器设计学院:电气信息工程学院专业:电子信息工程班级:姓名:学号:指导教师:戴霞娟、陈海忠时间:2015.9.24目录绪论错误!未定义书签。一、背景与意义2.二、设计要求与整体设计2.2.1 设计要求2.2.2 数字信号发生器的系统组成32.3 DDS技术3.三、硬件电路设计及原理分析.4.3.1 硬件电路设计图4.3.2 设计原理5.四、程序模块设计、仿真结果及分析54.1 顶层模块设计6.4.2 分频模块设计6.4.3 时钟模块设计114.4 数据选择模块设计124.5 正弦波产生模块设

2、计错误!未定义书签。4.6 三角波产生模块设计154.7 方波产生模块设计错误!未定义书签。4.8 锯齿波模块设计1.8五、软硬件调试215.1 正弦波225.2 锯齿波225.3 方波235.4三角23六、调试结果说明及故障分析24七、心得体会24八、参考文献25九、附录25绪论直接数字频率合成技术(DirectDig让alFrequencySynthesi,即DDF*股简称DDS足从相位直接合成所需波形的一种新的频率合成技术。近年来,直接数字频率合成器由于其具有频率分辨率高、频率变换速度快、相位可连续变化等特点,在数字通信系统中已被广泛采用。随着微电子技术的发展,现场可编程门阵列(FPG牌

3、件得到了飞速发展。由于该器件具有速度快、集成度高和现场可编程的优点,因而在数字处理中得到广泛应用,越来越得到硬件电路设计工程师的青睐。一、背景与意义信号发生器是一种常用的信号源,广泛运用于科学研究、生产实践和教学试验等领域。特别是在通信系统的科研实验中,常常需要用到不同频率和幅度的信号,如正弦波、三角波、方波和锯齿波等。作为一种为电子测量和计量提供电信号的设备,它和万用表、示波器、频率计等仪器一样,是最普通、最基本,也是运用最广泛的电子仪器之一,几乎所有电参量的测量都需要用到信号发生器。凡是能产生测试信号的仪器,统称为信号源,也称为信号发生器,它用于产生被测电路所需特定参数的电测试信号。本课题

4、的主要研究内容是参考直接数字频率合成原理(DDS技术6,利用QuartusII9.0软件作为平台,VHD印言作为开发语言,基于FPGAE合相应外围电路实现一个数字信号发生器,具电路结构简单,容易扩展,具有极大的灵活性和方便性,实现了产生频率可调的正弦波、三角波、方波的信号发生器。二、设计要求与整体设计:2.1 设计要求设计多功能波形发生器,该波形发生器能产生正弦波、方波、三角波和由用户编辑的特定形状波形,并且幅度、频率可调。具体要求如下:(1)具有产生正弦波、方波、三角波、锯齿波4种周期性波形的功能。(2)输出波形的频率范围为100KHz200KHZ(3)输出波形幅度不大于5V(峰-峰值),且

5、幅度可调。2.2 数字信号发生器系统组成原理框图该数字信号发生器系统主要由输入部分、FPGAFB分、D/A转换部分、频率、幅值调节和波形转换部分组成。如图2.1所示。图2.1数字信号发生器系统组成2.3 DDS技术DDS与大多数的数字信号处理技术一样,它的基础仍然是奈圭斯特采定理。奈圭斯特采样定理是任何模拟信号进行数字化处理的基础,它描述的是一个带限的模拟信号经抽样变成离散序列后可不可以由这些离散序列恢复出原始模拟信号的问题。奈圭斯特采样定理告诉我们,当抽样频率大于或者等于模拟信号最高频率的两倍时,可以由抽样得到的离散序列无失真地恢复出原始模拟信号。只不过在DDS技术中,这个过程被颠倒过来了。

6、DDS不是对模拟信号进行抽样,而是一个假定LPF)组成。2口抽样过程已经发生且抽样值已经量化完成,如何通过某种方法把已经量化的数值重建原始信号的问题。DDSt路一般由参考时钟、相位累加器、波形存通滤波器(构如图2.1所示。三、硬件电路设计及原理分析3.1 硬件电路设计图GNDOACOS32VCCWR1ILE(BY1/BY2)GKIDWR2DI3XFERDI2DMDI1口因DIDDI6VREF0I7RFBI0UT2GNDI0UT1U1T,GND+12VU2:ALM35B-12V3.2 原理分析利用FPGA-EP2c5T144魏程实现直接数字频率合成器,能生成正弦波、三角波及锯齿波。频率,相位可调

7、可控。DDS具体工作过程如下:每来一个时钟脉冲clk,N位全加器将频率控制数据M与累加寄存器输出的累加相位数据N相加,把相加后的结果送至累加寄存器的输入端。累加寄存器一方面将上一时钟周期作用后所产生的新的数据反馈到加法器的输入端,以使加法器在下一时钟的作用下继续与频率控制数据M相加;另一方面将这个值作为取样地址值送入幅度/相位转换电路,此电路根据取样地址输出相应的波形数据。最后经D/A转换器和低通滤波器将波形数据转换成所需要的模拟波形。四、程序模块设计、仿真结果及分析波形发生器可以由顶层模块、分频模块、时钟模块、数据选择器模块、正弦波产生模块、三角波产生模块、方波产生模块、锯齿波产生模块。4.

8、1 顶层模块QtauruiIIFullCfMiLaiieiiiMeciutMl.0ie-iji.13wauiifidt4.2 分频模块:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYwxm_CLKISPORT(CLK:INSTD_LOGIC;EN,EN1,EN2:INSTD_LOGIC;CLKOUT:OUTSTD_LOGIC);END;ARCHITECTUREBEHAVEOFwxm_CLKISSIGNALCNT:STD_LOGIC_VECTOR(19DOWNTO0);SIGNALEN3,E

9、N4,EN5:STD_LOGIC;SIGNALEN6:STD_LOGIC_VECTOR(2DOWNTO0);BEGINEN6<=EN3&EN4&EN5;PROCESS(EN)BEGINIFEN'EVENTANDEN='0'THENIFEN3='0'THENEN3<='1'ELSEEN3<='0'ENDIF;ENDIF;ENDPROCESS;PROCESS(EN1)BEGINIFEN1'EVENTANDEN1='0'THENIFEN4='0'THENE

10、N4<='1'ELSEEN4<='0'ENDIF;ENDIF;ENDPROCESS;PROCESS(EN2)BEGINIFEN2'EVENTANDEN2='0'THENIFEN5='0'THENEN5<='1'ELSEEN5<='0'ENDIF;ENDIF;8ENDPROCESS;PROCESS(CLK,EN6)BEGINIFCLK'EVENTANDCLK='1'ANDEN6="000"THENIFCNT>4THENC

11、NT<=(OTHERS=>'0');CLKOUT<='0'ELSIFCNT>2THENCLKOUT<='1'CNT<=CNT+1;ELSECNT<=CNT+1;ENDIF;ELSIFCLK'EVENTANDCLK='1'ANDEN6="001"THENIFCNT>8THENCNT<=(OTHERS=>'0');CLKOUT<='0'ELSIFCNT>4THENCLKOUT<='1'

12、;CNT<=CNT+1;ELSECNT<=CNT+1;ENDIF;ELSIFCLK'EVENTANDCLK='1'ANDEN6="010"THENIFCNT>16THENCNT<=(OTHERS=>'0');CLKOUT<='0'ELSIFCNT>8THENCLKOUT<='1'CNT<=CNT+1;ELSECNT<=CNT+1;ENDIF;ELSIFCLK'EVENTANDCLK='1'ANDEN6="011

13、"THENIFCNT>30THENCNT<=(OTHERS=>'0');CLKOUT<='0'ELSIFCNT>15THENCLKOUT<='1'CNT<=CNT+1;ELSECNT<=CNT+1;ENDIF;ELSIFCLK'EVENTANDCLK='1'ANDEN6="100"THENIFCNT>62THENCNT<=(OTHERS=>'0');CLKOUT<='0'ELSIFCNT&g

14、t;31THENCLKOUT<='1'CNT<=CNT+1;ELSECNT<=CNT+1;ENDIF;ELSIFCLK'EVENTANDCLK='1'ANDEN6="101"THENIFCNT>124THENCNT<=(OTHERS=>'0');CLKOUT<='0'ELSIFCNT>62THEN10CLKOUT<='1'CNT<=CNT+1;ELSECNT<=CNT+1;ENDIF;ELSIFCLK'EVENTA

15、NDCLK='1'ANDEN6="110"THENIFCNT>250THENCNT<=(OTHERS=>'0');CLKOUT<='0'ELSIFCNT>125THENCLKOUT<='1'CNT<=CNT+1;ELSECNT<=CNT+1;ENDIF;ELSIFCLK'EVENTANDCLK='1'ANDEN6="111"THENIFCNT>500THENCNT<=(OTHERS=>'0

16、9;);CLKOUT<='0'ELSIFCNT>250THENCLKOUT<='1'CNT<=CNT+1;ELSECNT<=CNT+1;ENDIF;ENDIF;ENDPROCESS;END;10114.3 时钟模块LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCNT1024ISPORT(CLK:INSTD_LOGIC;Q:OUTSTD_LOGIC_VECTOR(9DOWNTO0);END;ARCHITECTUREBHVOFCNT

17、1024ISSIGNALQ1:STD_LOGIC_VECTOR(9DOWNTO0);BEGINPROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENQ1<=Q1+1;ENDIF;ENDPROCESS;Q<=Q1;END;4.4 数据选择模块设计:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYwxm_MUXISPORT(Q1,Q2,Q3,Q4:INSTD_LOGIC_VECTOR(9DOWNTO0);A1,A0:INSTD_LOGIC;Q:OUTSTD_LOGIC_VECTOR(9DOW

18、NTO0);END;1112ARCHITECTUREONEOFwxm_MUXISSIGNALA:STD_LOGIC_VECTOR(1DOWNTO0);SIGNALA2,A3:STD_LOGIC;BEGINPROCESS(A1)BEGINIFA1'EVENTANDA1='0'THENIFA2='0'THENA2<='1'ELSEA2<='0'ENDIF;ENDIF;ENDPROCESS;PROCESS(A0)BEGINIFA0'EVENTANDA0='0'THENIFA3='0&#

19、39;THENA3<='1'ELSEA3<='0'ENDIF;ENDIF;ENDPROCESS;A<=A2&A3;Q<=Q1WHENA="11"ELSEQ2WHENA="10"ELSEQ3WHENA="01"ELSEQ4;1213END;4.5 正弦波产生模块设计:LIBRARYieee;USEieee.std_logic_1164.all;LIBRARYaltera_mf;USEaltera_mf.all;ENTITYwxm_sinISPORT(address:INST

20、D_LOGIC_VECTOR(9DOWNTO0);clock:INSTD_LOGIC;q:OUTSTD_LOGIC_VECTOR(9DOWNTO0);ENDwxm_sin;ARCHITECTURESYNOFwxm_sinISSIGNALsub_wire0:STD_LOGIC_VECTOR(9DOWNTO0);COMPONENTaltsyncramGENERIC(clock_enable_input_a:STRING;clock_enable_output_a:STRING;init_file:STRING;intended_device_family:STRING;lpm_hint:STRIN

21、G;lpm_type:STRING;numwords_a:NATURAL;operation_mode:STRING;outdata_aclr_a:STRING;outdata_reg_a:STRING;1314widthad_a:NATURAL;width_a:NATURAL;width_byteena_a:NATURAL);PORT(clock。:INSTD_LOGIC;address_a:INSTD_LOGIC_VECTOR(9DOWNTO0);q_a:OUTSTD_LOGIC_VECTOR(9DOWNTO0);ENDCOMPONENT;BEGINq<=sub_wire0(9DOW

22、NTO0);altsyncram_component:altsyncramGENERICMAP(clock_enable_input_a=>"BYPASS",clock_enable_output_a=>"BYPASS",init_file=>"E:/wxm/wxm_sin.mif",intended_device_family=>"CycloneII",lpm_hint=>"ENABLE_RUNTIME_MOD=NO",lpm_type=>"alt

23、syncram",numwords_a=>1024,operation_mode=>"ROM",outdata_aclr_a=>"NONE",outdata_reg_a=>"CLOCK0",widthad_a=>10,width_a=>10,width_byteena_a=>1)PORTMAP(1415clock0=>clock,address_a=>address,q_a=>sub_wire0);ENDSYN;由图4.5可知,输出的幅值为所设计,正弦波选点正常,与

24、相位能相互对应。4.6 三角波产生模块设计:LIBRARYieee;USEieee.std_logic_1164.all;LIBRARYaltera_mf;USEaltera_mf.all;ENTITYwxm_sjISPORT(address:INSTD_LOGIC_VECTOR(9DOWNTO0);clock:INSTD_LOGIC;q:OUTSTD_LOGIC_VECTOR(9DOWNTO0);1516ENDwxm_sj;ARCHITECTURESYNOFwxm_sjISSIGNALsub_wire0:STD_LOGIC_VECTOR(9DOWNTO0);COMPONENTaltsyncr

25、amGENERIC(clock_enable_input_a:STRING;clock_enable_output_a:STRING;init_file:STRING;intended_device_family:STRING;lpm_hint:STRING;lpm_type:STRING;numwords_a:NATURAL;operation_mode:STRING;outdata_aclr_a:STRING;outdata_reg_a:STRING;widthad_a:NATURAL;width_a:NATURAL;width_byteena_a:NATURAL);PORT(clock。

26、:INSTD_LOGIC;address_a:INSTD_LOGIC_VECTOR(9DOWNTO0);q_a:OUTSTD_LOGIC_VECTOR(9DOWNTO0);ENDCOMPONENT;BEGINq<=sub_wire0(9DOWNTO0);altsyncram_component:altsyncramGENERICMAP(1617clock_enable_input_a=>"BYPASS",clock_enable_output_a=>"BYPASS",init_file=>"E:/wxm/wxm_sj.m

27、if",intended_device_family=>"CycloneII",lpm_hint=>"ENABLE_RUNTIME_MOD=NO",lpm_type=>"altsyncram",numwords_a=>1024,operation_mode=>"ROM",outdata_aclr_a=>"NONE",outdata_reg_a=>"CLOCK0",widthad_a=>10,width_a=>10

28、,width_byteena_a=>1)PORTMAP(clock0=>clock,address_a=>address,q_a=>sub_wire0);ENDSYN;4.7 方波产生模块设计:LIBRARYieee;USEieee.std_logic_1164.all;LIBRARYaltera_mf;USEaltera_mf.all;ENTITYwxm_squareISPORT(address:INSTD_LOGIC_VECTOR(9DOWNTO0);clock:INSTD_LOGIC;1718q:OUTSTD_LOGIC_VECTOR(9DOWNTO0);ENDw

29、xm_square;ARCHITECTURESYNOFwxm_squareISSIGNALsub_wire0:STD_LOGIC_VECTOR(9DOWNTO0);COMPONENTaltsyncramGENERIC(clock_enable_input_a:STRING;clock_enable_output_a:STRING;init_file:STRING;intended_device_family:STRING;lpm_hint:STRING;lpm_type:STRING;numwords_a:NATURAL;operation_mode:STRING;outdata_aclr_a

30、:STRING;outdata_reg_a:STRING;widthad_a:NATURAL;width_a:NATURAL;width_byteena_a:NATURAL);PORT(clock0:INSTD_LOGIC;address_a:INSTD_LOGIC_VECTOR(9DOWNTO0);q_a:OUTSTD_LOGIC_VECTOR(9DOWNTO0);ENDCOMPONENT;BEGINq<=sub_wire0(9DOWNTO0);altsyncram_component:altsyncram1819GENERICMAP(clock_enable_input_a=>

31、"BYPASS",clock_enable_output_a=>"BYPASS",init_file=>"E:/wxm/wxm_square.mif",intended_device_family=>"CycloneII",lpm_hint=>"ENABLE_RUNTIME_MOD=NO",lpm_type=>"altsyncram",numwords_a=>1024,operation_mode=>"ROM",o

32、utdata_aclr_a=>"NONE",outdata_reg_a=>"CLOCK0",widthad_a=>10,width_a=>10,width_byteena_a=>1)PORTMAP(clock0=>clock,address_a=>address,q_a=>sub_wire0);ENDSYN;4.8 锯齿波模块设计:矩形波的实现较之正弦波发生简单,由于矩形波是两个电平值间的交替变换,因此波形采样值的预存只要有两个不同的数值就行了。LIBRARYieee;USEieee.std_logic_1

33、164.all;LIBRARYaltera_mf;USEaltera_mf.all;ENTITYwxm_jcISPORT1920(address:INSTD_LOGIC_VECTOR(9DOWNTO0);clock:INSTD_LOGIC;q:OUTSTD_LOGIC_VECTOR(9DOWNTO0);ENDwxm_jc;ARCHITECTURESYNOFwxm_jcISSIGNALsub_wire0:STD_LOGIC_VECTOR(9DOWNTO0);COMPONENTaltsyncramGENERIC(clock_enable_input_a:STRING;clock_enable_ou

34、tput_a:STRING;init_file:STRING;intended_device_family:STRING;lpm_hint:STRING;lpm_type:STRING;numwords_a:NATURAL;operation_mode:STRING;outdata_aclr_a:STRING;outdata_reg_a:STRING;widthad_a:NATURAL;width_a:NATURAL;width_byteena_a:NATURAL);PORT(clock0:INSTD_LOGIC;address_a:INSTD_LOGIC_VECTOR(9DOWNTO0);q

35、_a:OUTSTD_LOGIC_VECTOR(9DOWNTO0);ENDCOMPONENT;2021BEGINq<=sub_wire0(9DOWNTO0);altsyncram_component:altsyncramGENERICMAP(clock_enable_input_a=>"BYPASS",clock_enable_output_a=>"BYPASS",init_file=>"E:/wxm/wxm_jc.mif",intended_device_family=>"CycloneII",lpm_hint=>"ENABLE_RUNTIME_MOD=NO",lpm_type=>"altsyncram",numwords_a=>102

温馨提示

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

评论

0/150

提交评论