EDA作业Word格式.docx
《EDA作业Word格式.docx》由会员分享,可在线阅读,更多相关《EDA作业Word格式.docx(10页珍藏版)》请在冰豆网上搜索。
⑴变量
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCOUNT12IS
PORT(CLK,RESET,EN:
INSTD_LOGIC;
QA,QB,QC,QD:
OUTSTD_LOGIC);
ENDCOUNT12;
ARCHITECTUREBEHAVEOFCOUNT12IS
BEGIN
PROCESS(CLK,RESET)
VARIABLECOUNT_4:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
IF(RESET='
0'
)THEN
COUNT_4:
="
0000"
;
ELSIF(CLK'
EVENTANDCLK='
1'
)THEN
IF(EN='
IF(COUNT_4="
1011"
ELSE
=COUNT_4+'
ENDIF;
QA<
=COUNT_4(0);
QB<
=COUNT_4
(1);
QC<
=COUNT_4
(2);
QD<
=COUNT_4(3);
ENDPROCESS;
ENDBEHAVE;
变量的赋值符号“:
=”,(程序中点蓝色字体)变量数值的改变是通过变量赋值来实现的。
赋值语句右方的表达式必须是一个与目标具有相同的数据类型的数值,这个表达式可以是一个运算表达式,也可以是一个数值。
⑵信号定义方法
SIGNALCOUNT_4:
QA<
COUNT_4<
ENDPROCESS;
当信号定义了数据类型和表达方式后,在VHDL设计中就能对信号进行赋值了,格式:
目标信号<
=表达式。
这里的表达式可以是一个运算表达式,也可以是数据对象(变量、信号或常量)。
⑶软件仿真——以变量为例
a、运行
单击软件上的
按钮,编译通过—如图1-1
图1-1
b、查看RTL图
c、新建波形文件
执行主菜单File下的New命令,在弹出的新建文件对话框中选择“Other File”标签。
选择途中的Vector Waveform File。
添加仿真信号。
得仿真波形如图1—2
图1—2
结果分析:
从仿真波形来看,是二进制同步计数器设计通过,EN和RESET都必须是高电平的时候才工作,所以我设置的是整段都为高电平,QA、QB、QC、QD、它们都是在时钟脉冲来的时候,输出开始计数,从0000——1011(当到1100是复位)。
(图中蓝线处清零)
3-8译码器
3-8译码器(74LS138)是最常用的一种小规模集成电路,它有3个二进制输入端A、B、C和8个译码输出端Y0-Y7。
对输入端A、B、C的每一组取值进行译码,就可以确定Y0-Y7的那一位变为低电平(有效),从而达到译码的目的。
3-8译码器还有选通输入端G1、G2、G3,只有在G1=1,G2=0,G3=0时,3-8译码器才进行正常的译码,否则Y0-Y7输出将均为高电平。
ENTITYYIMAQIIS
PORT(A,B,C,G1,G2,G3:
INSTD_LOGIC;
Y:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDYIMAQI;
ARCHITECTUREBEHAVE38OFYIMAQIIS
SIGNALINDATA:
STD_LOGIC_VECTOR(2DOWNTO0);
BEGIN
INDATA<
=C&
B&
A;
PROCESS(INDATA,G1,G2,G3)
IF(G1='
ANDG2='
ANDG3='
CASEINDATAIS
WHEN"
000"
=>
Y<
11111110"
001"
11111101"
010"
11111011"
011"
11110111"
100"
11101111"
101"
11011111"
110"
10111111"
111"
01111110"
WHENOTHERS=>
XXXXXXXX"
ENDCASE;
ELSE
Y<
11111111"
ENDIF;
ENDBEHAVE38;
a、运行
按钮,编译通过—如图1-3
遇到的问题:
①VHDL标识符必须以字母开头,不能以下划线和数字开头。
②变量的赋值符号“:
=”和信号赋值符“<
=”的区别(上面题中已经分析)。
③注意CASE语句,常用来描述总线、编码、译码等的行为。
如图1-4
图1-4
在G1=1,G2=0,G3=0时,Y0-Y7输出和设计结果一样(低电平有效)。
总结:
通过对VHDL语言的描述设计,把VHDL的软件设计与现实硬件挂钩,是软件转化为硬件电路的关键步骤。
通过本次实验,我更加了解VHDL工具的强大作用,在今后的学习中,我会更进一步的去了解。