1.术语CPLD表示什么意思?(a)
(a)复杂可编程逻辑器件; (b)组合可编程逻辑器件;(c)组合可编程局部器件。
2.术语FPGA表示 (b).
(a)正规的可编程门阵列;(b)现场可编程门阵列;(c)有限可编程门阵列。
3.术语HDL代表 (a)
(a)硬件描述语言; (b)美元崇拜者; (c)硬件开发语言; (d)高级设计语言。
4.关于自上而下的EDA设计,选择所有正确的说法。(abcdef)
(a)可做到更好的资源分配;(b)使得每一个小的功能模块可以被单独仿真;
(c)加速仿真;(d)使器件的行为建模更容易;(e)导致一个低功耗的设计;
(f)可在设计组的各成员之间有效地分割一个设计项目
5.测试的10/10规则是(C )。
(a)应该每10天测试10次。(b)对于设计的每个10%的部分应该进行10次测试。
(c)测试电路的规模不应超过整个电路规模的10%,而且设计和调试测试电路所占用的时间不应超过设计和调试原电路所用时间的10%。
6.术语“功能仿真”的含义是(a)
(a)仿真一个设计的功能如何,而不关心其定时;(b)仿真一个设计的功能等效性;
(c)仿真设计所代表的精确功能。
7.VHDL程序输入方法主要有(原理图输入法),(文本输入法)和(参数化宏功能块LPM设计法)
8.下列说法正确的是(a,c)
(a)进程的启动必须有敏感信号;(b)进程语句process 必须有敏感信号列表;
(c)进程可以用wait语句启动;(d)进程中的语句顺序颠倒一下不会改变所描述电路的功能.
9.VHDL用于综合的数据类型主要有(标量)型、复合型和子类型,其中第一种类型包括所有的简单类型如(整数型)、(实数型)、(枚举型)等.
10.VHDL中的数据对象有(信号)、(变量)、(常量)三种,端口属于(信号)。
11.下列有关时钟上升沿触发的描述正确的是(a,d,e)。
(a)clock’event and clock=’1’;(b)not clock’stable and clock=’0’;
(c)clock’event; (d)clock’event and(clock’last_lalue=’0’);
(e)rising_edge(clock)。
12.下列有关时钟高电平触发的描述正确的是(a,b)。
(a)clock =’1’;(b) clock’event and(clock =’1’);(c) rising_edge(clock)。
13.有限状态机根据输出方式不同分为(moore)型和(mealy)型,其差别在于(moore型FSM输出只与当前状态有关,而mealy型输出与当前状态和当前输入都有关.)
14.常用的设计库有(IEEE)、(STD)、(WORK)。其中(WORK等)是显式的,在编程时无需用(use)语句打开。
15、术语“时序仿真”表示什么意思?
(a)一个过程,它着眼于某个同步设计并确定其最高工作频率,该频率不违反任何建立和保持时间;
(b)一种包括了定时延时的仿真;
(c)一个过程,它着眼于某个异步设计并调整所有处于临界的路径,以使得它们在一定的时间约束范围以内。
16、对于下面的说法选择真或假:
(a)总线竞争能降低设计在其整个寿命时限范围内的可靠性。
(b)如果总线竞争不能全部消除,那也应该把它最小化。
17、对于下面的说法选择真或假:
(a)悬浮总线能产生信号噪声。(b)悬浮总线能引起额外的功率损耗。 (c)应该在设计中避免悬浮总线。
18、综合软件的功能:
(a)将一个低级别的设计描述转换为一个功能上等效的高级别的设计描述;
(b)将一个用某一种HDL语言描述的设计转换为一个等效的用另一种HDL语言描述的设计;
(c)从一个设计描述中产生一组测试向量;
(d)从一个功能上等效的、高级别的设计描述中产生一个低级别的设计描述。
19、EDA设计输入方式主要包括(文本输入)、(图形输入)和(波形输入)三种。
20、EDA的设计验证包括(功能仿真)、(时序仿真)、(硬件测试)三个过程。
21、当前最流行并已成为IEEE标准的硬件描述语言包括(VHDL)和(Verilog HDL)。
22、将硬件描述语言转化为硬件电路的重要EDA软件称为(综合器)。
23、 VHDL用于综合的数据类型主要有(标量)型、复合型和子类型,其中第一种类型包括所有的简单类型如(整数型)、(实数型)、(枚举型)等。
24、 VHDL中的数据对象有(信号)、(变量)、(常量)三种,端口属于(信号)。
25、 QuartusII支持(图形)、(文本)、(波形)等不同源程序输入方式。
26、 \\maxplus2\\max2lib\\prim是QuartusII的(基本)元件库,包括(门电路)、(触发器)、(输入)、(输出)、电源等基本元件。
27、 \\maxplus2\\max2lib\\mf是Max+plusII的(老式宏函数)元件库,包括(加法器)、(编码器)、(译码器)、(计数器)、移位寄存器等74系列基本器件。
28、 \\maxplus2\\max2lib\\mega_lpm是QuartusII的(参数可设置宏功能)元件库,包括参数可设置的(ROM)、(计数器)等元件。
29、VHDL的过程分为(过程首)和(过程体)两部分,调用前必须将它们装入(程序包)中。
30、VHDL的函数分为(函数首)和(函数体)两部分,调用前必须将它们装入(程序包)中。
31、 在QuartusII集成环境下可以执行(creat symbol files for current file)命令,为通过编译的图形或文本文件产生一个元件符号,该元件符号可以被其它图形或文本文件(调用),以实现多层次的系统电路设计。
32、 在初次安装QuartusII软件后的第一次对设计文件的编程下载时,需要选择的 ByteBlaster(MV)编程方式对应计算机的(并行或LPT)口作为编程下载通道,“MV”是(混合电压)的意思。
33、 层次化设计是将一个大的设计项目分解为若干个子项目或若干个层次来完成、先从(底)层的电路设计开始,然后在(高)层次的设计中逐级调用(低)层次的设计结果,直至完成系统设计。
34、 VHDL设计实体的基本结构包括(库)、(程序包)、(实体)、(结构体)等部分。
35、(实体)和(结构体)是VHDL设计实体的基本结构,它们可以构成最基本的VHDL程序。
36、在VHDL的端口说明语句中,端口方向包括(IN)、(OUT)、(INOUT)和(BUFFER)。
37、VHDL的数据对象包括(信号)、(变量)和(常量),它们都是用来存放各种类型数据的容器。
38、 VHDL的并行语句在结构体中的执行方式是(并行)的,其执行方式与语句书写的顺序无关。
39、 VHDL的PROCESS是由(顺序)(顺序/并行)语句组成的,但其本身却是(并行)(顺序/并行)语句。
40、 VHDL的子程序有(过程)和(函数)两种。
41、一般EDA技术的发展分为(CAD)、(CAE)、(EDA)三个阶段。
42、基于EPROM、EEPROM和快闪存储器件的可编程器件的编程信息在断电后(不会)(填会/不会)丢失。
43、基于SRAM结构的可编程器件的编程信息在断电后(会)(填会/不会)丢失。
44、CPLD器件中包含三种可编程结构(可编程逻辑宏单元LMC)、(可编程I/O单元IOB)、(可编程内部互联PIA)。
45、FPGA器件中包含三种可编程结构(嵌入式阵列块LAB)、(I/O单元IOC)、(快速通道FastTrack)。
46、指定设计电路的输入输出端口与目标芯片引脚的连接关系的过程称为(引脚锁定)。
47、标准的边界扫描测试只需要(5)根信号线。
48、在PC机上利用VHDL进行项目设计,不允许在(根)目录下进行,必须在根目录下为设计建立一个工程目录(即文件夹)。
二、多项选择题
1、术语CPLD表示(A),术语FPGA表示 (E)
A、复杂可编程逻辑器件; B、组合可编程逻辑器件; C、组合可编程局部器件。D、正规的可编程门阵列; E、现场可编程门阵列;F、有限可编程门阵列。
2、对于下面的说法正确的是(AC)。
A、悬浮总线能产生信号噪声。 B、悬浮总线能引起额外的功率损耗。C、应该在设计中避免悬浮总线。
3、对于下面的说法正确的是(AB)。
A、总线竞争能降低设计在其整个寿命时限范围内的可靠性。
B、如果总线竞争不能全部消除,那也应该把它最小化。C、竞争产生的毛刺不会对时序电路产生影响。
4、 在VHDL中,为目标信号赋值用(C),为目标变量赋值用(B),定义信号时可以用(B)为信号赋初值。
A、=:;B、:=;C、<=;D、=。
5、 关于自上而下的设计,选择所有正确的说法。(ABCDEF)
A、可做到更好的资源分配; B、使得每一个小的功能模块可以被单独仿真;
C、加速仿真; D、使器件的行为建模更容易;
E、低功耗的设计; F、可在设计组各成员之间有效地分割一个设计项目。
6、 下列说法正确的是(A,C)
A、进程的启动必须有敏感信号;B、进程语句process 必须有敏感信号列表;
C、进程可以用wait语句启动;
D、进程中的语句顺序颠倒一下不会改变所描述电路的功能.
6、 下列有关时钟上升沿触发的描述正确的是(ADE)。
A、clock’event and clock=’1’; B、not clock’stable and clock=’0’;
C、clock’event; D、clock’event and(clock’last_lalue=’0’);
E、rising_edge(clock)。
7、下列有关时钟下降沿触发的描述正确的是(A,D)。
A、clock’event and clock=’0’;B、not clock’stable and clock=’1’;
C、clock’event; D、clock’event and(clock’last_lalue=’1’);
E、rising_edge(clock)。
8、下列有关时钟高电平触发的描述正确的是(A)。
A、clock =’1’;B、 clock’event and(clock =’1’);C、 rising_edge(clock)。
三.单项选择题 (每小题2分,共20分)
1、VHDL属于(B)描述语言。
A、普通硬件;B、行为级;C、高级;D、低级。
2、在设计输入完成后,应立即进行设计文件的(B)。
A、编辑;B、编译;C、功能仿真;D、时序仿真。
3、基于硬件描述语言的数字系统设计目前最常用的设计方法称为(B)设计法。
A、自底向上;B、自顶向下;C、积木式;D、顶层。
4、在EDA工具中,能将硬件描述语言转化为硬件电路的重要工具软件称为(D)。
A、仿真器;B、综合器;C、适配器;D、下载器。
5、在EDA工具中,能完成在目标器件上布局布线的软件称为(C)。
A、仿真器;B、综合器;C、适配器;D、下载器。
6、 QuartusII属于(C)。
A、高级语言;B、硬件描述语言;C、EDA工具软件;D、综合软件。
7、Multisim2001属于(C)。
A、高级语言;B、硬件描述语言;C、EDA工具软件;D、综合软件。
7、使用QuartusII图形编辑方式输入的电路原理图文件必须经过(B)才能进行仿真验证。
A、编辑;B、编译;C、综合;D、编程。
8、 QuartusII的设计文件不能直接保存在(B)。
A、硬盘;B、根目录;C、文件夹;D、工程目录。
8、 QuartusII的设计文件只能直接保存在(D)。
A、硬盘;B、根目录;C、文件夹;D、工程目录。
9、在QuartusII集成环境中为图形文件产生一个元件符号的主要用途是(D)。
A、仿真;B、编译;C、综合;D、被高层次电路设计调用。
10、执行Multisim2001的(A)命令可以为设计电路建立一个元件符号。
A、Creat Symbol files for current file; B、Simulator;
C、Compiler; D、Timing Analyzer。
11、执行QuartusII的(A)命令可以为设计电路建立一个元件符号。
A、Creat symbol files; B、Simulate;
C、Compiler; D、Transfer。
12、 QuartusII的图形设计文件类型为(B)。
A、 .scf;B、.bdf;C、.vhd;D、.vwf。
13、QuartusII的VHDL文本设计文件类型为(C)。
A、 .scf;B、.bdf;C、.vhd;D、.vwf。
14、 QuartusII的波形文件类型为(A)。
A、 .scf;B、.bdf;C、.vhd;D、.vwf。
15、VHDL最常用的库是(A)。
A、IEEE;B、STD;C、WORK;D、PACKAGE。
16、在VHDL的端口说明语句中,用(A)声明端口为输入方向。
A、IN;B、OUT;C、INOUT;D、BUFFER。
18、 在VHDL的端口说明语句中,用(C)声明端口为双向方向。
A、IN;B、OUT;C、INOUT;D、BUFFER。
19、 在VHDL的端口说明语句中,用(B)声明端口为输出方向。
A、IN;B、OUT;C、INOUT;D、BUFFER。
20、 在VHDL的端口说明语句中,用(D)声明端口为可反馈输出方向。
A、IN;B、OUT;C、INOUT;D、BUFFER。
21、在VHDL中,(B)的数据传输是立即发生的,不存在任何延迟行为。
A、信号;B、变量;C、数据;D、常量。
22、 在VHDL中,(A)的数据传输不是立即发生的,目标信号的赋值需要经过一定延迟时间。
A、信号;B、变量;C、数据;D、常量。
23、考虑可测试性应该是(A):
(A)在设计工作的开始; (B)在设计工作进程的中间;
(C)在设计工作的结尾。
24、 术语HDL代表 (A)。
A、硬件描述语言;B、美元崇拜者; C、硬件开发语言;D、高级设计语言。
25、 在VHDL的IEEE标准库中,预定义的位数据类型数据BIT有(A)种逻辑值。
A、2;B、3;C、8;D、9。
26、 在VHDL的IEEE标准库中,预定义的标准逻辑位数据类型数据STD_LOGIC有(D)种逻辑值。
A、2;B、3;C、8;D、9。
26、不完整的IF语句,其综合结果可实现(A)。
A. 时序电路 B. 双向控制电路 C. 条件相或的逻辑电路 D. 三态控制电路
27、 在VHDL的CASE语句中,条件句中的“=>”不是操作符,其作用相当于(B)。
A、IF;B、THEN;C、AND;D、OR。
28、 VHDL的FOR_LOOP语句中的循环变量是一个临时变量,(B)事先声明。
A、必须;B、不必;C、其类型要;D、其属性要。
29、 在VHDL中,含WAIT语句的进程process语句(B)再加敏感信号,否则是非法的。
A、可以;B、不能;C、任意;D、只能
30、 VHDL的WORK库是用户设计的现行工具库,用于存放()的工程项目。
A、用户自己设计;B、公共程序;C、共享数据;D、图形文件。
31、术语“功能仿真”的含义是(A)
A、仿真一个设计的功能如何,而不关心其定时;B、仿真一个设计的功能等效性;
C、仿真设计所代表的精确功能。
32、测试的10/10规则是(C)
A、应该每10天测试10次。
B、对于设计的每个10%的部分应该进行10次测试。
C、测试电路的规模不应超过整个电路规模的10%,而且设计和调试测试电路所占用的时间不应超过设计和调试原电路所用时间的10%。
33、进程(A )。
A、只对信号敏感,对变量不敏感;B、只对变量敏感,对信号不敏感;
C、对信号和变量都敏感; D、对信号和变量都不敏感。
34、QuartusII的设计文件不能直接保存在(B)。
A、硬盘;B、根目录; C、文件夹;D、工程目录。
35、 在QuartusII工具软件中,包括加法器、编/译码器、计数器等74系列期间的元件库是(A)库。
A、\libraries\others B、\libraries \\primitives
C、\libraries \\megafuction D、\libraries \\mywork
36、 在QuartusII集成环境中为图形文件产生一个元件符号的主要用途是()。
A、仿真;B、编译;C、综合;D、被高层次电路设计调用。
37、 执行QuartusII的(B)命令,可以对设计电路进行功能仿真或时序仿真。
A、Create Symbol files; B、start Simulation;C、start Compilation;D、Timing Analyzer
38、 执行QuartusII的(D)命令,可以精确分析设计电路输入与输出波形间的延时量。
A、Create Symbol files; B、start Simulation;C、start Compilation;D、Timing Analyzer
39、GAL是指(C)。
A、可编程逻辑阵列;B、可编程阵列逻辑;C、通用阵列逻辑; D、通用逻辑阵列。
40、PLA是指(A)。
A、可编程逻辑阵列;B、可编程阵列逻辑;C、通用阵列逻辑; D、通用逻辑阵列。
41、在对PLD器件内部结构进行描述采用的简化符号中,行线与列线相交处若有(B)表示有一个耦合元件固定连接。
A、“×”;B、“.”;C、无标记。
42、在对PLD器件内部结构进行描述采用的简化符号中,行线与列线相交处若有(A)表示有一个耦合元件可编程连接。
A、“×”;B、“.”;C、无标记。
43、在对PLD器件内部结构进行描述采用的简化符号中,行线与列线相交处若有(C)表示有一个耦合元件未连接。
A、“×”;B、“.”;C、无标记。
44、包括设计编译和检查、逻辑优化和综合、适配和分割、布局和布线、生成编程数据文件等操作的过程称为(C)。
A、设计输入;B、设计处理;C、功能仿真;D、时序仿真。
45、电子系统设计优化,主要考虑提高资源利用率,减少功耗—即面积优化,以及提高运行速度—即速度优化;指出下列那种方法不属于速度优化:( A )。
A. 资源共享 B. 流水线设计 B. 寄存器配平 D. 关键路径法
46、大规模可编程器件主要有FPGA、CPLD两类,下列对CPLD结构与工作原理的描述中,正确的是(C)。
A. CPLD即是现场可编程逻辑器件的英文简称; B. CPLD是基于查找表结构的可编程逻辑器件;
C. 早期的CPLD是从GAL的结构扩展而来;D. 在Altera公司生产的器件中,FLEX10K 系列属CPLD结构。
47、综合是EDA设计流程的关键步骤,综合就是把抽象设计层次中的一种表示转化成另一种表示的过程;在下面对综合的描述中,(C)是错误的。
A.综合就是将电路的高级语言转化成低级的,可与FPGA / CPLD的基本结构相映射的网表文件;
B.综合可理解为将软件描述与给定的硬件结构用电路网表文件表示的映射过程,并且这种映射关系不是唯一的;
C.综合是纯软件的转换过程,与器件硬件结构无关;
D.为实现系统的速度、面积、性能的要求,需要对综合加以约束,称为综合约束。
48、下面对利用原理图输入设计方法进行数字电路系统设计,那一种说法是不正确的(B)。
A.原理图输入设计方法直观便捷,但不适合完成较大规模的电路系统设计;
B.原理图输入设计方法无法对电路进行功能描述;
C.原理图输入设计方法一般是一种自底向上的设计方法;
D.原理图输入设计方法也可进行层次化设计。
49、在VHDL语言中,下列对进程(PROCESS)语句的语句结构及语法规则的描述中,正确的是(A )。
A.ROCESS为一无限循环语句;敏感信号发生更新时启动进程,执行完成后,等待下一次进程启动。
B.敏感信号参数表中,应列出进程中使用的所有输入信号;
C.进程由说明部分、结构体部分、和敏感信号参数表三部分组成;
D.当前进程中声明的信号也可用于其他进程。
50、状态机编码方式中,其中(C)占用触发器较多,但其实现比较适合FPGA的应用。
A. 状态位直接输出型编码 B. 顺序编码 C. 一位热码编码 D. 以上都不是
四、判断并改错题
1.
SIGNAL a ,b,c : STD_LOGIC_VECTOR (3 DOWNTO 0) ;
SIGNAL d,e,f,g : STD_LOGIC_VECTOR (1 DOWNTO 0) ;
SIGNAL h,I,j,k : STD_LOGIC ;
SIGNAL l,m,n,o,p : BOOLEAN ;
...
a<=b AND c; --b、c 相与后向a赋值,a、b、c的数据类型同属4位长的位矢量
d<=e OR f OR g ; -- 两个操作符OR相同,不需括号
h<=(i NAND j)NAND k ; -- 加括号先执行括号内运算
l<=(m XOR n)AND(o XOR p); -- 操作符不同,必须加括号
h<=i AND j AND k ; -- 两个操作符都是AND,不必加括号
h<=i AND j OR k ; -- 两个操作符不同,未加括号,表达错误
a<=b AND e ; -- 操作数b 与 e的位矢长度不一致,表达错误
h<=i OR l ; -- i 的数据类型是位STD_LOGIC,而l的数据类型是
... -- 布尔量BOOLEAN,因而不能相互作用,表达错误。
2. 指出下列case的错误原因并改正
SIGNAL value : INTEGER RANGE 0 TO 15;
SIGNAL out1 : STD_LOGIC ;
...
CASE value IS -- 缺少以WHEN引导的条件句
END CASE;
...
CASE value IS
WHEN 0 => out1<= '1' ; -- value2~15的值未包括进去
WHEN 1 => out1<= '0' ;
END CASE
...
CASE value IS
WHEN 0 TO 10 => out1<= '1'; -- 选择值中5~10的值有重叠
WHEN 5 TO 15 => out1<= '0';
END CASE;
3.entity many_errors is
port a:bit_vector(3 to 0)
b:out std_logic_vector(0 to 3)
c:in bit_vector(6 downto O) ;)
end many_errors
architecture not_so_good of many_errors
begin
my_label:process
begin
if c=x”f”then
b<=a;
else
b<=’0101’;
end if
end process;
end not_so_good
3.下面标示符是否合法?如不合乎规则请指出错误原因.
(1)value%8 %为非法字符
(2)_databus16 不能以_开头
(3)clk_8m 合法
(4)fs_8k 合法
(5)entity 不能以系统定义关键词作为标识符
(6)adderess_bus_ 不能以_结尾
4.判断下面的说法是否正确,如不正确,请说明原因.
(1)一般说来,短标示符是区分大小写的.不正确,标示符不区分大小写
(2)\data和\DATA是相同的标示符.正确
(3)注释是VHDL设计功能描述的一部分,因此注释文字会被编译.不正确,注释不被编译
(4)785 456表示数字785456 正确
(5)'B'和"B"是相同的.不正确,一个是字符,一个是字符串
(6)\adder\和adder是相同的标示符.
6.阅读下面的并置运算,然后回答该并置运算是否正确?如不正确,请说明原因。
Signal a:std_logic;
Signal b:std_logic;
Signal c:std_logic_vector(3 downto 0);
Signal d:std_logic_vector(3 downto 0);
C<=a&a&b&b;
D<=a&b&c;
五、问答题
1.可编程逻辑器件在现代电子设计中越来越重要,请问: 你所知道的可编程逻辑器件有哪些?目前最常用的两种器件是什么?其结构特征如何?
答:按可编程逻辑器件的发展,有简单PLD器件(包括PLA、PAL、GAL、CPLD、FPGA等)和复杂PLD器件两大类。目前最常用的两种复杂PLD器件是CPLD和FPGA。CPLD即复杂可编程逻辑器件,其结构是基于ROM的乘积项的可编程结构,而FPGA 是现场可编程门阵列器件,其结构基于可编程的查找表。
2.简述FPGA等可编程逻辑器件设计流程
答:FPGA等可编程逻辑器件的设计流程即现代EDA设计的流程,主要包括设计输入、逻辑与结构综合、时序与功能仿真、编程下载、硬件测试等步骤。(或绘流程图说明)
3.一个设计实体由哪几个基本部分组成?它们的作用如何?
答:(1)库与程序包部分:使实体所用资源可见;
(2)实体部分:设计实体的外部特征描述;
(3)结构体部分:设计实体的内部电路结构或功能描述。
4.进程语句是如何启动的?
答:进程由敏感信号列表中的敏感信号的变化启动。有两种格式:一种是
PROCESS(敏感信号表)IS,一种是PROCESS WAIT UNTILL 敏感信号
5.过程与函数的区别体现在哪些方面?
答:相同点:过程与函数都属于子程序,;都需要先定义后使用;都允许调用;都可以重载。但也有不同:(1)过程调用时作为一个的语句出现,函数调用时只能作为一个语句元素出现;(2)函数调用的结果是返回一个函数值,过程调用的结果是执行过程体中的顺序语句。
6.过程可以定义在一个VHDL程序的那些位置?函数可以定义在一个VHDL程序的那些位置?
7.VHDL是强类型语言还是弱类型语言?若数据类型不一致能否进行数据操作?如能,如何实现?
答:强类型语言,即只有同类型的数据能够直接进行数据操作。若数据类型不一致不能进行直接数据操作,但能够通过类型转换函数等方法转换为同类型数据后进行操作。
8. 有限状态机适用于什么数字系统的设计?有何优点?
答:有限状态机适用于具有顺序控制特征的数字系统设计,一般作为系统的控制部分。具有结构模式简单、结构清晰、易优化、可靠性高、可实现高速控制等优点。
9. EDA名词解释,写出下列缩写的中文(或者英文)含义:(10分)
1.CPLD:复杂可编程逻辑器件 2.HDL:硬件描述语言
3.LUT:查找表(Look Up table) 4.ASIC:专用集成电路
5.SOC:片上系统 6.IP CORE:知识产权核
7.FPGA:现场可编程门阵列 8.JTAG:联合测试行动组
9.EAB:嵌入式阵列快 10.LE(LC):逻辑单元
11.SOPC:可编程片上系统 12.EDA:电子设计自动化
13.FSM:有限状态机 14.BST:边界扫描测试
15.M4K:Altera公司Cyclone系列FPGA中的嵌入式存储器模块
16.RTL:寄存器传输级 17、MV:混合电压
18、PLD:可编程逻辑器件
19、std_logic_vector:一种数组型数据类型,其中每位数据均为std_logic型。
20、one-hot:一种有限状态机的编码形式。状态机的每个状态都用一个触发器来表示,即在每个状态只有对应触发器置“1”,其他触发器均置“0”。
六、程序分析
1.说明下面程序的功能,画出元件符号
LIBRARY IEEE;
USE IEEE.STD_LOGIC_11.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY decoder3to8 IS
port ( input: IN STD_LOGIC_VECTOR (2 DOWNTO 0);
output: OUT BIT_VECTOR (7 DOWNTO 0));
END decoder3to8;
ARCHITECTURE behave OF decoder3to8 IS
BEGIN
output <= "00000001" SLL CONV_INTEGER(input);--被移位部分是常数!
END behave;
3-8译码器,输入输出端口均为3位、8位标准逻辑矢量。
2.利用转换函数实现的两种3-8译码器程序
LIBRARY IEEE;
USE IEEE.STD_LOGIC_11.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY decoder3to8 IS
PORT ( input: IN STD_LOGIC_VECTOR (2 DOWNTO 0);
output: OUT STD_LOGIC_VECTOR (7 DOWNTO 0));
END decoder3to8;
ARCHITECTURE behave OF decoder3to8 IS
BEGIN
PROCESS (input)
BEGIN
output <= (OTHERS => '0');
output(CONV_INTEGER(input)) <= '1';
END PROCESS;
END behave;
3.具有同步复位、并行加载、双(左、右)向移位功能的8位移位寄存器
LIBRARY IEEE;
USE IEEE.STD_LOGIC_11.ALL;
ENTITY shifter IS
PORT ( data : IN STD_LOGIC_VECTOR (7 DOWNTO 0);
shift_left: IN STD_LOGIC;--右移寄存器
shift_right: IN STD_LOGIC;--左移寄存器
clk: IN STD_LOGIC;
reset : IN STD_LOGIC;
mode : IN STD_LOGIC_VECTOR (1 DOWNTO 0);
qout : BUFFER STD_LOGIC_VECTOR (7 DOWNTO 0) );
END shifter;
ARCHITECTURE behave OF shifter IS
SIGNAL enable: STD_LOGIC;
BEGIN
PROCESS
BEGIN
WAIT UNTIL (RISING_EDGE(clk) ); --等待时钟上升沿
IF (reset = ‘1’) THEN qout <= “00000000”;--同步复位
ELSE CASE mode IS
WHEN "01" => qout<=shift_right & qout(7 DOWNTO 1);--右移
WHEN "10" => qout<=qout(6 DOWNTO 0) & shift_left; --左移
WHEN "11" => qout <= data; -- 并行加载
WHEN oTHERS => NULL;
END CASE;
END IF;
END PROCESS;
END behave;
4.写出如下结构体的实体说明,假设结构体中的所有信号均为端口。
Architecture rt1 of mux1 is
begin
p1: process(d0,d1,d2,d3,s0,s1)
begin
if(s1=’0’and s0=’1’)then
q<=d0;
elsif(s1=’0’ and s0=’1’)then
q<=d1;
elsif(s1=’1’ and s0=’0’)then
q<=d2;
else
q<=d3;
end if;
end process p1;
5.请分析下面两个进程,然后回答问题.
P1:process(a,b,c)
Variable d:std_logic;
Begin
D:=a;
X<+b+d;
D:=c;
Y<=b+d;
End process p1;
P2:process(a,b,c,d)
Begin
D<=a:
X<=b+d;
D<=c;
Y<=b+d;
End process p2;
(1)进程1执行后x和y的结果是什么?
(2) 进程2执行后x和y的结果是什么?
(3)根据(1)和(2)的结果,你可以得出什么结论?
6.请分析下面的程序段是否合法。如不合法,请指出错误原因并加以改正。
P1:process(clk,reset)
Begin
If(reset=’0’)then
Q<=’0’;
Qb<=’1’;
Elsif(clk’event and clk=’1’)then
Q<=d;
Qb<=not d;
End if;
Wait on clk,reset;
7.分析下面的VHDL程序,请指出它所描述的功能。
Library ieee;
Use ieee.logic_11.all;
Entity control_and is
Port(a:in std_logic_vector(3 downto 0);
B: (a:in std_logic_vector(3 downto 0)
m:in std_logic_vector(3 downto 0)
q:out std_logic_vector(3 downto 0));
end control_and;
architecture rt1 of control_and is
begin
p1:process(a,b,m)
begin
loop1:for I in 0 to 3 loop
if(m(i)=’1’)then
next;
end if;
q(i)<=a(i)and b(i);
end loop loop1;
end process p1;
end rt1;
8. 请分析下面的程序段是否合法。如不合法,请指出错误原因并加以改正。
P1:process(clk,reset)
Begin
If(reset=’0’)then
Q<=’0’;
Qb<=’1’;
Elsif(clk’event and clk=’1’)then
Q<=d;
Qb<=not d;
End if;
Wait on clk,reset;
(不合法,因为同一进程使用了两种启动方法,敏感信号列表法和WAIT语句法,这是不合法的。改正:去掉Process后面的括号及其中敏感信号,或去掉Wait语句。)
9. 分析下面的VHDL程序,请指出它所描述的功能。
Library ieee;
Use ieee、logic_11、all;
Entity control_and is
Port(a,b ,m: in std_logic_vector(3 downto 0);
q:out std_logic_vector(3 downto 0));
end control_and;
architecture rt1 of control_and is
begin
p1:process(a,b,m)
begin
loop1:for I in 0 to 3 loop
if(m(i)=’1’)then
q(i)<=a(i)and b(i);
end if;
end loop loop1;
end process p1;
end rt1;
(实现3-2输入与门电路的设计)。
10. 分析下面的VHDL源程序,说明设计电路的功能。
LIBRARY IEEE;
USE IEEE、STD_LOGIC_11、ALL;
USE IEEE、STD_LOGIC_UNSIGNED、ALL;
ENTITY LX3_1 IS
PORT (s2,sl,s0: IN STD_LOGIC;
d3,d2,d1,dO: IN STD_LOGIC;
d7,d6,d5,d4: IN STD_LOGIC;
Y: OUT STD ULOGIC);
END LX3_1;
ARCHITECTURE one OF LX3_1 IS
SIGNAL s: STD_LOGIC_VECTOR(2 DOWNTO 0);
BEGIN
s <= s2&s1&s0;
y <= dO WHEN s="000" ELSE
dl WHEN s="001" ELSE
d2 WHEN s="010" ELSE
d3 WHEN s="011" ELSE
d4 WHEN s="100" ELSE
d5 WHEN s="101" ELSE
d6 WHEN s=" 110" ELSE
d7;
END one;
(8选1数据选择器。)
11. 分析下面的VHDL源程序,说明设计电路的功能。
LIBRARY IEEE;
USE IEEE、STD_LOGIC_11、ALL;
USE IEEE、 STD_LOGIC_UNSIGNED、ALL;
ENTITY LX3_2 IS
PORT( A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
B:IN STD_LOGIC VECTOR(3 DOWNTO 0);
GT,LT,EQ:OUT STD LOGIC);
END LX3_2;
ARCHITECTURE one OF LX3_2
BEGIN
PROCESS(a,b)
BEGIN
GT<='0';
LT<='0';
EQ<='0';
IF A>B THEN GT<='1’;
ELSIF A ELSE EQ<='1';
END IF;
END PROCESS;
END one;
(4位2进制数据比较器电路)
12. 分析下面的VHDL源程序,说明设计电路的功能。
LIBRARY IEEE;
USE IEEE、STD_LOGIC_11、all;
ENTITY LX3_3 IS
PORT(ABIN:IN STD LOGIC VECTOR(7 DOWNTO 0);
DIN:IN STD LOGIC VECTOR(7 DOWNTO 0);
DOUT:OUT STD_LOG1C_VECTOR(7 DOWNTO 0)]
END LX3_3;
ARCHITECTURE ONE OF LX3_3 IS
BEGIN
PROCESS(ABIN,DIN)
BEGIN
FOR 1 IN 0 TO 7 LOOP
DOUT(I)<=DIN(I) AND ABIN(I);
END LOOP;
END PROCESS;
END ONE;
(两输入端的8与门电路。)
13. 分析下面的VHDL源程序,说明设计电路的功能。
LIBRARY IEEE;
USE IEEE、STD_LOGIC_11,ALL;
USE IEEE、 STD_LOG1C_UNSIGNED、ALL;
ENTITY LX3_4 IS
PORT( CLK:IN STD LOGIC;
J,K;IN STD_LOGIC;
Q,QN:OUT STD LOGIC); D LX3_4;
ARCHITECTURE struc OF LX3 4 IS
SIGNAL Q_TEMP:STD_LOGIC:='0';
SIGNAL JK:STDLOGIC_VECTOR(1 DOWNTO 0);
BEGIN
JK<=J&K;
PROCESS(CLK,J,K)
IF CLK'EVENT AND CLK=’0’ THEN
CASE JK IS
WHEN "00" =>Q_TEMP<=Q_TEMP;
WHEN "01" =>Q_TEMP<='0';
WHEN "10" =>Q_TEMP<=’1’;
WHEN "11" =>Q_TEMP<=NOT Q_TEMP;
WHEN OTHERS =>Q_TEMP<='X';
END CASE;
END IF;
Q<=Q_TEMP;
QN<=NOT Q_TEMP;
END PROCESS;
END struc;
(设计下降沿触发的JK触发器。)
14. 分析下面的VHDL源程序,说明设计电路的功能。
LIBRARY IEEE;
USE IEEE、STD_LOGIC_11、ALL;
USE IEEE、STD_LOGIC_UNSIGNED、ALL;
ENTITY LX3_5 IS
PORT(CLK,RST,ENA:IN STDLOGIC;
Q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
COUT:OUT STD LOGIC);
END LX3_5;
ARCHITECTURE one OF LX3_5 IS
SIGNAL QI:STD_LOGIC_VECTOR(7 DOWNTO 0);
BEGIN
PROCESS(CLK,RST,ENA)
BEGIN
IF RST=’1’ THEN QI<="00000000";
ELSIF CLK'EVENT AND CLK=’1’THEN
IF ENA=’1’ THEN
QI<=QI+ 1;
END IF;
END IF;
Q<=QI;
END PROCESS;
COUT<=QI(0) AND QI(1) AND QI(2) AND QI(3) AND QI(4) AND QI(5) AND QI(6) AND QI(7);
END ONE;
(带复位和使能控制的8位二进制加法计数器电路。)
七.程序填空(10分)
1.下面程序是带异步复位、同步置数、低位串行输出和移位使能的8位右移移位寄存器的VHDL描述,试补充完整。
library ieee;
use IEEE.std_logic_11.all;
entity sreg8b is
port ( clk, rst : in std_logic;
load,en : in std_logic;
din : in std_logic vector(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 <= others=>’0’;
elsif clk’event and clk=’1’ then ――边沿检测
if load = '1' then ――同步置数
reg8 <= din;
elsif en='1' then ――移位使能
reg8(6 downto 0) <= reg8(7 downto 1) ;
end if;
end if;
end process;
qb <= reg8(0)_; ――输出最低位
end behav;
2.下面程序是n输入与门的VHDL描述,试补充完整。
_LIBRARY_ ieee;
use IEEE.STD_LOGIC_11_.all;
entity andn is
GENERIC_ (n : integer); -- 类属参数声明
port ( a : in std_logic_vector( _n-1_ downto 0);
c : out std_logic);
end;
_architecture_ behav of andn is -- 结构体声明
begin
process (a__)
_variable_ int : std_logic; -- 变量声明
begin
int := _’1’____; -- 变量赋初值
for I in a'length – 1 downto 0 loop -- 循环判断
if a(i) = '0' then
int := '0';
end if;
end loop;
c <= int__; -- 输出判断结果
end process;
end behav;
3.下面程序是一个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;
八.编程题
1.写出具有异步清零功能、时钟上升沿触发的D触发器的VHDL描述。
LIBRARY IEEE;
USE IEEE.STD_LOGIC_11.ALL
ENTITY DFF IS
PORT(D, CLK,RESET:IN STD_LOGIC;
Q:OUT STD_LOGIC);
END DFF;
ARCHITECTURE BEHAV OF DFF IS
BEGIN
PROCESS(D,CLK,RESET)
BEGIN
IF RESET=’1’ THEN Q<=’0’;
ELSIF CLK’EVENT AND CLK=’1’THEN Q<=’D’;
END IF;
END PROCESS;
END BEHAV
2.设计一个具有异步清零和同步时钟及使能端的5进制加计数器。
LIBRARY IEEE;
USE IEEE.STD_LOGIC_11.ALL
LIBRARY IEEE;
USE IEEE.STD_LOGIC_11.ALL
USE IEEE.STD_LOGIC_UNSIGNED.ALL
ENTITY CNT5 IS
PORT(CLK,RST,EN:IN STD_LOGIC;
Q:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);
COUT:OUT STD_LOGIC);
END CNT5;
ARCHITECTURE BEHAV OF CNT5 IS
BEGIN
PROCESS(CLK,RESET,EN)
VARIABLE Q1:STD_LOGIC_VECTOR(2 DOWNTO 0);
BEGIN
IF RESET=’1’ THEN Q1:=(OTHERS=>’0’);
ELSIF CLK’EVENT AND CLK=’1’THEN
IF EN=’1’ THEN
IF Q1<”100”THEN Q1:=Q1+1;
ELSE Q1:=”000”;
END IF;
END IF;
END IF;
IF Q1=”101”THEN COUT<=’1’;
ELSE COUT<=’0’;
END IF;
Q<=Q1;
END PROCESS;
END BEHAV;
3.采用CASE语句描述一个四选一数据选择器,当选择端SEL分别为 00,01,10,11时,输出Y分别输出A,B,C,D。
LIBRARY IEEE;
USE IEEE.STD_LOGIC_11.ALL
ENTITY MUX41 IS
PORT(A,B,C,D:IN STD_LOGIC;
SEL:IN STD_LOGIC_VECTOR(1 DOWNTO 0);
Y:OUT STD_LOGIC);
END MUX41;
ARCHITECTURE BEHAV OF MUX41 IS
BEGIN
PROCESS(A,B,C,D,SEL)
BEGIN
CASE SEL IS
WHEN ”00”=>Y<=A;
WHEN ”01”=>Y<=B;
WHEN ”10”=>Y<=C;
WHEN ”11”=>Y<=D;
WHEN OTHERS=>Y<=0;
END CASE
END PROCESS;
END BEHAV
4.设计一位比较器,当A>B时输出Q=1; 否则输出Q=0.
LIBRARY IEEE;
USE IEEE.STD_LOGIC_11.ALL
ENTITY COMP IS
PORT(A,B:IN STD_LOGIC;
Q:OUT STD_LOGIC);
END COMP;
ARCHITECTURE BEHAV OF COMP IS
BEGIN
PROCESS(A,B)
BEGIN
IF A>B THEN Q<=’1’;
ELSE Q<=’0’;
END IF;
END PROCESS;
END BEHAV
5. 利用IF语句条件向上相与功能,设计一个8-3线优先编码器,其真值表如表所示.
8-3线优先编码器真值表
| 输入 | 输出 |
| D0 D1 D2 D3 D4 D5 D6 D7 | Q0 Q1 Q2 |
| X X X X X X X 0 | 0 0 0 |
| X X X X X X 0 1 | 1 0 0 |
| X X X X X 0 1 1 | 0 1 0 |
| X X X X 0 1 1 1 | 1 1 0 |
| X X X 0 1 1 1 1 | 0 0 1 |
| X X 0 1 1 1 1 1 | 1 0 1 |
| X 0 1 1 1 1 1 1 | 0 1 1 |
| 0 1 1 1 1 1 1 1 | 1 1 1 |
USE IEEE.STD_LOGIC_11.ALL
ENTITY 8_3CODER IS
PORT(DIN:IN STD_LOGIC_VECTOR(7 DOWNTO 0);
Q:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);
END 8_3CODER;
ARCHITECTURE BEHAV OF 8_3CODER IS
SIGNAL SINT: STD_LOGIC_VECTOR(5 DOWNTO 0);
BEGIN
PROCESS(DIN)
BEGIN
IF (DIN(7)=’0’) THEN Q<=”000”;
ELSIF (DIN(6)=’0’) THEN Q<=”100”;
ELSIF (DIN(5)=’0’) THEN Q<=” 010”;
ELSIF (DIN(4)=’0’) THEN Q<=”100”;
ELSIF (DIN(3)=’0’) THEN Q<=”001”;
ELSIF (DIN(2)=’0’) THEN Q<=”101”;
ELSIF (DIN(1)=’0’) THEN Q<=”011”;
ELSE Q<=”111”;
END IF;
END PROCESS;
END BEHAV;
6、根据原理图写出相应
的VHDL程序:(15分)
答案:
Library ieee;
Use ieee.std_ligic_11.all;
Entity adder is
Port(ain,bin,clk:in std_logic;
Cout:out std_logic) ;
End adder;
Architecture behav of adder is
Signal d,e,f: std_logic;
Begin
Process(clk,ain,bin)
Begin;
If clk’event and clk=’1’then
D<=ain;e<=bin;
End if;
End process;
F<=d xor e;
Process(clk,f);
Begin;
If clk’event and clk=’1’then
Cout<=f;
End if;
End process;
End behav;
7、根据原理图写出相应的VHDL程序:(10分)
答案:
Library ieee;
Use ieee.std_ligic_11.all;
Entity DDFF is
Port(din,clk:in std_logic;
qout:out std_logic) ;
End DDFF;
Architecture behav of DDFF is
Signal tmp: std_logic;
Begin
Process(clk)
Begin;
If clk’event and clk=’1’then
q<=din;;
End if;
End process;
tmp<=not d ;
Process(clk,tmp);
Begin;
If clk=’1’then
qout<=tmp;
End if;
End process;
End behav;
8、看下面原理图,写出相应VHDL描述(10分)
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分)
1.已知状态机状态图如图(a)所示;完成下列各题:
(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
Reg: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;
Com: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;
2.综合题:(20分)
已知一个简单的波形发生器的数字部分系统框图如下图所示
图中lcnt、lrom都是在QuartusII中使用MegaWizard调用的LPM模块,其VHDL描述中Entity部分分别如下:
ENTITY lcnt IS
PORT (clock : IN STD_LOGIC ;
q: OUT STD_LOGIC_VECTOR (9 DOWNTO 0) );
END lcnt;
ENTITY lrom IS
PORT(address:IN STD_LOGIC_VECTOR (9 DOWNTO 0);
q: OUT STD_LOGIC_VECTOR (9 DOWNTO 0));
END lrom;
试用VHDL描述该系统的顶层设计(使用例化语句)。
Library ieee;
Use ieee.std_logic_11.all;
Entity mysg is
Port (clk : in std_logic;
To_da : out std_logic_vector (9 downto 0) );
End mysq;
Architecture one of mysq is
Signal addr : std_logic_vector (9 downto 0);
Component lcnt
Port (clock : in std_logic;
Q : out std_logic_vector (9 downto 0) );
End component;
Component lrom
Port (address : in std_logic_vector (9 downto 0);
Q : out std_logic_vector (9 downto 0) );
End component;
Begin
U1 : lcnt port map (clock => clk, q => addr);
U2 : lrom port map (address => addr, q => to_da);
End one;下载本文