END PROCESS; END behave;
3.22 什么叫进程语句?你是如何理解进程语句的并行性和顺序性的双重特性的?
(1)进程实际上是顺序语句描述的一种进程过程,进程是用于描述事件的,process语句结构包含了一个代表实体中部分逻辑行为的独立的顺序语句描述的进程
(2)一个结构体中可以有多个并行进程结构,而有一个进程内部结构却是由一系列顺序语句来构成的,即进程语句间是并行执行的进程的内部是顺序执行的
( 进程语句是一种描述硬件行为的语句,进程语句内部是由顺序语句构成的,内部执行时是顺 序性的,但进程语句属于并行语句,多个进程之间的执行并行运行。 )
3.23 进程的启动条件是什么?如果进程有两个基本点敏感变量,其中一个由“0”变“1”,等待一段时间以后再由“1”变“0”;而另一个只由“1”变“0”改变一次,请问该进程将执行几遍?
答:进程的启动条件:敏感信号列表中的任何一个敏感信号的值发生变化,或者wait语句中的条件为真。 3遍
3.24 有人说,进程中的语句顺序颠倒一下并不会改变所描述电路的功能,这种说法对吗?为什么?
不对。因为PLC的扫描过程是从左到右,从上到下进行的。同一进程中的逻辑描述语句是顺序运行的。
3.25 并行信号赋值语句有几类?比较其异同。
(1)1.简单信号赋值语句2.条件信号赋值语句3.选择信号赋值语句
(2)共同点:赋值目标都是信号,都是并行语句,都相当于一个隐含的进程语句(信号赋值语句中的所有读入信号都作为该进程的敏感信号)。 不同点:简单信号赋值语句是最简单的并行语句,执行时直接将表达式的值赋给信号。 条件信号赋值语句的功能与if语句相同,在执行时按书写的先后顺序测试每个条件,一旦条件为真,则将表达式的值赋给信号。
选择信号赋值语句与case语句相似。当关键字with后的选择表达式的值发生变化时,就将该值和每个选择值进行比较,将选择值匹配的子句中的表达式的值赋给信号。
3.26 分别用条件信号赋值语句、选择信号赋值语句设计一个四—十六译码器。
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY DECODER IS
PORT(A, B, C,D:IN STD_LOGIC;
Y: OUT BIT_VECTOR (15 DOWNTO 0)); END ENTITY DECODER;
ARCHITECTURE ART1 OF DECODER IS
SIGNAL SR: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN
SR<= D&C&B&A;
Y(0)<='1' WHEN SR=\ELSE '0'; Y(1)<='1' WHEN SR=\ELSE '0'; Y(2)<='1' WHEN SR=\ ELSE '0'; Y(3)<='1' WHEN SR=\ELSE '0'; Y(4)<='1' WHEN SR=\ELSE '0'; Y(5)<='1' WHEN SR=\ELSE '0'; Y(6)<='1' WHEN SR=\ELSE '0'; Y(7)<='1' WHEN SR=\ELSE '0'; Y(8)<='1' WHEN SR=\ELSE '0'; Y(9)<='1' WHEN SR=\ ELSE '0'; Y(10)<='1' WHEN SR=\ELSE '0'; Y(11)<='1' WHEN SR=\ELSE '0'; Y(12)<='1' WHEN SR=\ELSE '0'; Y(13)<='1' WHEN SR=\ELSE '0'; Y(14)<='1' WHEN SR=\ELSE '0'; Y(15)<='1' WHEN SR=\ELSE '0'; END ARCHITECTURE ART1;
ARCHITECTURE ART2 OF DECODER IS
SIGNAL SR: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN
WITH SR SELECT
Y<= “0000_0000_0000_0001” WHEN “0000”, “0000_0000_0000_0010” WHEN “0001”, “0000_0000_0000_0100” WHEN “0010”, “0000_0000_0000_1000” WHEN “0011”, “0000_0000_0001_0000” WHEN “0100”, “0000_0000_0010_0000” WHEN “0101”, “0000_0000_0100_0000” WHEN “0110”, “0000_0000_1000_0000” WHEN “0111”, “0000_0001_0000_0000” WHEN “1000”, “0000_0010_0000_0000” WHEN “1001”, “0000_0100_0000_0000” WHEN “1010”, “0000_1000_0000_0000” WHEN “1011”, “0001_0000_0000_0000” WHEN “1100”, “0010_0000_0000_0000” WHEN “1101”, “0100_0000_0000_0000” WHEN “1110”, “1000_0000_0000_0000” WHEN OTHERS; END ARCHITECTURE ART2;
3.27 进程语句和并行赋值语句之间有什么关系?进程之间的通信是通过什么方式来实现的?
(2)进程之间的通信是通过传递信号和共享变量值来实现的
3.28 元件例化语句的作用是什么?元件例化语句包括几个组成部分?各自的语句形式如何?什么叫元件例化中的位置关联和名字关联?
答:(1)元件例化就是将预先设计好的设计实体定义为一个元件,然后利用特定的语句将此元件与当前的设计实体中的指定端口相连接,从而为当前设计实体引入一个新的低一级的设计层次。 (2)元件例化语句由两部组成,前一部分是将一个现成的设计实体定义为一个元件的语句,第二部分则是此元件与当前设计实体中的连接说明。 (3)它们的语句格式如下: -----元件定义语句
COMPONENT 例化元件名 IS GENERIC(类属表);
PORT(例化元件端口名表); END COMPONENT; -----元件例化语句
元件例化名:例化元件名 PORT MAP([例化元件端口名=>]连续实体端口名,...)
(4)名字关联是将例化元件的端口名与关联端口名通过关联(连续)符号“=>\一一对应地联系起来的方式;
位置关联是按例化元件端口定义顺序将例化元件的对应的连续实体端口名一一列出的方式。 3.38一个包集合由那两大部分组成?包集合通常包含哪些内容? 程序包首和程序包体
组成部分可以是USE语句、子程序定义、子程序体、数据类型说明子类型说明和常类说明
3.29 什么叫子程序?过程语句用于什么场合?其所带参数是怎样定义的?函数语句用于什么场合?其所带参数是怎样定义的?
(1)子程序是一个VHDL程序模块,这个模块利用顺序语句来定义和完成算法,因此只能使用顺序语句。VHDL子程序与其他软件语言程序中的子程序的应用目的是相似的,能更有效地完成重复性的工作。子程序有两种类型,即过程和函数
(2)过程语句主要用在子程序。过程语句与其他高级语句中的子程序相当,他的参数可以使输入也可以是输出,即过程中的输入输出参数都应列在紧跟过程名的括号中。
(3)函数语句相当于其他高级语言中的函数。语句中圆括号内所有参数都是输入参数或者输入信号。因此,在括号内指定端口方向“IN”可以省略。FUNCTION的输入值由调用者复制到输入参数中,若无特别制定在FUNCTION的语句中按常数处理
3.30 库由哪些部分组成?在VHDL语言中常见的有几种库?编程人员怎样使用现有的库?
(1)设计库由若干程序包组成,每个程序包都有一个包声明和一个可选的包体声明。在设计库中,包声明和包体声明是分别编译的。
(2)在VHDL语言中常见的由1.标准设计库:std,2.用户现行工作库:work,3.IEEE设计库:IEEE。
3.31 一个包集合由哪两大部分组成?包集合体通常包含哪些内容?
(1)程序包首和程序包体
(2)组成部分可以是USE语句、子程序定义、子程序体、数据类型说明子类型说明和常类说明
3.32 什么是结构体的行为描述方式?它应用于什么场合?用行为描述方式所编写的VHDL程序是否都可以进行逻辑综合?
(1)行为描述:设计实体按算法的路径进行描述,他不是对某一个器件的描述,而是对整个设计单元的数学模型描述。
(2)主要用于系统数学模型的仿真或系统工作原理的仿真。
(3)故其大量采用的算术运算、关系运算、惯性延时、传输延时等描述方式是难以或不能进行逻辑综合的。
3.33 什么叫数据流描述方式?它和行为描述方式的主要区别在哪里?用数据流描述方式所编写的VHDL程序是否都可以进行逻辑综合?
(1)数据流描述也称RTL描述,它以类似于寄存器传输级的方式描述数据的传输和变换,以规定设计中的各种寄存器形成为特征,然后再寄存器之间插入组合逻辑。
(2)行为描述只表示输入与输出间转换的行为,它不包含任何结构信息,而数据流的描述会伴有大量的有关这种结构信息的“流出”。
(3)类似于寄存器传输级的方式描述数据的传输和变换,认为数据是从一个设计流出,从输入到输出的观点称为数据流风格,所以不是所有的VHDL程序都可以进行逻辑综合。
3.34 什么是结构体的结构描述方式?实现结构描述方式的主要语句是哪两个?
(1)结构描述:是描述该设计单元的硬件结构,即该硬件是如何组成的。复杂数字逻辑系统的层次化设计法(设计中高层次的模块调用低层次的模块,或者直接用门电路设计单元直接设计一个复杂的逻辑电路)。
(2)采用元件例化语句或生成语句进行设计。
3.35 什么叫状态机?状态机的基本结构如何?状态机的种类有哪些?
答:(1)状态机是一类很重要的时序电路,是许多数字电路的核心部件。
(2)状态机的基本结构包括输入信号、输出信号和一组寄存器,它用于记忆状态机的内部庄涛。状态机可认为是组合逻辑和寄存器逻辑的特殊组合。它包括两个主要部分: 组合逻辑部分和寄存器部分。寄存器部分用于存储状态机的内部状态;组合逻辑部分又分为状态译码器和输出译码器。状态译码器确实状态机的下一个状态,即确定状态机的激励方程; 输出译码器确定状态机的输出,即确定状态机的输出方程。
(3)两种典型的状态机是摩尔(MOORE)状态机和米立(MELAY)状态机。
3.36 阅读第4.9节中的例3.9.2、例3.9.3、例3.9.5、例3.9.8、例3.9.9、例3.9.10、例3.9.13、例3.9.14、例3.9.15、例3.9.18、例3.9.20和例3.9.22,画出系统原理框图,阐述系统工作原理,并对主要语句作出注释。 1.3-8线译码器
下面我们分别以四种方法描述一个3-8线译码器。