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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

DDS信号发生器电路设计说明书.docx

1、DDS信号发生器电路设计说明书北京信息科技大学自动化学院实 验 报 告课程名称 综合电子设计 实验名称 DDS信号发生器电路设计实验仪器 DE2开发板,Quartus,示波器等 专 业 自动化 班级/学号 自控0901/ 学生姓名 实验日期 2012-4-162012-4-27 实验地点 小营校区实验室1-7-102成 绩 一、 实验目的1.1. 了解电子电路设计的一般方法、根据题目要求选择设计方案。1.2. 根据理论计算分析,查阅相关资料和手册,选择电子元器件。1.3. 学会使用电子设计自动化软件对电路进行设计、分析、验证。利用可编程逻辑器件实现电路的设计、仿真、下载。1.4. 熟练使用常用

2、电子仪器(示波器、万用表、信号发生器等)对电路进行测试。1.5. 写出符合要求的课程设计报告。二、 实验设备DE2开发板、Quartus II 9.1 (32-Bit)、示波器、PC机等三、 实验内容: 基本内容:(1). 了解FPGA器件工作原理及DE2开发板结构(2). 学习QUARTUS软件电路设计及仿真下载方法;(3). 利用DDS技术完成正弦波信号发生器电路设计。(4). 基本要求:信号频率输出范围50HZ100KHZ,步长0.5HZ或50HZ,频率可调。(5). 用QUARTUS软件进行仿真分析且下载验证。 扩展内容:(1). 增加脉冲信号或三角波信号的输出;(2). 频率步长分为

3、1HZ、10HZ、100HZ、1KHZ 、10KHZ 多档位调整;(3). 输出波形幅度可调;(4). 完成在数码管上数字频率显示功能;(5). 自扩展功能 1 2 3 3.1 DDS简介直接数字合成(Direct Digital Synthesis,DDS)是一种应用数字技术来实现产生信号波形的方法。DDS技术建立在采样定理的基础之上,他首先对产生的信号波形进行采样和量化,然后存入存储器作为待产生信号波形的数据表(即rom)。在输出信号波形时,从数据表中依次读出数据,产生数字化的信号,再经过D/A转换形成所需要的模拟信号波形(本实验采用AD0832转换芯片)。根据上述描述,要想改变信号的频率

4、只需要改变扫描rom表的频率即可,而这可以通过改变频率控制字来实现。要想产生不同类型的信号,只需要让他扫描不同信号对应的rom表即可,而这可以通过制作多个rom表,利用DE2开发板上的相关按键或者开关来产生选通来实现。相对于其他信号产生技术而言(),具有输出信号的采样频率固定、全数字化、易于控制、可编程、输出相位连续和频率转换时间短等优点。直接数字频率合成器原理框图本次设计采用DE2开发板上的固定时钟为50MHz,此时钟经过二次分频后在对rom表进行扫描,产生数字信号,经过D/A转换后即可产生所需模拟信号。为了达到更好的效果再用低通滤波器进行滤波以去掉各种高频干扰。如下图:上图中,需要设计频率

5、控制字、累加器、加法器、正弦查找表、D/A转换电路、低通滤波。各部分组成及原理如下:1 2 3 3.1 3.1.1 相位累加器与加法器DDS系统的核心是相位累加器。相位累加器由N位加法器与N位累加寄存器级联构成,其原理框图下图所示。每来一个时钟脉冲Fc,N位加法器将频率控制数据K与累加寄存器输出的累加相位数据相加,把相加后的结果Y送至累加寄存器的输入端。累加寄存器一方面将在上一时钟周期作用后所产生的新的相位数据反馈到加法器的输入端,以使加法器在下一时钟的作用下继续与频率控制数据K相加;另一方面以相加后的结果形成正弦查询表的地址,取出表中与该相位对应的单元中的幅度量化正弦函数值,作为取样地址值送

6、入幅度/相位转换电路。这样就可把存储在波形存储器内的波形抽样值(二进制编码)经查找表查出,完成相位到幅值转换。相位累加器原理框图由此可以看出,相位累加器在每一个时钟脉冲输入时,把频率控制字累加一次,相位累加器输出的数据就是合成信号的相位。当相位累加器加满量时就会产生一次溢出,溢出频率就是DDS输出的信号频率。相位累加器的最大计数长度与正弦查询表中所存储的相位分隔点数相同,在取样频率(由参考时钟频率决定)不变的情况下,由于相位累加器的相位增量不同,将导致一周期内的取样点数不同,输出信号的频率也相应变化。如果设定累加器的初始相位,则可以对输出信号进行相位控制。由采样原理可知,如果使用两个相同的频率

