FPGA期末复习大题库题库
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《FPGA期末复习大题
库》
班级:电气N132
姓名:
学号:
成绩:
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
11综合是EDA设计流程的关键步骤,综合就是把抽象设计层次中的一种表示转化成另一种表示的过程;在下面对综合的描述中,_________是错误的。
C
A.综合就是将电路的高级语言转化成低级的,可与FPGA / CPLD的基本结构相映射
的网表文件;
B.综合可理解为,将软件描述与给定的硬件结构用电路网表文件表示的映射过程,并
且这种映射关系不是唯一的;
C.综合是纯软件的转换过程,与器件硬件结构无关;
D.为实现系统的速度、面积、性能的要求,需要对综合加以约束,称为综合约束。
12基于EDA软件的FPGA / CPLD设计流程为:原理图/HDL文本输入→________→综合→适配→__________→编程下载→硬件测试。
B
①功能仿真②时序仿真③逻辑综合④配置⑤引脚锁定
A.③① B.①② C.④⑤ D.④②
13下面对利用原理图输入设计方法进行数字电路系统设计,那一种说法是不正确的______。
B
A 原理图输入设计方法直观便捷,但不适合完成较大规模的电路系统设计;
B 原理图输入设计方法无法对电路进行功能描述;
C 原理图输入设计方法一般是一种自底向上的设计方法;
D 原理图输入设计方法也可进行层次化设计。
14在VHDL语言中,下列对进程(PROCESS)语句的语句结构及语法规则的描述中,正确的是_______。
A
A PROCESS为一无限循环语句;敏感信号发生更新时启动进程,执行完成后,等待下一次进程启动。
B敏感信号参数表中,应列出进程中使用的所有输入信号;
C进程由说明部分、结构体部分、和敏感信号参数表三部分组成;
D当前进程中声明的信号也可用于其他进程。
15嵌套使用IF语句,其综合结果可实现________。
A
A带优先级且条件相与的逻辑电路;
B条件相或的逻辑电路;
C三态控制电路;
D双向控制电路。
16电子系统设计优化,主要考虑提高资源利用率减少功耗----即面积优化,以及提高运行速度----即速度优化;指出下列那种方法不属于速度优化:___________。
A
A. 资源共享
B. 流水线设计
C.寄存器配平
D. 关键路径法
17在一个VHDL设计中idata是一个信号,数据类型为integer,下面哪个赋值语句是不正确的________。
D
A idata <= 16#20#;
B idata <= 32;
B idata <= 16#A#E1;
C idata <= B#1010#;
18.下列EDA软件中,哪一不具有时序仿真功能:________。
D
A Max+Plus II
B Quartus II
C ModelSim
D Synplify
19IP核在EDA技术和开发中具有十分重要的地位;提供用VHDL等硬件描述语言描述的功能块,但不涉及实现该功能块的具体电路的IP核为__________。
D
A .瘦IP B.固IP C.胖IP D.都不是
20进程中的信号赋值语句,其信号更新是___C____。
A按顺序完成;
B比变量更快完成;
C在进程的最后完成;
D都不对。
21大规模可编程器件主要有FPGA、CPLD两类,下列对CPLD结构与工作原理的描述中,正确的是__C D_____。
A. CPLD是基于查找表结构的可编程逻辑器件;
B. CPLD即是现场可编程逻辑器件的英文简称;
C. 早期的CPLD是从GAL的结构扩展而来;
D. 在Xilinx公司生产的器件中,XC9500系列属CPLD结构;
22综合是EDA设计流程的关键步骤,综合就是把抽象设计层次中的一种表示转化成另一种表示的过程;在下面对综合的描述中,____A_____是正确的。
A综合就是将电路的高级语言转化成低级的,可与FPGA / CPLD的基本结构相映射的网表文件;
B综合是纯软件的转换过程,与器件硬件结构无关;
C为实现系统的速度、面积、性能的要求,需要对综合加以约束,称为强制综合。
D综合可理解为,将软件描述与给定的硬件结构用电路网表文件表示的映射过程,并且这种映射关系是唯一的;
23IP核在EDA技术和开发中具有十分重要的地位,IP分软IP、固IP、硬IP;下列所描述的IP核中,对于硬IP的正确描述为______D____。
A提供用VHDL等硬件描述语言描述的功能块,但不涉及实现该功能块的具体电路;
B提供设计的最总产品----模型库;
C以网表文件的形式提交用户,完成了综合的功能块;
D都不是。
24基于EDA软件的FPGA / CPLD设计流程为:原理图/HDL文本输入→___D_____→综合→适配→__________→编程下载→硬件测试。
①功能仿真②时序仿真③逻辑综合④配置⑤引脚锁定
A.③① B. ⑤② C.④⑤ D. ①②
25在VHDL语言中,下列对进程(PROCESS)语句的语句结构及语法规则的描述中,不正确的是__C_____。
A PROCESS为一无限循环语句;敏感信号发生更新时启动进程,执行完成后,等待
下一次进程启动。
B敏感信号参数表中,不一定要列出进程中使用的所有输入信号;
C进程由说明部分、结构体部分、和敏感信号三部分组成;
D当前进程中声明的变量不可用于其他进程。
26电子系统设计优化,主要考虑提高资源利用率减少功耗----即面积优化,以及提高运行速度----即速度优化;指出下列那种方法不属于速度优化:____ ______。
B A. 流水线设计 B. 串行化
C关键路径法 D. 寄存器配平
27在一个VHDL设计中idata是一个信号,数据类型为integer,数据范围0 to 127,下面哪个赋值语句是正确的______。
C
A idata := 32;
B idata <= 16#A0#;
C idata <= 16#7#E1;
D idata := B#1010#;
28 关于VHDL中的数字,请找出以下数字中最大的一个:__________。
A
A. 2#1111_1110#
B. 8#276#
C. 10#170#
D. 16#E#E1
29.下列EDA软件中,哪一个不具有逻辑综合功能:________。
B
A. Max+Plus II
B. ModelSim
C. Quartus II
D. Synplify
30.子系统设计优化,主要考虑提高资源利用率减少功耗(即面积优化),以及提高运行速度(即速度优化);指出下列哪些方法是面积优化_________。
B
①流水线设计②资源共享③逻辑优化④串行化⑤寄存器配平⑥关键路径法
A. ①③⑤
B. ②③④
C. ②⑤⑥
D. ①④⑥
31.下列标识符中,__________是不合法的标识符。
B A. State0 B. 9moon C. Not_Ack_0 D. signall
32.VHDL语言是一种结构化设计语言;一个设计实体(电路模块)包括实体与结构体两部分,结构体描述___________。
B
A. 器件外部特性;
B. 器件的内部功能;
C. 器件的综合约束;
D. 器件外部特性与内部功能。
33.嵌套的IF语句,其综合结果可实现___ ___。
D
A. 条件相与的逻辑
B. 条件相或的逻辑
C. 条件相异或的逻辑
D. 三态控制电路
34.在一个VHDL设计中Idata是一个信号,数据类型为std_logic_vector,试指出下面那个赋值语句是错误的。
D
A. idata <= “00001111”;
B. idata <= b”0000_1111”;
C. idata <= X”AB”;
D. idata <= B”21”;
35.在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
36.请指出Altera Cyclone系列中的EP1C6Q240C8这个器件是属于____ C A. ROM B. CPLD C. FPGA D.GAL
37下列是EDA技术应用时涉及的步骤:
A. 原理图/HDL文本输入;
B. 适配;
C. 时序仿真;
D. 编程下载;
E. 硬件测试;
F. 综合
请选择合适的项构成基于EDA软件的FPGA / CPLD设计流程:
A →___F___ →___B__ →____C___ →D →___E____
38PLD的可编程主要基于A. LUT结构或者B. 乘积项结构:
请指出下列两种可编程逻辑基于的可编程结构:
FPGA 基于____A_____
CPLD 基于____B_____
39在状态机的具体实现时,往往需要针对具体的器件类型来选择合适的状态机编码。
对于A. FPGA B. CPLD 两类器件:
一位热码状态机编码方式适合于 ____A____ 器件;
顺序编码状态机编码方式适合于 ____B____ 器件;
40下列优化方法中那两种是速度优化方法: ___B__、__D__ A. 资源共享 B. 流水线 C. 串行化 D. 关键路径优化
41 基于VHDL设计的仿真包括有①门级时序仿真、②行为仿真、③功能仿真和④前端功能仿真这四种,按照自顶向下的设计流程,其先后顺序应该是:________ _D A.①②③④ B.②①④③C.④③②①D.②④③①
42.IP核在EDA技术和开发中具有十分重要的地位,IP分软IP、固IP、硬IP;下列所描述的IP核中,对于固IP的正确描述为:__________ D A.提供用VHDL等硬件描述语言描述的功能块,但不涉及实现该功能块的具体电路B.提供设计的最总产品——模型库
C.以可执行文件的形式提交用户,完成了综合的功能块
D.都不是
43.下面对利用原理图输入设计方法进行数字电路系统设计,哪一种说法是正确的:_________ _B A.原理图输入设计方法直观便捷,很适合完成较大规模的电路系统设计
B.原理图输入设计方法一般是一种自底向上的设计方法
C.原理图输入设计方法无法对电路进行功能描述
D.原理图输入设计方法不适合进行层次化设计
44.在VHDL语言中,下列对进程(PROCESS)语句的语句结构及语法规则的描述中,不正确的是:_______ D A.PROCESS为一无限循环语句
B.敏感信号发生更新时启动进程,执行完成后,等待下一次进程启动
C.当前进程中声明的变量不可用于其他进程
D.进程由说明语句部分、并行语句部分和敏感信号参数表三部分组成
45 对于信号和变量的说法,哪一个是不正确的:_________ A
A.信号用于作为进程中局部数据存储单元
B.变量的赋值是立即完成的
C.信号在整个结构体内的任何地方都能适用
D.变量和信号的赋值符号不一样
46 下列状态机的状态编码,_________方式有“输出速度快、难以有效控制非法状态出现”这个特点。
A
A.状态位直接输出型编码
B.一位热码编码
C.顺序编码
D.格雷编码
47.VHDL语言共支持四种常用库,其中哪种库是用户的VHDL设计现行工作库:_______ D A.IEEE库
B.VITAL库
C.STD库
D.WORK工作库
48.下列4个VHDL标识符中正确的是:_______ B A.10#128#
B.16#E#E1
C.74HC124
D.X_16
49.下列语句中,不属于并行语句的是:_______ B A.进程语句
B.CASE语句
C.元件例化语句
D.WHEN…ELSE…语句
50 基于EDA软件的FPGA / CPLD设计流程,以下流程中哪个是正确的:_____ C
A. 原理图/HDL文本输入→适配→综合→时序仿真→编程下载→功能仿真→硬件测试
B. 原理图/HDL文本输入→功能仿真→综合→时序仿真→编程下载→适配→硬件测试
C. 原理图/HDL文本输入→功能仿真→综合→适配→时序仿真→编程下载→硬件测试
D. 原理图/HDL文本输入→适配→时序仿真→编程下载→功能仿真→综合→硬件测试
51 综合是EDA设计流程的关键步骤,综合就是把抽象设计层次中的一种表示转化成另一种表示的过程;在下面对综合的描述中,_______ _是错误的。
A
A. 综合就是把抽象设计层次中的一种表示转化成另一种表示的过程,并且该过程与器件硬件结构无关
B. 为实现系统的速度、面积、性能的要求,需要对综合加以约束,称为综合约束
C. 综合可以理解为将软件描述与给定的硬件结构用电路网表文件表示的映射过程,映射结果不唯一
D. 综合就是将电路的高级语言转化成低级的,可与FPGA / CPLD的基本结构相映射的网表文件
52.FPGA的可编程是主要基于什么结构:________ A
A. 查找表(LUT)
B. ROM可编程
C. PAL可编程
D. 与或阵列可编程
53 IP核在EDA技术和开发中具有十分重要的地位;提供用VHDL等硬件描述语言描述的功能块,但不涉及实现该功能块的具体电路的IP核为:________ D
A. 胖IP
B. 瘦IP
C. 硬IP
D. 都不是
54.串行化设计是一种优化方式,下列哪一项对串行化设计描述正确:__ _____ __C
A. 面积优化方法,同时有速度优化效果
B. 速度优化方法,不会有面积优化效果
C. 面积优化方法,不会有速度优化效果
D. 速度优化方法,可能会有面积优化效果
55 在VHDL语言中,下列对时钟边沿检测描述中,错误的是:____ ____ B
A. if clk'event and clk = '1' then
B. if clk'stable and not clk = '1' then
C. if rising_edge(clk) then
D. if not clk'stable and clk = '1' then
56 状态机编码方式中,哪种编码速度较快而且输出没有毛刺?_ _______ C
A. 一位热码编码
B. 格雷码编码
C. 状态位直接输出型编码
D. 都不是
57 不完整的IF语句,其综合结果可实现:___ _____ D
A. 三态控制电路
B. 条件相或的逻辑电路
C. 双向控制电路
D. 时序逻辑电路
58 以下对于进程PROCESS的说法,正确的是:___ ____ C
A. 进程之间可以通过变量进行通信
B. 进程内部由一组并行语句来描述进程功能
C. 进程语句本身是并行语句
D. 一个进程可以同时描述多个时钟信号的同步时序逻辑
59.关于VHDL中的数字,请找出以下数字中数值最小的一个:___ ______ C A. 2#1111_1110# B. 8#276#
C. 10#170#
D. 16#E#E1
1 CPLD 复杂可编程逻辑器件
2 . HDL 硬件描素语言
3 . LUT 查找表
4. ASIC 专用集成电路
5 . SOC 单芯系统
6 JTAG 联合测试行动小组(边界标捕)
7 VHDL 超高速集成电路硬件描述语言
8 FPGA 现场可编程门阵列
9 RTL 寄存器传输级
10 SOPC 可编程片上系统
11 SOPC 单芯可编程系统
12 EAB 嵌入式阵列块
13 LPM 参数可定制宏模块库
14 UART 串口(通用异步收发器)
15 ISP 在系统编程
16 IEEE 电子电气工程师协会
17 LAB 逻辑阵列块
18 GAL 通用阵列逻辑
19 IP 知识产权
20 HDL 硬件描素语言
21 EDA 电子设计自动化
22 Synthesis 综合
23 PCB 印刷电路板
24 RTL 寄存器传输级
25 LPM 参数可设置模块库
26 FSM 有限状态机
程序填空
下面程序是带异步复位、同步置数和移位使能的8位右移移位寄存器的VHDL描述,
试补充完整。
library ieee;
use ieee.std-logic-1164 .all;
entity sreg8b is
port ( clk, rst : in std_logic;
load,en : in std_logic;
din : in __ std_logic -vecter___(7 downto 0);
qb : out std_logic);
end sreg8b;
architecture behav of sreg8b is
signal reg8 : std_logic_vector( 7 downto 0);
begin
process (clk, rst , load, en)
begin
if rst='1' then ――异步清零
reg8 <= ( lethers=>’0’ ) ;
elsif clk’event and clk=’1’ then ――边沿检测
if load = '1' then ――同步置数
reg8 <= din;
elsif en='1' then ――移位使能
reg8(6 downto 0) <= reg8(7downto1) ;
end if;
__end if_;
end process;
qb <= _reg8(0)_; ――输出最低位end behav;
下面程序是参数可定制带计数使能异步复位计数器的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;
__if_______;
end if;
end process;
___q <= count _____
end behave;
下面程序是n输入与门的VHDL描述,试补充完整。
LIBRARY IEEE; -- 8位分频器程序设计
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.__ STD_LOGIC_UNSIGNED_____.ALL;
ENTITY PULSE IS
PORT ( CLK : IN STD_LOGIC;
D : IN __ STD_LOGIC_VECTOR ______(7 DOWNTO 0);
FOUT : OUT STD_LOGIC );
END;
ARCHITECTURE one OF __ PULSE __ IS
SIGNAL FULL : STD_LOGIC;
BEGIN
P_REG: PROCESS(CLK)
____ VARIABLE __ CNT8 : STD_LOGIC_VECTOR(__7___ DOWNTO 0);
BEGIN
IF ___ CLK’EVENT AND CLK = ‘1’____ THEN
IF CNT8 = "11111111" THEN
CNT8 ___:= D __; --当CNT8计数计满时,输入数据D被同步预置给计数器CNT8
FULL <= '1'; --同时使溢出标志信号FULL输出为高电平
ELSE CNT8 __:= CNT8 + 1____; --否则继续作加1计数
FULL <= '0'; --且输出溢出标志信号FULL为低电平
END IF;
END IF;
END PROCESS P_REG;
P_DIV: PROCESS(__FULL __)
VARIABLE CNT2 : STD_LOGIC;
BEGIN
IF FULL'EVENT AND FULL = '1' THEN
CNT2 __<= NOT CNT2__; --如果溢出标志信号FULL为高电平,D触发器输出取反
IF CNT2 = '1' THEN FOUT <= '1';
ELSE FOUT <= '0';
END IF;
END IF;
END PROCESS P_DIV;
END;
下面程序是一个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;
下面程序是8位通用寄存器的VHDL描述,试补充完整。
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee. std_logic_unsigned .ALL;
ENTITY unicntr IS
PORT(clock, serinl, serinr : IN Std_logic; --serial inputs
mode : IN Std_logic_vector(2 DOWNTO 0); --mode control
datain : IN Std_logic_vector(7DOWNTO 0) ; --parallel inputs
dataout : out Std_logic_vector(7 DOWNTO 0)); --parallel outputs END unicntr;
ARCHITECTURE bhv OF unicntr IS
SIGNAL int_reg : Std_logic_vector(7 DOWNTO 0);
BEGIN
PROCESS( clock ,datain,serinl,serinr)
BEGIN
IF rising_edge(clock) THEN
CASE mode IS
WHEN "000" => int_reg <= other=〉‘0’ ; --reset
WHEN "001" => int_reg <= datain; --parallel load
WHEN "010" => int_reg <= int_reg + 1; --count up
WHEN "011" => int_reg <= int_reg - 1; --count down
WHEN "100" => int_reg <= int_reg(6 DOWNTO 0) & serinr ; --shift left WHEN "101" => int_reg <= serinr & int_reg(7 DOWNTO 1); --shift right
WHEN other => NULL;
END CASE;
END IF ;
END PROCESS;
Datout<=int reg ; --connect internal register to dataout port END bhv;
下面程序是参数可定制带计数使能异步复位计数器的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_n _ is
signal count : std_logic_vector (width-1 downto 0);
begin
process(clk, rst)
begin
if rst = '1' then
count <= ___ others => ‘0’___; ―― 清零
elsif __ lk’event and clk = ‘1’___ then ―― 边沿检测
if load = '1' then
count <= data;
___ elsif __ en = '1' then
count <= count + 1;
___if_____
end if;
end process;
_ q <= count ___
end behave;
下面程序是一个16位数控分频器的VHDL描述,试补充完整。
__library__ IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE ___ IEEE.STD_LOGIC_unsigeed.all__________;
ENTITY PULSE16 IS
PORT ( CLK : IN STD_LOGIC;
LOAD : IN STD_LOGIC;
D : IN __ STD_LOGIC_vector(15 DOWNTO 0)___;
FOUT : OUT STD_LOGIC );
END;
__architecture____ one OF PULSE16 IS
SIGNAL FULL : STD_LOGIC;
BEGIN
P_REG: PROCESS(CLK)
_variable__ CNT16 : STD_LOGIC_VECTOR(15 DOWNTO 0);
BEGIN
IF CLK'EVENT AND CLK = '1' THEN
IF ________________ THEN -- LOAD高电平置数
CNT16 := D; FULL <= '0';
ELSE
IF CNT16 = "1111111111111111" THEN
CNT16 := D;
FULL <= '1';
ELSE
CNT16 := __cnt16+1______; -- 计数加1
FULL <= '0';
END IF;
END IF;
_____end if______;
END PROCESS P_REG;
P_DIV: PROCESS(___full_____) -- 溢出信号为敏感信号VARIABLE CNT2 : STD_LOGIC;
BEGIN
IF ____full’event and full=’1’___ THEN -- FULL上升沿判断
CNT2 := NOT CNT2;
FOUT <= CNT2;
END IF;
END PROCESS P_DIV;
END;
以下程序是一个BCD码表示0~99计数器的VHDL描述,试补充完整。
library ieee;
use ieee.std_logic_1164.all;
use __ieee.std_logic_unigned.all_________;
entity cnt100b is
port( clk, rst, en : in std_logic;
cq : out std_logic_vector(7 downto 0); -- 计数输出
cout: out std_logic); -- 进位输出end entity cnt100b;
___archiecture_____ bhv of cnt100b is
begin
process (clk, rst, en)
__variable_______ cqi : std_logic_vector(7 downto 0);
begin
if rst = '1' then
cqi := __others=>’0’______; -- 计数器清零复位
else
if ___clk’event and clk=’1’____ then -- 上升沿判断
if en = '1' then
if cqi(3 downto 0) < "1001" then -- 比较低4位
____cqi=cqi+1__________; -- 计数加1
else
if cqi(7 downto 4) < "1001" then -- 比较高4位
cqi := cqi + 16;
else
cqi := (others => '0');
end if;
___cqi(3 downto 0=”0000”____; -- 低4位清零
end if;
end if;
___end if______;
end if;
if cqi = ___“10011001”____ then -- 判断进位输出
cout <= '1';
else
cout <= '0';
end if;
_cq <= cqi _____;
end process;
end architecture bhv;
、VHDL程序设计:(15分)
设计一数据选择器MUX,其系统模块图和功能表如下图所示。
试采用下面三种方式中的两种来描述该数据选择器MUX的结构体。
SEL COUT
00
01
10
11
OTHERS
A or B
A xor B
A nor B
A and B
“XX”
(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;
根据原理图写出相应的VHDL程序:(10分)
六、根据原理图写出相应的VHDL程序:(10分)
Library ieee;
Use ieee.std_logic_1164.all;
Entity mycir is
Port ( A, B, clk : in std_logic;
Qout : out std_logic); End mycir;
Architecture behave of mycir is Signal ta, tb, tc;
Begin
tc <= ta nand tb;
Process (clk)
Begin
If clk’event and clk = ‘1’ then Ta <= A;
Tb <= B;
End if;
End process;
Process (clk, tc)
Begin
If clk = ‘1’ then
Qout <= c;
End if;
End process;
End behave;
阅读下列VHDL程序,画出原理图(RTL级):(10分)library ieee;
use ieee.std_logic_1164.all;
entity lfsr is
port (
clk : in std_logic;
clr : in std_logic;
d : in std_logic;
mout : out std_logic
);
end lfsr;
architecture rtl of lfsr is
signal sreg : std_logic;
begin
shift_p : process(clk,clr)
variable s : std_logic;
begin
if clr = '1' then
s := ’0’;
elsif rising_edge(clk) then
s := sreg xor (not d);
end if;
sreg <= s;
end process;
mout <= sreg;
end rtl;
、写VHDL程序:(20分)
1.设计一个3-8译码器
输入端口:din 输入端,位宽为3位
EN 译码器输出使能,高电平有效
输出端口:xout 译码器输出,低电平有效
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY DECODE3_8 IS
PORT ( DIN : IN STD_LOGIC_VECTOR (2 DOWNTO 0);
EN : IN STD_LOGIC;
XOUT : OUT STD_LOGIC_VECTOR (7 DOWNTO 0)); END DECODE3_8;
ARCHITECTURE ONE OF DECODE3_8 IS
BEGIN
PROCESS (DIN, EN)
BEGIN
IF EN = ‘1’ THEN
IF DIN = “111” THEN XOUT <= “11111110”;
ELSIF DIN = “110” THEN XOUT <= “11111101”;
ELSIF DIN = “101” THEN XOUT <= “11111011”;
ELSIF DIN = “100” THEN XOUT <= “11110111”;
ELSIF DIN = “011” THEN XOUT <= “11101111”;
ELSIF DIN = “010” THEN XOUT <= “11011111”;
ELSIF DIN = “001” THEN XOUT <= “10111111”;
ELSE XOUT <= “11111011”;
END IF;
END PROCESS;
END ONE;
2. 看下面原理图,写出相应VHDL 描述 D Q
DFF D Q DFF
OR yout
OUTPUT xin INPUT
clk INPUT
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;
END ONE;
阅读下列VHDL程序,画出相应RTL图:(10分)LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY three IS
PORT
(
clk,d : IN STD_LOGIC;
dout : OUT STD_LOGIC );
END;
ARCHITECTURE bhv OF three IS
SIGNAL tmp: STD_LOGIC;
BEGIN
P1: PROCESS(clk)
BEGIN
IF rising_edge(clk) THEN
Tmp <= d;
dout <= tmp;
END IF;
END PROCESS P1;
END bhv;
2. 看下面原理图,写出相应VHDL描述
Library ieee;
Use ieee.std_logic_1164.all; Entity mycir is
Port (ain , bin , clk : in
std_logic;
Cout : out std_logic); End mycir;
Architecture one of mycir is Signal tb, tc;
Begin
Process (clk) begin
If clk’event and clk = ‘1’ then
tb <= bin;
end if;
End process;
Process (clk, tc) begin
If clk = ‘1’ then cout <= tc;end if;
End process;
Tc <= ain xor tb;
End one;
五、阅读下列VHDL程序,画出原理图(RTL级):(10分)LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY three IS
PORT
(
clk,d : IN STD_LOGIC;
dout,e : OUT STD_LOGIC );
END;
ARCHITECTURE bhv OF three IS
SIGNAL tmp: STD_LOGIC;
BEGIN
P1: PROCESS(clk)
BEGIN
IF rising_edge(clk) THEN
Tmp <= d;
dout <= not tmp;
END IF;
END PROCESS P1;
e <= tmp xor d;
END bhv;
六、写VHDL程序:(20分)
1.设计一个N输入的并入串出左移移位寄存器参数:N 并行输入数据位宽为N 输入端口:DIN 并行输入数据
LOAD 装载信号,高电平装载
CLK 时钟信号
输出端口:YOUT 移位输出,1位
6、阅读下列VHDL程序,画出相应RTL图:(10分)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY TRIS IS
PORT ( CONTROL : IN STD_LOGIC;
INN : IN STD_LOGIC;
Q : INOUT STD_LOGIC;
Y : OUT STD_LOGIC );
END TRIS;
ARCHITECTURE ONE OF TRIS IS
BEGIN
PROCESS (CONTROL, INN, Q)
BEGIN
IF (CONTROL = '0') THEN
Y <= Q;
Q <= 'Z';
ELSE
Q <= INN;
Y <= 'Z';
END IF;
END PROCESS;
END ONE;
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);
END ONE;
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY MYCIR IS
PORT (A, CLK : IN STD_LOGIC;
C, B : OUT STD_LOGIC );
END MYCIR;
ARCHITECTURE BEHAV OF MYCIR IS
SIGNAL TA : STD_LOGIC;
BEGIN
PROCESS (A, CLK)
BEGIN
IF CLK’EVENT AND CLK = ‘1’ THEN
TA <= A;
B <= TA;
C <= A AN
D TA;
END IF;
END PROCESS;
END BEHAV;
七、综合题:(20分)
(一)已知状态机状态图如图a 所示;完成下列各题:
图a 状态图
图b 状态机结构图
1. 试判断该状态机类型,并说明理由。
该状态机为moore 型状态机,输出数据outa 和输入ina 没有直接逻辑关系,outa 是时钟clk 的同步时序逻辑。
“01”
out_a <= “0101“1000”;
;
out_a <= “1101
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,使用状态位直接输出型状态机编码方式,其输出直接由当前状态输出,也没有毛刺
七、综合题:(20分)
根据如下所示状态图及其状态机结构图,回答问题
ina="101" / outa="0010" ina="111" / outa="1100"outa="1001"outa="1111"ina="101" / outa="1101"
ina="011" / outa="1110"
(a)
(b)(c)
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;
(一)已知状态机状态图如图(a)所示;完成下列各题:
1.试判断该状态机类型,并说明理由。
该状态机为moore型状态机,输出数据outa和输入ina没有直接逻辑关系,outa是时钟clk的同步时序逻辑。