基于FPGA的直接数字频率合成器设计_第1页
基于FPGA的直接数字频率合成器设计_第2页
基于FPGA的直接数字频率合成器设计_第3页
基于FPGA的直接数字频率合成器设计_第4页
基于FPGA的直接数字频率合成器设计_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

1、2 JANGSU UNIVERSITY OF TECHNOLOGY FPGA技术实验报告基于FPGA的直接数字频率合成器设计学 院: 电气信息工程学院 专 业: 电子信息工程 班 级: 姓 名: 学 号: 指导教师: 戴霞娟、陈海忠 时 间: 2015.9.24 25 目 录绪论1一、背景与意义2二、设计要求与整体设计22.1 设计要求22.2 数字信号发生器的系统组成32.3 DDS技术3三、硬件电路设计及原理分析43.1 硬件电路设计图43.2 设计原理5四、程序模块设计、仿真结果及分析54.1顶层模块设计64.2分频模块设计64.3时钟模块设计114.4数据选择模块设计12 4.5正弦波

2、产生模块设计13 4.6三角波产生模块设计15 4.7方波产生模块设计17 4.8锯齿波模块设计18五、软硬件调试215.1正弦波22 5.2锯齿波22 5.3方波23 5.4三角23 六、调试结果说明及故障分析24 七、心得体会24 八、参考文献25 九、附录25 绪论 直接数字频率合成技术(DirectDigitalFrequencySynthesi,即DDFS一般简称DDS)是从相位直接合成所需波形的一种新的频率合成技术。近年来,直接数字频率合成器由于其具有频率分辨率高、频率变换速度快、相位可连续变化等特点,在数字通信系统中已被广泛采用。随着微电子技术的发展,现场可编程门阵列( FPGA

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

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

5、于5V(峰-峰值),且幅度可调。2.2 数字信号发生器系统组成原理框图 该数字信号发生器系统主要由输入部分、FPGA部分、D/A转换部分、频率、幅值调节和波形转换部分组成。如图2.1所示。分频器FPGA部分系 统 控 制 器时钟复位波形调幅调频正弦波三角波方波其他波型波 形 DA 转 换滤波输出 图2.1数字信号发生器系统组成2.3 DDS技术 DDS与大多数的数字信号处理技术一样,它的基础仍然是奈圭斯特采定理。奈圭斯特采样定理是任何模拟信号进行数字化处理的基础,它描述的是一个带限的模拟信号经抽样变成离散序列后可不可以由这些离散序列恢复出原始模拟信号的问题。奈圭斯特采样定理告诉我们,当抽样频率

6、大于或者等于模拟信号最高频率的两倍时,可以由抽样得到的离散序列无失真地恢复出原始模拟信号。只不过在DDS技术中,这个过程被颠倒过来了。DDS不是对模拟信号进行抽样,而是一个假定抽样过程已经发生且抽样值已经量化完成,如何通过某种方法把已经量化的数值重建原始信号的问题。DDS电路一般由参考时钟、相位累加器、波形存通滤波器(LPF)组成。其结构如图2.1所示。图2.2 DDS基本结构框图三、硬件电路设计及原理分析3.1硬件电路设计图3.2原理分析 利用FPGA-EP2C5T144C8编程实现直接数字频率合成器,能生成正弦波、三角波及锯齿波。频率,相位可调可控。 DDS 具体工作过程如下:每来一个时钟

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

8、BRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY wxm_CLK ISPORT(CLK:IN STD_LOGIC;EN,EN1,EN2:IN STD_LOGIC;CLKOUT:OUT STD_LOGIC);END;ARCHITECTURE BEHAVE OF wxm_CLK ISSIGNAL CNT:STD_LOGIC_VECTOR(19 DOWNTO 0);SIGNAL EN3,EN4,EN5: STD_LOGIC;SIGNAL EN6:STD_LOGIC_VECTOR(2 DOWNTO

9、 0);BEGINEN6<=EN3&EN4&EN5;PROCESS(EN)BEGINIF EN'EVENT AND EN='0' THEN IF EN3 ='0' THEN EN3<='1'ELSEEN3<='0'END IF;END IF;END PROCESS;PROCESS(EN1)BEGINIF EN1'EVENT AND EN1='0' THEN IF EN4 ='0' THEN EN4<='1'ELSEEN4<

10、='0'END IF;END IF;END PROCESS;PROCESS(EN2)BEGINIF EN2'EVENT AND EN2='0' THEN IF EN5 ='0' THEN EN5<='1'ELSEEN5<='0'END IF;END IF;END PROCESS;PROCESS(CLK,EN6)BEGINIF CLK'EVENT AND CLK='1' AND EN6="000" THENIF CNT>4 THENCNT<=

11、(OTHERS=>'0');CLKOUT<='0'ELSIF CNT>2 THENCLKOUT<='1'CNT<=CNT+1;ELSECNT<=CNT+1;END IF;ELSIF CLK'EVENT AND CLK='1' AND EN6="001" THENIF CNT>8 THENCNT<=(OTHERS=>'0');CLKOUT<='0'ELSIF CNT>4 THENCLKOUT<='

12、;1'CNT<=CNT+1;ELSECNT<=CNT+1;END IF;ELSIF CLK'EVENT AND CLK='1' AND EN6="010" THENIF CNT>16 THENCNT<=(OTHERS=>'0');CLKOUT<='0'ELSIF CNT>8 THENCLKOUT<='1'CNT<=CNT+1;ELSECNT<=CNT+1;END IF;ELSIF CLK'EVENT AND CLK='1

13、' AND EN6="011" THENIF CNT>30 THENCNT<=(OTHERS=>'0');CLKOUT<='0'ELSIF CNT>15 THENCLKOUT<='1'CNT<=CNT+1;ELSECNT<=CNT+1;END IF;ELSIF CLK'EVENT AND CLK='1' AND EN6="100" THENIF CNT>62 THENCNT<=(OTHERS=>'0&#

14、39;);CLKOUT<='0'ELSIF CNT>31 THENCLKOUT<='1'CNT<=CNT+1;ELSECNT<=CNT+1;END IF;ELSIF CLK'EVENT AND CLK='1' AND EN6="101" THENIF CNT>124 THENCNT<=(OTHERS=>'0');CLKOUT<='0'ELSIF CNT>62 THENCLKOUT<='1'CNT<=C

15、NT+1;ELSECNT<=CNT+1;END IF;ELSIF CLK'EVENT AND CLK='1' AND EN6="110" THENIF CNT>250 THENCNT<=(OTHERS=>'0');CLKOUT<='0'ELSIF CNT>125 THENCLKOUT<='1'CNT<=CNT+1;ELSECNT<=CNT+1;END IF;ELSIF CLK'EVENT AND CLK='1' AND EN6

16、="111" THENIF CNT>500 THENCNT<=(OTHERS=>'0');CLKOUT<='0'ELSIF CNT>250 THENCLKOUT<='1'CNT<=CNT+1;ELSECNT<=CNT+1;END IF;END IF;END PROCESS;END;4.3时钟模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT1024 ISPORT

17、(CLK:IN STD_LOGIC; Q:OUT STD_LOGIC_VECTOR(9 DOWNTO 0);END;ARCHITECTURE BHV OF CNT1024 ISSIGNAL Q1:STD_LOGIC_VECTOR(9 DOWNTO 0);BEGINPROCESS(CLK)BEGIN IF CLK'EVENT AND CLK='1' THEN Q1<=Q1+1;END IF;END PROCESS;Q<=Q1;END;4.4数据选择模块设计:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY wxm_

18、MUX ISPORT(Q1,Q2,Q3,Q4:IN STD_LOGIC_VECTOR(9 DOWNTO 0);A1,A0:IN STD_LOGIC;Q:OUT STD_LOGIC_VECTOR(9 DOWNTO 0);END;ARCHITECTURE ONE OF wxm_MUX ISSIGNAL A:STD_LOGIC_VECTOR(1 DOWNTO 0);SIGNAL A2,A3:STD_LOGIC;BEGINPROCESS(A1)BEGINIF A1'EVENT AND A1='0' THEN IF A2='0' THENA2<='1

19、'ELSE A2<='0'END IF;END IF;END PROCESS;PROCESS(A0)BEGINIF A0'EVENT AND A0='0' THEN IF A3='0' THENA3<='1'ELSEA3<='0'END IF;END IF;END PROCESS;A<=A2&A3;Q<=Q1 WHEN A="11" ELSEQ2 WHEN A="10" ELSEQ3 WHEN A="01&quo

20、t; ELSEQ4;END;4.5正弦波产生模块设计:LIBRARY ieee;USE ieee.std_logic_1164.all;LIBRARY altera_mf;USE altera_mf.all;ENTITY wxm_sin ISPORT(address: IN STD_LOGIC_VECTOR (9 DOWNTO 0);clock: IN STD_LOGIC ;q: OUT STD_LOGIC_VECTOR (9 DOWNTO 0);END wxm_sin;ARCHITECTURE SYN OF wxm_sin ISSIGNAL sub_wire0: STD_LOGIC_VECT

21、OR (9 DOWNTO 0);COMPONENT altsyncramGENERIC (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_

22、a: NATURAL;width_byteena_a: NATURAL);PORT (clock0: IN STD_LOGIC ;address_a: IN STD_LOGIC_VECTOR (9 DOWNTO 0);q_a: OUT STD_LOGIC_VECTOR (9 DOWNTO 0);END COMPONENT;BEGINq <= sub_wire0(9 DOWNTO 0);altsyncram_component : altsyncramGENERIC MAP (clock_enable_input_a => "BYPASS",clock_enabl

23、e_output_a => "BYPASS",init_file => "E:/wxm/wxm_sin.mif",intended_device_family => "Cyclone II",lpm_hint => "ENABLE_RUNTIME_MOD=NO",lpm_type => "altsyncram",numwords_a => 1024,operation_mode => "ROM",outdata_aclr_a =>

24、; "NONE",outdata_reg_a => "CLOCK0",widthad_a => 10,width_a => 10,width_byteena_a => 1)PORT MAP (clock0 => clock,address_a => address,q_a => sub_wire0);END SYN; 由图 4.5可知,输出的幅值为所设计,正弦波选点正常,与相位能相互对应。4.6三角波产生模块设计:LIBRARY ieee;USE ieee.std_logic_1164.all;LIBRARY a

25、ltera_mf;USE altera_mf.all;ENTITY wxm_sj ISPORT(address: IN STD_LOGIC_VECTOR (9 DOWNTO 0);clock: IN STD_LOGIC ;q: OUT STD_LOGIC_VECTOR (9 DOWNTO 0);END wxm_sj;ARCHITECTURE SYN OF wxm_sj ISSIGNAL sub_wire0: STD_LOGIC_VECTOR (9 DOWNTO 0);COMPONENT altsyncramGENERIC (clock_enable_input_a: STRING;clock_

26、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 (clock0: IN STD_LOGIC ;address_a: IN S

27、TD_LOGIC_VECTOR (9 DOWNTO 0);q_a: OUT STD_LOGIC_VECTOR (9 DOWNTO 0);END COMPONENT;BEGINq <= sub_wire0(9 DOWNTO 0);altsyncram_component : altsyncramGENERIC MAP (clock_enable_input_a => "BYPASS",clock_enable_output_a => "BYPASS",init_file => "E:/wxm/wxm_sj.mif"

28、;,intended_device_family => "Cyclone II",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,widt

29、h_a => 10,width_byteena_a => 1)PORT MAP (clock0 => clock,address_a => address,q_a => sub_wire0); END SYN;4.7方波产生模块设计:LIBRARY ieee;USE ieee.std_logic_1164.all;LIBRARY altera_mf;USE altera_mf.all;ENTITY wxm_square ISPORT(address: IN STD_LOGIC_VECTOR (9 DOWNTO 0);clock: IN STD_LOGIC ;q:

30、OUT STD_LOGIC_VECTOR (9 DOWNTO 0);END wxm_square;ARCHITECTURE SYN OF wxm_square ISSIGNAL sub_wire0: STD_LOGIC_VECTOR (9 DOWNTO 0);COMPONENT altsyncramGENERIC (clock_enable_input_a: STRING;clock_enable_output_a: STRING;init_file: STRING;intended_device_family: STRING;lpm_hint: STRING;lpm_type: STRING

31、;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: IN STD_LOGIC ;address_a: IN STD_LOGIC_VECTOR (9 DOWNTO 0);q_a: OUT STD_LOGIC_VECTOR (9 DOWNTO 0);END COMPONENT;BEGINq <= sub_wire0(9

32、 DOWNTO 0);altsyncram_component : altsyncramGENERIC MAP (clock_enable_input_a => "BYPASS",clock_enable_output_a => "BYPASS",init_file => "E:/wxm/wxm_square.mif",intended_device_family => "Cyclone II",lpm_hint => "ENABLE_RUNTIME_MOD=NO"

33、,lpm_type => "altsyncram",numwords_a => 1024,operation_mode => "ROM",outdata_aclr_a => "NONE",outdata_reg_a => "CLOCK0",widthad_a => 10,width_a => 10,width_byteena_a => 1)PORT MAP (clock0 => clock,address_a => address,q_a => su

34、b_wire0); END SYN;4.8锯齿波模块设计:矩形波的实现较之正弦波发生简单,由于矩形波是两个电平值间的交替变换,因此波形采样值的预存只要有两个不同的数值就行了。LIBRARY ieee;USE ieee.std_logic_1164.all;LIBRARY altera_mf;USE altera_mf.all;ENTITY wxm_jc ISPORT( address: IN STD_LOGIC_VECTOR (9 DOWNTO 0);clock: IN STD_LOGIC ;q: OUT STD_LOGIC_VECTOR (9 DOWNTO 0);END wxm_jc;ARC

35、HITECTURE SYN OF wxm_jc ISSIGNAL sub_wire0: STD_LOGIC_VECTOR (9 DOWNTO 0);COMPONENT altsyncramGENERIC (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

36、_a: STRING;outdata_reg_a: STRING;widthad_a: NATURAL;width_a: NATURAL;width_byteena_a: NATURAL);PORT (clock0: IN STD_LOGIC ;address_a: IN STD_LOGIC_VECTOR (9 DOWNTO 0);q_a: OUT STD_LOGIC_VECTOR (9 DOWNTO 0);END COMPONENT;BEGINq <= sub_wire0(9 DOWNTO 0);altsyncram_component : altsyncramGENERIC MAP (clock_enable_input_a => "BYPASS",clock_enable_output_a => "BYPASS",init_file => "E:/wxm/wxm_jc.mif",intended_device_family => "Cyclone II&qu

温馨提示

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

最新文档

评论

0/150

提交评论