当前位置:文档之家› 2012-2013年海南大学EDA期末考试卷

2012-2013年海南大学EDA期末考试卷

2012-2013年海南大学信息学院EDA技术及应用考试试卷(A卷)时间:120分钟(2012年12月)考试形式:闭卷一、选择题(20分)1.下列那个流程是正确的基于EDA软件的FPGA / CPLD设计流程:(B)A. 原理图/HDL文本输入→适配→综合→功能仿真→编程下载→硬件测试B. 原理图/HDL文本输入→功能仿真→综合→适配→编程下载→硬件测试C. 原理图/HDL文本输入→功能仿真→综合→编程下载→→适配硬件测试;D. 原理图/HDL文本输入→功能仿真→适配→编程下载→综合→硬件测试2.综合是EDA设计流程的关键步骤,综合就是把抽象设计层次中的一种表示转化成另一种表示的过程;在下面对综合的描述中,____C_____是错误的。

A. 综合就是将电路的高级语言转化成低级的,可与FPGA /CPLD的基本结构相映射的网表文件;B. 为实现系统的速度、面积、性能的要求,需要对综合加以约束,称为综合约束;C. 综合是纯软件的转换过程,与器件硬件结构无关;D. 综合可理解为,将软件描述与给定的硬件结构用电路网表文件表示的映射过程,并且这种映射关系不是唯一的。

3.CPLD的可编程是主要基于什么结构:(D)A .查找表(LUT);B. ROM可编程;C. PAL可编程;D. 与或阵列可编程;4. IP核在EDA技术和开发中具有十分重要的地位,以HDL方式提供的IP被称为:(C)A. 硬IP;B. 固IP;C. 软IP;D. 都不是;5. 流水线设计是一种优化方式,下列哪一项对资源共享描述正确_ C。

A. 面积优化方法,不会有速度优化效果B. 速度优化方法,不会有面积优化效果C. 面积优化方法,可能会有速度优化效果D. 速度优化方法,可能会有面积优化效果6.在VHDL语言中,下列对时钟边沿检测描述中,错误的是___D____。

A. if clk’event and clk = ‘1’ thenB. if falling_edge(clk) thenC. if clk’event and clk = ‘0’ thenD.if clk’stable and not clk = ‘1’ then7状态机编码方式中,其中_____C____占用触发器较多,但其实现比较适合FPGA的应用A. 状态位直接输出型编码B. 顺序编码C. 一位热码编码D. 以上都不是8.子系统设计优化,主要考虑提高资源利用率减少功耗(即面积优化),以及提高运行速度(即速度优化);指出下列那种方法是速度优化___A______。

A. 流水线设计B. 资源共享C. 逻辑优化D. 串行化9. 不完整的IF语句,其综合结果可实现____A____。

A. 时序电路B. 双向控制电路C. 条件相或的逻辑电路D. 三态控制电路10.在一个VHDL设计中Idata是一个信号,数据类型为std_logic_vector,试指出下面那个赋值语句是错误的。

(D)A. idata <= “00001111”B. idata <= b”0000_1111”;C. idata <= X”AB”D. idata <= 16”01”;二、VHDL程序填空(20分)下面程序是一个10线-4线优先编码器的VHDL描述,试补充完整。

