欢迎来到天天文库
浏览记录
ID:48000747
大小:715.26 KB
页数:17页
时间:2020-01-11
《基于FPGA的典型开发系统设计实例--函数信号发生器.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、基于FPGA的典型开发系统设计实例--函数信号发生器落潇整理2013/11/26开篇:如果你还没有硬件平台,那么Quartus软件仿真也可以完成你的梦想。1.功能描述利用GW48-CK实验开发系统设计一个函数信号发生器,要求能够输出三角波、方波、梯形波、阶梯波等波形,可通过按键选择输出不同波形。2.设计思路函数信号发生器的原理框图如图1所示。FPGA芯片选用ACEX1K30TC144-3,D/A选用8位数模转换器DAC0832,滤波器采用有源滤波,GW48-CK实验开发系统选择模式5。FPGAD/A芯片滤波器图1多波形函数信号发生器原理框图3.系统程序设计首先
2、采用VHDL语言分别编写锯齿波(斜降)、三角波、锯齿波(斜升)、阶梯波(上升)、正弦波、方波、梯形波、双阶梯波以及八选一数据选择器的程序,各程序如下:3.1锯齿波(斜降)程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYdcrsISPORT(clk,reset:INSTD_LOGIC;q:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDdcrs;ARCHITECTUREbehaveOFdcrsISBEGINPROCESS(clk,res
3、et)VARIABLEtmp:STD_LOGIC_VECTOR(7DOWNTO0);BEGINIFreset='0'THENtmp:="11111111";ELSIFclk'EVENTANDclk='1'THENIFtmp="00000000"THENTmp:="11111111";ELSEtmp:=tmp-1;ENDIF;ENDIF;q<=tmp;ENDPROCESS;ENDbehave;3.2三角波程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYde
4、ltaISPORT(clk,reset:INSTD_LOGIC;q:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDdelta;ARCHITECTUREbehaveOFdeltaISBEGINPROCESS(clk,reset)VARIABLEtmp:STD_LOGIC_VECTOR(7DOWNTO0);VARIABLEa:STD_LOGIC;BEGINIFreset='0'THENtmp:="00000000";155ELSIFclk'EVENTANDclk='1'THENIFa='0'THENIFtmp="11111110"THENtm
5、p:="11111111";a:='1';ELSEtmp:=tmp+1;ENDIF;ELSEIFtmp="00000001"THENtmp:="00000000";a:='0';ELSETmp:=tmp-1;ENDIF;ENDIF;ENDIF;q<=tmp;ENDPROCESS;ENDbehave;3.3锯齿波(斜升)程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYicrsISPORT(clk,reset:INSTD_LOGIC;q:OUTSTD_LOG
6、IC_VECTOR(7DOWNTO0));ENDicrs;ARCHITECTUREbehaveOFicrsISBEGINPROCESS(clk,reset)VARIABLEtmp:STD_LOGIC_VECTOR(7DOWNTO0);BEGINIFreset='0'THENtmp:="00000000";ELSIFclk'EVENTANDclk='1'THENIFtmp="11111111"THEN156tmp:="00000000";ELSEtmp:=tmp+1;ENDIF;ENDIF;q<=tmp;ENDPROCESS;ENDbehave;3.4阶梯波(上
7、升)程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYladder_upISPORT(clk,reset:INSTD_LOGIC;q:OUTintegerRANGE0to255);--STD_LOGIC_VECTOR(7DOWNTO0));ENDladder_up;ARCHITECTUREbehaveOFladder_upISBEGINPROCESS(clk,reset)VARIABLEtmp,a:integer;--STD_LOGIC_VECTOR(7D
8、OWNTO0);BEGINIFrese
此文档下载收益归作者所有