硬件描述语言08-09B卷标准答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2008/2009 学年第一学期末考试试题答案及评分标准
(B卷)
硬件描述语言及器件
使用班级:06060241/06060242
一、填空题(30分,每空格1分)
1、试举出两种可编程逻辑器件 CPLD 、 FPGA 。
2、VHDL程序的基本结构至少应包括实体、结构体两部分和对
库的引用声明。
3、1_Digital标识符合法吗?否, \12 @ +\ 呢?合法。
4、在VHDL的常用对象中,信号、变量可以被多次赋予不同的值,
常量只能在定义时赋值。
5、实体的端口模式用来说明数据、信号通过该端口的传输方向,端口模式有 in 、
Out 、 inout 、 buffer 。
6、VHDL语言中std_logic类型取值‘Z’表示高阻,取值‘X’表示不确定。
7、整型对象的范围约束通常用 range 关键词,位矢量用 downto/to 关键词。
8、位类型的初始化采用(字符/字符串)字符、位矢量用字符串。
9、进程必须位于结构体内部,变量必须定义于进程/包/子程序内部。
10、并置运算符 & 的功能是把多个位或位向量合并为一个位向量。
11、进程执行的机制是敏感信号发生跳变。
12、判断CLK信号上升沿到达的语句是 if clk’event and clk = ‘1’ then .
13、 IF 语句各条件间具有不同的优先级。
14、任何时序电路都以时钟为驱动信号,时序电路只是在时钟信号的边沿到来时,
其状态才发生改变。
15、 Moore 状态机输出只依赖于器件的当前状态,与输入信号无关。
二、判断对错并改正(12分,每小题3分)
1、CONSTANT T2:std_logic <= ’0’;
(错)改正:把<= 换为:= 。
2、若某变量被定义为数值型变量,未赋初始值时默认值为‘0’。
(错)改正:把‘0’的单引号去掉。
3、在结构体中定义一个全局变量(V ARIABLES),可以在所有进程中使用。
(错)改正:“变量(V ARIABLES)”改为“信号”。
4、语句 type wr is (wr0,wr1,wr2,wr3,wr4,wr5); 定义了一个状态机变量wr,
可以直接对wr赋值。
(错)改正:语句 type wr is (wr0,wr1,wr2,wr3,wr4,wr5); 定义了一个状态机类型wr,需要定义一个该类型的对象,才可以对该对象赋值。
三、简答(8分,每小题4分)
1、简述如何利用计数器精确控制时序。
⏹只要知道晶振频率f,即可知道周期T=1/f;
⏹使用一个计数器,可以通过计数值n,精确知道当计数值为n时消耗的时间t=nT;
⏹上例中以n为控制条件,可以控制其它信号在某时刻变高,某时刻变低,从而产生精
确时序;
例如:
⏹PROCESS (clr,clk)
⏹BEGIN
⏹ IF(clr=1) THEN
⏹Count_B<=“00000000”;
⏹q <= ‘0’;
⏹ ELSIF (clk'EVENT AND clk = ‘1’ ) THEN
⏹Count_B<=count_B + 1;
⏹IF (Count_B = “00000000”) THEN
⏹q <= ‘1’;
⏹ELSIF (Count_B = “00000001”) THEN
⏹q <= ‘0’;
⏹ELSIF (Count_B = “00000011”) THEN
⏹q <= ‘1’;
⏹ELSIF (Count_B = “00000100”) THEN
⏹q <= ‘0’;
⏹END IF;
⏹ END IF;
⏹END PROCESS;
2、简述moore状态机和mealy状态机的区别。
从输出的时序上看,Mealy机的输出是当前状态和所有输入信号的函数,它的输出是在输入变化后立即发生的。Moore机的输出则仅为当前状态的函数,在输入发生变化时还必须等待时钟的到来,时钟使状态发生变化时才导致输出的变化。
Moore型状态机:次态=f(现状,输入),输出=f(现状);
Mealy型状态机:次态=f(现状,输入),输出=f(现状,输入);
四、编程(共50分)
1、完成下图所示的触发器。(本题10分)
library IEEE;
use IEEE.std_logic_1164.all;
entity VposDff is
port (CLK, CLR, D: in STD_LOGIC; ----------2分
Q, QN: out STD_LOGIC ); ----------4分
end VposDff;
architecture VposDff_arch of VposDff is
begin
process ( CLK, CLR ) ----------6分
begin
if CLR='1' then Q <= '0'; QN <='1';
elsif CLK'event and CLK='1' then
Q <= D; QN <= not D; ----------8分 end if;
end process; ----------10分end VposDff_arch;
2、完成以下4位全加器代码(本题10分)
library IEEE;
use IEEE.std_logic_1164.all;
entity full_add is
port (