(这个内容不要) 5. 流水线设计是一种优化方式,下列哪一项对资源共享描述正确 _
C 。
A. 面积优化方法,不会有速度优化效果
嘉应学院电子信息工程学院 考试题样题(A卷)
时间 :120分钟 ( 2009年 6 月) 考试形式 :闭 卷
…
…
…
…
…
密
…
…
…
…
…
封
…
…
…
…
…
线
…
…
…
…
…
密
…
…
…
…
…
封
…
…
…
…
…
题 号
得 分
一
二
三
四
五
总分
复核人
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. 以上都不是
系
班
姓
名
座
号
评卷人
一、选择题( 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. 都不是; 共
四
页
8. 子系统设计优化,主要考虑提高资源利用率减少功耗(即面积优化) ,以及提高运行速
度(即速度优化) ;指出下列那种方法是速度优化 ___A ______。
A. 流水线设计
C. 逻辑优化
B. 资源共享
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 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;
1
2
3
4
5
6
7
8
9
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY CNT4 IS
PORT ( CLK : IN STD_LOGIC ;
Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)) ;
END CNT4;
ARCHITECTURE bhv OF CNT4 IS
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_1164.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);
三、 VHDL 程序改错( 20 分)
仔细阅读下列程序,回答问题:
1.在程序中存在两处错误,试指出,并说明理由:
在 MAX+PlusII中编译时,提示的第一条错误为:
Error: Line 12: File e:\mywork\test\cnt4.vhd: VHDL syntax error: If statement must have THEN,
but found BEGIN instead
12行, IF语句对应的关键字是 then而非 begin
14行, Q1是矢量,不能直接和整数 1相加,需要使用重载函数
第
二
页
共
四
页
END ONE;
2.修改相应行的程序(如果是缺少语句请指出大致的行数) :
错误 1 行号: 12 程序改为: BEGIN 改为 THEN
错误 2 行号: 3 程序改为: USE IEEE.STD_LOGIC_UNSIGNED.ALL;
2. 看下面原理图,写出相应 VHDL 描述
xin INPUT
五、综合题( 20 分)
已知状态机状态图如图 (a)所示;完成下列各题:
(一)已知状态机状态图如图 a 所示;完成下列各题:
DFFDFF
OR in_a = “ 00”
Q OUTPUT
in_a = “ 01”
…
…
…
…
…
密
…
…
…
…
…
封
…
…
…
…
…
线
…
…
…
…
…
密
…
…
…
…
…
封
…
…
…
…
… Dclk INPUT Q D yout
系
班
姓
名
座
号
st0
LIBARRY 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;
out_a <= “ 0101” ;
in_a /= “ 00” st1
out_a <= “ 1000” ;
in_a = “ 11”
in_a /= “ 11” in_a /= “ 01”
st3
out_a <= “ 1101” ;
in_a /= “ 11”
st2
out_a <= “ 1100” ;
in_a = “ 11”
图 a 状态图
clk
reset
c_state
REG
END ONE;
n_state COM
out_a
in_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);
End mooreb;
Outa : out std_logic_vector (3 downto 0) );
…
…
…
…
封
…
…
号……
座……
…
…
密
…
…
…
线
名…
姓……
…
…
…
封
班…
…
系密…
…
…
…
…
…
…
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,使用状态位直接输出型状态机编码方式,其输出直接由当前状态输出,也没有毛刺
注意:
Rb
|
|