当前位置:文档之家› EDA技术与VHDL考试试题(可编辑修改word版)

EDA技术与VHDL考试试题(可编辑修改word版)

EDA技术与VHDL考试试题(可编辑修改word版)
EDA技术与VHDL考试试题(可编辑修改word版)

杭州电子科技大学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 ........................................... a ll;

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

--5 --6

ab : out std_logic_vector(3 downto 0) -- 检测结果输出);

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

--17 if clr = '1' then q<= 0; --15 else if clk'event and clk = '1' then --16 case q is

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 --27

--28 end if;

end case;

-29

end process; -

process (q)

--30

begin

--31

32

--33 --34 if q = 8 then ab <= "1010"; -- else ab <= "1011";

end if;

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 启动1

2 位转换

1 0 0 X 1 启动8 位转换

1 0 1 1 X 1

2 位并行输出有效

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 转换状态信

号输入

End control; 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) ); -- 转换数据输出

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;

相关主题
文本预览
相关文档 最新文档