VHDL复习资料.docx
《VHDL复习资料.docx》由会员分享,可在线阅读,更多相关《VHDL复习资料.docx(12页珍藏版)》请在冰豆网上搜索。
VHDL复习资料
一.填空(每空1分,共20分)
1.MAX+plusII是ALTERA公司自己开发的EDAEDA工具软件。
2.VHDL设计实体的基本结构由 库 库 、程序包包集合 、 实体 实体 、结构体构造体(有称结构体)、配置配置 等部分构成。
3.在VHDL中最常用的库IEEEIEEE 标准库,最常用的包集合是1164STD-LOGIC-1164。
4.在VHDL的端口声明语句中,端口方向包括输入(in)、输出(out)BUFFER(输出、可内部使用、输入|输出(inout)、缓冲
和。
5.VHDL的顺序语句只能出现在进程(Process)进程过程procedure)、函数(Function)函数、过程中,是按程序书写顺序自上而下,一条一条地执行。
6.VHDL的块块(BLOCK)语句是并行语句结构,它的内部是由并行语句构成的
7.VHDL的变量(VARIABLE)是一种局部量,只能在进程进程、函数函数
和过程过程中声明和使用。
8.MAX+plusII支持文本、原理图、波形、符号编辑等不同的编辑方式。
9.MAX+plusII工具软件有功能、时序、仿真等功能。
10.MAX—PLUSⅡ的波形编辑文件分波形输入和波形仿真,它们的文件扩展名分别是WDF和SCF。
11.VHDL的实体声明部分指定了设计单元的输入输出端口,它是设计实体对外的通信界面,是外界可以看到的部分。
12.CPLD和FPGA的含义分别是复杂可编程逻辑器件,现场可编程门阵列。
13.在VHDL中,含WAIT语句的进程Process的括号不能再加敏感量,否则是非
法的.
14.VHDL的Process(进程)语句是由顺序语句顺序语句组成的,但其本身却是并发语句结构并行语句。
15.VHDL的子程序有函数函数和过程过程两种类型。
16.在VHDL中,标准逻辑位数据有0和1种逻辑值。
17.MAX—PLUSⅡ的仿真分功能仿真和时序仿真。
18.VHDL的变量(VARIABLE)是一个功能变量,只能在进程、函数和过程中声明和使用。
19.VHDL的数据对象包括常数、变量、信号和文件。
20.实体和结构体是设计实体的基本组成部分,它们可以构成最基本的VHDL程序。
20.VHDL语言的字符是以字母的下划线括起来的数字、字母和符号。
二.简答题(每题6分,共30分)
1.如何用VHDL语句描述时钟的下降沿和上升沿。
时钟上升沿ifclk‘eventandclk=“1”then
下降沿ifclk‘eventandclk=“0”then答:
在VHDL中用语句CLOCK´EVEVTANDCLOCK=´0´,表示检测CLOCK的下降沿。
在VHDL中用语句CLOCK´EVEVTANDCLOCK=´1´,表示检测CLOCK的下降沿。
2.在VHDL中的IEEE标准中,预定义的标准是逻辑位数据STD-LOGIC与BIT有何区别。
只有当端口说明为BIT时该端口的信号取值只能是二进制数“0”和“1”答:
在VHDL中的IEEE标准中,预定义的标准是逻辑位数据STD-LOGIC有9种逻辑值,而BIT只有二种值。
3.VHDL的信号(SIGNAL)与变量(VARIABLE)有什么的区别。
Signal可以在实体构造体等高层次环境中说明,对整个设计实体全局有效
Variable在进程子函数等低层次环境中说明,只在说明的区域中局部有效
答:
VHDL的信号(SIGNAL)是一种数值容器,不仅可以容纳当前值,也可以保持历史值。
VHDL的变量(VARIABLE)是一种局部量,只能在进程、函数和过程中声明和使用。
在VHDL中,目标变量是用:
=赋值,目标信号的赋值符号是〈=。
4.叙述一个四位加法器及仿真的全过程。
5.现有两个半加器,一个两输入或门,试画出一个全加器
答:
6.在一个构造体内,其执行语句的顺序有什么特点?
7.卫式BLOCK语句中的条件和PROCESS语句中的敏感量的区别是什么(顺序),它们的执行过程如何?
Block块头主要用于信号的映射及参数的定义、process并行执行进程语句
8.为层次式电路,各层次的功能模块在存盘时要注意什么问题?
(在同一路径的文件夹内)
9.在MAX—PLUSⅡ中一般连线与总线有什么区别,在使用总线时必须注意什么问题?
10、现有一个两输入异或门,一个两输入与门,试画出半加器。
S=A⊕B
11.硬件描述语言描述硬件电路的基本构成是什么?
数字系统的结构,行为和功能;
硬件描述语言设计数字;
电路逻辑电路的过程和方法
12.解释端口方向说明,IN、OUT、INOUT、BUFFER和LINRAGE的含义?
In:
输入型,信号从该端口进入实体;
out:
输出型,信号从实体内部经该端口输出
Inout:
输入输出型,信号既可以从该端口输入也可以输出
Buffer:
缓冲型,与out类似但在结构内部可作反馈
Linrage:
无指定方向,与任何方向的信号连接
13.数据类型BIT与STD-LOGIC,BIT_VECTOR与STD_LOGIC_VECTOR其共同点与不同点是什么?
Std-logic-vector:
标准逻辑适量
Std-logic:
标准逻辑位量
Bit:
为数据类型取值只能是:
“0”和“1”
Bit-vector:
位矢量,数据类型
三.分析题(共50分)
1.读懂下列程序,指出其完成什么功能?
(20分)
(1)libraryieee;
useieee.std_logic_1164.all;
entityaaais
port(a,b,c,d:
instd_logic;
y:
outstd_logic);
endaaa;
architectureaaa1ofaaais
begin
p1:
process(a,b,c,d)
variabletmp:
std_logic_vector(3downto0);
begin
tmp:
=a&b&c&d;
casetmpis
when″0000″=>y<=′1′;
when″0001″=>y<=′1′;
when″0010″=>y<=′1′;
when″0011″=>y<=′1′;
when″0101″=>y<=′1′;
when″0110″=>y<=′1′;
when″0111″=>y<=′1′;
when″1000″=>y<=′1′;
when″1001″=>y<=′1′;
when″1010″=>y<=′1′;
when″1011″=>y<=′1′;
when″1110″=>y<=′1′;
when″1111″=>y<=′0′;
whenothers=>y<=′x′;
endcase;
endprocessp1;
endaaa1;
与非门答:
四输入与非门电路
(2)libraryieee;
useieee.ste_logic_1164.all;
entityabcis
port(clk:
instd_logic;
r:
instd_logic;
d:
instd_logic_vector(3downto0);
q:
outstd_logic_vector(3downto0);
endabc;
architecturertlofabcis
signalq_temp:
std_logic_vector(3downto0);
begin
process(clk,r)
begin
if(r=′1′)then
q_temp<=″0000″;
elseif(clk′eventandclk=′1′)then
q_temp<=d;
endif;
q<=q_temp;
endprocess;
endrtl;
寄存器
(1)ENTITYabcIS
PORT(do,d1,y:
INBIT;
q:
OUTBIT);
ENDabc;
ARCHITECTUREconnectOFabcIS
BEGIN
Cale:
BLOCK
BEGIN
Tmp1<=d0ANDy;
Tmp2<=d1AND(NOTy);
Tmp3<=tmp1ORtmp2;
q<=tmp3;
ENDBLOCKcale;
ENDconnect;
二选一电路
(2)LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYparity_checkIS
PORT(a:
INSTD_LOGIC_VECTOR(7DOWNTO0);
y:
OUTSTD_LOGIC);
ENDparity_check;
ARCHITECTURErtlOFparity_checkIS
BEGIN
PROCESS(a)
VARIABLEtmp:
STD_LOGIC;
BEGIN
tmp:
="0";
FORiIN0TO7LOOP
tmp:
=tmpXORa(i);
ENDLOOP;
y<=tmp;
ENDPROCESS;
ENDrtl奇偶效应
(1)
ENTITYabcIS
PORT(do,d1:
INBIT;
x:
INBIT;
Q:
OUTBIT);
ENDabc;
ARCHITECTUREdataflowOFabcIS
BEGIN
Q<=(d0ANDx)OR(NOTxANDd1);
ENDdataflow;二选一的数据选择器
(2)
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYAAAIS
PORT
(Clock:
INSTD_LOGIC;
CLKOUT:
OUTSTD_LOGIC);
END;
ARCHITECTUREBehaviorOFAAAIS
SIGNALClk:
STD_LOGIC;
BEGIN
PROCESS(Clock)
BEGIN
IFrising_edge(Clock)THEN
CLK<=NOTClk;
ENDIF;
ENDPROCESS;
Clkout<=Clk;
END;边沿触发器
答:
D触发器
2.下列程序是一个二选一电路,有四处错误,试指出并改正。
(10分)
ENTITYmuxIS
PROT(d0,d1,sel:
INBITBIT;
q:
OUTBITBIT);
ENDmux;
ARCHITECTUREconnectOFmuxIS(mux)
BEGIN
Cale:
PROCESS(d0,d1selSEL)
VARIABLEtmp1,tmp2,tmp3:
BIT;
BEGIN
Temp1:
=d0ANDsel;
Temp2:
=d1AND(NOTsel);
Temp3:
=tmp1ORtmp2;
Q:
<=tmp3;
(<=)
ENDPROCESS;
ENDconnect;
(3)ENTITYmuxIS
PROT(d0,d1,sel:
INBIT;
q:
OUTBIT);
ENDmux;
ARCHITECTUREconnectOFmuxIS
BEGIN
Cale:
PROCESS(d0,d1,sel)
VARIABLEtmp1,tmp2,tmp3:
BIT;
BEGIN
Temp1:
=d0ANDsel;
Temp2:
=d1AND(NOTsel);
Temp3:
=tmp1ORtmp2;
Q:
<=tmp3;
ENDPROCESS;
ENDconnect;
3、下列程序是2输入“或非”门电路,在空格中填上适当的语句(10分)
LIBRARYIEEEIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYnor2IS
PORT(a,b:
INSTD-LOGICINSTD_LOGIC;
y:
OUTSTD_LOGIC);
ENDnor2;
ARCHITECTUREnor2_2OFNOR2nor2IS
BEGIN
t2:
PROCESS(a,b)
VARIABLEcomb:
STD_LOGIC_VECTOR(1DOWNTO0);
BEGIN
Comb:
=a&b;
CASEcombIS
WHEN″00″=>y<=′1′;
WHEN″01″=>y<=′0′;
WHEN″10″=>y<=′0′;
WHEN″11″=>y<=′0′;
ENDCASECASE;
ENDPROCESSt2;
ENDnor2_2;
(2)LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYnor2IS
PORT(a,b:
INSTD_LOGIC;
y:
OUTSTD_LOGIC);
ENDnor2;
ARCHITECTUREnor2_2OFnor2IS
BEGIN
t2:
PROCESS(a,b)
VARIABLEcomb:
STD_LOGIC_VECTOR(1DOWNTO0);
BEGIN
Comb:
=a&b;
CASEcombIS
WHEN″00″=>y<=′1′;
WHEN″01″=>y<=′0′;
WHEN″10″=>y<=′0′;
WHEN″11″=>y<=′0′;
ENDCASE;
ENDPROCESSt2;
ENDnor2_2;
2.下列程序是四选一电路,在空格中填上适当的语句。
(10分)
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYmux4IS
PORT(i0,i1,i2,i3,a,b:
INSTD-LOGIC;
Q:
OUTSTD_LOGIC);
ENDmux4;
ARCHITECTUREbehavOFmux4IS
SIGNALsel:
INTEGER;
BEGIN
WITHSSELECT
q<=i0AFTER10nsWHEN0,
i1AFTER10nsWHEN1,
i2AFTER10nsWHEN2,
i3AFTER10nsWHEN3,
′1′AFTER10nsWHENOTHERS;
sel<=0WHENa=′0′ANDb=′0′ELSE
1WHENa=′1′ANDb=′0′ELSE
2WHENa=′0′ANDb=′1′ELSE
3WHENa=′1′ANDb=′1′ELSE
4WHENOTHERS;
ENDbehav;
3.下列程序有四处错误,试指出并改正。
(10分)
ENTITYmuxIS
PROT(d0,d1,sel:
INBIT;
q:
OUTBIT);
ENDmux;
ARCHITECTUREconnectOFmuxIS
BEGIN
Cale:
PROCESS(d0,d1,sel)
VARIABLEtmp1,tmp2,tmp3:
BIT;
BEGIN
Temp1:
=d0ANDsel;
Temp2:
=d1AND(NOTsel);
Temp3:
=tmp1ORtmp2;
Q:
<=tmp3;
ENDPROCESS;
ENDconnect;
4.分析下列程序,指出其功能并说明其工作过程。
(10分)
libraryieee;
useieee.std_logic_1164.all;
entityxyzis
port(a,clk1:
instd_logic;
b:
outstd_logic);
endxyz;
architecturexyz1ofxyzis
signaltmp1:
std_logic;
begin
process(clk1,a)
variabletmp3,tmp2:
std_logic;
begin
ifclk1′eventandclk1=′0′then
tmp1<=a;
tmp2:
=tmp1;
tmp3:
=nottmp2;
endif;
b<=tmp1andtmp3andclk1;
endprocess;
endxyz1;(消除同步模块)
故当时钟脉冲下降沿到来时,变量tmp2和tmp3在赋值语句执行后立即分别得到新值:
tmp1和tmp2的非值,而输入信号a经过一定时延时赋值给信号tmp1实现消抖同步的功能