
| ……………密……………封……………线……………密……………封…………… | 考试题样题(A卷) 一、选择题(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’ then B. if falling_edge(clk) then C. if clk’event and clk = ‘0’ then D.if clk’stable and not clk = ‘1’ then 7状态机编码方式中,其中_____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_11_____________.ALL; ENTITY coder IS PORT ( din : IN STD_LOGIC_VECTOR(____9 DOWNTO 0________________); output : _____ OUT _____ STD_LOGIC_VECTOR(3 DOWNTO 0) ); END coder; ARCHITECTURE behav OF ________ CODER _____ IS SIGNAL SIN : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS (_____DIN ______) BEGIN IF (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 behav; 三、VHDL程序改错(20分) 仔细阅读下列程序,回答问题: 1.在程序中存在两处错误,试指出,并说明理由: 在MAX+PlusII中编译时,提示的第一条错误为: Error: Line 12: File e:\\mywork\est\\cnt4.vhd: VHDL syntax error: If statement must have THEN, but found BEGIN instead |
第二页 共四页
14行,Q1是矢量,不能直接和整数1相加,需要使用重载函数
2.修改相应行的程序(如果是缺少语句请指出大致的行数):
错误1 行号: 12 程序改为:BEGIN 改为 THEN
错误2 行号: 3 程序改为:USE IEEE.STD_LOGIC_UNSIGNED.ALL;
| 第二页 共四页 | 1 LIBRARY IEEE; 2 USE IEEE.STD_LOGIC_11.ALL; 3 4 ENTITY CNT4 IS 5 PORT ( CLK : IN STD_LOGIC ; 6 Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)) ; 7 END CNT4; 8 ARCHITECTURE bhv OF CNT4 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 < 15 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; 22 四、编写VHDL程序(20分,每题10分) 1. 试描述一个带进位输入、输出的8位全加器 端口:A、B为加数,CIN为进位输入,S为加和,COUT为进位输出 LIBRARY IEEE; USE IEEE.STD_LOGIC_11.ALL; ENTITY ADDER8 IS PORT (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 IS SIGNAL TS : STD_LOGIC_VECTOR (8 DOWNTO 0); BEGIN TS <= (‘0’ & A) + (‘0’ & B) + CIN; S <= TS(7 DOWNTO 0); COUT <= TS(8); END ONE; | |
| 系 班 姓 名 座 号 ……………密……………封……………线……………密……………封…………… | 2. 看下面原理图,写出相应VHDL描述 LIBARRY IEEE; USE IEEE.STD_LOGIC_11.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所示;完成下列各题: 图a 状态图 图b 状态机结构图 1.试判断该状态机类型,并说明理由。 该状态机为moore型状态机,输出数据outa和输入ina没有直接逻辑关系,outa是时钟clk的同步时序逻辑。 2.根据状态图,写出对应于结构图b,分别由主控组合进程和主控时序进程组成的VHDL有限状态机描述。 Library ieee; Use ieee.std_logic_11.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,使用状态位直接输出型状态机编码方式,其输出直接由当前状态输出,也没有毛刺 |
