完整word版VHDL期末考试题.docx
- 文档编号:25368935
- 上传时间:2023-06-07
- 格式:DOCX
- 页数:19
- 大小:109.92KB
完整word版VHDL期末考试题.docx
《完整word版VHDL期末考试题.docx》由会员分享,可在线阅读,更多相关《完整word版VHDL期末考试题.docx(19页珍藏版)》请在冰豆网上搜索。
完整word版VHDL期末考试题
1.结构体的三种描述方式:
-行为描述-数据流描述-结构化描述
2.一般将一个完整的VHDL程序称为设计实体
3.VHDL设计实体的基本结构由库、程序包、实体、结构体和配置组成。
4.VHDL不区分大小写。
5.常用的库:
libraryieee,程序包:
useieee.std_logic_1164.all
6.VHDL程序的基本结构至少应包括实体、结构体和对库的引用声明。
7.在VHDL程序中使用的文字、数据对象、数据类型都需要事先声明。
8.VHDL的实体由实体声明和结构体组成。
VHDL的实体声明部分指定了设计单元的输入出端口或引脚,它是设计实体对外的一个通信界面,是外界可以看到的部分。
VHDL的结构体用来描述实体的逻辑结构和逻辑功能,它由VHDL语句构成,是外界看不到的部分。
9.端口方向模式:
IN(输入)、OUT(输出<构造体内部不能再使用>)、INOUT(双向)、BUFFER(缓冲<构造体内部可再使用>)
10.VHDL的标识符名必须以(字母开头),后跟若干字母、数字或单个下划线构成,但最后不能为(下划线),不能连续两个下划线相连。
11.为信号赋初值的符号是(:
=);程序中,为变量赋值的符号是(:
=),为信号赋值的符号是(<=)
12.VHDL的数据类型包括标量类型、复合类型、存储类型和文件类型
请列出3个VHDL语言的数据类型,如实数、位等。
位矢量,字符,布尔量,整数,字符串,时间,错误等级,自然数,正整数。
13.VHDL的操作符包括逻辑、算术、关系和并置四类
14.可编程逻辑器件:
CPLD、FPGA、GAL、PLA、PAL(早期)
CPLD(复杂可编程逻辑器件):
基于乘机项技术构造的可编程逻辑器件,不需要配置外部程序寄存芯片
FPGA(现场可编程门阵列):
基于查找表技术构造的可编程逻辑器件,需要配置外部程序寄存芯片
15.VHDL客体或数据对象:
常量、信号、变量(可被多次赋值)、文件。
16.一个VHDL程序中可以使用多个进程process语句,一个设计实体可以拥有多个结构体。
17.VHDL的预算操作包括:
逻辑运算符、关系运算符、乘法运算符(优先级<<<)
逻辑运算符、关系运算符、加减并置运算符、正负运算符、乘法运算符、
18.VHDL中std_logic类型:
‘Z’表示高阻,‘X’表示不确定
19.将一个信width定义为一个4位标准逻辑向量为:
signalwidth:
std_logic_vector(3downto0)
定义一个变量a,数据类型为4位位向量:
variablea:
bit_vector(3downto0)
20.赋值语句是并行执行,IF语句是串行执行。
21.标准逻辑是一个具有九值逻辑的数据类型
22.表示‘0’‘1’两值逻辑的数据类型是bit,表示‘0’‘1’‘Z’等九值逻辑的数据类型是std_logic,表示空操作的数据类型是NULL
23.<=是小于等于关系运算符,又是赋值运算操作符
/=是不相等操作符,功能是在条件判断是判断操作符两端不相等。
NOT是逻辑运算符,表示取反,在所有操作符中优先级最高。
30.并置运算符&的功能是把多个位或位向量合并为一个位向量。
24.位类型的初始化采用字符,位矢量用字符串
25.进程必须位于结构体内部,变量必须定义于进程内部
26.进程执行的机制是敏感信号发生跳变
27.VHDL语言可以有以下3种形式的子结构描述语句:
BLOCK语句结构;PROCESS语句结构和SUBPROGRAMS结构。
29整型对象的范围约束通常用range关键词,位矢量用downto/to关键词。
31.判断CLK信号上升沿到达的语句是ifclk’eventandclk=‘1’then.
32.IF语句各条件间具有不同的优先级。
33、任何时序电路都以时钟为驱动信号,时序电路只是在时钟信号的边沿到来时,
其状态才发生改变。
34、Moore状态机输出只依赖于器件的当前状态,与输入信号无关。
35.、IF语句根据指定的条件来确定语句执行顺序,共有3种类型:
用于门闩控制的IF语句、用于二选一控制的IF语句、用于多选择控制的IF语句。
简答题:
1、简述信号与变量的区别。
a.信号延时赋值,变量立即赋值b.信号的代入使用<=,变量的代入使用:
=;
c.信号在实际的硬件当中有对应的连线,变量没有
2、简述可编程逻辑器件的优点。
a.集成度高,可以替代多至几千块通用IC芯片.极大减小电路的面积,降低功耗,提高可靠性b.具有完善先进的开发工具.提供语言、图形等设计方法,十分灵活.通过仿真工具来验证设计的正确性c.可以反复地擦除、编程,方便设计的修改和升级d.灵活地定义管脚功能,减轻设计工作量,缩短系统开发时间f.保密性好
3、试比较moore状态机与mealy状态机的异同。
Moore输出只是状态机当前状态的函数.Mealy输出为有限状态机当前值和输入值的函数
3、简述VHDL语言与计算机语言的差别。
a.运行的基础。
计算机语言是在CPU+RAM构建的平台上运行。
VHDL设计的结果是由具体的逻辑、触发器组成的数字电路b.执行方式.计算机语言基本上以串行的方式执行.VHDL在总体上是以并行方式工作c.验证方式.计算机语言主要关注于变量值的变化.VHDL要实现严格的时序逻辑关系
4、简述实体端口的模式
输入(Input):
clk、reset、en、addr等
输出(Output):
输出信号,不能内部引用
双向(Inout):
可代替所有其他模式,用于设计双向总线
缓冲(Buffer):
与Output类似,但允许该管脚名作为一些逻辑的输入信号
5、进程语句是设计人员描述结构体时使用最为频繁的语句,简述其特点。
a.它可以与其它进程并发执行,并可存取结构体或实体中所定义的信号;
b.进程结构中的所有语句都是按顺序执行的
c.为了启动进程,在进程结构中必须包含一个显式的敏感信号量表或者包含一个wait语句;d.进程之间的通信是通过信号量的传递来实现的
6、简述如何利用计数器精确控制时序。
a.只要知道晶振频率f,即可知道周期T=1/f;
b.使用一个计数器,可以通过计数值n,精确知道当计数值为n时消耗的时间t=nT;
上例中以n为控制条件,可以控制其它信号在某时刻变高,某时刻变低,从而产生精确时序
编程题:
1.3-8译码器0
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYdecoder_3_to_8IS
PORT(a,b,c,g1,g2a,g2b:
INSTD_LOGIC;
y:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDdecoder_3_to_8;
ARCHITECTURErtlOFdecoder_3_to_8IS
SIGNALindata:
STD_LOGIC_VECTOR(2DOWNTO0);
BEGIN
indata<=c&b&a;
PROCESS(indata,g1,g2a,g2b)
BEGIN
IF(g1='1'ANDg2a='0'ANDg2b='0')THEN
CASEindataIS
WHEN"000"=>y<="11111110";
WHEN"001"=>y<="11111101";
WHEN"010"=>y<="11111011";
WHEN"011"=>y<="11110111";
WHEN"100"=>y<="11101111";
WHEN"101"=>y<="11011111";
WHEN"110"=>y<="10111111";
WHEN"111"=>y<="01111111";
WHENOTHERS=>y<="XXXXXXXX";
ENDCASE;
ELSE
y<="11111111";
ENDIF;
ENDPROCESS;
ENDrtl;
3、填写完成一个3-8线译码器的真值表(5分),并写出其VHDL程序(10分)。
3-8译码器的真值表
en
a2a1a0
y
1
000
00000001
1
001
00000010
1
010
00000100
1
011
00001000
1
100
00010000
1
101
00100000
1
110
01000000
1
111
10000000
0
xxx
00000000
entitytri_eightis
port(
a:
instd_logic_vector(2downto0);
en:
instd_logic;
y:
outstd_logic_vector(7downto0)
);
endtri_eight;
(2)
architectureaoftri_eightis
signalsel:
std_logic_vector(3downto0);(4)
begin
sel(0)<=a(0);sel
(1)<=a
(1);sel
(2)<=a
(2);sel(3)<=en;(5)
withselselect
y<="00000001"when"1000",
"00000010"when"1001",
"00000100"when"1010",
"00001000"when"1011",
"00010000"when"1100",
"00100000"when"1101",
"01000000"when"1110",
"10000000"when"1111",
"00000000"whenothers;(9)
enda;(10)
3、根据下表填写完成一个3-8线译码器的VHDL程序(16分)。
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYdecoder_3_to_8IS
PORT(a,b,c,g1,g2a,g2b:
INSTD_LOGIC;
y:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
(2)
ENDdecoder_3_to_8;
ARCHITECTURErtlOFdecoder_3_to_8IS
SIGNALindata:
STD_LOGIC_VECTOR(2DOWNTO0);(4)
BEGIN
indata<=c&b&a;(6)
PROCESS(indata,g1,g2a,g2b)
BEGIN
IF(g1='1'ANDg2a='0'ANDg2b='0')THEN(8)
CASEindataIS
WHEN"000"=>y<="11111110";
WHEN"001"=>y<="11111101";
WHEN"010"=>y<="11111011";(10)
WHEN"011"=>y<="11110111";
WHEN"100"=>y<="11101111";
WHEN"101"=>y<="11011111";
WHEN"110"=>y<="10111111";(12)
WHEN"111"=>y<="01111111";
WHENOTHERS=>y<="XXXXXXXX";
ENDCASE;
ELSE
y<="11111111";(14)
ENDIF;
ENDPROCESS;(16)
ENDrtl;
2.二选一VHDL程序
Entitymuxis
port(d0,d1,sel:
inbit;
q:
outBIT);
endmux;
architectureconnectofMUXis
signaltmp1,TMP2,tmp3:
bit;
begin
cale:
block
begin
tmp1<=d0andsel;
tmp2<=d1and(notsel)
tmp3<=tmp1andtmp2;
q<=tmp3;
endblockcale;
endCONNECT;
2.2二选一IF语句编写
Entitysel2is
Port(a,b:
instd_logic;
sel:
instd_logic;
q:
outstd_logic);
Endsel2;
Architectureaofsel2is
begin
ifsel=‘0’thenq<=a;
elseq<=b;
endif;
enda;
3.三态门电原理图如右图所示,真值表如左图所示,请完成其VHDL程序构造体部分。
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYtri_gateIS
PORT(din,en:
INSTD_LOGIC;
dout:
OUTSTD_LOGIC);
ENDtri_gate;
ARCHITECTUREzasOFtri_gateIS
BEGIN
PROCESS(din,en)
BEGIN
IF(en=‘1')THENdout<=din;
ELSEdout<=‘Z’;
ENDIF;
ENDPROCESS;
ENDzas;
4.四选一、用IF语句编写一个四选一电路,要求输入d0~d3,s为选择端,输出y。
entityMUX4is
port(
(2)
s:
instd_logic_vector(1downto0);(4)
d:
instd_logic_vector(3downto0);(6)
y:
outstd_logic(8)
);
endMUX4;
architecturebehaveofMUX4is
begin
process(s)
begin
if(s="00")then
y<=d(0);
elsif(s="01")then
y<=d
(1);
elsif(s="10")then
y<=d
(2);
elsif(s="11")then
y<=d(3);
else
null;
endif;
endprocess;
endbehave;
5、填写完成一个8-3线编码器的真值表(5分),并写出其VHDL程序(10分)。
8-3线编码器真值表
en
b
y0y1y2
1
00000000
000
1
00000010
001
1
00000100
010
1
00001000
011
1
00010000
100
1
00100000
101
1
01000000
110
1
10000000
111
0
xxxxxxxx
高阻态
entityeight_triis
port(
b:
instd_logic_vector(7downto0);
en:
instd_logic;
y:
outstd_logic_vector(2downto0)
);
endeight_tri;(3)
architectureaofeight_triis
signalsel:
std_logic_vector(8downto0);(4)
begin
sel<=en&b;
y<=“000”when(sel=”100000001”)else
“001”when(sel=”100000010”)else
“010”when(sel=”100000100”)else
“011”when(sel=”100001000”)else
“100”when(sel=”100010000”)else
“101”when(sel=”100100000”)else
“110”when(sel=”101000000”)else
“111”when(sel=”110000000”)else(9)
“zzz”;(10)
enda;
6.图中给出了4位逐位进位全加器,请完成其VHDL程序。
(本题16分)
libraryIEEE;
useIEEE.std_logic_1164.all;
useIEEE.std_logic_arith.all;
useIEEE.std_logic_unsigned.all;
entityfull_addis
port(a,b:
instd_logic_vector(3downto0);
carr:
inoutstd_logic_vector(4downto0);
sum:
outstd_logic_vector(3downto0));
endfull_add;
architecturefull_add_archoffull_addis
componentadder
port(a,b,c:
instd_logic;
carr:
inoutstd_logic;
sum:
outstd_logic);
endcomponent;
begin
carr(0)<='0';
u0:
adderportmap(a(0),b(0),carr(0),carr
(1),sum(0));
u1:
adderportmap(a
(1),b
(1),carr
(1),carr
(2),sum
(1));
u2:
adderportmap(a
(2),b
(2),carr
(2),carr(3),sum
(2));
u3:
adderportmap(a(3),b(3),carr(3),carr(4),sum(3));
endfull_add_arch;
7.数值比较器VHDL程序的进程(不必写整个结构框架),要求使能信号g低电平时比较器开始工作,输入信号p=q,输出equ为‘0’,否则为‘1’。
(本题10分)
process(p,q)
begin
ifg='0'then
ifp=qthenequ_tmp<='0';
elseequ_tmp<='1';
endif;
elseequ_tmp<='1';
endif;
endprocess;
8.编写一个2输入与门的VHDL程序,请写出库、程序包、实体、构造体相关语句,将端口定义为标准逻辑型数据结构(本题10分)
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYnand2IS
PORT(a,b:
INSTD_LOGIC;
y:
OUTSTD_LOGIC);
ENDnand2;
ARCHITECTUREnand2_1OFnand2IS
BEGIN
y<=aNANDb;
ENDnand2_1;
9设计异或门逻辑:
(本题20分)
如下异或门,填写右边的真值表。
(此项5分)
A
B
Y
0
0
0
0
1
1
1
0
1
1
1
0
其表达式可以表示为:
这一关系图示如下:
试编写完整的VHDL代码实现以上逻辑。
可以采用任何描述法。
libraryieee;
useieee.std_logic_1164.all;
entityyihuo1is
port(a,b:
instd_logic;
y:
outstd_logic);
endyihuo1;
architectureyihuo1_behaviorofyihuo1is
begin
y<=axorb;
endyihuo1_behavior;
10.4位加法计数器VHDL程序的进程(不必写整个结构框架),要求复位信号reset低电平时计数器清零,变高后,在上升沿开始工作;输入时钟信号为clk,输出为q。
(本题10分)
Process(reset,clk)
begin
ifreset=‘0’thenq<=“0000”;
elsifclk’eventandclk=‘1’thenq<=q+1;endif;
endprocess;
11、根据已给出的二-十(BCD)进制优先权编码器功能表,试写出其VHDL程序。
(本题15分)
二-十(BCD)进制优先权编码器功能表
输入
输出
I1
I2
I3
I4
I5
I6
I7
I8
I9
Y3
Y2
Y1
Y0
1
1
1
1
1
1
1
1
1
1
1
1
1
X
X
X
X
X
X
X
X
0
0
1
1
0
X
X
X
X
X
X
X
0
1
0
1
1
1
X
X
X
X
X
X
0
1
1
1
0
0
0
X
X
X
X
X
0
1
1
1
1
0
0
1
X
X
X
X
0
1
1
1
1
1
0
1
0
X
X
X
0
1
1
1
1
1
1
0
1
1
X
X
0
1
1
1
1
1
1
1
1
0
0
X
0
1
1
1
1
1
1
1
1
1
0
1
0
1
1
1
1
1
1
1
1
1
1
1
0
entityprioris
port(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整 word VHDL 期末 考试题