7、合成器,并使其参考时钟相同,同时设定相同的频率控制字、不同的初始相位,那么在原理上就可以实现输出两路具有一定相位差的同频信号。3.1.2 正弦查找表ROM波形存储器(即,正弦 ROM 查找表)把存储在相位累加器中的抽样值转换成正弦波幅度的数字量函数,可理解为相位到幅度的转换。它的输入是相位调制器输出的高 M位(而并非全部 N 位)值,将其作为正弦 ROM 查找表的地址值;查询表把输入的地址相位信 息映射成正弦波幅度信号;输出送往 DAC,转化为模拟信号。3.1.3 D/A转换器D/A转换器的作用是将从rom表中输出的波形采样数据进行转换,产生阶梯波形。初步将数字量转成模拟量。3.1.4 低通滤

8、波器用于将D/A转换出来的阶梯信号进行平滑,产生符合一定要求的模拟波形。3.1.5 放大电路用于将D/A转换出来的信号进行适当的放大,产生需要的信号。3.1.6 二进制代码转换电路二进制转换电路用于将频率控制字(二进制数)转换成十进制,用于数码管显示。本次实验采用软件转换的方法,即在设计过程中显示模块采用VHDL语言的CONV_INTEGER()函数进行转换,在利用case语句实现显示。因而不需要专门的二进制转换电路。3.1.7 数码管显示电路用于显示输出波形的频率。由于输出波形的频率和频率控制字直接相关,因而直接将频率控制字进行相应的计算经二进制转十进制后,再译码后,将译码信号直接送至数码显

9、示管即可。3.2 实现方案简述本方案共包括以下几个模块:两级分频(累加器、锁存器),置数模块,数码管显示模块,rom模块,输出选通模块,D/A转换模块,滤波放大模块。关于分频、累加器模块:本方案采用DE2系统的固定时钟fclk=50MHz,在 FPGA 中,相位累加器和相位调制器都可通过加法器来实现。如果要实现对幅度的调制则可在正弦查找表后插入一个乘法器来实现。在用 FPGA 设计的过程中,整个流程都采用系统时钟 fclk产生和控制,所以其各个部分的时序和同步性需要认真对待。在进行设计的过程中涉及到各参数的计算如下:由于fc=50MHz, 其中 ;而N一旦设计完成后就不能再改变,也就是说M是一

10、个定值,系统的输入时钟也是定值,要想改变系统的输出频率只能改变频率控制字K。为了准确的表示出输出频率f0我们希望fc/2N为一个定值,也就是说f0和fc是简单的线性关系。分析上式还可以发现频率控制字K每加1,f0对应的增加fc/2N,也就是说频率的最小步进为fc/2N,亦即此时的输出最小值:fmin=fc/2N为了实现的可行性,以及在步进时能够达到一定的要求(最小步进为0.5Hz),我们希望fc/2N=1/2。此时如果希望步进为50Hz,只需在调整步进时M每次加100即可实现。而fc=50MHz,此时如果要满足上述要求N=26.57这不是一个整数。也就是说我们无法得到:fc/2N=1/2于是我

11、们在第一级分频时给M值为(90071993)10,这样一级分频后输出的频率fc1=220= 1048576HZ;这样一级分频完成后, 由在二级的累加器位数只需N+1=21位。于是改变不同的频率控制字K得到的频率:f0=1/2K;置数模块:严格意义来讲本实验方案中包含两个置数模块,分别用在一二级分频。由于一级分频得到的是一个固定的频率,也就是说置数值是个固定值,直接在程序中写入。这个置数功能简单。另一个置数在二级,实现置不同的数。置数的方法采用case语句,根据选择的步进幅度,分别为每按一次开关分别加0.5,1,10,100,1000Hz;实现不同方式的置数,见步进的最小值为0.5Hz,满足要求

12、。数码显示模块:数码显示模块最重要的一个问题是把K值(二进制)转成十进制,并利用译码程序将K的值显示出来。需要格外注意的是,由于我们输出的频率f0=1/2K,因而需将K值除以2在送到译码。将K值(二进制)转成十进制,采用VHDL语言里面的CONV_INTEGER()函数。由于此函数只能保留整数部分。而K值可能是奇数也可能是偶数,经过除2之后可能出现小数。为了保证小数部分也能显示,在译码之前先判断K值的奇偶性(二进制最低位如果为1则为奇数,如果为0则为偶数)。如果是奇数直接给数码管的小数位(最低位)输出5,如果为偶数输出0。整数部分是利用求模取余的方式分离出各个位数对应的数值,再送到相应的译码程

