EDA技术期末试卷(含答案)
- 格式:doc
- 大小:32.50 KB
- 文档页数:3
第1页(共3页) 班级 学号 姓名
密 封 线 内 不 得 答 题 一、单项选择题(30分)
1.以下描述错误的是C
A.QuartusII是Altera提供的FPGA/CPLD集成开发环境
B.Altera是世界上最大的可编程逻辑器件供应商之一
C.MAX+plusII是Altera前一代FPGA/CPLD集成开发环境QuartusII的更新换代新产品
D.QuartusII完全支持VHDL、Verilog的设计流程
2.以下工具中属于FPGA/CPLD开发工具中的专用综合器的是 B
A.ModelSim B.Leonardo Spectrum C.Active HDL D.QuartusII
3.以下器件中属于Xilinx 公司生产的是 C
A.ispLSI系列器件 B.MAX系列器件
C.XC9500系列器件 D.FLEX系列器件
4.以下关于信号和变量的描述中错误的是 B
A.信号是描述硬件系统的基本数据对象,它的性质类似于连接线
B.信号的定义范围是结构体、进程
C.除了没有方向说明以外,信号与实体的端口概念是一致的
D.在进程中不能将变量列入敏感信号列表中
5.以下关于状态机的描述中正确的是 B
A.Moore型状态机其输出是当前状态和所有输入的函数
B.与Moore型状态机相比,Mealy型的输出变化要领先一个时钟周期
C.Mealy型状态机其输出是当前状态的函数
D.以上都不对
6.下列标识符中, B 是不合法的标识符.
A.PP0 B.ENDC.Not_Ack D.sig
7.大规模可编程器件主要有FPGA、CPLD两类,下列对CPLD结构与工作原理的描述中,正确的是 C .
A.CPLD即是现场可编程逻辑器件的英文简称
B.CPLD是基于查找表结构的可编程逻辑器件
C.早期的CPLD是从GAL的结构扩展而来
D.在Altera公司生产的器件中,FLEX10K 系列属CPLD结构
8.综合是EDA设计流程的关键步骤,在下面对综合的描述中, D 是错误的。
A.综合就是把抽象设计层次中的一种表示转化成另一种表示的过程
B.综合就是将电路的高级语言转化成低级的,可与FPGA / CPLD的基本结构相映射的网表文件
C.为实现系统的速度、面积、性能的要求,需要对综合加以约束,称为综合约束
D.综合可理解为,将软件描述与给定的硬件结构用电路网表文件表示的映射过程,并且这种映射关系是唯一的(即综合结果是唯一的)
9.嵌套使用IF语句,其综合结果可实现 A . A.带优先级且条件相与的逻辑电路B.条件相或的逻辑电路
C.三态控制电路 D.双向控制电路
10.在VHDL语言中,下列对时钟边沿检测描述中,错误的是 D 。
A.if clk’event and clk = ‘1’ thenB.if falling_edge(clk) then
C.if clk’event and clk = ‘0' thenD.if clk’stable and not clk = ‘1’ then
11.下列那个流程是正确的基于EDA软件的FPGA / CPLD设计流程B
A.原理图/HDL文本输入→适配→综合→功能仿真→编程下载→硬件测试
B.原理图/HDL文本输入→功能仿真→综合→适配→编程下载→硬件测试
C.原理图/HDL文本输入→功能仿真→综合→编程下载→→适配硬件测试;
D.原理图/HDL文本输入→功能仿真→适配→编程下载→综合→硬件测试
12.在VHDL语言中,下列对进程(PROCESS)语句的语句结构及语法规则的描述中,正确的是A。
A.PROCESS为一无限循环语句;敏感信号发生更新时启动进程,执行完成后,等待下一次进程启动
B.敏感信号参数表中,应列出进程中使用的所有输入信号
C.进程由说明部分、结构体部分、和敏感信号参数表三部分组成
D.当前进程中声明的变量也可用于其他进程
13.下列语句中,不属于并行语句的是 B
A.进程语句 B.CASE语句
C.元件例化语句 D.WHEN…ELSE…语句
14.VHDL语言共支持四种常用库,其中哪种库是用户的VHDL设计现行工作库
D
A.IEEE库 B.VITAL库 C.STD库 D.WORK库
15.VHDL语言是一种结构化设计语言;一个设计实体(电路模块)包括实体与结构体两部分,结构体描述 D 。
A.器件外部特性B.器件的综合约束
C.器件外部特性与内部功能D.器件的内部功能
二、EDA名词解释,写出下列缩写的中文含义(10分)
1.CPLD:复杂可编程逻辑器件
2.ASIC:专用集成电路
3.LUT:查找表
4.EDA:电子设计自动化
5.ROM:只读存储器
三、程序填空题(20分)
以下是一个模为24(0~23)的8421BCD码加法计数器VHDL描述,请补充完整
LIBRARY IEEE;
第2页(共3页) 班级 学号 姓名
密 封 线 内 不 得 答 题 USE IEEE。STD_LOGIC_1164。ALL;
ENTITY tb IS
PORT ( CLK : IN STD_LOGIC ;
SHI, GE : OUTINTEGERRANGE 0 TO 9 ) ;
END ;
ARCHITECTURE bhv OF tb IS
SIGNAL SHI1,GE1 :INTEGERRANGE 0 TO 9;
BEGIN
PROCESS (CLK)
BEGIN
IFCLK’EVENT AND CLK=’1'then
IF GE1 = 9 THEN
GE1 <= 0 ;
SHI1〈=SHI1+1;
ELSIF SHI1=2 AND GE1=3 THEN
SHI1<=0;
GE1〈=0;
ELSE
GE1 <= GE1+1;
END IF;
END IF;
END PROCESS ;
GE <= GE1;
SHI <=SHI1;
END bhv;
四、程序改错题(仔细阅读下列程序后回答问题,12分)
1 LIBRARY IEEE;
2 USE IEEE.STD_LOGIC_1164.ALL;
3 USE IEEE。STD_LOGIC_UNSIGNED.ALL;
4 ENTITY gc IS
5 PORT ( CLK : IN STD_LOGIC ;
6 Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)) ;
7 END gc;
8 ARCHITECTURE bhv OF gc IS
9 SIGNAL Q1 : RANGE 0 TO 9;
10BEGIN
11 PROCESS (clk,Q)
12BEGIN
13 IF RISING_EDGE(CLK) THEN 14 IF Q1 < "1001" THEN
15 Q1 〈= Q1 + 1 ;
16 ELSE
17 Q1 〈= (OTHERS =〉 ’0’);
18END IF;
19END IF;
20 END PROCESS ;
21 Q <= Q1;
22END bhv;
程序编译时,提示的错误为:
Error: Line 9: File e:\mywork\test\gc。vhd: VHDL syntax error: subtype indication
must have resolution function or type mark,but found RANGE instead
Error: Line 11: File e:\mywork\test\gc。vhd: interface Declaration error:can't read
port ”Q" of mode OUT
请回答问题:在程序中存在两处错误,试指出并修改正确(如果是缺少语句请指出应该插入的行号)
答:(1)第9行有误,SIGNAL Q1 : RANGE 0 TO 9数据类型有误,应该改成SIGNAL Q1 : STD_LOGIC_VECTOR(3 DOWNTO 0)
(2)第11行有误,敏感信号列表中不能出现输出端口,应该改成PROCESS
(clk)
五、(28分)
1.试用VHDL描述一个外部特性如图所示的D触发器.(10分)
参考程序如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY mydff IS
PORT(CLK:IN STD_LOGIC;
D:IN STD_LOGIC;
Q:OUT STD_LOGIC);
END;
ARCHITECTURE bhv OF mydff IS
BEGIN
PROCESS(CLK)
BEGIN
IF CLK'EVENT AND CLK='1’ THEN
Q〈=D;
END IF;
END PROCESS;
第3页(共3页) 班级 学号 姓名
密 封 线 内 不 得 答 题 END;
2。下图为某一状态机对应的状态图,试用VHDL语言描述这一状态机.(18分)
参考程序如下:
LIBRARY IEEE;
USE IEEE。STD_LOGIC_1164。ALL;
ENTITY FSM2 IS
PORT ( clk,reset,in1 : IN STD_LOGIC;
out1 : OUT STD_LOGIC_VECTOR(3 downto 0));
END;
ARCHITECTURE bhv OF FSM2 IS
TYPE state_type IS (s0, s1, s2, s3);
SIGNALcurrent_ state,next_state: state_type;
BEGIN
P1:PROCESS(clk,reset)
BEGIN
IF reset = ‘1’ THEN current_state 〈= s0;
ELSIF clk='1’ AND clk’EVENT THEN
current_state <=next_state;
END IF;
END PROCESS;
P2:PROCESS(current_state)
BEGIN
case current_state is