基于VHDL语言信号发生器的设计.EDA课程设计Word文档下载推荐.docx
- 文档编号:13049993
- 上传时间:2022-10-03
- 格式:DOCX
- 页数:18
- 大小:144.86KB
基于VHDL语言信号发生器的设计.EDA课程设计Word文档下载推荐.docx
《基于VHDL语言信号发生器的设计.EDA课程设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于VHDL语言信号发生器的设计.EDA课程设计Word文档下载推荐.docx(18页珍藏版)》请在冰豆网上搜索。
图3.1 信号发生器结构框图
通过查找资料把各类信号模块的程序输入到QuartusⅡ中进行运行仿真,每一步都要慎重小心,错误难免的,还需要通过课本和资料一一更正。
最后,在前面模块做好的基础上再考虑如何输出波形的问题,通过对四种波形采样就可以得到。
4、硬件电路的设计与软件设计
根据题目分析与整体构思可知,要完成设计任务必须设计出以下模块:
4.1正弦波发生器的实现
该模块产生以64个时钟为一个周期的正弦波。
其VHDL语言源程序代码如下所示:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
--打开库文件USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY sinqiIS
PORT( clk:
INSTD_LOGIC;
--声明clk是标准逻辑位类型的输入端口 clr:
INSTD_LOGIC;
--声明clr是标准逻辑位类型的输入端口
d:
OUTintegerrange0to255);
--声明d是标准逻辑向量类型的
--输出端口
END sinqi;
ARCHITECTUREsinbOFsinqiISBEGIN
PROCESS(clr,clk)
variabletemp:
integerrange0to63;
BEGIN
IFclr='
0'
THENd<
=0;
--clr为低电平d为0ELSIFclk'
EVENTANDclk='
1'
THEN --clk为上升沿
IFtemp=63THENtemp:
ELSE
temp:
=temp+1;
ENDIF;
CASE temp IS
when00=>
d<
=255;
when01=>
=254;
when02=>
=252;
when03=>
=249;
when04=>
=245;
when05=>
=239;
when06=>
=233;
when07=>
=225;
when08=>
=217;
when09=>
=207;
when10=>
=197;
when11=>
=186;
when12=>
=174;
when13=>
=162;
when14=>
=150;
when15=>
=137;
when16=>
=124;
when17=>
=112;
when18=>
=99;
when19=>
=87;
when20=>
=75;
when21=>
=64;
when22=>
=53;
when23=>
=43;
when24=>
=34;
when25=>
=26;
when26=>
=19;
when27=>
=13;
when28=>
=8;
when29=>
=4;
when30=>
=1;
when31=>
when32=>
when33=>
when34=>
when35=>
when36=>
when37=>
when38=>
when39=>
when40=>
when41=>
when42=>
when43=>
when44=>
when45=>
when46=>
when47=>
when48=>
when49=>
when50=>
when51=>
when52=>
when53=>
when54=>
when55=>
when56=>
when57=>
when58=>
when59=>
when60=>
when61=>
when62=>
when63=>
whenothers=>
null;
--当temp值不是选择值,Q作未知
--处理
END CASE;
END IF;
END PROCESS;
ENDsinb;
4.2方波信号发生器的实现
该模块产生方波,是通过交替送出全0和全1实现,每16个时钟翻转一次。
LIBRARYIEEE;
--打开库文件USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYfangboqiIS
PORT(clk:
--声明clk是标准逻辑位类型的输入端口
clr:
--声明clr是标准逻辑位类型的输入端口
q:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
--声明q是标准逻辑
--向量类型的输出端口
ENDfangboqi;
ARCHITECTUREfangbo1OFfangboqiIS --结构体说明SIGNALa:
STD_LOGIC;
BEGIN
PROCESS(clk,clr)
VARIABLE tmp:
std_logic_vector(3downto0);
--变量定义BEGIN
THEN a<
='
;
ELSIFclk'
eventANDclk='
THEN --clk为上升沿
IF tmp="
1111"
THENtmp:
="
0000"
tmp:
=tmp+1;
IFtmp<
"
1000"
THENa<
ELSE
a<
ENDPROCESS;
PROCESS(clk,a)BEGIN
IFclk'
THEN --clk为上升沿
IFa='
THEN
q<
11111111"
--q赋值
00000000"
--结束进程
END fangbo1;
--结束结构体
4.3三角波信号发生器的实现
该模块产生的三角波形以64个时钟为一个周期,输出q每次加减8
--打开库文件USEIEEE.STD_LOGIC_1164.ALL;
ENTITYsjboIS
PORT(clk:
clr:
ENDsjbo;
ARCHITECTUREsjqiOFsjboIS --结构体说明BEGIN
VARIABLEtmp:
STD_LOGIC_VECTOR(7DOWNTO0);
--变量说明VARIABLEa:
STD_LOGIC;
eventANDclk='
IFtmp="
11111000"
a:
=tmp+8;
00000111"
=tmp-8;
=tmp;
ENDPROCESS;
ENDsjqi;
4.4阶梯波信号发生器的实现
该模块产生的是阶梯波形。
ENTITYjietiboqiIS
--声明clk是标准逻辑位类型的输入端口clr:
--声明clr是标准逻辑位类型的输入端口Q:
BUFFERSTD_LOGIC_VECTOR(7DOWNTO0));
ENDjietiboqi;
ARCHITECTUREjietiboOFjietiboqiIS --结构体说明BEGIN
--变量定义BEGIN
--变量赋值
ELSEIFclk'
THE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 VHDL 语言 信号发生器 设计 EDA 课程设计