多功能信号发生器设计.docx

上传人:b****6 文档编号:13719440 上传时间:2023-06-16 格式:DOCX 页数:21 大小:305.58KB
下载 相关 举报
多功能信号发生器设计.docx_第1页
第1页 / 共21页
多功能信号发生器设计.docx_第2页
第2页 / 共21页
多功能信号发生器设计.docx_第3页
第3页 / 共21页
多功能信号发生器设计.docx_第4页
第4页 / 共21页
多功能信号发生器设计.docx_第5页
第5页 / 共21页
多功能信号发生器设计.docx_第6页
第6页 / 共21页
多功能信号发生器设计.docx_第7页
第7页 / 共21页
多功能信号发生器设计.docx_第8页
第8页 / 共21页
多功能信号发生器设计.docx_第9页
第9页 / 共21页
多功能信号发生器设计.docx_第10页
第10页 / 共21页
多功能信号发生器设计.docx_第11页
第11页 / 共21页
多功能信号发生器设计.docx_第12页
第12页 / 共21页
多功能信号发生器设计.docx_第13页
第13页 / 共21页
多功能信号发生器设计.docx_第14页
第14页 / 共21页
多功能信号发生器设计.docx_第15页
第15页 / 共21页
多功能信号发生器设计.docx_第16页
第16页 / 共21页
多功能信号发生器设计.docx_第17页
第17页 / 共21页
多功能信号发生器设计.docx_第18页
第18页 / 共21页
多功能信号发生器设计.docx_第19页
第19页 / 共21页
多功能信号发生器设计.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

多功能信号发生器设计.docx

《多功能信号发生器设计.docx》由会员分享,可在线阅读,更多相关《多功能信号发生器设计.docx(21页珍藏版)》请在冰点文库上搜索。

多功能信号发生器设计.docx

多功能信号发生器设计

 

目录

1、主要功能1

2、功能模块的划分1

3、主要功能的实现1

3.1信号的产生模块1

3.2信号选择模块3

3.3系统的细化框图3

3.4多功能信号发生器的RTL图4

4程序的调试分析与仿真5

5总结9

6附录10

6.1主程序10

6.2递增锯齿波形源程序11

6.3正弦波形源程序12

6.4三角波形源程序14

6.5方波源程序15

6.6波形选择模块源程序16

7参考文献17

 

1、主要功能

用VHDL语言设计一个多功能信号发生器,根据输入信号的选择可以输出递增锯齿波、正弦波、三角波、方波和以上四种波形的任意线性叠加等15种信号。

2、功能模块的划分

根据设计要求,信号发生器的结构框图如图2.1所示。

 

图2.1信号发生器的结构框图

其中信号产生模块将产生所需的各种信号,信号发生器的控制模块可以用数据选择器实现,用多选1数据选择器实现对15种信号的选择。

最后将波形数据送入D/A转换器,将数字信号转换为模拟信号输出。

用示波器测试D/A转换器的输出,可以观测到5种信号的输出。

3、主要功能的实现

3.1信号的产生模块

信号的产生可以利用计数器直接产生信号输出,当系统时钟输入后,通过复位开关选择是否产生波形

(1)递增锯齿波INCR的模块图如图3.1.1所示,其中CLK是输入时钟端口,RESET为输入复位端口,DOUT[7..0]为信号输出端口。

图3.1.1递增锯齿波INCR的模块图

(2)正弦波SINE的模块图如图3.1.2所示,其中CLK是输入时钟端口,RESET为输入复位端口,DOUT[7..0]为信号输出端口。

图3.1.2正弦波SINE的模块图

(3)三角波TRIA的模块图如图3.1.3所示,其中CLK是输入时钟端口,RESET为输入复位端口,DOUT[7..0]为信号输出端口。

图3.1.3三角波TRIA的模块图

(4)方波模块的RECT的模块图如图3.1.4所示,其中CLK是输入时钟端口,RESET为输入复位端口,DOUT[7..0]为信号输出端口。

