文档库 最新最全的文档下载
当前位置:文档库 › EDA期末复习资料 (10)

EDA期末复习资料 (10)

EDA期末复习资料 (10)
EDA期末复习资料 (10)

一、填空题(本大题共10小题,每空1分,共20分)

1.一般把EDA技术的发展分为 MOS时代、 CMOS时代和 ASIC 三个阶段。

2.EDA设计流程包括设计输入、设计实现、实际设计检验和下载编程四个步骤。

3.EDA设计输入主要包括图形输入、 HDL文本输入和状态机输入。

4.时序仿真是在设计输入完成之后,选择具体器件并完成布局、布线之后进行的时序关系仿真,因此又称为功能仿真。5.VHDL的数据对象包括变量、常量和信号,它们是用来存放各种类型数据的容器。

6.图形文件设计结束后一定要通过仿真,检查设计文件是否正确。

7.以EDA方式设计实现的电路设计文件,最终可以编程下载到 FPGA 和 CPLD 芯片中,完成硬件设计和验证。8.MAX+PLUS的文本文件类型是(后缀名) .VHD 。

9.在PC上利用VHDL进行项目设计,不允许在根目录下进行,必须在根目录为设计建立一个工程目录(即文件夹)。10.VHDL源程序的文件名应与实体名相同,否则无法通过编译。

一、填空题(本大题共10小题,每空1分,共20分)

1.一般把EDA技术的发展分为 MOS时代、 CMOS时代和 ASIC 三个阶段。

2.EDA设计流程包括设计输入、设计实现、实际设计检验和下载编程四个步骤。

3.EDA设计输入主要包括图形输入、 HDL文本输入和状态机输入。

4.时序仿真是在设计输入完成之后,选择具体器件并完成布局、布线之后进行的时序关系仿真,因此又称为功能仿真。5.VHDL的数据对象包括变量、常量和信号,它们是用来存放各种类型数据的容器。

6.图形文件设计结束后一定要通过仿真,检查设计文件是否正确。

7.以EDA方式设计实现的电路设计文件,最终可以编程下载到 FPGA 和 CPLD 芯片中,完成硬件设计和验证。8.MAX+PLUS的文本文件类型是(后缀名) .VHD 。

9.在PC上利用VHDL进行项目设计,不允许在根目录下进行,必须在根目录为设计建立一个工程目录(即文件夹)。10.VHDL源程序的文件名应与实体名相同,否则无法通过编译。

二、选择题:(本大题共5小题,每小题3分,共15分)。

11.在EDA工具中,能完成在目标系统器件上布局布线软件称为(C )

A.仿真器

B.综合器

C.适配器

D.下载器

12.在执行MAX+PLUSⅡ的(d )命令,可以精确分析设计电路输入与输出波形间的延时量。

A .Create default symbol B. Simulator

C. Compiler

D.Timing Analyzer

13.VHDL常用的库是(A )

A. IEEE

B.STD

C. WORK

D. PACKAGE

14.下面既是并行语句又是串行语句的是( C )

A.变量赋值

B.信号赋值

C.PROCESS语句

D.WHEN…ELSE语句

15.在VHDL中,用语句(D )表示clock的下降沿。

A. clock’EVENT

B. clo ck’EVENT AND clock=’1’

C. clock=’0’

D. clock’EVENT AND clock=’0’

VHDL和FPGA: 超高速硬件描述语言现场可编程门阵列

杭州电子科技大学2004年EDA技术与VHD学生考试卷答案

考试课程EDA技术与VHDL 考试日期2005年月日成绩参考答卷

课程号教师号任课教师姓名

考生姓名学号(8位)年级专业

一、单项选择题:(20分)

1.IP核在EDA技术和开发中具有十分重要的地位;提供用VHDL等硬件描述语言描述的功能块,但不涉及实现该功能块的具体电路的IP核为__________。A

A .软IP B.固IP C.硬IP D.都不是

2.综合是EDA设计流程的关键步骤,在下面对综合的描述中,_________是错误的。D

A. 综合就是把抽象设计层次中的一种表示转化成另一种表示的过程;

B. 综合就是将电路的高级语言转化成低级的,可与FPGA / CPLD的基本结构相映射的网表文件;

C. 为实现系统的速度、面积、性能的要求,需要对综合加以约束,称为综合约束;

D. 综合可理解为,将软件描述与给定的硬件结构用电路网表文件表示的映射过程,并且这种映射关系是唯一的(即综合结果是唯一的)。

3.大规模可编程器件主要有FPGA、CPLD两类,下列对FPGA结构与工作原理的描述中,正确的是__C__。

A. FPGA是基于乘积项结构的可编程逻辑器件;

B. FPGA是全称为复杂可编程逻辑器件;

C. 基于SRAM的FPGA器件,在每次上电后必须进行一次配臵;

