收藏 分销(赏)

函数信号发生器设计(EDA大作业).doc

上传人:精**** 文档编号:1264169 上传时间:2024-04-19 格式:DOC 页数:12 大小:166.51KB
下载 相关 举报
函数信号发生器设计(EDA大作业).doc_第1页
第1页 / 共12页
函数信号发生器设计(EDA大作业).doc_第2页
第2页 / 共12页
函数信号发生器设计(EDA大作业).doc_第3页
第3页 / 共12页
函数信号发生器设计(EDA大作业).doc_第4页
第4页 / 共12页
函数信号发生器设计(EDA大作业).doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

1、EDA课程设计大作业设计题目: 函数信号发生器设计 学生姓名: 学 号: 专业班级: 20012年 05月 28日函数信号发生器1设计背景和设计方案1.1 设计背景在电子工程、通信工程、自动控制、遥测控制、测量仪器、仪表和计算机等技术领域,经常需要用到各种各样的信号波形发生器。随着集成电路的迅速发展,用集成电路可很方便地构成各种信号波形发生器。用集成电路实现的信号波形发生器与其它信号波形发生器相比,其波形质量、幅度和频率稳定性等性能指标,都有了很大的提高。函数信号发生器是一种在科研和生产中经常用到的基本波形发生器,随着大规模集成电路的迅速发展,多功能信号发生器已被制作成专用集成电路,例如ICL

2、8038单片函数波形发生器,可以产生精度较高的正弦波、方波、矩形波、锯齿波等多种信号。 1.2 设计方案及实现函数信号发生器由递增斜波(zeng),递减斜波产生模块(jian),方波产生模块(square),三角波产生模块(san),正弦波产生模块(sin)和输出波形选择模块(choice)组成。总体设计框图如图所示,图中输出q需要接到外部D/A转换的数据输入端,将数字信号转换为模拟信号,在D/A转换器的输出端即可得到各种不同的函数信号波形。如果输出脉冲波形边沿跳变不理想,可加低通滤波器来加以完善。将各个模块分开来设计,先设计各个模块的程序,让后将程序生成对应的元件,然后再将这些元件链接到一起