图3.1.4方波RECT的模块图

3.2信号选择模块

信号选择模块是一个多选1的数据选择器,模块图如图3.2.1所示,其中SEL为波形数据选择端口,SEL[3..0]为4位二进制输入端口,DOUT[7..0]为8位二进制输出端口。

该模块可以根据外部开关的状态选择相应的波形输出

图3.2.1信号选择模块图

3.3系统的细化框图

图3.3.1系统的细化框图

3.4多功能信号发生器的RTL图

图3.4.1多功能信号发生器的RTL图

 

4程序的调试分析与仿真

复位信号RESET为低电平时输出,高电平为不输出,选择性分析

(1)第一次SEL选择值设为0001,输出为递增锯齿波,其仿真波形如图4.1.1所示。

图4.1.1递增锯齿波的仿真波形

(2)第二次SEL选择值设为0010,输出为正弦波,其仿真波形如图4.1.2所示。

图4.1.2递减锯齿波的仿真波形

(3)第三次SEL的值设为0100,输出为三角波,其仿真波形如图4.1.3所示。

图4.1.3三角波的仿真波形

(4)第三次SEL的值设为1000,输出为方波,其仿真波形如图4.1.4所示。

图4.1.4方波的仿真波形

(5)第三次SEL的值设为0011,输出为递增锯齿波和正弦波的叠加,其仿真波形如图4.1.5所示。

图4.1.5递增锯齿波和正弦波的叠加波形

 

(6)第三次SEL的值设为0101,输出为递增锯齿波和三角波的叠加,其仿真波形如图4.1.6所示。

图4.1.6递增锯齿波和三角波的叠加波形

(7)第三次SEL的值设为1001,输出为递增矩形波和方波的叠加,其仿真波形如图4.1.7所示。

图4.1.7递增矩形波和方波的叠加波形

(8)第三次SEL的值设为0110,输出为正弦波和三角波的叠加,其仿真波形如图4.1.8所示。

图4.1.8正弦波和三角波的叠加波形

(9)第三次SEL的值设为1010,输出为正弦波和方波的叠加,其仿真波形如图4.1.9所示。

图4.1.9正弦波和方波的叠加波形

(10)第三次SEL的值设为1100,输出为三角波和方波的叠加,其仿真波形如图4.1.10所示。

图4.1.10三角波和方波的叠加波形

(11)第三次SEL的值设为0111,输出为递增锯齿波、正弦波和三角波的叠加,其仿真波形如图4.1.11所示。

图4.1.11递增锯齿波、正弦波和三角波的叠加波形

(12)第三次SEL的值设为1011,输出为递增锯齿波、正弦波和方波的叠加,其仿真波形如图4.1.12所示。

图4.1.12递增锯齿波、正弦波和方波的叠加波形

(13)第三次SEL的值设为1101,输出为递增锯齿波、三角波和方波的叠加,其仿真波形如图4.1.13所示。

图4.1.13递增锯齿波、三角波和方波的叠加

(14)第三次SEL的值设为1110,输出为正弦波、三角波和方波的叠加,其仿真波形如图4.1.14所示。

图4.1.14正弦波、三角波和方波的叠加波形

(15)第三次SEL的值设为1111,输出为以上四种波行的叠加,其仿真波形如图4.1.15所示。

图4.1.15四种波行的叠加波形

5总结

由于EDA课本的相关内容是以前从未接触过的,再加上课时少,而且集中,导致了我对对内容的理解、吸收困难。

尽管老师对重要的知识点讲得很详细,但对我而言,很多知识只是听一遍,能够达到看得懂,却学不到.对于基本的知识,我还略晓一二,但要稍微有点变动,基本就不懂了.只能说是对着教材死记硬背。

所以,对于课设,我是一筹莫展。

无奈之下只好拿着别人的模块程序,然后再自己理解修改,不断的调试,联合同学的帮忙,程序总算才能运行.