D. 在Altera公司生产的器件中,MAX7000系列属FPGA结构。

4.进程中的变量赋值语句,其变量更新是_________。A

A. 立即完成;

B. 按顺序完成;

C. 在进程的最后完成;

D. 都不对。5.VHDL语言是一种结构化设计语言;一个设计实体(电路模块)包括实体与结构体两部分,结构体描述___________。D

A. 器件外部特性;

B. 器件的综合约束;

C. 器件外部特性与内部功能;

D. 器件的内部功能。

6.不完整的IF语句,其综合结果可实现________。A

A. 时序逻辑电路

B. 组合逻辑电路

C. 双向电路

D. 三态控制电路

7.子系统设计优化,主要考虑提高资源利用率减少功耗(即面积优化),以及提高运行速度(即速度优化);指出下列哪些方法是面积优化_________。B

①流水线设计②资源共享③逻辑优化④串行化⑤寄存器配平⑥关键路径法

A. ①③⑤

B. ②③④

C. ②⑤⑥

D. ①④⑥

8.下列标识符中,__________是不合法的标识符。B

A. State0

B. 9moon

C. Not_Ack_0

D. signall

9.关于VHDL中的数字,请找出以下数字中最大的一个:__________。A

A. 2#1111_1110#

B. 8#276#

C. 10#170#

D. 16#E#E1

10.下列EDA软件中,哪一个不具有逻辑综合功能:________。B

A. Max+Plus II

B. ModelSim

C. Quartus II

D. Synplify

第1页共5页

二、EDA名词解释,写出下列缩写的中文(或者英文)含义:(10分)

1. VHDL 超高速集成电路硬件描述语言

2. FPGA 现场可编程门阵列

3. RTL 寄存器传输级

4. SOPC 可编程片上系统

5. EAB 嵌入式阵列块

三、VHDL程序填空:(10分)

下面程序是参数可定制带计数使能异步复位计数器的VHDL描述,试补充完整。

-- N-bit Up Counter with Load, Count Enable, and

-- Asynchronous Reset

library ieee;

use IEEE.std_logic_1164.all;

use IEEE.std_logic_unsigned.all;

use IEEE.std_logic_arith.all;

entity counter_n is

generic (width : integer := 8);

port(data : in std_logic_vector (width-1 downto 0);

load, en, clk, rst : in std_logic;

q : out std_logic_vector (width - 1 downto 0));

end counter_n;

architecture behave of counter is

signal count : std_logic_vector (width-1 downto 0);

begin

process(clk, rst)

begin

if rst = '1' then

count <= (others => ‘0’);―― 清零

elsif clk’event and clk = ‘1’ then―― 边沿检测

if load = '1' then

count <= data;

elsif en = '1' then

count <= count + 1;

end if;

end if;

end process;

q <= count;

end behave;

四、VHDL程序改错:(10分)

仔细阅读下列程序,回答问题

1 LIBRARY IEEE;

2 USE IEEE.STD_LOGIC_1164.ALL;

3

4 ENTITY CNT10 IS

5 PORT ( CLK : IN STD_LOGIC ;

6 Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)) ;

7 END CNT10;

8 ARCHITECTURE bhv OF CNT10 IS

9 SIGNAL Q1 : STD_LOGIC_VECTOR(3 DOWNTO 0);

10 BEGIN

11 PROCESS (CLK) BEGIN

12 IF RISING_EDGE(CLK) begin

13 IF Q1 < 9 THEN

14 Q1 <= Q1 + 1 ;

15 ELSE

16 Q1 <= (OTHERS => '0');

17 END IF;

18 END IF;

19 END PROCESS ;

20 Q <= Q1;

21 END bhv;

1. 在MAX+PlusII中编译时,提示的第一条错误为:

Error: Line 12: File e:\mywork\test\cnt10.vhd: VHDL syntax error: If statement must have THEN, but found BEGIN instead

指出并修改相应行的程序(如果是缺少语句请指出大致的行数):

错误1 行号:12 程序改为:IF RISING_EDGE(CLK) THEN

错误2 行号:3 程序改为:USE IEEE.STD_LOGIC_UNSIGNED.ALL;

12 行if语句配套关键字是then而非begin

3 行程序中使用了+号重载函数,应包含使用对应程序包ieee.std_logic_unsigned.all

2. 若编译时出现如下错误,请分析原因。

当前编译的程序文件没有放在指定文件夹内,所以系统找不到WORK工作库。

第2页共5页

五、VHDL程序设计:(15分)

设计一数据选择器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;

Architecture one of mymux is

Begin

Process (sel, ain, bin)

Begin

If sel = ?00? then cout <= ain or bin;

Elsif sel = ?01? then cout <= ain xor bin;

Elsif sel = ?10? then cout <= ain and bin;

