一. 填空(每空1分,共20分)
1.MAX+plusII是ALTERA 公司自己开发的 EDA 工具软件。
2. VHDL设计实体的基本结构由 库 、 程序包 、 实体 、 结构体 、 配置 等部分构成。
3.在VHDL中最常用的库 IEEE 标准库,最常用的包集合是 1164 。
4.在VHDL的端口声明语句中,端口方向包括 输入(in) 、 输出(out) 、输入|输出(inout) 、 缓冲 和 。
5.VHDL的顺序语句只能出现在 进程 、 函数 、 过程 中,是按程序书写顺序自 上而下,一条一条地执行。
6.VHDL的 块 语句是并行语句结构,它的内部是由并行语句构成的
7.VHDL的变量(VARIABLE)是一种局部量,只能在 进程 、 函数
和 过程 中声明和使用。
8.MAX+plusII支持 文本 、 原理图 、 波形 、 符号编辑 等不同的编辑方式。
9.MAX+plusII工具软件有 功能 、 时序 、 仿真 等功能。
第 1 页 共 25 页
10.MAX—PLUSⅡ的波形编辑文件分 波形输入 和 波形仿真 ,它们的文件扩展名分别是 W D F 和 S C F 。
11.VHDL的实体声明部分指定了设计单元的 输入输出端口 ,它是设计实体对外的通信界面,是外界可以看到的部分。
12.CPLD和FPGA的含义分别是 复杂可编程逻辑器件 , 现场可编程门阵列 。
13.在VHDL中,含WAIT语句的进程Process的括号不能再加 敏感量 ,否则是非
法的.
14.VHDL的Process(进程)语句是由 顺序语句 组成的,但其本身却是 并发语句 结构。
15.VHDL的子程序有 函数 和 过程 两种类型。
16.在VHDL中,标准逻辑位数据有 0和1 种逻辑值。
17.MAX—PLUSⅡ 的仿真分 功能仿真 和 时序仿真 。
18.VHDL的变量(VARIABLE)是一个 功能变量 ,只能在进程、函数和过程中声明和使用。
19.VHDL的数据对象包括 常数 、 变量 、 信号 和 文第 2 页 共 25 页
件 。
20. 实体 和 结构体 是设计实体的基本组成部分,它们可以构成最基本的VHDL程序。
20.VHDL语言的字符是以 字母的下划线 括起来的数字、字母和符号。
二.简答题(每题6分,共 30 分)
1.如何用VHDL语句描述时钟的下降沿和上升沿。
时钟上升沿if clk‘event and clk=“1”then
下降沿if clk‘event and clk =“0” then
2. 在VHDL中的IEEE标准中,预定义的标准是逻辑位数据STD-LOGIC与BIT有何区别。
只有当端口说明为BIT时该端口的信号取值只能是二进制数“0”和“1”
3.VHDL的信号(SIGNAL)与变量(VARIABLE)有什么的区别。
Signal可以在实体构造体等高层次环境中说明,对整个设计实体全局有效
Variable 在进程子函数等低层次环境中说明,只在说明的区域中局部有效
4. 叙述一个四位加法器及仿真的全过程。
第 3 页 共 25 页
5.现有两个半加器,一个两输入或门,试画出一个全加器
6.在一个构造体内,其执行语句的顺序有什么特点?
7.卫式BLOCK语句中的条件和PROCESS 语句中的敏感量的区别是什么(顺序),它们的执行过程如何?
Block块头主要用于信号的映射及参数的定义、process 并行执行进程语句
8. 为层次式电路,各层次的功能模块在存盘时要注意什么问题?
(在同一路径的文件夹内)
9.在MAX—PLUSⅡ中一般连线与总线有什么区别,在使用总线时必须注意什么问题?
10、现有一个两输入异或门,一个两输入与门,试画出半加器。
S=A⊕B
11.硬件描述语言描述硬件电路的基本构成是什么?
数字系统的结构,行为和功能;
硬件描述语言设计数字;
电路逻辑电路的过程和方法
第 4 页 共 25 页
12.解释端口方向说明,IN 、 OUT 、 INOUT 、 BUFFER和LINRAGE的含义?
In:输入型,信号从该端口进入实体;
out:输出型,信号从实体内部经该端口输出
Inout:输入输出型,信号既可以从该端口输入也可以输出
Buffer:缓冲型,与out类似但在结构内部可作反馈
Linrage:无指定方向,与任何方向的信号连接
13.数据类型BIT与STD-LOGIC ,BIT_ VECTOR与STD_LOGIC_VECTOR其共同点与不同点是什么?
Std-logic-vector:标准逻辑适量
Std-logic:标准逻辑位量
Bit:为数据类型取值只能是:“0”和“1”
Bit-vector:位矢量,数据类型
三.分析题 (共50分)
1.读懂下列程序,指出其完成什么功能?(20分)
第 5 页 共 25 页
(1) library ieee;
use ieee.std_logic_1164.all;
entity aaa is
port ( a,b,c,d: in std_logic;
y:out std_logic) ;
end aaa;
architecture aaa1 of aaa is
begin
p1:process (a,b,c,d)
variable tmp:std_logic_vector (3 downto 0 );
begin
tmp:=a&b&c&d;
case tmp is
第 6 页 共 25 页
when ″0000″=> y<= ′ 1′ ;
when ″0001″=> y<= ′ 1′ ;
when ″0010″= >y<= ′ 1′ ;
when ″0011″= > y<= ′ 1′ ;
when ″0101″=> y<= ′ 1′ ;
when ″0110″= > y<= ′ 1′ ;
when ″0111″=> y<= ′ 1′ ;
when ″1000″=> y<= ′ 1′ ;
when ″1001″=> y<= ′ 1′ ;
when ″1010″=> y<= ′ 1′ ; when ″1011″=> y<= ′ 1′ ;
when ″1110″= > y<= ′ 1′ ;
when ″1111″=> y<= ′ 0′ ;
第 7 页 共 25 页
when others =>y<=′ x′;
end case ;
end process p1;
end aaa1;
与非门
(2) library ieee;
use ieee.ste_logic_1164.all;
entity abc is
port ( clk: in std_logic;
r: in std_logic;
d: in std_logic_vector ( 3 downto 0);
q:out std_logic _vector ( 3 downto 0 );
end abc;
第 8 页 共 25 页
architecture rtl of abc is
signal q_temp :std_logic_vector ( 3 downto 0);
begin
process ( clk, r)
begin
if ( r=′1′ ) then
q_temp<=″0000″ ;
elseif ( clk ′event and clk=′1′ ) then
q_temp <=d;
end if;
q<= q_temp;
end process;
end rtl;
第 9 页 共 25 页
寄存器
(1)ENTITY abc IS
PORT (do,d1 ,y: IN BIT;
q: OUT BIT);
END abc ;
ARCHITECTURE connect OF BEGIN
Cale:
BLOCK
BEGIN
Tmp1<= d0 AND y ;
Tmp2<=d1 AND (NOT y ) ;
Tmp3<=tmp1 OR tmp2 ;
abc IS
第 10 页 共 25 页
q <=tmp3 ;
END BLOCK cale ;
END connect ;
二选一电路
(2)LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY parity_check IS
PORT ( a: IN STD_LOGIC_VECTOR (7 DOWNTO 0);
y: OUT STD_LOGIC);
END parity_check;
ARCHITECTURE rtl OF parity_check IS
BEGIN
PROCESS( a)
第 11 页 共 25 页
VARIABLE tmp:STD_LOGIC;
BEGIN
tmp:=\"0\";
FOR i IN 0TO 7 LOOP
tmp:=tmp XOR a(i);
END LOOP;
y<=tmp;
END PROCESS;
END rtl奇偶效应
(1)
ENTITY abc IS
PORT (do,d1: IN BIT;
x: IN BIT ;
第 12 页 共 25 页
Q: OUT BIT);
END abc ;
ARCHITECTURE dataflow OF abc IS
BEGIN
Q<= (d0 AND x ) OR ( NOT x AND d1 END dataflow;二选一的数据选择器
(2)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY AAA IS
PORT
(Clock:IN STD_LOGIC;
CLKOUT:OUT STD_LOGIC);
第 13 页 共 25 页
);
END ;
ARCHITECTURE Behavior OF AAA IS
SIGNAL Clk:STD_LOGIC;
BEGIN
PROCESS(Clock)
BEGIN
IF rising_edge(Clock) THEN
CLK<=NOT Clk;
END IF;
END PROCESS;
Clkout<=Clk;
END;边沿触发器
2.下列程序是一个二选一电路,有四处错误,试指出并改正。(10分)
第 14 页 共 25 页
ENTITY mux IS
PROT ( d0,d1,sel : IN BIT ;
q: OUT BIT ) ;
END mux ;
ARCHITECTURE connect OF mux IS
BEGIN
Cale : PROCESS (d0,d1 SEL)
VARIABLE tmp1,tmp2,tmp3: BIT ;
BEGIN
Temp1: =d0 AND sel ;
Temp2: = d1 AND (NOT sel ) ;
Temp3:=tmp1 OR tmp2 ;
Q :< = tmp3 ;
第 15 页 共 25 页
END PROCESS ;
END connect ;
(3)ENTITY mux IS
PROT ( d0,d1,sel : IN BIT ;
q: OUT BIT) ;
END mux ;
ARCHITECTURE connect OF mux IS
BEGIN
Cale : PROCESS (d0 ,d1,sel )
VARIABLE tmp1,tmp2,tmp3: BIT ;
BEGIN
Temp1: =d0 AND sel ;
Temp2: = d1 AND (NOT sel ) ;
第 16 页 共 25 页
Temp3:=tmp1 OR tmp2 ;
Q :<= tmp3 ;
END PROCESS ;
END connect ;
3、下列程序是2输入“或非”门电路,在空格中填上适当的语句(10分)
LIBRARY IEEE ;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY nor2 IS
PORT (a,b: IN STD-LOGIC ;
y: OUT STD_LOGIC );
END nor2 ;
ARCHITECTURE nor2_2 OF NOR2 IS
BEGIN
第 17 页 共 25 页
t2:
PROCESS ( a,b)
VARIABLE comb: STD_LOGIC_VECTOR ( 1 DOWNTO 0);
BEGIN
Comb:=a & b ;
CASE comb IS
WHEN ″00″=>y<=′1′;
WHEN ″01″=>y<=′0′;
WHEN ″10″=>y<=′0′;
WHEN ″11″=>y<=′0′;
END CASE ;
END PROCESS t2;
END nor2_2;
第 18 页 共 25 页
(2)LIBRARY IEEE ;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY nor2 IS
PORT ( a,b : IN STD_LOGIC ;
y: OUT STD_LOGIC );
END nor2 ;
ARCHITECTURE nor2_2 OF nor2 IS
BEGIN
t2:
PROCESS ( a,b)
VARIABLE comb: STD_LOGIC_VECTOR ( 1 DOWNTO 0);
BEGIN
Comb:=a & b ;
第 19 页 共 25 页
CASE comb IS
WHEN ″00″=>y<=′1′;
WHEN ″01″=>y<=′0′;
WHEN ″10″=>y<=′0′;
WHEN ″11″=>y<=′0′;
END CASE ;
END PROCESS t2;
END nor2_2;
2 . 下列程序是四选一电路,在空格中填上适当的语句。LIBRARY IEEE ;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL ;
ENTITY mux4 IS
第 20 页 共 25 页
分)
(10
PORT ( i0,i1,i2,i3,a,b : IN STD-LOGIC ;
Q: OUT STD_LOGIC );
END mux4 ;
ARCHITECTURE behav OF mux4 IS
SIGNAL sel: INTEGER ;
BEGIN
WITH S SELECT
q <= i0 AFTER 10 ns WHEN 0,
i1 AFTER 10 ns WHEN 1,
i2 AFTER 10 ns WHEN 2,
i3 AFTER 10 ns WHEN 3,
′1′AFTER 10 ns WHEN OTHERS;
sel<=0 WHEN a=′0′ AND b=′0′ ELSE
第 21 页 共 25 页
1 WHEN a=′1′ AND b=′0′ ELSE
2 WHEN a=′0′ AND b=′1′ ELSE
3 WHEN a=′1′ AND b=′1′ ELSE
4 WHEN OTHERS ;
END behav;
3. 下列程序有四处错误,试指出并改正。(10分)
ENTITY mux IS
PROT ( d0,d1,sel : IN BIT ;
q: OUT BIT) ;
END mux ;
ARCHITECTURE connect OF mux IS
BEGIN
Cale : PROCESS (d0, d1, sel )
第 22 页 共 25 页
VARIABLE tmp1,tmp2,tmp3: BIT ;
BEGIN
Temp1: =d0 AND sel ;
Temp2: = d1 AND (NOT sel ) ;
Temp3:=tmp1 OR tmp2 ;
Q :<= tmp3 ;
END PROCESS ;
END connect ;
4.分析下列程序,指出其功能并说明其工作过程。(10分)
library ieee;
use ieee.std_logic_1164.all;
entity xyz is
port(a,clk1:in std_logic;
第 23 页 共 25 页
b:out std_logic);
end xyz;
architecture xyz1 of xyz is
signal tmp1:std_logic;
begin
process(clk1,a)
variable tmp3,tmp2:std_logic;
begin
if clk1′event and clk1 =′0′ then
tmp1<=a;
tmp2:=tmp1;
tmp3:=not tmp2;
end if;
第 24 页 共 25 页
b<=tmp1 and tmp3 and clk1;
end process;
end xyz1;(消除同步模块)
故当时钟脉冲下降沿到来时,变量tmp2和tmp3在赋值语句执行后立即分别得到新值:tmp1和tmp2的非值,而输入信号a经过一定时延时赋值给信号tmp1实现消抖同步的功能
第 25 页 共 25 页
因篇幅问题不能全部显示,请点此查看更多更全内容