IF reset = ‘1’ THEN current_state <= s0; ELSIF clk='1' AND clk'EVENT THEN
current_state <=next_state; END IF;
END PROCESS;
P2: PROCESS (current_state,in1) BEGIN
case current_state is
WHEN s0 => IF in1='1'THEN next_state<=s1; ELSE next_state<=s0; END IF;
WHEN s1 => IF in1='0'THEN next_state<=s2; ELSE next_state<=s1; END IF;
WHEN s2 => IF in1='1'THEN next_state<=s3; ELSE next_state<=s2; END IF;
WHEN s3 => IF in1='0'THEN next_state<=s0; ELSE next_state<=s3; END IF; end case; END PROCESS;
p3:PROCESS(current_state) BEGIN
case current_state is
WHEN s0 => out1<=\ WHEN s1 => out1<=\ WHEN s2 => out1<=\ WHEN s3 => out1<=\ end case; END PROCESS; end bhv;
EDA試卷答案 一、单项选择题
1、2. 基于EDA软件的FPGA/CPLD设计流程为:原理图/HDL文本输入→__A__→综合→适配→____B____→编程下载→硬件测试。P14 A. 功能仿真 B. 时序仿真 C. 逻辑综合 D. 配置
3. IP核在EDA技术和开发中具有十分重要的地位;提供用VHDL等硬件描述语言描述的功能块,但不涉及实现该功能块的具体电路的IP核为__A___。P25
A. 软IP B. 固IP C. 硬IP D. 全对
4. 综合是EDA设计流程的关键步骤,在下面对综合的描述中,_____D____是错误的。P15 A. 综合就是把抽象设计层次中的一种表示转化成另一种表示的过程。 B. 综合就是将电路的高级语言转化成低级的,可与FPGA / CPLD的基本结构相映射的网表文件。
C. 为实现系统的速度、面积、性能的要求,需要对综合加以约束,称为综合约束。
D. 综合可理解为,将软件描述与给定的硬件结构用电路网表文件表示的映射过程,并且这种映射关系是唯一的(即综合结果是唯一的)。 5. 大规模可编程器件主要有FPGA、CPLD两类,其中CPLD通过___A__实现其逻辑功能。P42
A. 可编程乘积项逻辑 B. 查找表(LUT) C. 输入缓冲 D. 输出缓冲 6. VHDL语言是一种结构化设计语言;一个设计实体(电路模块)包括实体与结构体两部分,结构体描述_____B___。P274 A. 器件外部特性 B. 器件的内部功能 C. 器件外部特性与内部功能 D. 器件的综合约束
7. 电子系统设计优化,主要考虑提高资源利用率减少功耗(即面积优化),以及提高运行速度(即速度优化);下列方法中___A___不属于面积优化。P238 A. 流水线设计 B. 资源共享 C. 逻辑优化 D. 串行化
8. 进程中的信号赋值语句,其信号更新是___B____。P134 A. 立即完成 B. 在进程的最后完成 C. 按顺序完成 D. 都不对
9. 不完整的IF语句,其综合结果可实现__A__。P147 A. 时序逻辑电路 B. 组合逻辑电路 C. 双向电路 D. 三态控制电路
10. 状态机编码方式中,其中__A__占用触发器较多,但其简单的编码方式可减少状态译码组合逻辑资源,且易于控制非法状态。P221 A. 一位热码编码 B. 顺序编码 C. 状态位直接输出型编码 D. 格雷码编码
二、VHDL程序填空
1. 下面程序是1位十进制计数器的VHDL描述,试补充完整。
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CNT10 IS PORT ( CLK : IN STD_LOGIC ; Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)) ; END CNT10;
ARCHITECTURE bhv OF CNT10 IS SIGNAL Q1 : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS (CLK) BEGIN IF CLK'EVENT AND CLK = '1' THEN -- 边沿检测
IF Q1 > 10 THEN Q1 <= (OTHERS => '0'); -- 置零 ELSE Q1 <= Q1 + 1 ; -- 加1 END IF; END IF; END PROCESS ; Q <= Q1; END bhv;
2. 下面是一个多路选择器的VHDL描述,试补充完整。
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY bmux IS PORT ( sel : IN STD_LOGIC; A, B : IN STD_LOGIC_VECTOR(7 DOWNTO 0); Y : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)) ; END bmux;
ARCHITECTURE bhv OF bmux IS BEGIN y <= A when sel = '1' ELSE B; END bhv;
三、VHDL程序改错
仔细阅读下列程序,回答问题
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY LED7SEG IS PORT ( A : IN STD_LOGIC_VECTOR(3 DOWNTO 0); CLK : IN STD_LOGIC; LED7S : OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END LED7SEG; ARCHITECTURE one OF LED7SEG IS SIGNAL TMP : STD_LOGIC; BEGIN SYNC : PROCESS(CLK, A) BEGIN IF CLK'EVENT AND CLK = '1' THEN TMP <= A; END IF; END PROCESS; OUTLED : PROCESS(TMP) BEGIN CASE TMP IS WHEN \ WHEN \ WHEN \ WHEN \ WHEN \ WHEN \ WHEN \ WHEN \ WHEN \ WHEN \ END CASE; END PROCESS; END one;
-- 1
-- 2 -- 3 -- 4 -- 5 -- 6 -- 7 -- 8 -- 9 -- 10 -- 11 -- 12 -- 13 -- 14 -- 15 -- 16 -- 17 -- 18 -- 19 -- 20 -- 21 -- 22 -- 23 -- 24 -- 25 -- 26 -- 27 -- 28 -- 29 -- 30 -- 31 -- 32
1. 在程序中存在两处错误,试指出,并说明理由:
第14行 TMP附值错误
第29与30行之间,缺少WHEN OTHERS语句 2. 修改相应行的程序:
错误1 行号: 9 程序改为:
TMP : STD_LOGIC_VECTOR(3 DOWNTO 0); 错误2 行号: 29 程序改为:
该语句后添加 WHEN OTHERS => LED7S <= \
四、阅读下列VHDL程序,画出原理图(RTL级)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY HAD IS PORT ( a : IN STD_LOGIC; b : IN STD_LOGIC; c : OUT STD_LOGIC; d : OUT STD_LOGIC );
END ENTITY HAD;
ARCHITECTURE fh1 OF HAD IS BEGIN c <= NOT(a NAND b); d <= (a OR b)AND(a NAND b); END ARCHITECTURE fh1;
五、请按题中要求写出相应VHDL程序
1. 带计数使能的异步复位计数器
输入端口: clk 时钟信号
rst 异步复位信号 en 计数使能 load 同步装载 data (装载)数据输入,位宽为10
输出端口: q 计数输出,位宽为10
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CNT1024 IS
PORT ( CLK, RST, EN, LOAD : IN STD_LOGIC;
DATA : IN STD_LOGIC_VECTOR (9 DOWNTO 0); Q : OUT STD_LOGIC_VECTOR (9 DOWNTO 0) );
END CNT1024;
ARCHITECTURE ONE OF CNT1024 IS BEGIN
PROCESS (CLK, RST, EN, LOAD, DATA)
VARIABLE Q1 : STD_LOGIC_VECTOR (9 DOWNTO 0); IF RST = '1' THEN
Q <= Q1;
Q1 := (OTHERS => '0'); IF LOAD = '1' THEN
Q1 := DATA; IF EN = '1' THEN
Q1 := Q1 + 1; END IF; ELSE
ELSIF CLK = '1' AND CLK'EVENT THEN BEGIN
END IF;
END IF;
END PROCESS;
END ONE;
2. 看下面原理图,写出相应VHDL描述
e
a
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY TRI_STATE IS
PORT ( E, A : IN STD_LOGIC;
Y : INOUT STD_LOGIC; B : OUT STD_LOGIC);
byEND TRI_STATE;
ARCHITECTURE BEHAV OF TRI_STATE IS BEGIN
PROCESS (E, A, Y) BEGIN
IF E = '0' THEN
B <= Y; Y <= 'Z';
ELSE