Else cout <= ain nor bin;

End if;

End process;

End one;

Architecture two of mymux is

Begin

Process (sel, ain, bin)

Begin

Case sel is

when ?00? => cout <= ain or bin;

when ?01? => cout <= ain xor bin;

when ?10? => cout <= ain and bin;

when others => cout <= ain nor bin;

End case;

End process;

End two;

Architecture three of mymux is

Begin

Cout <= ain or bin when sel = ?00? else

Ain xor bin when sel = ?01? else

Ain and bin when sel = ?10? else ain nor bin; End three;

六、根据原理图写出相应的VHDL程序:(15分)

Library ieee;

Use ieee.std_logic_1164.all;

Entity mycir is

Port ( din, clk : in std_logic;

Qout : out std_logic);

End mycir;

Architecture behave of mycir is

Signal a, b, c;

Begin

Qout <= c nand (a xor b);

Process (clk)

Begin

If clk’event and clk = ‘1’ then

A <= din;

B <= A;

C <= B;

End if;

End process;

End behave;

第3页共5页

七、综合题:(20分)

(一)已知状态机状态图如图a所示;完成下列各题:

图a 状态图

图b 状态机结构图

1. 试判断该状态机类型,并说明理由。

该状态机为moore型状态机,输出数据outa和输入ina没有直接逻辑关系,outa是时钟clk的同步时序逻辑。

2. 根据状态图,写出对应于结构图b,分别由主控组合进程和主控时序进程组成的VHDL有限状态机描述。Library ieee;

Use ieee.std_logic_1164.all;

Entity mooreb is

Port (clk, reset : in std_logic;

Ina : in std_logic_vector (1 downto 0);

Outa : out std_logic_vector (3 downto 0) );

End mooreb;

Architecture one of mooreb is

Type ms_state is (st0, st1, st2, st3);

Signal c_st, n_st : ms_state;

Begin

Process (clk, reset)

Begin

If reset = ‘1’ then c_st <= st0;

Elsif clk’event and clk = ‘1’ then c_st <= n_st;

End if;

End process;

Process (c_st)

Begin

Case c_st is

When st0 => if ina = ?00? then n_st <= st0;

Else n_st <= st1;

End if;

Outa <= ?0101?;

When st1 => if ina = ?00? then n_st <= st1;

Else n_st <= st2;

End if;

Outa <= ?1000?;

When st2 => if ina = ?11? then n_st <= st0;

Else n_st <= st3;

End if;

Outa <= ?1100?;

When st3 => if ina = ?11? then n_st <= st3;

Else n_st <= st0;

End if;

Outa <= ?1101?;

When others => n_st <= st0;

End case;

End process;

End one;

3. 若已知输入信号如下图所示,分析状态机的工作时序,画出该状态机的状态转换值(c_state)和输出控制信号(out_a);

4. 若状态机仿真过程中出现毛刺现象,应如何消除;试指出两种方法,并简单说明其原理。

方法1,添加辅助进程对输出数据进行锁存

方法2,将双进程状态机改写为单进程状态机,其输出也是锁存过了,故能消除毛刺

方法3,使用状态位直接输出型状态机编码方式,其输出直接由当前状态输出,也没有毛刺

第4页共5页

(二)已知一个简单的波形发生器的数字部分系统框图如下图所示

图中lcnt、lrom都是在MAX+PlusII中使用MegaWizard调用的LPM模块,其VHDL描述中Entity部分分别如下:

ENTITY lcnt IS

PORT

(

clock : IN STD_LOGIC ;

q : OUT STD_LOGIC_VECTOR (9 DOWNTO 0)

);

END lcnt;

ENTITY lrom IS

PORT

(

address : IN STD_LOGIC_VECTOR (9 DOWNTO 0);

q : OUT STD_LOGIC_VECTOR (9 DOWNTO 0)

);

END lrom;

试用VHDL描述该系统的顶层设计(使用例化语句)。

Library ieee;

Use ieee.std_logic_1164.all;

Entity mysg is

Port (clk : in std_logic;

To_da : out std_logic_vector (9 downto 0) );

End mysq;

Architecture one of mysq is

Signal addr : std_logic_vector (9 downto 0);

Component lcnt

Port (clock : in std_logic;

Q : out std_logic_vector (9 downto 0) );

End component;

Component lrom

Port (address : in std_logic_vector (9 downto 0);

Q : out std_logic_vector (9 downto 0) );

End component;

Begin

U1 : lcnt port map (clock => clk, q => addr);

U2 : lrom port map (address => addr, q => to_da);

End one;

第5页共5页

七、综合题:(20分)

根据如下所示状态图及其状态机结构图,回答问题

1.试判断该状态机类型,并说明理由。

改状态机可以为mealy型状态机,当输入ina变化时可影响输出outa立即变化

