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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

EDA信号发生器程序说明书.docx

1、EDA信号发生器程序说明书1 引言EDA技术作为现代电子设计的核心,它依赖于功能强大的计算机,在EDA工具软件平台上,对以硬件描述语言HDL为系统逻辑描述手段完成的设计文件,自动的完成设计文件,自动的完成逻辑编译,逻辑化简,逻辑分割,逻辑综合,结构综合(布局布线),以及逻辑优化和仿真测试,直到完成既定的电子线路系统功能。随着基于FPGA的EDA技术的发展和应用领域不断的扩大与深入,EDA技术在电子信息、通信、自动控制及计算机应用等领域的重要性日益突出。随着技术市场与人才市场对EDA技术的需求不断提高,产品的市场效率和技术要求也将会影响到教学与科研。本设计是一个基于VHDL的采用自顶向下设计方法

2、实现的多功能函数信号发生器,该设计方法具有外围电路简单,程序修改灵活和调试容易等特点,并通过计算机仿真和实验证明了设计的正确性。2 题目分析2.1设计目的设计一个信号发生器,用于产生正弦波、方波、三角波、锯齿波信号。2.2 设计要求本设计是采用VHDL来实现的简易多功能信号发生器。它能产生正弦波,三角波,方波和锯齿波。且对各种波形的要求如下:(1)根据按键选择不同的波形(实现正弦波,三角波,方波和锯齿波);(2)各波形的频率范围为100Hz-20KHz;(3)各波形频率可调(通过按键控制频率的变化,步进值为500Hz);(4)用LED数码管实时显示输出波形的频率值;(5)用按键控制实现输出信号

3、的幅度调节(幅度调节为2.5V和5V)。3 硬件电路设计3.1原理图的实现由题目分析可知,要完成整体设计,可通过Quartus设计出以下各个模块的原理图:(1)分频器的原理图(2)地址发生器的原理图(3)正弦波发生器的原理图(4)方波信号发生器的原理图(5)锯齿波信号发生器的原理图(6)三角波信号发生器的原理图(7)四选一选择器原理图其中各波形数据存储ROM的HEX数据文件分别如下各图所示: 经过对设计要求的仔细分析与思考,把以上各模块根据其功能和设计思路设计出总的系统原理图如图3-5所示:图3-5 系统综合原理图 3.2 各种波形的实现3.2.1正弦波的代码 正弦波的产生思想是将对模拟波形采

4、样后的编码存入定义好的ROM中,再根据时钟循环的将这些编码顺序输出,在输出端将经过数模转换器转换后的模拟信号接入示波器即可显示正弦波形。产生正弦波的VHDL代码如下:library ieee;use ieee.std_logic_1164.all;entity sin2 isport(clock,sel:in std_logic;dout4:out integer range 0 to 255);end sin2;architecture bhv of sin2 istype mem_type is array(0 to 63) of integer range 0 to 255;consta

5、nt mem:mem_type:=(255,254,252,249,245,239,233,225,217,207,197,186,174,162,150,137,124,112,99,87,75,64,53,43,34,26,19,13,8,4,1,0,0,1,4,8,13,19,26,34,43,53,64,75,87,99,112,124,137,150,162,174,186,197,207,217,225,233,239,245,249,252,254,255);-正弦波数据采用signal address:integer range 0 to 63;begin process(cl

6、ock) begin if clockevent and clock=1 then if address63 then address=0; else if sel=1 then address=address+1; dout4=(mem(address)/2; else address=address+1; dout463 then address=0; else if sel=1 then address=address+1; dout3=(mem(address)/2; else address=address+1; dout363 then address=0; else if sel

7、=1 then address=address+1; dout1=(mem(address)/2; else address=address+1; dout163 then address=0; else if sel=1 then address=address+1; dout2=(mem(address)/2; else address=address+1; dout2=mem(address); end if; end if; end if;end process;end bhv;3.2.8 锯齿波仿真结果图3-9 锯齿波仿真图仿真图观察输出的仿真结果可以看出,输出依次为对锯齿波采样后的

8、编码数值,这样经过模数转换,当将程序下载到硬件后,在示波器上就可以显示锯齿波形了。3.3各个控制单元的实现3.3.1频率控制单元频率控制单元包括按键输入识别模块、分频数产生模块和分频模块。其器件图分别如图3-10 3-11 3-12所示。在按键输入识别模块中共有4个输入端。其中一个时钟输入端,以一个频率调节输入端,一个使系统输出波形的频率为最大的控制输入端和一个使系统输出波形的频率为最小的控制输入端。本课程设计要求输出波形的频率在每按一次相应的按键时,就增加或减少500Hz。而实验室的硬件设备上的按键都是拨码是按键,即按键按下后一直有效,这显然不能满足要求。于是按键输入识别模块中用如下的代码实

9、现按键每一次都能有效的功能。if button0=0 and button1=1 then if cnt=40 then cnt=0; else cnt=cnt+1; end if; elsif button0=1 and button1=0 then if cnt=40 then cnt=0; else cnt=cnt+1; end if;以上代码实现的只是频率增长的功能,同理就可以实现频率减小的功能。当按下按键输入识别模块中分别使整个系统输出最大和最小频率的波形的控制输入端时 ,在按相应的使频率增减的按键则实现频率从最大或最小开始增加或减少的功能。在分频数产生模块中有一个输入端接收从按键输

10、入识别模块中输出地对频率的控制信号的输入端,一个分频数输出端,四个相应的接数码管以显示系统输出信号的频率的输出端。当分频数产生模块的输入端接收从按键输入识别模块中输出地对频率的控制信号后,便产生相应的分频数送到输出端,同时将与分频数相应频率送到与数码管相接的输出端。其VHDL代码见本课程设计的附录。在分频模块中有一个系统时钟输入端,一个分频数输入端和一个频率输出端。分频器的功能主要是根据分频数产生相应的输出频率。3.3.2波形输出控制单元波形输出控制单元中只包括一个数据选择器模块。其器件图如图3-13所示。图3-13 数据选择器模块在该模块为4选1的数据选择器,包括4个数据输入端,一个数据选择

11、输入端和一个数据输出端。其功能是根据数据选择输入端输入的数据来选择相应的数据送到输出端。从而实现数据的选择输出。其代码如下:library ieee;use ieee.std_logic_1164.all;entity mux4 isport(boxing:in std_logic_vector(1 downto 0);dout1,dout2,dout3,dout4:in integer range 0 to 255;wave:out integer range 0 to 255);end mux4;architecture bhv of mux4 isbeginwith boxing selectwave63 thenaddress=0;elseif sel=1 thenaddress=address+1;dout1=(mem(address)/2;elseaddress=address+1;dout163 thenaddress=0;elseif sel=1 thenaddress=address+1;dout4=(mem(address)/2;elseaddress=address+1;dout4=mem(address);end if;end if;end if;end process;end bhv;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1