资源描述
杭州电子科技大学2005年EDA技术与VHDL考试试题
考试课程 EDA技术与VHDL 考试日期 年 月 日 成 绩
课程号 B0405010 教师号 任课教师姓名 曾 毓
考生姓名 学号(8位) 年级 专业
一、单项选择题:(20分)
1. 大规模可编程器件主要有FPGA、CPLD两类,下列对CPLD结构与工作原理的描述中,正确的是_______。
A. CPLD是基于查找表结构的可编程逻辑器件;
B. CPLD即是现场可编程逻辑器件的英文简称;
C. 早期的CPLD是从GAL的结构扩展而来;
D. 在Xilinx公司生产的器件中,XC9500系列属CPLD结构;
2. 综合是EDA设计流程的关键步骤,综合就是把抽象设计层次中的一种表示转化成另一种表示的过程;在下面对综合的描述中,_________是正确的。
A. 综合就是将电路的高级语言转化成低级的,可与FPGA / CPLD的基本结构相映射的网表文件;
B. 综合是纯软件的转换过程,与器件硬件结构无关;
C. 为实现系统的速度、面积、性能的要求,需要对综合加以约束,称为强制综合。
D. 综合可理解为,将软件描述与给定的硬件结构用电路网表文件表示的映射过程,并且这种映射关系是唯一的;
3. IP核在EDA技术和开发中具有十分重要的地位,IP分软IP、固IP、硬IP;下列所描述的IP核中,对于硬IP的正确描述为__________。
A. 提供用VHDL等硬件描述语言描述的功能块,但不涉及实现该功能块的具体电路;
B. 提供设计的最总产品----模型库;
C. 以网表文件的形式提交用户,完成了综合的功能块;
D. 都不是。
4. 基于EDA软件的FPGA / CPLD设计流程为:原理图/HDL文本输入→________→综合→适配→__________→编程下载→硬件测试。
①功能仿真 ②时序仿真 ③逻辑综合 ④配置 ⑤引脚锁定
A.③① B. ⑤② C.④⑤ D. ①② 5. 下面对利用原理图输入设计方法进行数字电路系统设计,那一种说法是不正确的______。
A. 原理图输入设计方法直观便捷,但不适合完成较大规模的电路系统设计;
B. 原理图输入设计方法一般是一种自底向上的设计方法;
C. 原理图输入设计方法无法对电路进行功能描述;
D. 原理图输入设计方法也可进行层次化设计。
6. 在VHDL语言中,下列对进程(PROCESS)语句的语句结构及语法规则的描述中,不正确的是_______。
A. PROCESS为一无限循环语句;敏感信号发生更新时启动进程,执行完成后,等待下一次进程启动。
B. 敏感信号参数表中,不一定要列出进程中使用的所有输入信号;
C. 进程由说明部分、结构体部分、和敏感信号三部分组成;
D. 当前进程中声明的变量不可用于其他进程。
7. 嵌套使用IF语句,其综合结果可实现________。
A. 带优先级且条件相与的逻辑电路;
B. 条件相或的逻辑电路;
C. 三态控制电路;
D. 双向控制电路。
8. 电子系统设计优化,主要考虑提高资源利用率减少功耗----即面积优化,以及提高运行速度----即速度优化;指出下列那种方法不属于速度优化:___________。
A. 流水线设计 B. 串行化
C. 关键路径法 D. 寄存器配平
9. 在一个VHDL设计中idata是一个信号,数据类型为integer,数据范围0 to 127,下面哪个赋值语句是正确的________。
A. idata := 32;
B. idata <= 16#A0#;
C. idata <= 16#7#E1;
D. idata := B#1010#;
10.下列EDA软件中,哪一不具有逻辑综合功能:________。
A. Max+Plus II
B. ModelSim
C. Quartus II
D. Synplify
第1页 共5页
二、EDA名词解释,写出下列缩写的中文(或者英文)含义:(14分)
1. SOPC
2. LUT
3. JTAG
4. GAL
5. EAB
6. IP
7. HDL
三、VHDL程序填空:(10分)
下面程序是n输入与门的VHDL描述,试补充完整。
__________ ieee;
use _____________________.all;
entity andn is
________ (n : integer); -- 类属参数声明
port ( a : in std_logic_vector( ______ downto 0);
c : out std_logic);
end;
________________ behav of ________ is -- 结构体声明
begin
process (____)
_____________ int : std_logic; -- 变量声明
begin
int := _____; -- 变量赋初值
for I in a'length – 1 downto 0 loop -- 循环判断
if a(i) = '0' then
int := '0';
end if;
end loop;
c <= ________; -- 输出判断结果
end process;
end behav;
四、VHDL程序改错:(10分)
本题程序为EDA实验中的示例程序sch.vhd,仔细阅读程序,回答问题。
1.对该程序进行编译时出现错误提示:“VHDL Design File “sch” must contain an entity of the same name.”
这是什么原因?如何修改?
2.修改问题1的错误后,如果编译时出现“Can’t open VHDL “WORK” ”这样的错误提示。
这又是什么原因,如何修改? library ieee; --1
use ieee.std_logic_1164.all; --2
entity schk is --3
port (din, clk, clr : in std_logic; -- 串行输入数据位/工作时钟/复位信号 --4
ab : out std_logic_vector(3 downto 0) -- 检测结果输出 --5
); --6
end schk; --7
architecture bhv of schk is --8
signal q : integer range 0 to 8; --9
signal d : std_logic_vector(7 downto 0); -- 8位待检测预置数 --10
begin --11
d = "11100101"; -- 8位待检测预置数 --12
process (clk, clr) --13
begin --14
if clr = '1' then q<= 0; --15
else if clk'event and clk = '1' then --16
case q is --17
when 0 => if din = d(7) then q <= 1; else q <= 0; end if; --18
when 1 => if din = d(6) then q <= 2; else q <= 0; end if; --19
when 2 => if din = d(5) then q <= 3; else q <= 0; end if; --20
when 3 => if din = d(4) then q <= 4; else q <= 0; end if; --21
when 4 => if din = d(3) then q <= 5; else q <= 0; end if; --22
when 5 => if din = d(2) then q <= 6; else q <= 0; end if; --23
when 6 => if din = d(1) then q <= 7; else q <= 0; end if; --24
when 7 => if din = d(0) then q <= 8; else q <= 0; end if; --25
when others => q <= 0; --26
end case; --27
end if; --28
end process; --29
process (q) --30
begin --31
if q = 8 then ab <= "1010"; --32
else ab <= "1011"; --33
end if; --34
end process; --35
end bhv; --36
1. 在上述程序代码中存在两处错误,编译时出现如下提示,试修改错误:
Error: Line 12: File f:\eda\schk.vhd: VHDL syntax error: unexpected signal “d” in Concurrent Statement Part
Error: Line 29:File f:\eda\schk.vhd: VHDL syntax error: if statement must have END IF, but found PROCESS instead
错误1 行号: 程序改为:
错误2 行号: 程序改为:
第2页 共5页
五、VHDL程序设计:(16分)
设计一数据选择器MUX,其系统模块图和功能表如下图所示。试采用下面三种方式中的两种来描述该数据选择器MUX的结构体。
(a) 用if语句。 (b) 用case 语句。 (c) 用when else 语句。
Library ieee;
Use ieee.std_logic_1164.all;
Entity mymux is
Port ( sel : in std_logic_vector(1 downto 0); -- 选择信号输入
Ain, Bin : in std_logic_vector(1 downto 0); -- 数据输入
Cout : out std_logic_vector(1 downto 0) );
End mymux;
六、根据原理图写出相应的VHDL程序:(10分)
第3页 共5页
七、综合题(20分)
下图是一个A/D采集系统的部分,要求设计其中的FPGA采集控制模块,该模块由三个部分构成:控制器(Control)、地址计数器(addrcnt)、内嵌双口RAM(adram)。控制器(control)是一个状态机,完成AD574的控制,和adram的写入操作。Adram是一个LPM_RAM_DP单元,在wren为’1’时允许写入数据。试分别回答问题
下面列出了AD574的控制方式和控制时序图
AD574逻辑控制真值表(X表示任意)
CE CS RC K12_8 A0 工 作 状 态
0 X X X X 禁止
X 1 X X X 禁止
1 0 0 X 0 启动12位转换
1 0 0 X 1 启动8位转换
1 0 1 1 X 12位并行输出有效
1 0 1 0 0 高8位并行输出有效
1 0 1 0 1 低4位加上尾随4个0有效
AD574工作时序:
问题:
1. 要求AD574工作在12位转换模式,K12_8、A0在control中如何设置?
2. 试画出control的状态机的状态图
3. 地址计数器每当ClkInc时钟上升沿到达,输出地址加1,请对该模块进行VHDL描述。
Library ieee;
Use ieee.std_logic_1164.all;
Use ieee.std_logic_unsigned.all;
Entity cnt10 is
Port ( ClkInc, Cntclr : in std_logic; -- 时钟信号和清零信号输入
Wraddr : out std_logic_vector (9 downto 0) );
End cnt10;
第4页 共5页
4. 根据状态图,试对control进行VHDL描述
Library ieee;
Use ieee.std_logic_1164.all;
Use ieee.std_logic_unsigned.all;
Entity control is
Port ( CLK, STATUS : in std_logic; -- 时钟信号和AD转换状态信号输入
ADDATA : in std_logic_vector (11 downto 0); -- 转换数据输入
CS, CE, A0, RC, K12_8 : out std_logic; -- AD574控制信号
ClkInc : out std_logic; -- 地址计数器时钟信号
rddata : out std_logic_vector (11 downto 0) ); -- 转换数据输出
End control;
5. 已知adram的端口描述如下
ENTITY adram IS
PORT
( data : IN STD_LOGIC_VECTOR (11 DOWNTO 0); -- 写入数据
wraddress: IN STD_LOGIC_VECTOR (9 DOWNTO 0); -- 写入地址
rdaddress: IN STD_LOGIC_VECTOR (9 DOWNTO 0); -- 读地址
wren : IN STD_LOGIC := '1'; -- 写使能
q : OUT STD_LOGIC_VECTOR (11 DOWNTO 0) -- 读出数据 );
END adram;
试用例化语句,对整个FPGA采集控制模块进行VHDL描述
Library ieee;
Use ieee.std_logic_1164.all;
Use ieee.std_logic_unsigned.all;
Entity ADC574 is
Port ( CLK, STATUS : in std_logic; -- 时钟信号和AD转换状态信号输入
ADDATA : in std_logic_vector (11 downto 0); -- 转换数据输入
Cntclr : in std_logic; -- 计数器清零信号
Rdaddr : in std_logic_vector (9 downto 0); -- adram读数地址
CS, CE, A0, RC, K12_8 : out std_logic; -- AD574控制信号
rddata : out std_logic_vector (11 downto 0) ); -- adram读数据输出
End ADC574;
展开阅读全文