课设已经是很多次了,尽管不熟练,尽管有些是在别人的帮忙之下才完成的,尽管每次都感叹课设好难自己平时没学好,但这几天的收获还是很大的,课设的几天是很充实的,脑子在不停的运转,虽说不懂,但在做的过程中,还是能学到很多东西.尽管只有短短的几天,但大家一起发现问题,讨论问题,解决问题.剩下的就是你要的知识,这种很互动的学习方式让我们实在是受益匪浅啊!

虽然得对着电脑半天,一天的做程序,有点累也有些晕,可是当看到劳动成果时,真是别有一番滋味在心头啊!

世上无难事,只怕有心人,的确如此。

做完这个程序最大的收获就是坚持真的很重要啊!

做完这个课程设计,我们的自信一下子提高了,我也会写些程序了;尽管对于有些人这种程序会很简单,可我的C实在是学的不怎么样,会另外一种也很不错啊!

因为享受劳动成果的滋味实在很美妙啊!

忙碌了几天,在大家的共同努力下,我们总算将此多功能信号发生器设计出来。

尽管不是自己独立完成,但仍然很高兴,因为在设计的过程中,让我了解到要设计一个大型程序,查找资料是至关重要的,在他人的基础上,再根据自己所学进行修改与调试,最后设计出自己想要的程序,这过程艰辛,但只要你持之以恒,成功指日可待。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才是真正的知识,才能提高自己的实际动手能力和独立思考的能力。

6附录

6.1主程序

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYXINHAOIS

PORT(CLK:

INSTD_LOGIC;

RESET:

INSTD_LOGIC;

SEL:

INSTD_LOGIC_VECTOR(3DOWNTO0);

DOUT:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDXINHAO;

ARCHITECTURETOPOFXINHAOIS

COMPONENTINCRIS

PORT(CLK:

INSTD_LOGIC;

RESET:

INSTD_LOGIC;

DOUT:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDCOMPONENTINCR;

COMPONENTSINEIS

PORT(CLK:

INSTD_LOGIC;

RESET:

INSTD_LOGIC;

DOUT:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDCOMPONENTSINE;

COMPONENTTRIAIS

PORT(CLK:

INSTD_LOGIC;

RESET:

INSTD_LOGIC;

DOUT:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDCOMPONENTTRIA;

COMPONENTRECTIS

PORT(CLK:

INSTD_LOGIC;

RESET:

INSTD_LOGIC;

DOUT:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDCOMPONENTRECT;

COMPONENTCHOIIS

PORT(SEL:

INSTD_LOGIC_VECTOR(3DOWNTO0);

D1,D2,D3,D4:

INSTD_LOGIC_VECTOR(7DOWNTO0);

DOUT:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDCOMPONENTCHOI;

SIGNALD1:

STD_LOGIC_VECTOR(7DOWNTO0);

SIGNALD2:

STD_LOGIC_VECTOR(7DOWNTO0);

SIGNALD3:

STD_LOGIC_VECTOR(7DOWNTO0);

SIGNALD4:

STD_LOGIC_VECTOR(7DOWNTO0);

BEGIN

U1:

INCRPORTMAP(CLK=>CLK,RESET=>RESET,DOUT=>D1);

U2:

SINEPORTMAP(CLK=>CLK,RESET=>RESET,DOUT=>D2);

U3:

TRIAPORTMAP(CLK=>CLK,RESET=>RESET,DOUT=>D3);

U4:

RECTPORTMAP(CLK=>CLK,RESET=>RESET,DOUT=>D4);

U5:

CHOIPORTMAP(SEL=>SEL,D1=>D1,D2=>D2,D3=>D3,D4=>D4,DOUT=>DOUT);

ENDTOP;

6.2递增锯齿波形源程序

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYINCRIS

PORT(CLK:

INSTD_LOGIC;

RESET:

INSTD_LOGIC;

DOUT:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDINCR;

ARCHITECTUREONEOFINCRIS

BEGIN

PROCESS(CLK,RESET)

VARIABLEQ:

STD_LOGIC_VECTOR(7DOWNTO0);

BEGIN

IFRESET='1'THEN

Q:

="00000000";

ELSIFCLK'EVENTANDCLK='1'THEN

IFQ="11111111"THEN

Q:

="00000000";

ELSE

Q:

=Q+'1';

ENDIF;

ENDIF;

DOUT<=Q;

ENDPROCESS;

ENDONE;

6.3正弦波形源程序

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

USEIEEE.STD_LOGIC_ARITH.ALL;

ENTITYSINEIS

PORT(CLK:

INSTD_LOGIC;

RESET:

INSTD_LOGIC;

DOUT:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDSINE;

ARCHITECTURETWOOFSINEIS

SIGNALCNT_VAL:

INTEGER;

BEGIN

U1:

PROCESS(CLK,RESET)

VARIABLECNT:

INTEGERRANGE0TO63;

BEGIN

IFRESET='1'THEN

CNT:

=0;

ELSIFCLK'EVENTANDCLK='1'THEN

IFCNT=63THEN

CNT:

=0;

ELSE

CNT:

=CNT+1;

ENDIF;

ENDIF;

CNT_VAL<=CNT;

ENDPROCESSU1;

U2:

PROCESS(CNT_VAL)

BEGIN

CASECNT_VALIS

WHEN0=>DOUT<="11111111";

WHEN1=>DOUT<="11111110";

WHEN2=>DOUT<="11111100";

WHEN3=>DOUT<="11111001";

WHEN4=>DOUT<="11110101";

WHEN5=>DOUT<="11101111";

WHEN6=>DOUT<="11101001";

WHEN7=>DOUT<="11100001";

WHEN8=>DOUT<="11011001";

WHEN9=>DOUT<="11001111";

WHEN10=>DOUT<="11001010";

WHEN11=>DOUT<="10111010";

WHEN12=>DOUT<="10101110";

WHEN13=>DOUT<="10100010";

WHEN14=>DOUT<="10010110";

WHEN15=>DOUT<="10001001";

WHEN16=>DOUT<="01111100";

WHEN17=>DOUT<="01110000";

WHEN18=>DOUT<="01100011";

WHEN19=>DOUT<="01010111";

WHEN20=>DOUT<="01001011";

WHEN21=>DOUT<="01000000";

WHEN22=>DOUT<="00110101";

WHEN23=>DOUT<="00101011";

WHEN24=>DOUT<="00100010";

WHEN25=>DOUT<="00011010";

WHEN26=>DOUT<="00010011";

WHEN27=>DOUT<="00001101";

WHEN28=>DOUT<="00001000";

WHEN29=>DOUT<="00000100";

WHEN30=>DOUT<="00000001";

WHEN31=>DOUT<="00000000";

WHEN32=>DOUT<="00000000";

WHEN33=>DOUT<="00000001";

WHEN34=>DOUT<="00000100";

WHEN35=>DOUT<="00001000";

WHEN36=>DOUT<="00001101";

WHEN37=>DOUT<="00010011";

WHEN38=>DOUT<="00011010";

WHEN39=>DOUT<="00100010";

WHEN40=>DOUT<="00101011";

WHEN41=>DOUT<="00110101";

WHEN42=>DOUT<="01000000";

WHEN43=>DOUT<="01001011";

WHEN44=>DOUT<="01010111";

WHEN45=>DOUT<="01100011";

WHEN46=>DOUT<="01110000";

WHEN47=>DOUT<="01111100";

WHEN48=>DOUT<="10001001";

WHEN49=>DOUT<="10010110";

WHEN50=>DOUT<="10100010";

WHEN51=>DOUT<="10101110";

WHEN52=>DOUT<="10111010";

WHEN53=>DOUT<="11000101";

WHEN54=>DOUT<="11001111";

WHEN55=>DOUT<="11011001";

WHEN56=>DOUT<="11100001";

WHEN57=>DOUT<="11101001";

WHEN58=>DOUT<="11101111";

WHEN59=>DOUT<="11110101";

WHEN60=>DOUT<="11111001";

WHEN61=>DOUT<="11111100";

WHEN62=>DOUT<="11111110";

WHEN63=>DOUT<="11111111";

WHENOTHERS=>NULL;

ENDCASE;

ENDPROCESSU2;

ENDTWO;

6.4三角波形源程序

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYTRIAIS

PORT(CLK:

INSTD_LOGIC;

RESET:

INSTD_LOGIC;

DOUT:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDTRIA;

ARCHITECTURETHREEOFTRIAIS

BEGIN

PROCESS(CLK,RESET)

VARIABLEQ:

STD_LOGIC_VECTOR(7DOWNTO0);

VARIABLESIGN:

STD_LOGIC;

BEGIN

IFRESET='1'THEN

Q:

="00000000";

SIGN:

='0';

ELSIFCLK'EVENTANDCLK='1'THEN

IFSIGN='0'THEN

IFQ="11111110"THEN

Q:

="11111111";

SIGN:

='1';

ELSE

Q:

=Q+'1';

ENDIF;

ELSE

IFQ="00000001"THEN

Q:

="00000000";

SIGN:

='0';

ELSE

Q:

=Q-'1';

ENDIF;

ENDIF;

ENDIF;

DOUT<=Q;

ENDPROCESS;

ENDTHREE;

6.5方波源程序

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYRECTIS

PORT(CLK:

INSTD_LOGIC;

RESET:

INSTD_LOGIC;

DOUT:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDRECT;

ARCHITECTUREFOUROFRECTIS

SIGNALSIGN:

STD_LOGIC;

BEGIN

U1:

PROCESS(CLK,RESET)

VARIABLEQ:

STD_LOGIC_VECTOR(7DOWNTO0);

BEGIN

IFRESET='1'THEN

Q:

="00000000";

SIGN<='0';

ELSIFCLK'EVENTANDCLK='1'THEN

IFQ="11111111"THEN

Q:

="00000000";

ELSE

Q:

=Q+'1';

ENDIF;

IFQ<="01000000"THEN

SIGN<='1';

ELSE

SIGN<='0';

ENDIF;

ENDIF;

ENDPROCESSU1;

U2:

PROCESS(CLK,SIGN)

BEGIN

IFCLK'EVENTANDCLK='1'THEN

IFSIGN='1'THEN

DOUT<="11111111";

ELSE

DOUT<="00000000";

ENDIF;

ENDIF;

ENDPROCESSU2;

ENDFOUR;

6.6波形选择模块源程序

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYCHOIIS

PORT(SEL:

INSTD_LOGIC_VECTOR(3DOWNTO0);

D1,D2,D3,D4:

INSTD_LOGIC_VECTOR(7DOWNTO0);

DOUT:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDCHOI;

ARCHITECTUREFIVEOFCHOIIS

BEGIN

PROCESS(SEL)

BEGIN

CASESELIS

WHEN"0001"=>DOUT<=D1;

WHEN"0010"=>DOUT<=D2;

WHEN"0100"=>DOUT<=D3;

WHEN"1000"=>DOUT<=D4;

WHEN"0011"=>DOUT<=D1+D2;

WHEN"0101"=>DOUT<=D1+D3;

WHEN"1001"=>DOUT<=D1+D4;

WHEN"0110"=>DOUT<=D2+D3;

WHEN"1010"=>DOUT<=D2+D4;

WHEN"1100"=>DOUT<=D3+D4;

WHEN"0111"=>DOUT<=D1+D2+D3;

WHEN"1011"=>DOUT<=D1+D2+D4;

WHEN"1101"=>DOUT<=D1+D3+D4;

WHEN"1110"=>DOUT<=D2+D3+D4;

WHEN"1111"=>DOUT<=D1+D2+D3+D4;

WHENOTHERS=>NULL;

ENDCASE;

ENDPROCESS;

ENDFIVE;

7参考文献

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 幼儿教育 > 家庭教育

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

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