13、序即可。关于译码程序需要注意的是DE2的数码管是共阳极,需要用共阳的七段显示码.关于rom模块:rom模块,关键是生成*.mif文件。生成mif文件也有多种方式:(1)quartus菜单操作法,(2)c语言编译法,(3)汇编语言生成法,(4)Mif_Maker2010软件生成等;本方案采用(4)Mif_Maker2010软件生成法,如图:生成三角波生成mif文件后选择Tools/MegaWizard PlugIn Manager菜单生成相应的rom模块,即可。输出选通模块:选通模块主要是根据外部给的输入信号,进行相应的判断,输出对应的波形。用case语句,外部输入采用开关输入(高低电平)。当然

14、也可以采用按键(脉冲)的方式进行相应的切换。关于D/A转换模块:采用AD0832由8位输入锁存器、8位DAC寄存器、8位D/A转换电路及转换控制电路构成。DAC0832的主要特性参数如下:* 分辨率为8位; * 电流稳定时间1us; * 可单缓冲、双缓冲或直接数字输入; * 只需在满量程下调整其线性度; * 单一电源供电(+5V+15V); * 低功耗,20mW。 电路如下图所示。关于滤波放大模块:低通滤波电路采用的是二阶低通滤波电路,如下图放大则采用Op07,其特点:超低偏移: 150V最大。 低输入偏置电流: 1.8nA 。低失调电压漂移: 0.5V/ 。 超稳定,时间: 2V/month

15、最大高电源电压范围: 3V至22V 。 3.2 3.2.1 程序设计流程图:两级分频(累加器、锁存器):此部分直接在quartus 中使用 MegaWizard PlugIn Manager 工具进行宏功能模块的设 计的实现方法。因而不用写程序代码,大大减轻了工作量。这里面主要是加法器和寄存器(锁存器)构成。置数模块:此部分共有两个。分别是一级分频和二级分频对应的置数. 一级分频置数 二级置数 数码管显示模块:输出选通模块:D/A转换模块,滤波放大模块:以上两个模块均选用面包板进行搭接,无需程序设计。D/A0832转换二阶滤波电路结构框图3.2.2 系统的顶层逻辑图:3.2.3 FPGA资源利

16、用率3.3 实验仿真结果3.3 1. 2. 3. 3.1. 3.2. 3.3. 3.3.1. 各模块的仿真时序图置数模块:选通模块:3.3.2. 在线逻辑分析仪输出:正弦波输出方波输出三角波输出3.4 实验测试结果3.4 4. 5. 5.1. 5.2. 步进测试 50.5hz 51.5hz 61.5hz 161.5hz1000hz理论频率如图:50.5HZ实测频率如图:50.51HZ误差(50.51-50.50)/50.5100%=0.02%数码管显示数值(步进不同数值,各截图一组)原始:步进0.5Hz:步进1Hz:步进10Hz:步进100Hz:步进1000hz:在线逻辑分析仪输出正弦波:方波

17、:三角波:锯齿波:示波器截图D/A输出 低通电路输出放大电路输出一、 二、 三、 四、 问题与改进3 4 4.1 4.2 DDS累加器的位数过高时,示波器无法准确的测出频率。在实验条件允许的情况下尽可能的选用好的示波器。4.3 DDS频率如果过低的话10Hz一下,示波器无法准确的测量。采用频率计进行测量,最低可以测量到2Hz。4.4 采用面包板搭接外围电路的好处就是方便,但是接触不好,而且容易产生较大的干扰。如果能采用焊接的方法来实现可能效果会更好。4.5 外围电路在设计的过程中没有严格要求需要用相关的软件进行仿真。建议能要求用相关软件mutisim仿真,这样准确度高,而且实现的也比较快。4.

18、6 设计过程中,对于相关概念的理解以及相关设计思路比较重要。如果时间允许的话,能够进行系统的讲解,这样有助于其后的设计与仿真。五、 实验感言经过本次综合电子设计,也就是是关于DDS信号发生器电路的设计,我了解电子电路设计的一般方法、根据题目要求选择设计方案。根据理论计算分析,查阅相关资料和手册,选择电子元器件。学会了使用电子设计自动化软件对电路进行设计、分析、验证。利用可编程逻辑器件实现电路的设计、仿真、下载。另外,熟练使用常用电子仪器(示波器、万用表、信号发生器等)对电路进行测试。六、 参考文献1 2 3 4 5 6 5 6 6.1 6.2 DDS信号发生器电路设计实验指导6.3 VHDL