LIBRARY __IEEE________ ;USE IEEE.________ STD_LOGIC_1164_____________.ALL; ENTITY coder ISPORT ( din : IN STD_LOGIC_VECTOR(____9 DOWNTO 0________________);output : _____OUT_____ STD_LOGIC_VECTOR(3 DOWNTO 0) );END coder;ARCHITECTURE behav OF ________ CODER _____ ISSIGNAL SIN : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS (_____DIN ______)BEGINIF (din(9)='0') THEN SIN <= "1001" ;_ELSIF (din(8)=’0’)_________________ THEN SIN <= "1000" ;ELSIF (din(7)='0') THEN SIN <= "0111" ;ELSIF (din(6)='0') THEN SIN <= "0110" ;ELSIF (din(5)='0') THEN SIN <= "0101" ;ELSIF (din(4)='0') THEN SIN <= "0100" ;ELSIF (din(3)='0') THEN SIN <= "0011" ;ELSIF (din(2)='0') THEN SIN <= "0010" ;ELSIF (din(1)='0') THEN SIN <= "0001" ;ELSE _ SIN <= “0000”______________ ;_____ END IF ___________END PROCESS ;__ Output <= sin _____________;END behave;三、VHDL程序改错(20分)仔细阅读下列程序,回答问题:1.在程序中存在两处错误,试指出,并说明理由:14行,Q1是矢量,不能直接和整数1相加,需要使用重载函数2.修改相应行的程序(如果是缺少语句请i指出大致的行数):错误1 行号:12 程序改为:BEGIN 改为 THEN错误 2 行号: 3 程序改为:USEIEEE.STD_LOGIC_UNSIGNED.ALL;1 LIBRARY IEEE;2 USE IEEE.STD_LOGIC_1164.ALL;34 ENTITY CNT4 IS5 PORT ( CLiK : IN STD_LOGIC ;6 Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)) ;7 END CNT4;8 ARCHITECTURE bhv OF CNT4 IS9 SIGNAL Q1 : STD_LOGIC_VECTOR(3 DOWNTO 0);10 BEGIN11 PROCESS (CLK) BEGIN12 IF RISING_EDGE(CLK) begin13 IF Q1 < 15 THEN14 Q1 <= Q1 + 1 ;15 ELSE16 Q1 <= (OTHERS => '0');17 END IF;18 END IF;19 END PROCESS ;20 Q <= Q1;21 END bhv;22四、编写VHDL程序(20分,每题10分)1. 试描述一个带进位输入、输出的8位全加器端口:A、B为加数,CIN为进位输入,S为加和,COUT为进位输出LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ADDER8 ISPORT (A, B : IN STD_LOGIC_VECTOR (7 DOWNTO 0);CIN : IN STD_LOGIC;COUT : OUT STD_LOGIC;S : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) );END ADDER8;ARCHITECTURE ONE OF ADDER8 ISSIGNAL TS : STD_LOGIC_VECTOR (8 DOWNTO 0);BEGINTS <= (‘0’ & A) + (‘0’ & B) + CIN;S <= TS(7 DOWNTO 0);COUT <= TS(8);END ONE;2. 看下面原理图,写出相应VHDL 描述 DQ DFF D Q DFFOR youtOUTPUT xin INPUTclk INPUTLIBARRY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY MYCIR IS PORT ( XIN, CLK : IN STD_LOGIC; YOUT : OUT STD_LOGIC); END MYCIR; ARCHITECTURE ONE OF MYCIR IS SIGNAL A, B, C; BEGIN B <= XIN OR A; PROCESS (CLK) BEGIN IF CLK ’EVENT AND CLK = ‘1’ THEN A <= C; C <= B; END IF; END PROCESS; YOUT <= C;END ONE;五、综合题(20分)已知状态机状态图如图(a)所示;完成下列各题:(一)已知状态机状态图如图a 所示;完成下列各题:out_a <= “0101“1000”;“01”out_a <= “1101;图a 状态图1.试判断该状态机类型,并说明理由。

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

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

Library ieee;Use ieee.std_logic_1164.all;Entity mooreb isPort (clk, reset : in std_logic;Inia : in std_logic_vector (1 downto 0);Outa : out std_logic_vector (3 downto 0) );End mooreb;Architecture one of mooreb isType ms_state is (st0, st1, st2, st3);Signal c_st, n_st : ms_state;BeginProcess (clk, reset)BeginIf reset = ‘1’ then c_st <= st0;Elsif clk’event and clk = ‘1’ then c_st <= n_st; End if;End process;Process (c_st)BeginCase c_st isWhen 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. 若状态机仿真过程中出现毛刺现象,应如何消除;试指出两种方法,并简单说明其原理。

相关主题