欢迎来到天天文库
浏览记录
ID:35618972
大小:142.74 KB
页数:7页
时间:2019-04-02
《基于vhdl语言的简易信号发生器》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、基于VHDL语言的简易信号发生器1设计方案1.1?系统功能要求函数信号发生器是一种能够产生多种波形,如三角波、锯齿波、矩形波(含方波)、正弦波等波形的电路。函数信号发生器在电路实验和设备检测中具有十分广泛的用途。现在我们通过对函数信号发生器的原理以及构成设计一个能变换出三角波、正弦波、方波的简易发生器。1.2?总体框图本设计由信号产生,信号选择,信号控制输出三大模块组合而成。其中信号产生模块有:三角波模块、方波模块、正弦波模块。本设计采用K0~K2这三个按键为信号选择开关,选择信号产生模块输出的信号。其控制模块(SIG_CONTROL
2、)是由数据选择器实现对以上三种信号的选择,并产生相应波形。系统顶层设计图如图所示:图中左边为三个输入信号k0,k1,k2,clk,clrn;信号选择开关,时钟信号和复位开关。主要模块有:三角波信号(delta)、方波信号(square)、正弦信号的发生器(sin)各一个,数据选择器(sig_control)。2?模块功能设计2.1三角波模块该模块部分VHDL源程序如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYdeltaISp
3、ort(clk,clrn:INSTD_LOGIC;q:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDdelta;ARCHITECTUREaOFdeltaISBEGINPROCESS(clk,clrn)VARIABLEtmp:STD_LOGIC_VECTOR(7DOWNTO0);VARIABLEf:STD_LOGIC;BEGINIFclrn='0'THENtmp:="00000000";ELSIFclk'EVENTANDclk='1'THENIFf='0'THENIFtmp="11111110"THENtmp:="
4、11111111";f:='1';ELSEtmp:=tmp+1;ENDIF;ELSEIFtmp="00000001"THENtmp:="00000000";f:='0';ELSEtmp:=tmp-1;ENDIF;ENDIF;ENDIF;q<=tmp;ENDPROCESS;ENDa;2.2方波模块该模块部分VHDL源程序如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYsquareISPORT(clk,clrn:INSTD_LOG
5、IC;q:OUTSTD_LOGIC_VECTOR(7downto0));ENDsquare;ARCHITECTUREaOFsquareISSIGNALf:STD_LOGIC;BEGINPROCESS(clk,clrn)VARIABLEtmp:STD_LOGIC_VECTOR(7downto0);BEGINIFclrn='0'THENtmp:="00000000";ELSEIFclk'eventandclk='1'THENIFtmp="11111111"THENtmp:="00000000";ELSEtmp:=tmp+1;ENDIF;I
6、Ftmp<"10000000"THENf<='1';ELSEf<='0';ENDIF;ENDIF;ENDIF;ENDPROCESS;PROCESS(clk,f)BEGINIFclk'eventandclk='1'THENIFf='1'THENq<="11111111";ELSEq<="00000000";ENDIF;ENDIF;ENDPROCESS;ENDa;2.3正弦波模块该模块部分VHDL源程序如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.
7、ALL;ENTITYsinISPORT(clk,clrn:INSTD_LOGIC;q:OUTINTEGERRANGE255DOWNTO0);ENDsin;ARCHITECTUREAOFsinISBEGINPROCESS(clk,clrn)VARIABLEtmp:INTEGERRANGE63DOWNTO0;BEGINIFclrn='0'THENq<=0;tmp:=0;ELSEIFclk'EVENTANDclk='1'THENIFtmp=63THENtmp:=0;ELSEtmp:=tmp+1;ENDIF;CASETMPISWHEN00=>
8、q<=255;WHEN01=>q<=254;WHEN02=>q<=252;WHEN03=>q<=249;WHEN04=>q<=245;WHEN05=>q<=239;WHEN06=>q<=233;WHEN07=>q<=22
此文档下载收益归作者所有