基于VHDL语言信号发生器的设计.EDA课程设计Word格式文档下载.docx
《基于VHDL语言信号发生器的设计.EDA课程设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于VHDL语言信号发生器的设计.EDA课程设计Word格式文档下载.docx(18页珍藏版)》请在冰点文库上搜索。
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'
=tmp+30;
ENDIF;
Q<
ENDjietibo;
4.5四选一数据选择器的实现
该模块的VHDL语言源程序代码如下所示:
LIBRARYIEEE;
--打开库文件
ENTITYselector4_1IS --实体说明
PORT( --端口说明
sel:
INSTD_LOGIC_VECTOR(1DOWNTO0);
D0,D1,D2,D3:
INSTD_LOGIC_VECTOR(7DOWNTO0);
Q:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDselector4_1;
ARCHITECTUREoneOFselector4_1IS --结构体说明BEGIN
PROCESS(sel,D0,D1,D2,D3)BEGIN
CASEselIS
WHEN"
00"
=>
=D0;
WHEN"
01"
=D1;
10"
=D2;
11"
=D3;
WHENothers=>
=null;
--当sel的值不是选择值时,Q作未知处理
ENDCASE;
ENDone;
4.6数模转换器(D/A)
图4.6数模转换器DAC0832的连接电路图
选择一个D/A转换器,将数据选择器的输出信号与D/A转换器的输入端相连接,D/A转换器的可选择范围很宽,这里选择常用的DAC0832,其DAC0832的连接电路如上图4.6所示。
4.7信号发生器程序流程框图
当输入端有时钟信号输入时,各个信号发生器模块独立运行,独立存在,发出各种信号,这些信号作为数据选择器的输入信号,在数据选择器的作用下,波形切换到相应的模块输出,再通过数模转换器(D/A),将通过示波器显示出相应的波形图,其程序流程图如下图4.7所示:
开始
输入信号
复位
各个信号发生器模块
四选一数据选择器
数模转换器(D/A)
5、系统仿真
图4.7信号发生器程序流程框图
通过QuartusⅡ软件设计出各个模块的原理图及其相关仿真波形示意图如下:
在QuartusII的软件环境下,通过文本方式编写各个信号波形模块的VHDL
语言源程序,且进行仿真。
接下来将各个信号波形模块产生相应的元件符号,新建一个工程,加载上述模块,利用原理图输入法生成整体多波形信号发生器。
5.1正弦波发生器的原理图及其仿真波形图:
正弦波信号发生器的原理图如下图所示:
图5.1.1正弦波信号发生器原理图
正弦波信号发生器的仿真波形图如下图所示:
图5.1.2正弦波信号发生器仿真波形图
Clk 由0到1交替变更,clr一直处于高电平状态,Q端则由00001000到
00010000并依次加00001000
5.2方波发生器的原理图及其仿真波形图:
方波信号发生器的原理图如下图所示:
图5.2.1方波信号发生器的原理图
方波信号发生器的仿真波形图如下图所示:
图5.2.2方波信号发生器的仿真波形图
Clk 由0到1交替变更,clr一直处于高电平状态,q端则由00000000到
11111111并依次交替下去
5.3三角波发生器的原理图及其仿真波形图:
三角波信号发生器的原理图如下图所示:
图5.3.1三角波信号发生器的原理图
三角波信号发生器的仿真波形图如下图所示:
图5.3.2三角波信号发生器的仿真波形图
Clk 、clr均同时由0到1交替变更Q端则由00000000到00000001并依次
加00000001进行下去
5.4阶梯波发生器的原理图及其仿真波形图
阶梯波信号发生器的原理图如下图所示:
图5.4.1阶梯波信号发生器的原理图
阶梯波信号发生器的仿真波形图如下图5.8所示:
图5.4.2阶梯波信号发生器的仿真波形图
Clk 由0到1交替变更,clr一直处于高电平状态,Q端从00000000开始则
高四位依次由0001每次加0010进行下去,第四位依次由1110每次减0010进行下去。
5.54选1数据选择器的原理图及其仿真波形图
4选1数据选择器的原理图如下图所示:
图5.5.14选1数据选择器的原理图
4选1数据选择器的仿真波形图如下图所示:
图5.5.24选1数据选择器的仿真图
sel 由00每次加01交替变更,依次选择Q的输出值。
5.6信号发生器的原理图及其仿真波形图
整体信号发生器的原理图如下图所示:
图5.6.1信号发生器原理图
整体信号发生器的仿真波形图如下图所示:
图5.6.2多功能信号发生器的仿真图
clk 由0到1交替变更,clr一直处于高电平状态,Q端则由56每次加8依次进行下去。
6、使用说明
6.1从QuartusII软件环境中编写各个相关信号模块的VHDL语言源程序及生成相关模块的元件符号名称:
sinqi:
正弦波信号发生器模块;
fangboqi:
方波信号发生器模块;
sjqi1:
三角波信号发生器模块;
jietiboqi:
阶梯波信号发生器模块;
selector4_1:
四选一数据选择器输出模块;
多功能信号发生器输出波形可以由sel中位的组合形式选择,从而控制信号发生器波形的输出,通过sel的不同值可以选取正弦波信号发生器模块、方波信号发生器模块、正弦波信号发生器模块及三角波信号发生器模块、
6.2整体电路的综合分析
在QuartusII软件环境原理图输入方式中放置各个元件符号,放置输入和输出接口、组合各个信号模块、连线、编译、建立波形仿真图、仿真。
所有的操作都是在QuartusII软件环境中进行,输入信号从各个信号发生器
模块输入端输入,通过数据选择器输出所选择的的信号来切换输出相应波形的输出,在通过数模转换器(D/A)将数字信号转换为模拟信号,最后由示波器显示相应的波形。
7、总结
在本次课程设计中,我的设计较好地完成了既定目标,能够产生正弦波、方波、三角波和阶梯波波形,很成功的完成系统的功能实现。
通过该课程设计使我全面熟悉、掌握了VHDL语言基本知识,掌握利用VHDL语言对信号发生器的编程和时序逻辑电路的编程,把编程和实际结合起来,熟悉编制和调试程序的技巧,掌握分析结果的若干有效办法,进一步提高动手能力,培养使用设计综合电路的能力,养成提供文档资料的习惯和规范编程的思想。
在设计的过程中,也遇到了很多问题,在同学和指导老师的帮助下,都一一得到了解决。
从选题到定稿,从了解到熟悉,用了大概一个星期的时间,在这段时间内,苦恼、思考、喜悦、收获,感受颇多。
当然此次设计也体现出我平时学习中有许多不足和欠缺之处,此后需通过学习来查漏补缺。
参考文献
[1]江国强.EDA技术与应用(M).电子工业出版社,2010.20(3):
36-39
[2]赵建东,陈小乐.基于Internet的智能家庭网络控制器的实现[J].电子技术应用,
2002,34(12):
23-25.
[3]李永东,岳继光,李炳宇.PIC单片机在楼宇对讲系统中的应用[J].电
[4]李强华,张根宝,段力.基于单片机控制的楼宇对讲系统的设计[J].电气应用,2007,12(01):
04-06.
[5]江国强.EDA技术与应用(第3版)2010,4(11):
10-22
[6]吴庆元,卢益民.智能小区系统通信协议的设计[J].通信技术,2003,19(7):
98-99.