收藏 分销(赏)

EDA课程设计智能函数发生器.docx

上传人:丰**** 文档编号:2940592 上传时间:2024-06-11 格式:DOCX 页数:12 大小:376.36KB
下载 相关 举报
EDA课程设计智能函数发生器.docx_第1页
第1页 / 共12页
EDA课程设计智能函数发生器.docx_第2页
第2页 / 共12页
EDA课程设计智能函数发生器.docx_第3页
第3页 / 共12页
EDA课程设计智能函数发生器.docx_第4页
第4页 / 共12页
EDA课程设计智能函数发生器.docx_第5页
第5页 / 共12页
点击查看更多>>
资源描述

1、EDA课程设计题目:智能函数发生器专业:通信工程班级:通信082姓名:谢振峰学号:0810920213一、 设计题目:智能函数发生器设计一个智能函数发生器,能够产生递增、递减、方波、三角波、正弦波及及阶梯波波形,并可通过开关选择输出的波形。二、 设计目标:1) 设计一个智能函数发生器,能够以稳定的频率发生递增斜波、递减斜波、三角波、梯形波,正弦波和方波。2) 设置一个波形选择输入信号,通过此改变该信号可以选择以上各种不同种类的输出函数波形,系统具有复位功能。三、 设计原理:1. 原理图框图如下:递增模块递减模块三角波模块阶梯波模块正弦波模块方波模块选 择 模 块输出信号图1、原理图框图2. 原

2、理图说明本设计采用VHDL语言和原理图设计结合的方法,首先用文本输入法设计了六个波形模块,分别为递增、递减、三角波、梯形、正弦波、方波模块,和一个选择模块。然后进行原理图设计,将各波形模块与选择模块相应的引脚连接,从而完成智能函数发生器的设计。四、 设计内容: 1) 递增模块递增模块是用VHDL语言描述的递增函数,实体部分部分说明三个端口,两个输入端口时钟信号clk、复位信号rst和一个输出端口q。设计思路为:通过设计一个中间变量从0x00到0xFF的递增赋值给输出信号q,从而实现递增数字信号的输出。递增模块仿真图如下:图2、递增模块仿真图2) 递减模块递减模块的实体包含时钟信号输入端口clk

3、和复位信号端口rst,输出信号端口q。设计思路为:通过设计一个中间变量从0xFF到0x00的递减赋值给输出信号q,从而实现递减数字信号的输出。递减模块仿真图如下:图3、递减模块仿真图3) 三角波模块三角波模块的实体包含时钟信号输入端口clk和复位信号端口rst,输出信号端口q。设计思路为:通过设计一个中间变量先从0x00递增到0x7F,然后从0x7F递减到0x00,将中间变量赋值给输出信号q,从而实现一个周期三角波形的输出。三角波模块仿真图如下:图4、三角波模块仿真图4) 阶梯波模块阶梯波模块的实体包含时钟信号输入端口clk和复位信号端口rst,输出信号端口q。设计思路为:通过变量控制使中间变

4、量从00H到FFH之间加10H递增,递增到FFH后复位为00H,从而实现阶梯波形。阶梯波仿真图如下:图5、阶梯波模块仿真图5) 正弦波模块正弦波模块的包含时钟信号输入端口clk和复位信号端口rst,输出信号端口q。设计思路为:取一个正弦波周期64个采样值,设置一个64进制的计数器,每次计数将每个采样值输出到端口q,从而实现正弦波数字波形输出。正弦波仿真图如下:图6、正弦波模块仿真图6) 方波模块方波模块的包含时钟信号输入端口clk和复位信号端口rst,输出信号端口q。设计思路为:设置一个中间变量,将其从0x00递增到0x7F,输出信号端口q输出0x00;中间变量从0x7F递增到0xFF,端口q

5、输出0xFF,再将中间变量复位为0x00,以此循环,从而实现方波输出。方波模块仿真图如下:图7、方波模块仿真图7) 原理图设计如下图8、原理图设计五、 仿真结果图9、仿真结果(一)图10、仿真结果(二)六、 总结本设计完整地实现了课程设计要求,通过输入选择信号,输出指定的波形,并能实现复位功能。通过这次这次智能函数发生器的课程设计,我更加熟悉了学会了使用EDA编程工具软件Quartus II的操作,加深了对VHDL语言的理解,熟练了利用原理图设计电路的方面,体会到了将所学的数字电路知识付诸实践的乐趣。七、 附录1.递增模块源程序library ieee;use ieee.std_logic_1

6、164.all;use ieee.std_logic_unsigned.all;entity increase isport(clk,rst:in std_logic;q:out std_logic_vector(7 downto 0);end increase;architecture behave of increase isbeginprocess(clk,rst)variable temp:std_logic_vector(7 downto 0);beginif rst=0then temp:=00000000;elsif clkevent and clk=1 thenif temp=

7、11111111thentemp:=00000000;elsetemp:=temp+1;end if;end if;q=temp;end process;end behave;2.递减模块源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity decrease isport( clk,rst:in std_logic; q:out std_logic_vector(7 downto 0);end decrease;architecture behave of decrease isbe

8、ginprocess(clk,rst)variable temp:std_logic_vector(7 downto 0);beginif rst=0then temp:=11111111; elsif clkevent and clk=1 then if temp=00000000 then temp:=11111111; else temp:=temp-1; end if;end if; q=temp;end process;end architecture;3.三角波模块源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_lo

9、gic_unsigned.all;entity triangle isport( clk,rst: in std_logic; q:out std_logic_vector(7 downto 0);end triangle;architecture behav of triangle isbeginprocess(clk,rst) variable temp:std_logic_vector(7 downto 0); beginif rst=0 then temp:=00000000; elsif clkevent and clk=1 then temp:=temp+1; if temp=01

10、111111 then q=temp; else q=255-temp; if temp=11111111 then temp:=00000000 ; end if; end if; end if; end process; end architecture;4.阶梯波模块源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity stair isport( clk,rst:in std_logic; q:out std_logic_vector(7 downto 0);end stair

11、; architecture behav of stair isbeginprocess(clk,rst)variable tmp:std_logic_vector(7 downto 0);Begin if rst=0then tmp:=00000000; elsif clkevent and clk=1 then if tmp=11111111 then tmp:=00000000; else tmp:=tmp+16; end if;end if;q=tmp;end process;end behav; 5.正弦波模块源程序library ieee;use ieee.std_logic_11

12、64.all;use ieee.std_logic_unsigned.all;entity sinwave isport (clk,rst:in std_logic;d:out std_logic_vector(7 downto 0);end sinwave;architecture behav of sinwave isbeginprocess(clk,rst)variable num:integer range 0 to 63;beginif rst=0 then ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd

13、ddnull;end case;end if;end process;end behav;6.方波模块源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity rectangle isport( clk,rst:in std_logic; q:out std_logic_vector(7 downto 0);end rectangle;architecture behav of rectangle isbeginprocess(clk,rst) variable temp:std_logic_vector(7 downto 0);beginif rst=0then temp:=00000000;elsif clkevent and clk=1 then temp:=temp+1;if temp=01111111 then q=00000000 ; else q=11111111 ;if temp=11111111 then temp:=00000000; end if;end if;end if;end process;end behav;

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
百度文库年卡

猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服