一、填空题(20分,每空格1分)
1、一个完整的VHDL语言程序通常包含实体(entity),结构体(architecture),
配置(configuration),包集合(package)和库(library)5各部分。
2、在一个实体的端口方向说明时,输入使用in表示,那么构造体内部不能再使用的输出是用out 表示;双向端口是用inout 表示;构造体内部可再次使用的输出是用buffer 表示;
3、VHDL的客体,或称数据对象包括了常数、变量variable 和信号signal 。
4、请列出三个VHDL语言的数据类型,如实数、位等。位矢量,字符,布尔量。
5、VHDL程序的基本结构包括库、程序包、实体
和结构体。
6、more_ _11标识符合法吗?不合法。8bit标识符合法吗?不合法。
variable标识符合法吗?不合法。
7、信号的代入通常用<= ,变量用:= 。
8、表示‘0’‘1’;两值逻辑的数据类型是bit(位),表示‘0’‘1’‘Z’等九值逻辑的数据类型是std_logic(标准逻辑),表示空操作的数据类型是NULL 。
9、<=是小于等于关系运算符,又是赋值运算操作符。
10、设D0为'1', D1为'0', D2为'1', D3为'0', D3 & D2 & D1 & D0的运算结果是“0101”,D1 & D2 & D3 & D4的运算结果是“1010”。
11、VHDL程序的基本结构至少应包括实体、结构体两部分和对
库的引用声明。
12、1_Digital标识符合法吗?否,\12 @ +\ 呢?合法。
13、在VHDL的常用对象中,信号、变量可以被多次赋予不同的值,
常量只能在定义时赋值。
14、实体的端口模式用来说明数据、信号通过该端口的传输方向,端口模式有in 、
Out 、inout 、buffer 。15、VHDL语言中std_logic类型取值‘Z’表示高阻,取值‘X’表示不确定。
16、位类型的初始化采用(字符/字符串)字符、位矢量用字符串。
17、进程必须位于结构体内部,变量必须定义于进程/包/子程序内部。
18、并置运算符& 的功能是把多个位或位向量合并为一个位向量。
19、进程执行的机制是敏感信号发生跳变。
20、判断CLK信号上升沿到达的语句是if clk’event and clk = ‘1’ then .
21、IF 语句各条件间具有不同的优先级。
22、VHDL是否区分大小写?不区分。
23、digital_ _8标识符合法吗?不合法。12_bit标识符合法吗?不合法。signal标识符合法吗?不合法。
24、结构体有三种描述方式,分别是数据流、行为、和结构化。
25、请分别列举一个常用的库和程序包library ieee 、use ieee.std_logic_1164.all 。
26、一个信号处于高阻(三态)时的值在VHDL中描述为‘Z’。
27、/=是不相等操作符,功能是在条件判断是判断操作符两端不相等。
28、设D0为'0', D1为'1', D2为'1', D3为'0', D3 & D2 & D1 & D0的运算结果是
“0110”,(D3 or D2)and(D1 and not D0)的运算结果是:‘1’。
29、赋值语句是(并行/串行)并行执行的,if语句是(并行/串行)串行执行的。
30、8digital标识符合法吗?不合法。
31、信号的代入通常用<= ,变量用:= 。
32、标准逻辑(std_logic)是一个具有九值逻辑的数据类型。
33、定义一个变量a,数据类型为4位位向量variable a : bit_vector(3 downto 0) 。
34、<=是小于等于关系运算符,又是赋值运算操作符。
35、设D0为'1', D1为'1', D2为'1', D3为'0',“1110”是D3 & D2 & D1 & D0的运算结果。
36、IF语句根据指定的条件来确定语句执行顺序,共有3种类型:用于门闩控制的IF语句、用于二选一控制的IF语句、用于多选择控制的IF语句。
二、判断对错并给出判断依据(20分,每小题5分,判断对错2分,给出正确答案3分)
1、传统的系统硬件设计方法是采用自上而下(top down)的设计方法,利用硬件描述语言(HDL)的硬件电路设计方法采用自下而上(bottom up)的设计方法。(×)传统的系统硬件设计方法是采用自下而上(bottom up)的设计方法,利用硬件描述语言(HDL)的硬件电路设计方法采用自上而下(top down)的设计方法
2、VHDL可以采用层次化的设计,一个高层的结构体中可以调用低层的实体(√)
3、一个VHAL程序中仅能使用一个进程(process)语句。(×)
可以使用多个进程语句。
4、VHDL语言的预算操作包括了逻辑运算符、关系运算符、乘法运算符等,它们三者的优先级是相同的。
(×)
逻辑运算符<关系运算符<乘法运算
5、进程语句中,不管在何时,process语句后面必须列出敏感信号(×)
包含wait语句的进程语句可不列出敏感信号。
6、VHDL语言与计算机C语言的没有差别。(×)
7、在结构体中定义一个全局变量(VARIABLES),可以在所有进程中使用。(×)
“变量(VARIABLES)”改为“信号”。
8、CONSTANT T2:std_logic <= ’0’;(×)改正:把<= 换为:= 。
9、若某变量被定义为数值型变量,未赋初始值时默认值为‘0’。
(错)改正:把‘0’的单引号去掉。
10、在结构体中定义一个全局变量(VARIABLES),可以在所有进程中使用。
(错)改正:“变量(VARIABLES)”改为“信号”。
library ieee;
use ieee.std_logic_arith.all;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
以上库和程序包语句有无错误?有,有的话请在原程序相应位置改正。(2)entity rom is
port(
addr: in std_logic_vector(0 to 3);
ce: in std_logic;
data:out std_logic_vector(7 downto 0);
)
end rom;
以上port语句有无错误?有,有的话请在原程序相应位置改正。(4)
三、简答(20分,每小题5分)
1、简述VHDL程序的基本结构。
库(1)library ieee;
程序包(2)use ieee std_logic_1164.all;
实体(3)entity 实体名is
结构体(5)architecture 结构体名of 实体名is若答出配置也可加1分
配置
2、简述信号与变量的区别。
信号延时赋值,变量立即赋值(2)
信号的代入使用<=,变量的代入使用:=;(4)
信号在实际的硬件当中有对应的连线,变量没有(5)
3、进程语句是设计人员描述结构体时使用最为频繁的语句,简述其特点。
●它可以与其它进程并发执行,并可存取结构体或实体中所定义的信号;(1)
●进程结构中的所有语句都是按顺序执行的;(2)
●为了启动进程,在进程结构中必须包含一个显式的敏感信号量表或者包含一个wait
语句;(4)
●进程之间的通信是通过信号量的传递来实现的。(5)
四、编程题(共50分)
1、请补全以下二选一VHDL程序(本题10分)
Entity mux is
port(d0,d1,sel:in bit;
q:out BIT ); (2)
end mux;
architecture connect of MUX is (4)
signal tmp1, TMP2 ,tmp3:bit; (6)
begin
cale:
block
begin
tmp1<=d0 and sel;
tmp2<=d1 and (not sel)
tmp3<= tmp1 and tmp2;
q <= tmp3; (8)
end block cale;
end CONNECT ; (10)
2、用IF语句编写一个四选一电路,要求输入d0~d3, s为选择端,输出y。(本题10分)entity MUX4 is
port(
s: in std_logic_vector(1 downto 0);
d: in std_logic_vector(3 downto 0);
y: out std_logic
);
end MUX4; (3)
architecture behave of MUX4 is
begin
process(s)
begin
if (s="00") then
y<=d(0); (4)
elsif (s="01") then
y<=d(1); (5)
elsif (s="10") then
y<=d(2); (6)
elsif (s="11") then
y<=d(3); (7)
else
null; (9)
end if;
end process;
end behave; (10)