VHDL复习题Word文件下载.docx
- 文档编号:8315511
- 上传时间:2023-05-11
- 格式:DOCX
- 页数:31
- 大小:354.71KB
VHDL复习题Word文件下载.docx
《VHDL复习题Word文件下载.docx》由会员分享,可在线阅读,更多相关《VHDL复习题Word文件下载.docx(31页珍藏版)》请在冰点文库上搜索。
3.8用户怎样自定义数据类型?
试举例说明。
利用类型定义语句TYPE和子类型定义语句SUBTYPE实现。
如TYPEWEEKIS(SON,MON,TUE,WED,THU,FRI,SAT)SUBTYPEDIGITSINTEGERRANGE0TO9
3.9VHDL语言有哪几类操作符?
在一个表达式中有多种操作符时应按怎样的准则进行运算?
下列三个表达式是否等效:
①A<
=NOTBANDCORD;
②A<
=(NOTBANDC)ORD;
③A<
=NOTBAND(CORD).
(1)主要有四种操作符逻辑运算符,关系运算符,算术运算符,符号运算符此外还有重载运算符。
(2)按照操作符的优先级高低进行运算
(3)这三个表达式不等效。
1式表达错误,对同一优先级的不同运算符应加上括号。
2和3式的运算顺序不同。
VHDL操作符优先级:
(关系操作符的结果只有TRUE或FALSE两种。
)
3.10简述六种移位操作符SLL、SRL、SLA、SRA、ROL和ROR的含义及操作规定?
并举例说明。
(1)SLL:
逻辑左移,bit或布尔一维数组
SRL:
逻辑右移,bit或布尔一维数组
SLA:
算数左移,bit或布尔一维数组
SRA:
算数右移,bit或布尔一维数组
ROL:
逻辑循环左移,bit或布尔一维数组
ROR:
逻辑循环右移,bit或布尔一维数组
(2)A=“10010101"
Asll2 得"
01010100"
(逻辑左移,用'
0'
填补空位)
Asrl3 得"
00010010"
(逻辑右移,用'
Asla3 得"
10101111"
(算术左移,用最左端位填补空位)
Asra2 得"
11100101"
(算术右移,用最右端位填补空位)
Arol3 得"
10101100"
(循环左移)
Aror5 得"
(循环右移)
3.11什么叫重载操作符?
使用重载操作符有什么好处?
怎样使用重载操作符?
含有重载操作符的运算怎样确定运算结果?
(1)对已存在的操作符重新定义,使其能进行不同类型操作数之间的运算。
(2)方便各种不同数据类型间的运算。
(3)引用数据包:
STD_LOGIC_ARITH、STD_LOGIC_UNSIGNED和STD_LOGIC_即可使用重载操作符。
3.12VHDL程序设计中的基本语句系列有几种?
它们的特点如何?
它们各使用在什么场所?
它们各自包括些什么基本语句?
答:
(1)顺序语句与并行语句。
(2)顺序语句的执行与它们的书写顺序基本一致(指仿真或逻辑上的顺序执行),但实际上硬件电路是并行工作的。
顺序语句用在进程和子程序的内部。
并行语句的执行与书写顺序无关,各语句是同时执行的,在执行过程中各并行语句之间可通过信号进行通信,同步运行;
也可以互为独立、互不相关,异步运行。
(3)顺序语句:
变量/信号赋值语句,流程控制语句(if,case,loop,next,exit),等待语句,子程序调用语句,返回语句,空操作语句等。
并行语句:
进程语句,块语句,信号赋值语句,元件例化语句,生成语句,子程序调用等语句。
3.13VHDL中信号赋值和变量赋值的有什么区别?
其赋值符号是否异同?
信号赋值延时更新数据,一般生成时序电路,用的是"
<
="
变量赋值立即更新数据,一般生成组合电路,用的是"
:
="
(变量具有局部特征,它的有效性只局限于所定义的一个进程中,或一个子程序中,它是一个局部的、暂时性数据对象,对于它的赋值是立即发生的。
信号具有全局特征,它不但可以作为一个设计实体内部各单元之间数据传送的载体,而且可通过信号与其他的实体进行通信,信号的赋值不是立即发生的,它发生在一个进程结束时。
3.14段下标元素和集合块元素是怎样赋值的?
(1)段下标元素赋值目标表示形式:
标识符(下标1TO或DOWNTO下标2)(其中下标1、下标2必须用具体数值表示,并且其数值范围必须在所定义的数组下标范围内)
例如:
VARIABLEa,b:
STD_LOGIC_VECTOR(1TO4)
b(1TO4):
=”1011”;
a:
=b;
a(1TO2):
=b(3TO4);
--a
(1)=’1’,a
(2)=’1’;
a(1TO4):
(2)集合块元素
3.15转向控制语句有几种?
它们各用在什么场所?
它们使用时特别需要注意什么?
IF语句;
CASE选择语句;
LOOP循环语句;
NEXT语句和EXIT语句
(1)if
条件表达式1
then
顺序语句;
elsif
条件表达式2
else
条件表达式n
end
if;
if语句可根据一个或多个布尔条件,有选择的执行指定的顺序语句。
使用时应注意:
1.关键字then后可包含一个或多个顺序语句。
2.elsif子句可以有多个或没有,每个elsif子句执行时具有向前与的作用。
3.else子句可以没有。
4.关键字then后的顺序语句可以是if语句,即if语句可以嵌套。
(2)case选择表达式
is
when
选择值1
=>
选择值2
......
end
case;
case语句可根据一个表达式的不同取值执行不同的顺序语句。
1.表达式的值可以是整型或枚举型的,或是这些数据类型构成的数组。
2.选择值可以是单个取值,如4;
也可以是一个取值范围,如2
to
5;
也可以是多个并列的取值,如2|6;
还可以是以上三种取值方式的混合。
3.case语句执行时,根据选择表达式的值来选择执行哪个顺序语句,选择的结果和每个选择值的顺序无关,只要求对于选择表达式的每个可能取值,有且仅有一个选择值与之匹配即可。
4.常用
when
others表示其它未列出的选择值。
5.“=>
”后面的顺序语句可以有多个。
(3)[标号:
]
for
循环变量
in
范围
loop
[标号:
while
条件
[标号];
for循环用于循环次数已知的情况;
循环用于循环次数未知的情况。
for循环中的循环变量无需事先定义,可自动加/减1。
(4)next;
无条件中止当前循环,返回循环起点,开始下次循环。
exit;
无条件退出当前循环。
next
loop标号;
无条件中止LOOP标号标明的循环,返回LOOP标号处,开始下次循环。
exit
无条件退出LOOP标号标明的循环。
loop标号
条件;
条件为真时中止LOOP标号标明的循环,返回LOOP标号处,开始下次循环。
exit
loop标号when
条件为真时退出LOOP标号标明的循环。
3.16在CASE语句中在什么情况下可以不要WHENOTHERS语句?
在什么情况下一定要WHENOTHERS语句?
case语句执行时,根据选择表达式的值来选择执行哪个顺序语句,要求对于选择表达式的每个可能取值,有且仅有一个选择值与之匹配。
因此,当已列出的选择值能够覆盖选择表达式的所有可能取值时,可以不要when
others语句。
否则,要用
3.17FOR-LOOP语句应用于什么场合?
循环变量怎样取值?
是否需要事先在程序中定义?
在重复的次数已知的情况下可以使用该语句。
循环变量的取值是根据系统的功能要求给定的,要事先在程序上定义。
3.18分别用IF语句、CASE语句设计一个四—十六译码器。
a:
用IF语句设计一个四-十六译码器
PROCESS(G1,g2a,g2b,sel)
begin
if(g1='
1'
andg2a='
andg2b='
)then
if(sel="
0000"
)theny<
1111111111111110"
;
elsif(sel="
0001"
1111111111111101"
0010"
1111111111111011"
0011"
1111111111110111"
0100"
1111111111101111"
0101"
1111111111011111"
0110"
1111111110111111"
0111"
1111111101111111"
1000"
1111111011111111"
1001"
1111110111111111"
1010"
1111101111111111"
1011"
1111011111111111"
1100"
1110111111111111"
1101"
1101111111111111"
1110"
1011111111111111"
1111"
0111111111111111"
elsey<
XXXXXXXXXXXXXXXX"
endif;
elseY<
1111111111111111"
endprocess;
b:
用CASE语句设计一个四-十六译码器
caseselis
when"
y<
whenothers=>
endcase;
3.19WAIT语句有几种书写格式?
哪些格式可以进行逻辑综合?
waituntil结构waiton结构其中waituntil结构可以进行逻辑组合
3.20VHDL的预定义属性的作用是什么?
哪些项目可以具有属性?
常用的预定义属性有哪几类?
(1)作用在于可对信号或其他的项目多种属性进行检测或统计。
(2)具有属性的项目:
类型,子类型,过程,函数,信号,变量,常量,实体,结构体,配置,程序包,元件,语句标号。
(3)常用的属性有信号类属性,数据区间类属性,数值类属性,数组属性
3.21试用’EVENT属性描述一种用时钟CLK上升沿触发的D触发器及一种用时钟CLK下降沿触发的JK触发器。
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYdtriggerIS
PORT(clk:
INSTD_LOGIC;
d:
q:
OUTSTD_LOGIC);
ENDdtrigger;
ARCHITECTUREbehaveOFdtriggerIS
BEGIN
PROCESS(clk)
IFclk'
EVENTANDclk='
THEN
q:
=d;
ENDIF;
ENDPROCESS;
ENDbehave;
3.22什么叫进程语句?
你是如何理解进程语句的并行性和顺序性的双重特性的?
(1)进程实际上是顺序语句描述的一种进程过程,进程是用于描述事件的,process语句结构包含了一个代表实体中部分逻辑行为的独立的顺序语句描述的进程
(2)一个结构体中可以有多个并行进程结构,而有一个进程内部结构却是由一系列顺序语句来构成的,即进程语句间是并行执行的进程的内部是顺序执行的
(
进程语句是一种描述硬件行为的语句,进程语句内部是由顺序语句构成的,内部执行时是顺序性的,但进程语句属于并行语句,多个进程之间的执行并行运行。
)
3.23进程的启动条件是什么?
如果进程有两个基本点敏感变量,其中一个由“0”变“1”,等待一段时间以后再由“1”变“0”;
而另一个只由“1”变“0”改变一次,请问该进程将执行几遍?
进程的启动条件:
敏感信号列表中的任何一个敏感信号的值发生变化,或者wait语句中的条件为真。
3遍
3.24有人说,进程中的语句顺序颠倒一下并不会改变所描述电路的功能,这种说法对吗?
为什么?
不对。
因为PLC的扫描过程是从左到右,从上到下进行的。
同一进程中的逻辑描述语句是顺序运行的。
3.25并行信号赋值语句有几类?
比较其异同。
(1)1.简单信号赋值语句2.条件信号赋值语句3.选择信号赋值语句
(2)共同点:
赋值目标都是信号,都是并行语句,都相当于一个隐含的进程语句(信号赋值语句中的所有读入信号都作为该进程的敏感信号)。
不同点:
简单信号赋值语句是最简单的并行语句,执行时直接将表达式的值赋给信号。
条件信号赋值语句的功能与if语句相同,在执行时按书写的先后顺序测试每个条件,一旦条件为真,则将表达式的值赋给信号。
选择信号赋值语句与case语句相似。
当关键字with后的选择表达式的值发生变化时,就将该值和每个选择值进行比较,将选择值匹配的子句中的表达式的值赋给信号。
3.26分别用条件信号赋值语句、选择信号赋值语句设计一个四—十六译码器。
LIBRARY
IEEE;
USE
IEEE.STD_LOGIC_1164.ALL;
USE
IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY
DECODER
IS
PORT(A,
B,
C,D:
IN
STD_LOGIC;
Y:
OUT
BIT_VECTOR
(15
DOWNTO
0));
END
ENTITY
DECODER;
ARCHITECTURE
ART1
OF
SIGNAL
SR:
STD_LOGIC_VECTOR(3
0);
BEGIN
SR<
=
D&
C&
B&
A;
Y(0)<
='
WHEN
SR="
ELSE
'
Y
(1)<
Y
(2)<
Y(3)<
Y(4)<
Y(5)<
Y(6)<
Y(7)<
Y(8)<
Y(9)<
Y(10)<
Y(11)<
Y(12)<
Y(13)<
Y(14)<
Y(15)<
END
ART1;
ART2
SIGNAL
BEGIN
WITH
SR
SELECT
Y<
“0000_0000_0000_0001”
“0000”,
“0000_0000_0000_0010”
“0001”,
“0000_0000_0000_0100”
“0010”,
“0000_0000_0000_1000”
“0011”,
“0000_0000_0001_0000”
“0100”,
“0000_0000_0010_0000”
“0101”,
“0000_0000_0100_0000”
“0110”,
“0000_0000_1000_0000”
“0111”,
“0000_0001_0000_0000”
“1000”,
“0000_0010_0000_0000”
“1001”,
“0000_0100_0000_0000”
“1010”,
“0000_1000_0000_0000”
“1011”,
“0001_0000_0000_0000”
“1100”,
“0010_0000_0000_0000”
“1101”,
“0100_0000_0000_0000”
“1110”,
“1000_0000_0000_0000”
OTHERS;
ART2;
3.27进程语句和并行赋值语句之间有什么关系?
进程之间的通信是通过什么方式来实现的?
(2)进程之间的通信是通过传递信号和共享变量值来实现的
3.28元件例化语句的作用是什么?
元件例化语句包括几个组成部分?
各自的语句形式如何?
什么叫元件例化中的位置关联和名字关联?
(1)元件例化就是将预先设计好的设计实体定义为一个元件,然后利用特定的语句将此元件与当前的设计实体中的指定端口相连接,从而为当前设计实体引入一个新的低一级的设计层次。
(2)元件例化语句由两部组成,前一部分是将一个现成的设计实体定义为一个元件的语句,第二部分则是此元件与当前设计实体中的连接说明。
(3)它们的语句格式如下:
-----元件定义语句
COMPONENT例化元件名IS
GENERIC(类属表);
PORT(例化元件端口名表);
ENDCOMPONENT;
-----元件例化语句
元件例化名:
例化元件名PORTMAP([例化元件端口名=>
]连续实体端口名,...)
(4)名字关联是将例化元件的端口名与关联端口名通过关联(连续)符号“=>
"
一
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VHDL 复习题