eda试题及答案
- 格式:doc
- 大小:5.83 MB
- 文档页数:34
一、选择题:(20分)
1. 大规模可编程器件主要有FPGA、CPLD两类,下列对CPLD结构与工作原理的描述中,正确的是:___D__
A. CPLD是基于查找表结构的可编程逻辑器件
B. CPLD即是现场可编程逻辑器件的英文简称
C. 早期的CPLD是从FPGA的结构扩展而来
D. 在Xilinx公司生产的器件中,XC9500系列属CPLD结构
2. 基于VHDL设计的仿真包括有①门级时序仿真、②行为仿真、③功能仿真和④前端功能仿真这四种,按照自顶向下的设计流程,其先后顺序应该是:_________D
A.①②③④ B.②①④③ C.④③②① D.②④③①
3. IP核在EDA技术和开发中具有十分重要的地位,IP分软IP、固IP、硬IP;下列所描述的IP核中,对于固IP的正确描述为:__________D
A.提供用VHDL等硬件描述语言描述的功能块,但不涉及实现该功能块的具体电路
B.提供设计的最总产品——模型库
C.以可执行文件的形式提交用户,完成了综合的功能块
D.都不是
4. 下面对利用原理图输入设计方法进行数字电路系统设计,哪一种说法是正确的:__________B
A.原理图输入设计方法直观便捷,很适合完成较大规模的电路系统设计
B.原理图输入设计方法一般是一种自底向上的设计方法
C.原理图输入设计方法无法对电路进行功能描述
D.原理图输入设计方法不适合进行层次化设计
5. 在VHDL语言中,下列对进程(PROCESS)语句的语句结构及语法规则的描述中,不正确的是:_______D
A.PROCESS为一无限循环语句
B.敏感信号发生更新时启动进程,执行完成后,等待下一次进程启动
C.当前进程中声明的变量不可用于其他进程
D.进程由说明语句部分、并行语句部分和敏感信号参数表三部分组成 6. 对于信号和变量的说法,哪一个是不正确的:_________A
A.信号用于作为进程中局部数据存储单元
B.变量的赋值是立即完成的
C.信号在整个结构体内的任何地方都能适用
D.变量和信号的赋值符号不一样
7. 下列状态机的状态编码,_________方式有“输出速度快、难以有效控制非法状态出现”这个特点。A
A.状态位直接输出型编码
B.一位热码编码
C.顺序编码
D.格雷编码
8. VHDL语言共支持四种常用库,其中哪种库是用户的VHDL设计现行工作库:_______D
A.IEEE库
B.VITAL库
C.STD库
D.WORK工作库
9. 下列4个VHDL标识符中正确的是:_______B
A.10#128#
B.16#E#E1
C.74HC124
D.X_16
10.下列语句中,不属于并行语句的是:_______B
A.进程语句
B.CASE语句
C.元件例化语句
D.WHEN…ELSE…语句
二、EDA名词解释(10分)
写出下列缩写的中文(或者英文)含义:
1. ASIC 专用集成电路
2. FPGA 现场可编程门阵列
3. IP 知识产权核(软件包)
4. JTAG 联合测试行动小组
5. HDL 硬件描述语言
三、VHDL程序填空:(10分)
以下程序是一个BCD码表示0~99计数器的VHDL描述,试补充完整。
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity cnt100b is
port( clk, rst, en : in std_logic;
cq : out std_logic_vector(7 downto 0); -- 计数输出
cout: out std_logic); -- 进位输出
end entity cnt100b;
architecture bhv of cnt100b is
begin
process (clk, rst, en)
variable cqi : std_logic_vector(7 downto 0);
begin
if rst = '1' then
cqi := (others => ‘0’); -- 计数器清零复位
else
if clk’event and clk = ‘1’ then -- 上升沿判断
if en = '1' then
if cqi(3 downto 0) < "1001" then -- 比较低4位
cqi := cqi + 1; -- 计数加1
else
if cqi(7 downto 4) < "1001" then -- 比较高4位
cqi := cqi + 16;
else
cqi := (others => '0');
end if;
cqi (3 downto 0) := “0000”; -- 低4位清零
end if;
end if;
end if;
end if;
if cqi = “10011001” then -- 判断进位输出
cout <= '1';
else
cout <= '0';
end if;
cq <= cqi;
end process;
end architecture bhv; 四、VHDL程序改错:(10分)
仔细阅读下列程序,回答问题
LIBRARY IEEE; -- 1
USE IEEE.STD_LOGIC_1164.ALL; -- 2
ENTITY MOORE1 IS -- 3
PORT ( DATAIN : IN STD_LOGIC_VECTOR(1 DOWNTO 0); -- 4
CLK, RST: IN STD_LOGIC; -- 5
Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ); -- 6
END MOORE1; -- 7
ARCHITECTURE BEHAV OF MOORE1 IS -- 8
SIGNAL ST_TYPE IS (ST0, ST1, ST2, ST3, ST4); -- 9
SIGNAL C_ST : ST_TYPE; -- 10
BEGIN -- 11
PROCESS (CLK, RST) -- 12
BEGIN -- 13
IF RST = '1' THEN C_ST <= ST0; Q <= "0000"; -- 14
ELSIF CLK'EVENT AND CLK = '1' THEN -- 15
CASE C_ST IS -- 16
WHEN ST0 => IF DATAIN = "10" THEN C_ST <= ST1; -- 17
ELSE C_ST <= ST0; -- 18
END IF; Q <= "1001"; -- 19
WHEN ST1 => IF DATAIN = "11" THEN C_ST <= ST2; -- 20
ELSE C_ST <= ST1; -- 21
END IF; Q <= "0101"; -- 22
WHEN ST2 => IF DATAIN = "01" THEN C_ST <= ST3; -- 23
ELSE C_ST <= ST0; -- 24
END IF; Q <= "1100"; -- 25
WHEN ST3 => IF DATAIN = "00" THEN C_ST <= ST4; -- 26
ELSE C_ST <= ST2; -- 27
END IF; Q <= "0010"; -- 28
WHEN ST4 => IF DATAIN = "11" THEN C_ST <= ST0; -- 29
ELSE C_ST <= ST3; -- 30
END IF; Q <= "1001"; -- 31
END CASE; -- 32
END IF; -- 33
END PROCESS; -- 34
END BEHAV; -- 35
1.在程序中存在两处错误,试指出,并说明理由:
在Quartus II中编译时,其中一个提示的错误为:
Error (Line 9): VHDL syntax error at MOORE1.vhd(9) near text "IS"; expecting ":", or ","
第9行,状态机数据类型声明错误,关键字应为TYPE
第32行,case语句缺少when others处理异常状态情况
2.修改相应行的程序(如果是缺少语句请指出大致的行数):
错误1 行号: 9 程序改为:SIGNAL 改为 TYPE
错误2 行号: 32 程序改为:之前添加一句 when others => c_st <= st0;
五、阅读下列VHDL程序,画出相应RTL图:(10分)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY TRIS IS
PORT ( CONTROL : IN STD_LOGIC;
INN : IN STD_LOGIC;
Q : INOUT STD_LOGIC;
Y : OUT STD_LOGIC );
END TRIS;
ARCHITECTURE ONE OF TRIS IS
BEGIN
PROCESS (CONTROL, INN, Q)
BEGIN
IF (CONTROL = '0') THEN
Y <= Q;
Q <= 'Z';
ELSE
Q <= INN;
Y <= 'Z';
END IF;
END PROCESS;
END ONE;
六、写VHDL程序:(20分)
1. 试描述一个带进位输入、输出的8位全加器
端口:A、B为加数,CIN为进位输入,S为加和,COUT为进位输出
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY ADDER8 IS