2.请问如何消除状态机输出信号毛刺?试列出至少两种方法,并说明理由。

方法1,添加辅助进程对输出数据进行锁存

方法2,将双进程状态机改写为单进程状态机,其输出也是锁存过了,故能消除毛刺

方法3,使用状态位直接输出型状态机编码方式,其输出直接由当前状态输出,也没有毛刺3.试由b、c两图中任选一图写出其完整的VHDL程序。LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY EX7 IS

PORT ( CLK, RESET : IN STD_LOGIC;

INA : IN STD_LOGIC_VECTOR(2 DOWNTO 0);

OUTA : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) );

END EX7;

-- MOORE型状态机

ARCHITECTURE ONE OF EX7 IS

TYPE STATE IS (S0, S1, S2, S3);

SIGNAL C_ST : STATE;

BEGIN

PROCESS (CLK, RESET, INA) BEGIN

IF RESET = '1' THEN C_ST <= S0; OUTA <= (OTHERS => '0');

ELSIF RISING_EDGE(CLK) THEN

CASE C_ST IS

WHEN S0 => IF INA = "101" THEN OUTA <= "0010";

ELSIF INA = "111" THEN OUTA <= "1100"; END IF;

C_ST <= S1;

WHEN S1 => IF INA = "000" THEN C_ST <= S1;

ELSIF INA = "110" THEN C_ST <= S2; END IF;

OUTA <= "1001";

WHEN S2 => IF INA = "100" THEN C_ST <= S2;

ELSIF INA = "011" THEN C_ST <= S1; ELSE C_ST <= S3;END IF;

OUTA <= "1111";

WHEN S3 => IF INA = "101" THEN OUTA <= "1101";

ELSIF INA = "011" THEN OUTA <= "1110"; END IF;

C_ST <= S3;

WHEN OTHERS => C_ST <= S0; OUTA <= (OTHERS => '0');

END CASE;

END IF;

END PROCESS;

END ONE;

-- MEALY型状态机

ARCHITECTURE TWO OF EX7 IS

TYPE STATE IS (S0, S1, S2, S3);

SIGNAL C_ST, N_ST : STATE;

BEGIN

REG : PROCESS (CLK, RESET) BEGIN

IF RESET = '1' THEN C_ST <= S0;

ELSIF CLK'EVENT AND CLK = '1' THEN C_ST <= N_ST;END IF;

END PROCESS;

COM : PROCESS (C_ST, INA) BEGIN

CASE C_ST IS

WHEN S0 => N_ST <= S1; IF INA = "101" THEN OUTA <= "0010";

ELSIF INA = "111" THEN OUTA <= "1100"; ELSE OUTA <= "0000";END IF;

WHEN S1 => OUTA <= "1001"; IF INA = "000" THEN N_ST <= S1;

ELSIF INA = "110" THEN N_ST <= S2; ELSE N_ST <= S1;END IF;

WHEN S2 => OUTA <= "1111"; IF INA = "100" THEN N_ST <= S2;

ELSIF INA = "011" THEN N_ST <= S1; ELSE N_ST <= S3;END IF;

WHEN S3 => IF INA = "101" THEN OUTA <= "1101";

ELSIF INA = "011" THEN OUTA <= "1110"; ELSE OUTA <= "0000";END IF;

N_ST <= S3;

WHEN OTHERS => N_ST <= S0; OUTA <= (OTHERS => '0');

END CASE;

END PROCESS;

END TWO;

第4页共5页

4. 已知一个简单的波形发生器的数字部分系统框图如下图所示:

图中DOWNCNT、MYROM都是在MAX+PlusII中使用MegaWizard调用的LPM模块,其VHDL描述中Entity部分分别如下:ENTITY DOWNCNT IS

PORT

(

clock : IN STD_LOGIC ;

q : OUT STD_LOGIC_VECTOR (5 DOWNTO 0)

);

END DOWNCNT;

ENTITY myrom IS

PORT

(

address : IN STD_LOGIC_VECTOR (5 DOWNTO 0);

q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0)

);

END myrom;

试用VHDL描述该系统的顶层设计(使用例化语句)。

Library ieee;

Use ieee.std_logic_1164.all;

Entity mysg is

Port (clk : in std_logic;

To_da : out std_logic_vector (7 downto 0) );

End mysq;

Architecture one of mysq is

Signal addr : std_logic_vector (5 downto 0);

Component lcnt

Port (clock : in std_logic;

Q : out std_logic_vector (5 downto 0) );

End component;

Component lrom

Port (address : in std_logic_vector (5 downto 0);

Q : out std_logic_vector (7 downto 0) );

End component;

Begin

U1 : lcnt port map (clock => clk, q => addr);

U2 : lrom port map (address => addr, q => to_da);

End one;

相关文档