3、组成完整的硬件电路1.3各模块程序及生成模块1.3.1 递减斜波产生模块模块程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity jian isport(clk,reset:in std_logic; /定义输入输出端口q:out std_logic_vector(7 downto 0); /定义波形输出端口end jian;architecture jian_arc of jian isbeginprocess(clk,reset) /模块进程variable tmp:std_

4、logic_vector(7 downto 0); /定义7位逻辑位变量beginif reset=0 then /复位有效 tmp:=11111111; /为变量赋值全1 elsif clkevent and clk=1 then /时钟有效时 if tmp=00000000 then /当前变量值为全0时 tmp:=11111111; /为变量赋值为全1 else tmp:=tmp-1; /不为全0时,当前变量值减1 end if;end if;q=tmp; /变量值赋给qend process;end jian_arc;生成的元件图:1.3.2 递增斜波产生模块模块程序如下:librar

5、y ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity zeng isport(clk,reset:in std_logic; /定义时钟,复位端口q:out std_logic_vector(7 downto 0); /定义波形输出端口end zeng;architecture zeng_arc of zeng is beginprocess(clk,reset) /模块进程variable tmp:std_logic_vector(7 downto 0); /定义7位逻辑位变量beginif res

6、et=0 then /复位有效 tmp:=00000000; /为变量赋值为全0 elsif clkevent and clk=1 then /时钟有效 if tmp=11111111 then /当前为全1时 tmp:=00000000; /为变量赋值为全0 else tmp:=tmp+1; /若不为全1,变量加1 end if;end if;q=tmp; /将变量值付给qend process;end zeng_arc生成的元件图:1.3.3 三角波产生模块模块程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_

7、unsigned.all;entity san is port(clk,reset:in std_logic; /定义时钟,复位端口 q:out std_logic_vector(7 downto 0); /定义七位波形输出端口end san;architecture san_arc of san is beginprocess(clk,reset) /模块进程variable tmp:std_logic_vector(7 downto 0); /定义7位逻辑位变量variable a:std_logic; /定义1位逻辑位变量beginif reset=0 then /复位有效 tmp:=0

8、0000000; /当前变量赋值为全0 elsif clkevent and clk=1 then /时钟有效 if a=0 then /当a为0时 if tmp=11111110 then /判断当前变量值是否为指定值 tmp:=11111111; /若为指定值变量赋值为全1 a:=1; /a赋值为1 else tmp:=tmp-1; /若不为指定值变量值减1 end if;else if tmp=00000001then /判断当前变量值是否为指定值 tmp:=00000000; /若为指定值变量赋值为全0 a:=0; /a赋值为0 else tmp:=tmp-1; /若不为变量值变量值减

9、1end if;end if;end if;q=tmp; /将变量值付给qend process;end san_arc;生成的元件图:1.3.4 方波产生模块模块程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity square is port(clk,clr:in std_logic; /定义时钟,清除端口 q:out integer range 0 to 255); /定义整型输出端口,范围为0-255end square;architecture square_arc o

10、f square issignal a:bit; /定义信号位abeginprocess(clk,clr) /模块进程variable cnt:integer range 0 to 63; /定义整型变量cnt,范围为0-63beginif clr=0then /判断清除端是否为0a=0; /若为0,a赋值为0elsif clkevent and clk =1then /时钟有效if cnt63 then /判断cnt是否小于63 cnt:=cnt+1; /若小于63,则变量加1elsecnt:=0; /否则变量赋值为0a=not a; /a取反再赋给aend if;end if;end pr

11、ocess;Process(clk,a)begin if clkevent and clk=1then /时钟有效 if a=1 then /判断a是否为1q=255; /若为1,q赋值为255elseq=0; /不为1,q赋值为0end if; end if; end process; end square_arc;生成的元件图:1.3.5 正弦波产生模块模块程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity sin is port(clk,clr:in std_logic;

12、 /定义时钟,清除端口 d:out integer range 0 to 255); /定义整型输出端口,范围为0-255end sin;architecture sin_arc of sin isbeginprocess(clk,clr) /模块进程variable tmp:integer range 0 to 63; /定义整型变量,范围为0-63beginif clr=0then /清除端有效 dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddnull;end case; end if; end proces

13、s; end sin_arc;生成的元件图:1.3.6 波形选择模块模块程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity choice is port (sel:in std_logic_vector(2 downto 0); /定义三位选择码 d0,d1,d2,d3,d4:in std_logic_vector(7 downto 0); /定义波形输入端口 q:out std_logic_vector(7 downto 0); /定义波形输出端口end choice;arc

14、hitecture choice_arc of choice isbeginprocess(sel) /定义选择进程begincase sel iswhen000=qqqqqnull;end case;end process;end choice_arc;生成的元件图:2方案实施reset为复位信号,clk为时钟信号,sel波形选择信号输入口。具体的实现效果为当信号reset为低电平时,既复位端无效。当sel信号为000时选择递减斜波产生模块,波形由选择模块choice上的q7.0输出,数字信号波形如图1所示。图1 递减斜波当sel信号为001时选择递增斜波产生模块,波形由选择模块choice

15、上的q7.0输出,数字信号波形如图2所示。图 2递增斜波当sel信号为010时选择三角波信号产生模块,波形由选择模块choice上的q7.0输出,数字信号波形如图3所示。图 3三角波当sel信号为011时选择方波信号产生模块,波形由选择模块choice上的q7.0输出,数字信号波形如图4所示。图4方波当sel信号为100时选择正弦波信号产生模块,波形由选择模块choice上的q7.0输出,数字信号波形如图2.5所示。图5 正弦波3结果与结论 仿真结果,经过多次调试达到预期效果。本次设计采用了模块化的设计方法,将各个模块分开来设计,设计并仿真好一个模块的电路后再设计另外一个模块,这样便于检查错误和定位修改错误,为最后模块之间的组成提供方便。程序设计值归结于软件的仿真结果,系统的搭建和实物的构造可以借鉴,不能完全照搬!11

展开阅读全文
部分上传会员的收益排行 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助手
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告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 

客服