19、programming by example(fourth edition)美Douglas L.Perry.杨承恩 谭克俊 颜德文 译。6.4 Vddl 设计电子线路.边计年 薛宏熙 译。6.5 Eda技术实践 张彩珍等编。6.6 基于vhdl语言与quartus软件的可编程逻辑器件应用于开发.郑燕 郝建国 党建华 编。七、 附录(程序代码)1 2 3 4 5 6 7 1. 2. 3. 4. 一级置数library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith

20、.all;Entity m1 isPort(Q:out std_logic_vector(31 downto 0);End m1;Architecture a of m1 isbeginQ=00000101010111100110001110111001;End a; 二级置数library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;Entity m2 isPort(clr:in std_logic; wei:in std_logic_vector(

21、3 downto 0); up:in std_logic; Q:out std_logic_vector(20 downto 0);End m2;Architecture a of m2 issignal tmp:std_logic_vector(20 downto 0);beginprocess(up,clr)begin if clr=1 then tmptmptmptmptmptmpnull; end case; if tmp100111000100000000 or tmp000000000000001100100then tmp=000000000000001100100; end i

22、f; end if;end process;Q=tmp;End a;显示译码LIBRARY IEEE;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;ENTITY TURN2_10 ISPORT(in2:IN STD_LOGIC_VECTOR(20 DOWNTO 0); xiao:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); ge:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); shi:OUT STD_LOGIC_VECTO

23、R(6 DOWNTO 0); bai:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); qian:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); wan:OUT STD_LOGIC_VECTOR(6 DOWNTO 0) );END;ARCHITECTURE ART OF TURN2_10 ISsignal in2t:std_logic_vector(20 downto 0);signal in2tt:std_logic_vector(20 downto 0);signal out10:INTEGER RANGE 0 TO 2097151;signal da

24、ta0:INTEGER RANGE 0 to 9;signal data1:INTEGER RANGE 0 to 9;signal data2:INTEGER RANGE 0 to 9;signal data3:INTEGER RANGE 0 to 9;signal data4:INTEGER RANGE 0 to 9;signal data5:INTEGER RANGE 0 to 9;BEGIN in2t=in2; data0= 5 when (in2 and 000000000000000000001)=000000000000000000001 else 0; in2tt=0 & in2

25、t(20 downto 1); out10=CONV_INTEGER(in2tt); data5=out10/10000; data4=out10/1000-data5*10; data3=out10/100-data5*100-data4*10; data2=out10/10-data5*1000-data4*100-data3*10; data1=out10 mod 10; xiao= 1000000 when data0=0 else 1111001 when data0=1 else 0100100 when data0=2 else 0110000 when data0=3 else

26、 0011001 when data0=4 else 0010010 when data0=5 else 0000010 when data0=6 else 1111000 when data0=7 else 0000000 when data0=8 else 0010000 ; ge= 1000000 when data1=0 else 1111001 when data1=1 else 0100100 when data1=2 else 0110000 when data1=3 else 0011001 when data1=4 else 0010010 when data1=5 else

27、 0000010 when data1=6 else 1111000 when data1=7 else 0000000 when data1=8 else 0010000 ; shi= 1000000 when data2=0 else 1111001 when data2=1 else 0100100 when data2=2 else 0110000 when data2=3 else 0011001 when data2=4 else 0010010 when data2=5 else 0000010 when data2=6 else 1111000 when data2=7 els

28、e 0000000 when data2=8 else 0010000 ; bai= 1000000 when data3=0 else 1111001 when data3=1 else 0100100 when data3=2 else 0110000 when data3=3 else 0011001 when data3=4 else 0010010 when data3=5 else 0000010 when data3=6 else 1111000 when data3=7 else 0000000 when data3=8 else 0010000 ; qian= 1000000

29、 when data4=0 else 1111001 when data4=1 else 0100100 when data4=2 else 0110000 when data4=3 else 0011001 when data4=4 else 0010010 when data4=5 else 0000010 when data4=6 else 1111000 when data4=7 else 0000000 when data4=8 else 0010000 ; wan= 1000000 when data5=0 else 1111001 when data5=1 else 0100100 when data5=2 else 0110000 when data5=3

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

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