WHEN OTHERS=> y <= \ END CASE; ELSE
y <= \ (14) END IF; END PROCESS; (16) END rtl;
4、三态门电原理图如右图所示,真值表如左图所示,请完成其VHDL程序构造体部分。 (本题14分)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY tri_gate IS
PORT(din,en:IN STD_LOGIC; dout : OUT STD_LOGIC); END tri_gate ;
ARCHITECTURE zas OF tri_gate IS BEGIN
PROCESS (din,en) BEGIN IF (en=?1') THEN dout <= din; ELSE dout <= ?Z?; END IF; END PROCESS ; END zas ;
6
2008/2009 学年第 一 学期末考试试题答案及评分标准
(A卷)
得分
一、 填空题(20分,每空格1分)
1、试举出两种可编程逻辑器件 CPLD 、 FPGA 。
2、VHDL程序的基本结构包括 库 、 程序包 、 实体 和 结构体 。
3、more_ _11标识符合法吗? 不合法 。8bit标识符合法吗? 不合法 。 variable标识符合法吗? 不合法 。 4、信号的代入通常用 <= ,变量用 := 。
5、表示‘0’‘1’;两值逻辑的数据类型是 bit(位) ,表示‘0’‘1’‘Z’等九值逻辑的数据类型是 std_logic(标准逻辑),表示空操作的数据类型是 NULL 。
6、定义一个信号a,数据类型为4位标准逻辑向量 signal a : std_logic_vector(3 downto 0) 定义一个变量b,数据类型为2位位向量 variable b : bit_vector(1 downto 0) 。
7、<=是 小于等于 关系运算符,又是 赋值运算 操作符。 8、设D0为'1', D1为'0', D2为'1', D3为'0', D3 & D2 & D1 & D0的运算结果是“0101”, D1 & D2 & D3 & D4的运算结果是“1010”。 得分 二、 判断对错并给出判断依据(20分,每小题5分,判断对错2分,给出正确答案3分) 1、进程语句中,不管在何时,process语句后面必须列出敏感信号 ( × )
包含wait语句的进程语句可不列出敏感信号。
7
2、VHDL语言与计算机 C语言的没有差别。 ( × )
? 运行的基础
– 计算机语言是在CPU+RAM构建的平台上运行
– VHDL设计的结果是由具体的逻辑、触发器组成的数字电路
? 执行方式
– 计算机语言基本上以串行的方式执行 – VHDL在总体上是以并行方式工作
? 验证方式
– 计算机语言主要关注于变量值的变化 – VHDL要实现严格的时序逻辑关系
3、在结构体中定义一个全局变量(VARIABLES),可以在所有进程中使用。 ( × )
“变量(VARIABLES)”改为“信号”。
4、Moore状态机输出只是状态机当前状态的函数,Mealy状态机输出为有限状态机当前值和输入值的函数 得分 ( √ )
三、判断题(10分) library ieee;
use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_1164.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;
8
以上port语句有无错误? 有 ,有的话请在原程序相应位置改正。 (4)
architecture behave of rom is begin
process(ce,addr) (6) begin if ce='0' then case addr is when \ when \ data<=\ data<=\ when \ when \ data<=\ data<=\ when \ when \ data<=\ data<=\ when \ when \ data<=\ data<=\ when \ when \ data<=\ data<=\ when \ when \ data<=\ data<=\ when \ when \ data<=\ data<=\ when others=> when \ data<=\ data<=\ end case; else data:=\ --data <= “00000000”; (8) end if; (10) end process; end behave;
以上architecture中有哪些错误?请在原程序相应位置改正。 得分 四、 编程题(共50分)
9
1、根据一下四选一程序的结构体部分,完成实体程序部分(本题8分) entity MUX4 is port( (2) s: in std_logic_vector(1 downto 0); (4) d: in std_logic_vector(3 downto 0); (6) y: out std_logic (8) );
end MUX4; architecture behave of MUX4 is begin process(s) begin if (s=\ y<=d(0); elsif (s=\ y<=d(1); elsif (s=\ y<=d(2); elsif (s=\ y<=d(3); else null; end if; end process; end behave;
2、编写一个数值比较器VHDL程序的进程(不必写整个结构框架),要求使能信号g低电平时比较器开始工作,输入信号p = q,输出equ为‘0’,否则为‘1’。(本题10分) process(p,q) (2) begin if g='0' then (4) if p = q then equ <= '0'; (6) else equ <= '1'; (8) end if; else equ <= '1'; (10)
10