![数字电子技术基础(第3章)-组合逻辑分析与设计_第1页](http://file4.renrendoc.com/view8/M03/03/3A/wKhkGWcxW3eAWVyUAAGQlUP23CA863.jpg)
![数字电子技术基础(第3章)-组合逻辑分析与设计_第2页](http://file4.renrendoc.com/view8/M03/03/3A/wKhkGWcxW3eAWVyUAAGQlUP23CA8632.jpg)
![数字电子技术基础(第3章)-组合逻辑分析与设计_第3页](http://file4.renrendoc.com/view8/M03/03/3A/wKhkGWcxW3eAWVyUAAGQlUP23CA8633.jpg)
![数字电子技术基础(第3章)-组合逻辑分析与设计_第4页](http://file4.renrendoc.com/view8/M03/03/3A/wKhkGWcxW3eAWVyUAAGQlUP23CA8634.jpg)
![数字电子技术基础(第3章)-组合逻辑分析与设计_第5页](http://file4.renrendoc.com/view8/M03/03/3A/wKhkGWcxW3eAWVyUAAGQlUP23CA8635.jpg)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章组合逻辑分析与设计3.1
逻辑代数基础3.2逻辑函数的化简3.3组合逻辑电路的分析3.4组合逻辑电路的设计3.5VHDL硬件描述语言3.6基本组合逻辑电路的设计举例3.7组合逻辑电路中的竞争-险象3.1逻辑代数基础
逻辑代数(LogicAlgebra)是由英国数学家乔治·布尔(GeorgeBoole)于1847年首先提出的,因此也称为布尔代数(BooleanAlgebra)。逻辑代数研究逻辑变量间的相互关系,是分析和设计逻辑电路不可缺少的数学工具。1938年,克劳德·香农(C.E.Shannon)将布尔代数应用于电话继电器的开关电路,提出了“开关代数”。逻辑代数已成为研究数字系统逻辑设计的基础理论,必须掌握逻辑代数这一重要数学工具。
3.1.1
逻辑变量及基本逻辑运算
所谓逻辑变量,是指只有两种取值的变量:1或0。逻辑代数中定义了“与”、“或”、“非”三种基本运算。
1.
“与”运算决定某一事件发生的多个条件必须同时具备,事件才能发生,则这种因果关系称之“与”逻辑。又称为逻辑乘(LogicMultiplication)。
F=A·B或者F=A∧B
111001010000FBA+VABF逻辑符号真值表
2.“或”运算决定某一事件发生的多个条件中,只要有一个或一个以上条件成立,事件便可发生,则这种因果关系称之为“或”逻辑。又称逻辑加(LogicAddition)F=A+B或者F=A∨B
011100011011FA
BFAB+V实现或逻辑的电路称为或门。或门的逻辑符号:真值表功能表Y=A+B逻辑符号3.“非”运算如果某一事件的发生取决于条件的否定,则这种因果关系不称为“非”逻辑。
+VAF1001FAF=AY=A逻辑符号真值表4、常用的逻辑运算(1)与非运算:逻辑表达式为:(2)或非运算:逻辑表达式为:(3)异或运算:逻辑表达式为:(4)与或非运算:逻辑表达式为:逻辑代数的公式、定理和规则1、逻辑代数的公式和定理(1)常量之间的关系(2)基本公式分别令A=0及A=1代入这些公式,即可证明它们的正确性。
3.1.2
逻辑代数的基本公式、定理与规则
1.基本公式
1)交换律
A+B=B+AA·B=B·A2)结合律
(A+B)+C=A+(B+C)(A·B)·C=A·(B·C)
3)分配律
A·(B+C)=A·B+A·CA+B·C=(A+B)(A+C)
(A+B)(A+C)=AA+AB+AC+BC分配率A(B+C)=AB+AC=A+AB+AC+BC等幂率AA=A=A(1+B+C)+BC分配率A(B+C)=AB+AC=A+BC0-1率A+1=1证明分配率:A+BC=(A+B)(A+C)证明:
6)吸收律
A+AB=AA+AB=A+BA(A+B)=AA(A+B)=AB7)重迭律
A+A=AA·A=A8)对合律
A=A
9)反演律
A+B=A·BAB=A+B10)包含律
AB+AC+BC=AB+AC(A+B)(A+C)(B+C)=(A+B)(A+C)
分配率A+BC=(A+B)(A+C)互补率A+A=10-1率A·1=1互补率A+A=1分配率A(B+C)=AB+AC0-1率A+1=1
2.逻辑代数的主要定理
定理2
香农(Shannon)定理
定理1德·摩根(DeMorgan)定理:
例3.1已知函数求其反函数
解利用香农定理,可以直接写出定理3
展开定理:
3.逻辑代数的重要规则
(1)代入规则在一个逻辑等式两边出现某个变量(或表示式)的所有位置都代入另一个变量(或表达式),则等式仍然成立。
例如:已知,在等式两边出现B的所有位置都代入BC,则等式仍然成立,即
(2)对偶规则对一个逻辑函数F进行如下变换:将所有的“·”换成“+”,“+”换成“·”,“0”换成“1”,“1”换成“0”,则得到函数F的对偶函数Fd。例如:F1=A·(B+C),F1d=A+B·CF2=A·B+A·C,F2d=(A+B)·(A+C)P48例子
注意:必须按照先“与”后“或”的顺序,“与”项变为“或”项时,应加括号。
如果两个函数相等,则它们的对偶函数亦相等。这就是对偶规则。例如:已知
A·(B+C)=A·B+A·C
则A+B·C=(A+B)·(A+C)
(3)反演规则对一个逻辑函数F进行如下变换:将所有的“·”换成“+”,“+”换成“·”,“0”换成“1”,“1”换成“0”,原变量换成反变量,反变量换成原变量,则得到函数F的反函数。例如:则
使用反演规则时,要注意以下两点:保持原函数中逻辑运算的优先顺序;不是单个变量上的反号保持不变。P49例子
4.几个常用公式
(异或)
(同或)
3.1.3逻辑函数及其表达式
逻辑函数的表示法
(1)逻辑表达式
由逻辑变量和逻辑运算符号组成,用于表示变量之间逻辑关系的式子,称为逻辑表达式。常用的逻辑表达式有与或式、标准与或式、或与式、标准或与式、与非-与非式、或非-或非式、与或非式等。
(2)真值表
用来反映变量所有取值组合及对应函数值的表格,称为真值表。例如,在一个判奇电路中,当A、B、C三个变量中有奇数个1时,输出F为1;否则,输出F为0。可列出下表所示的真值表。ABCF00000101001110010111011101101001(3)卡诺图将逻辑变量分成两组,分别在横竖两个方向用Gray码形式排列出各组变量的所有取值组合,构成一个有2n个方格的图形,其中,每一个方格对应变量的一个取值组合,这种图形叫做卡诺图。卡诺图将在后面结合函数化简问题进行详细介绍。3.2逻辑函数的化简
函数表达式越简单,则逻辑电路越简单
同一功能的函数可以有多种形式
“与或”形式
“或与”形式
“与非”形式
“或非”形式
“与或非”形式最简“与或”式应同时满足两个条件
(1)该式中的与项最少;(2)该式中的每个与项的变量最少。
最简“或与”式必须满足的条件有:(1)或项个数最少。(2)或项中变量的个数最少。3.2.1代数化简法
3.2.2卡诺图化简法3.2.3列表化简法3.2.4逻辑函数化简中两个实际问题
3.2.1代数化简法
代数法化简逻辑函数,就是通过利用逻辑代数的基本公式、定理和规则,对函数进行消项、消因子等,以求得函数的最简表达式。常用方法有以下四种。(1)并项法利用公式,将两个与项合并为一个,消去其中的一个变量。AB+AB=A
【例】求函数的最简与或表达式。解:
(2)吸收法利用公式,吸收多余的与项。例如:
【例】求函数的最简与或表达式。
解:F=(A+AB+ABC)(A+B+C)=A(A+B+C)=A
3.消去法
利用公式,消去与项多余的因子。例如:
4、消去冗余项法利用冗余律5.配项消项法利用公式及或,或利用包含律加上多余的与项,再进行配项,以消去更多的与项。
5.配项消项法请与P55例3.6比较例3.4化简
解
--分配律
--消去法
--分配律
--互补律
--分配律
--吸收法
例3.5化简
解
--并项法
--吸收法--消去法--包含律例3.7化简或与表达式
解可以利用对偶规则,先求出F的对偶式:
然后利用与或式的化简方法化简得最后再对Fd求对偶式,则得3.2.2卡诺图化简法
1)卡诺图的构成
将逻辑变量分成两组,分别在横竖两个方向按Gray码顺序排列出各组变量的所有取值组合,构成一个有2n个方格的图形,其中,每一个方格对应变量的一个取值组合(即最小项),这种图形叫做卡诺图。1、逻辑函数的最小项及其性质(1)最小项:如果一个函数的某个乘积项包含了函数的全部变量,其中每个变量都以原变量或反变量的形式出现,且仅出现一次,则这个乘积项称为该函数的一个标准积项,通常称为最小项。
3个变量A、B、C可组成8个最小项:1、逻辑函数的最小项及其性质(2)最小项的表示方法:通常用符号mi来表示最小项。下标i的确定:把最小项中的原变量记为1,反变量记为0,当变量顺序确定后,可以按顺序排列成一个二进制数,则与这个二进制数相对应的十进制数,就是这个最小项的下标i。
3个变量A、B、C的8个最小项可以分别表示为:2、逻辑函数的最小项表达式
任何一个逻辑函数都可以表示成唯一的一组最小项之和,称为标准与或表达式,也称为最小项表达式对于不是最小项表达式的与或表达式,可利用公式A+A=1和A(B+C)=AB+BC来配项展开成最小项表达式。如果列出了函数的真值表,则只要将函数值为1的那些最小项相加,便是函数的最小项表达式。m1=ABCm5=ABCm3=ABCm1=ABC将真值表中函数值为0的那些最小项相加,便可得到反函数的最小项表达式。
逻辑函数的图形化简法1、卡诺图的构成逻辑函数的图形化简法是将逻辑函数用卡诺图来表示,利用卡诺图来化简逻辑函数。将逻辑函数真值表中的最小项重新排列成矩阵形式,并且使矩阵的横方向和纵方向的逻辑变量的取值按照格雷码的顺序排列,这样构成的图形就是卡诺图。卡诺图法化简卡诺图的特点是任意两个相邻的最小项在图中也是相邻的。(相邻项是指两个最小项只有一个因子互为反变量,其余因子均相同,又称为逻辑相邻项)。
每个2变量的最小项有两个最小项与它相邻
每个3变量的最小项有3个最小项与它相邻每个变量的最小项有4个最小项与它相邻最左列的最小项与最右列的相应最小项也是相邻的最上面一行的最小项与最下面一行的相应最小项也是相邻的两个相邻最小项可以合并消去一个变量逻辑函数化简的实质就是相邻最小项的合并2、逻辑函数在卡诺图中的表示(1)逻辑函数是以真值表或者以最小项表达式给出:在卡诺图上那些与给定逻辑函数的最小项相对应的方格内填入1,其余的方格内填入0。m6m1m3m4m7m11m15m14(2)逻辑函数以一般的逻辑表达式给出:先将函数变换为与或表达式(不必变换为最小项之和的形式),然后在卡诺图上与每一个乘积项所包含的那些最小项相对应的方格内填入1,其余的方格内填入0。变换为与或表达式AD的公因子BC的公因子
说明:如果求得了函数Y的反函数Y,则对Y中所包含的各个最小项,在卡诺图相应方格内填入0,其余方格内填入1。3、卡诺图的性质(1)任何两个(21个)标1的相邻最小项,可以合并为一项,并消去一个变量(消去互为反变量的因子,保留公因子)。(2)任何4个(22个)标1的相邻最小项,可以合并为一项,并消去2个变量。BDBDBDBD(3)任何8个(23个)标1的相邻最小项,可以合并为一项,并消去3个变量。DB图1-16四个最小项合并
3)卡诺图化简法的步骤和原则用卡诺图化简逻辑函数时,一般先画出函数的卡诺图,然后将卡诺图中的1方格按逻辑相邻特性进行分组画圈。每个圈得到一个简化的与项,与项中只包含在圈中取值没有变化过的变量,值为1的以原变量出现,值为0的以反变量出现。再将所得各个与项相或,即得到该函数的最简与或表达式。
用卡诺图化简法求函数最简与或表达式的原则如下:(1)每个值为1的方格至少被圈一次。(2)圈越大越好。圈越大,消去的变量越多,所得与项包含的因子就越少。每个圈中包含的1方格的个数必须是2的整数次方。(3)圈的个数越少越好。圈的个数越少,得到的与项就越少。(4)每个圈内至少有一个最小项只被圈过一次。4、图形法化简的基本步骤逻辑表达式或真值表卡诺图11合并最小项最简与或表达式BDCDACD冗余项2233将代表每个圈的乘积项相加①圈越大越好,但每个圈中标1的方格数目必须为2i个。②同一个方格可同时画在几个圈内,但每个圈都要有新的方格,否则它就是多余的。③不能漏掉任何一个标1的方格。【例】用卡诺图法化简函数写出其最简与或表达式。解:首先将函数F转换为一般与或表达式:
并画出函数F的卡诺图。111ABCD00010001111110111110111DCB写出函数的最简与或表达式
【例】用卡诺图化简函数F=∑m(0,1,2,5,6,7,8,10,11,12,13,15),写出其最简与或表达式。解:画出函数F的卡诺图1ABCD000111110110001111011111111(a)D
BBCAACDCABDC
A1ABCD000111110110001111011111111(b)DCABDD
CAC
B
ACBA3.2.4逻辑函数化简中两个实际问题1.包含无关最小项的逻辑函数化简
实际问题中,往往存在这样两种情况:(1)由于某种特殊限制,使得输入变量的某些取值组合根本不会出现。
(2)虽然每种输入组合都可能出现,但对其中的某些输入取值为1还是为0,对输出没有影响。
称这部分输入组合为无关最小项,简称无关项,用“d(或×)”表示。包含无关项的逻辑函数称不完全确定的逻辑函数。
化简原则:对化简有利的当“1”,无利的当“0”。随意项:函数可以随意取值(可以为0,也可以为1)或不会出现的变量取值所对应的最小项称为随意项,也叫做约束项或无关项。1、含随意项的逻辑函数例如:判断一位十进制数是否为偶数。不会出现不会出现不会出现不会出现不会出现不会出现
说明×111100111×111010110×110100101×110010100×101100011×10101001001001000011100010000YABCDYABCD输入变量A,B,C,D取值为0000~1001时,逻辑函数Y有确定的值,根据题意,偶数时为1,奇数时为0。
A,B,C,D取值为1010~1111的情况不会出现或不允许出现,对应的最小项属于随意项。用符号“φ”、“×”或“d”表示。
随意项之和构成的逻辑表达式叫做随意条件或约束条件,用一个值恒为0的条件等式表示。含有随意条件的逻辑函数可以表示成如下形式:2、含随意项的逻辑函数的化简在逻辑函数的化简中,充分利用随意项可以得到更加简单的逻辑表达式,因而其相应的逻辑电路也更简单。在化简过程中,随意项的取值可视具体情况取0或取1。具体地讲,如果随意项对化简有利,则取1;如果随意项对化简不利,则取0。利用随意项的化简结果为:例3.12
用卡诺图化简逻辑函数
F(A,B,C,D)=∑m(3,4,5,10,11,12)+∑d(0,1,2,13,14,15)
CDAB00011111000011110dd1d1d111dd3.3组合逻辑电路的分析
逻辑电路可以分为两大类:组合逻辑电路和时序逻辑电路。组合逻辑电路是比较简单的一类逻辑电路,它具有以下特点:(1)从电路结构上看,不存在反馈,不包含记忆元件。
(2)从逻辑功能上看,任一时刻的输出仅仅与该时刻的输入有关,与该时刻之前电路的状态无关。组合逻辑电路……x1x2xmyny1y2输入/输出表达式描述为y1=F1(x1,x2,…,xm)y2=F2(x1,x2,…,xm)…yn=Fn(x1,x2,…,xm)3.3.1组合逻辑电路分析的一般方法
分析组合逻辑电路一般是根据给出的逻辑电路图,通过分析总结出它的逻辑功能。具体的步骤通常如下:
(1)根据逻辑电路图,写出输出逻辑表达式。(2)对(1)中的输出逻辑表达式化简。(3)利用所得到的逻辑表达式,列出真值表。(4)总结出电路的逻辑功能。3.1.1组合逻辑电路的分析方法逻辑图逻辑表达式11最简与或表达式化简22从输入到输出逐级写出最简与或表达式3真值表34电路的逻辑功能当输入A、B、C中有2个或3个为1时,输出Y为1,否则输出Y为0。所以这个电路实际上是一种3人表决用的组合电路:只要有2票或3票同意,表决就通过。4
3.4组合逻辑电路的设计
组合逻辑电路的设计是根据给定的逻辑功能要求,选用适当的门电路画出实现该功能的逻辑电路图。(1)根据逻辑功能要求,进行逻辑约定并列出真值表
(2)根据真值表写出逻辑函数的“最小项之和”表达式
(3)化成最简“与-或”式,并进行适当变换
(4)画出逻辑电路图
3.4.1组合逻辑电路设计的一般方法
设计过程是其分析过程的逆过程,一般可分为以下四步:真值表电路功能描述例:用与非门设计一个举重裁判表决电路。设举重比赛有3个裁判,一个主裁判和两个副裁判。杠铃完全举上的裁决由每一个裁判按一下自己面前的按钮来确定。只有当两个或两个以上裁判判明成功,并且其中有一个为主裁判时,表明成功的灯才亮。设主裁判为变量A,副裁判分别为B和C;表示成功与否的灯为Y,根据逻辑要求列出真值表。1穷举法122逻辑表达式3卡诺图最简与或表达式化简45逻辑变换6逻辑电路图3化简4111Y=AB+AC563.2.1半加器和全加器3.2.2加法器3.2.3加法器的应用3.2加法器1、半加器3.2.1半加器和全加器
能对两个1位二进制数进行相加而求得和及进位的逻辑电路称为半加器。加数本位的和向高位的进位2、全加器
能对两个1位二进制数进行相加并考虑低位来的进位,求得和及进位的逻辑电路称为全加器。Ai、Bi:加数,Ci-1:低位来的进位,Si:本位的和,Ci:向高位的进位。全加器的逻辑图和逻辑符号
用与门和或门实现实现多位二进制数相加的电路称为加法器。1、串行进位加法器3.2.2加法器构成:把n位全加器串联起来,低位全加器的进位输出连接到相邻的高位全加器的进位输入。特点:进位信号是由低位向高位逐级传递的,速度不高。2、并行进位加法器(超前进位加法器)进位生成项进位传递条件进位表达式和表达式4位超前进位加法器递推公式超前进位发生器加法器的级连集成二进制4位超前进位加法器3.3.11位数值比较器3.3.24位数值比较器3.3数值比较器
用来完成两个二进制数的大小比较的逻辑电路称为数值比较器,简称比较器。3.3.11位数值比较器
设A>B时L1=1;A<B时L2=1;A=B时L3=1。得1位数值比较器的真值表。逻辑表达式逻辑图3.3.24位数值比较器真值表中的输入变量包括A3与B3、A2与B2、A1与B1
、A0与B0和A'与B'的比较结果,A'>B'、A'<B'和A'=B'。A'与B'是另外两个低位数,设置低位数比较结果输入端,是为了能与其它数值比较器连接,以便组成更多位数的数值比较器;3个输出信号L1(A>B)、L2(A<B)、和L3(A=B)分别表示本级的比较结果。逻辑图3.3.3比较器的级联集成数值比较器串联扩展TTL电路:最低4位的级联输入端A'>B'、
A'<B'和A'=B'必须预先分别预置为0、0、1。3.4.1二进制编码器3.4.2二-十进制编码器3.4编码器
I0I1I2I3I4I5I6I7000001010011100101110111输入输出Y2Y1Y0实现编码操作的电路称为编码器。3.4.1二进制编码器1、3位二进制编码器输入8个互斥的信号输出3位二进制代码真值表逻辑表达式逻辑图2、3位二进制优先编码器
在优先编码器中优先级别高的信号排斥级别低的,即具有单方面排斥的特性。设I7的优先级别最高,I6次之,依此类推,I0最低。真值表逻辑表达式逻辑图8线-3线优先编码器
如果要求输出、输入均为反变量,则只要在图中的每一个输出端和输入端都加上反相器就可以了。2、集成3位二进制优先编码器ST为使能输入端,低电平有效。YS为使能输出端,通常接至低位芯片的端。YS和ST配合可以实现多级编码器之间的优先级别的控制。YEX为扩展输出端,是控制标志。YEX
=0表示是编码输出;YEX
=1表示不是编码输出。集成3位二进制优先编码器74LS1483.5.1二进制译码器3.5.2二-十进制译码器3.5.3显示译码器3.5.4译码器的应用3.5译码器
把代码状态的特定含义翻译出来的过程称为译码,实现译码操作的电路称为译码器。3.5.1二进制译码器
设二进制译码器的输入端为n个,则输出端为2n个,且对应于输入代码的每一种状态,2n个输出中只有一个为1(或为0),其余全为0(或为1)。
二进制译码器可以译出输入变量的全部状态,故又称为变量译码器。1、3位二进制译码器真值表输入:3位二进制代码输出:8个互斥的信号逻辑表达式逻辑图电路特点:与门组成的阵列2、集成二进制译码器74LS138A2、A1、A0为二进制译码输入端,为译码输出端(低电平有效),G1、、为选通控制端。当G1=1、时,译码器处于工作状态;当G1=0、时,译码器处于禁止状态。3.5.3显示译码器1、数码显示器
用来驱动各种显示器件,从而将用二进制代码表示的数字、文字、符号翻译成人们习惯的形式直观地显示出来的电路,称为显示译码器。b=c=f=g=1,a=d=e=0时c=d=e=f=g=1,a=b=0时共阴极2、显示译码器真值表仅适用于共阴极LED真值表a的卡诺图b的卡诺图c的卡诺图d的卡诺图e的卡诺图f的卡诺图g的卡诺图逻辑表达式逻辑图3.5.4译码器的应用1、用二进制译码器实现逻辑函数②画出用二进制译码器和与非门实现这些函数的接线图。①写出函数的标准与或表达式,并变换为与非-与非形式。3.6.14选1数据选择器3.6.2集成数据选择器3.6.3用数据选择器实现组合逻辑函数3.6数据选择器四选一数据选择器Y3.6.14选1数据选择器真值表逻辑表达式地址变量输入数据由地址码决定从4路输入中选择哪1路输出。逻辑图3.6.2集成数据选择器集成双4选1数据选择器74LS153
选通控制端S为低电平有效,即S=0时芯片被选中,处于工作状态;S=1时芯片被禁止,Y≡0。3.6.3用数据选择器实现逻辑函数基本原理数据选择器的主要特点:(1)具有标准与或表达式的形式。即:(2)提供了地址变量的全部最小项。(3)一般情况下,Di可以当作一个变量处理。因为任何组合逻辑函数总可以用最小项之和的标准形式构成。所以,利用数据选择器的输入Di来选择地址变量组成的最小项mi,可以实现任何所需的组合逻辑函数。基本步骤确定数据选择器确定地址变量21n个地址变量的数据选择器,不需要增加门电路,最多可实现n+1个变量的函数。3个变量,选用4选1数据选择器。A1=A、A0=B逻辑函数1选用74LS153274LS153有两个地址变量。求Di3(1)公式法函数的标准与或表达式:4选1数据选择器输出信号的表达式:比较L和Y,得:344VHDL的基本特点VHDL(VeryHighSpeedIntegratedCircuitHardwareDescriptionLanguage)原来只是美国国防部的一种标准,1987年被IEEE协会接受为硬件描述语言标准,即VHDL-87,1993年又被IEEE进一步修改,即VHDL-93。基本特点:1、可以在各个不同设计阶段对系统进行描述。比较抽象的系统行为描述、比较具体的数据流描述、更加具体的逻辑结构描述。2、支持层次化设计方法3、支持各种不同类型的数字电路和系统的设计。同步、异步;TTL、CMOS、CPLD、FPGA……4、具有很好的时间性能描述机制。3.6VHDL硬件描述语言
一个完整的VHDL语言程序通常包含实体(Entity)、结构体(Architecture)、配置(Configuration)、包集合(Package)和库(Library)5个部分,如图3-33所示。
VHDL文件库,程序包实体结构体配置说明语句功能描述语句图3-33VHDL程序基本结构VHDL的基本结构例:2输入与非门的VHDL描述(数据流描述)ENTITY
nand2
IS--实体描述
PORT(i1,i2:IN
BIT;--输入信号名
o1:OUT
BIT);--输出信号名END
nand2;ARCHITECTURE
delayed
OF
nand2
IS--结构体描述BEGIN
o1<=i1NANDi2AFTER5NS;--电路的数据流描述END
delayed;实体:也称接口,描述硬件模块的I/O接口,包括I/O信号的名称、类型等。VHDL描述结构体:对硬件内部结构或性能的具体描述实体描述格式:ENTITY实体名ISPORT(信号名:类别信号类型;
…..;
信号名:类别信号类型);END实体名类别:
INOUTBUFFER,可反馈
INOUT信号类型:
BIT、BIT_VECTORSTD_LOGIC、
STD_LOGIC_VECTORBOOLEANINTEGERCHARACTER结构体描述格式:ARCHITECTURE结构体名OF实体名IS<声明部分>BEGIN<描述部分>END结构体名;例:2输入与非门的另一种描述(行为描述)ARCHITECTUREanotherOFnand2ISBEGINPROCESS(i1,i2)--行为描述一定要有该语句
BEGINIFi1=‘1’ANDi2=‘1’THENo1<=‘0’AFTER5NS;ELSEo1<=‘1’AFTER5NS;ENDIF;ENDPROCESS;ENDanother;VHDL自定义数据类型1、枚举类型
格式:
TYPE类型名IS(值列表);举例:
TYPEqit_logicIS(‘0’,’1’,’Z’,’X’);TYPEtraffic_lightIS(red,green,yellow);2、数组类型
格式:
TYPE数组名ISARRAY(范围)OF基类型;举例:
TYPEregisterISARRAY(0TO7)OFBIT;TYPEregister_1ISARRAY(7DOWNTO0)OFBIT;TYPEromISARRAY(0TO7)OFregister;TYPEromISARRAY(0TO7,0TO7)OFBIT;TYPElight_delayISARRAY(traffic_light)OFINTEGER;
允许整体赋值和部分赋值,如:
SIGNALarr_1,arr_2:regist_1;arr_1<=“10110110”;arr_1<=(‘1’,’0’,’1’,’1’,’0’,’1’,’1’,’0’);arr_2<=arr_1;arr_2(0TO3)<=“1011”;VHDL运算符算术运算符关系运算符逻辑运算符连接运算符+(加)=(等于)AND(与)&(连接)-(减)/=(不等于)OR(或)连接符将多个对象或矢量连接成维数更大的矢量*(乘)<(小于)NAND(与非)/(除)<=(小于等于)NOR(或非)**(乘方)>(大于)XOR(异或)MOD(求模)>=(大于等于)XNOR(同或)REM(求余)其中‘<=’也用于表示信号的赋值操作NOT(非)ABS(求绝对值)
注意:逻辑运算符的优先级:NOT、(高优先级)
XOR、NOR、NAND、OR、AND(同级)NAND、NOR不满足结合率(aNANDb)NANDc与
aNAND(bNANDC)不同&可以连接任意数组:
TYPEregisterISARRAY(7DOWNTO0)OFBIT;SIGNALreg_1,reg_2:register;reg_1<=reg_1(6DOWNTO0)®_1(7);--左环移
reg_1®_2;--形成16位数组标识符(Identifier)
1)
VHDL不区分大小写;
2)
标识符一定要以字母开头;
3)
下划线不能放在结尾;
4)
下划线不能连用。
由英文字母“a”~“z”、“A”~“Z”、数字“0”~“9”以及下划线“_”组成。使用时应注意以下几点:
如a_h_1、show_new_state、COUNTER_A有效。a%h_1、show-new-state、COUNTER_、T__1非法。常量定义:格式:CONSTANT常量名:类型名:=常量值;CONSTANTarray_size:INTEGER:=16;CONSTANTgate_delay:TIME:=50ns;--时间类型VHDL表达式:可以使用变量和信号,但定义方式有区别VARIABLE变量名:类型名[:=初值];变量用:=赋值,表示立即起作用SIGNAL信号名:类型名[<=初值];信号用<=赋值,表示有延迟,进程结束时起作用信号声明在子程序、进程外部,变量声明在内部同一个表达式中数据类型应相同。
在所有的并行语句中,两个以上的并行赋值语句在字面上的顺序并不表明它们的执行顺序,例如下面的两个结构体在功能上是等价的。ENTITYexeIS
PORT(a1,a2:INBIT;
b1,b2:OUTBIT);
ENDexe;ARCHITECTUREexe_arc1OFexeIS
BEGIN
b1<=a1ANDa2;
b2<=NOTa1ORa2;
ENDexe_arc1;ARCHITECTUREexe_arc2OFexeIS
BEGIN
b2<=NOTa1ORa2;
b1<=a1ANDb2;
ENDexe_arc2; VHDL库和包一、库包括系统库、IEEE库和用户库系统库是VHDL本身预定义的库,包括STD库和WORK库。
STD库是系统的标准库,包括系统本身预定义的类型和操作,如BIT、BIT_VECTOR等。WORK库是用户的工作库。
STD、WORK库对用户透明,不需要说明。
IEEE库是IEEE认可的标准库,包括STD_LOGIC类型以及有关函数的定义。封装在STD_LOGIC_1164包中。用户库是VHDL软件厂商开发的库。如Altera库、LPM库等。 STD_LOGIC类型(9值逻辑)TYPEstd_logicIS(‘0’,--强0‘1’,--强1‘X’,--强未知的‘Z’,--高阻态‘U’,--未初始化的‘W’,--弱未知的‘L’,--若0‘H’,--弱1‘-’,--忽略)前4有实际物理意义,其他是为与模拟环境相容保留的VHDL库中可以包含很多内容,以程序包的形式组织在一起,如,IEEE库中有标准逻辑包STD_LOGIC_1164。 包是VHDL对预定义类型、函数、部件进行封装的一种形式。一般将相似特性的部件、类型、函数封装在一个包中。结构:
PACKAGE程序包名IS
程序包说明部分
END程序包名
PACKAGEBODY程序包名IS
程序包体描述
END程序包名常量、信号、类型、函数或过程、部件说明函数、过程、结构体的具体描述二、包
声明库,如LIBRARYIEEE; 声明使用库中的哪个包,如果使用全部内容则用ALL声明,否则要声明具体内容。格式:USE库名.程序包名.ALL(或子程序名);如:LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;注:STD和WORK库不用声明三、库和包的引用函数和过程(子程序)FUNCTION函数名(参数表)RETURN类型IS[定义语句]BEGIN
函数体
END函数名;PROCEDURE过程名(参数表)IS[定义语句]BEGIN
过程体
END过程名;必须包含RETURN语句区别:1、返回值(有、无)2、参数传递方向(单向、可双向)P95例题并行处理语句ENTITYhalf_adderISPORT(a,b:INBIT;--输入信号
s,c:OUTBIT);--输出信号ENDhalf_adder;ARCHITECTUREh_adderOFhalf_adderISSINGALc0,d:BIT;--中间信号BEGINc0<=aORb;d<=aNANDb;c<=NOTd;s<=c0ANDd;ENDh_adder;一、并行赋制值语句格式:信号名<=表达式[AFTER延迟时间]
例:半加器数据流描述(S=AB(A+B),C=AB)注:执行顺序与书写顺序无关,是一种信号激励和传送关系半加器LIBRARY
IEEE;USE
IEEE.STD_LOGIC_1164.ALL;ENTITYhalf_adderISPORT(a,b:INBIT;--输入信号
s,c:OUTBIT);--输出信号ENDhalf_adder;ARCHITECTUREh_adderOFhalf_adderISBEGINs<=axorb;c<=aandb;END
h_adder;二、条件赋值语句
格式:信号名<=表达式1WHEN布尔表达式1ELSE
表达式2WHEN布尔表达式2ELSE……
表达式nWHEN布尔表达式nELSE
表达式n+1;例:用条件赋值语句描述4路数据选择器ENTITYmux4_to_1ISPORT(d0,d1,d2,d3,a,b:INBIT;y:OUTBIT);ENDmux4_to_1;ARCHITECTUREsample_1OFmux4_to_1ISBEGINy<=d0WHENa=‘0’ANDb=‘0’ELSEd1WHENa=‘0’ANDb=‘1’ELSEd2WHENa=‘1’ANDb=‘0’ELSEd3WHENa=‘1’ANDb=‘1’;ENDsample_1;如果信号类型定义为STD_LOGIC,信号就有9种可能取值,最后应加ELSE‘X’;三、选择信号赋值语句
格式:WITH表达式SELECT
信号名<=信号值1WHEN表达式值1,
信号值2WHEN表达式值2,
……
信号值nWHENOTHERS;例:用选择信号赋值语句描述4路数据选择器ARCHITECTUREsample_2OFmux4_to_1SIGNALS:BIT_VECTOR(1DOWNTO0);BEGINS<=a&b;WITHSSELECTy<=d0WHEN“00”,
d1WHEN“01”,
d2WHEN“10”,
d3WHEN“11”;ENDsample_2;顺序描述语句格式:PROCESS(信号1,……信号k)变量说明(定义);--不能定义信号其它说明;--常量、类型说明等等BEGIN
顺序语句;
……
顺序语句;ENDPROCESS;一、PROCESS语句
PROCESS本身是并行描述语句,但顺序语句一般都要包含在PROCESS语句中。敏感表二、信号和变量赋值语句信号名<=表达式;--同并行赋值语句,不立即起作用变量名:=表达式;--立即起作用三、分支语句1、IF语句1)IF布尔表达式THEN
顺序语句
[ELSE
顺序语句]ENDIF;2)IF布尔表达式THEN
顺序语句
ELSIF
布尔表达THEN
顺序语句
ELSE
顺序语句
ENDIF;四选一数据选择器的行为描述:Libraryieee;Useieee.std_logic_1164.all;entitymux4isport(s:instd_logic_vector(3downto0);en:instd_logic_vector(1downto0);y:outstd_logic);endmux4;
architecturemuxe4ofmux4isbeginprocess(en,s)beginifen=“00”theny<=s(0);elsifen=“01”theny<=s(1);elsifen=“10”theny<=s(2);elsifen=“11”theny<=s(3);elsey<='0';endif;endprocess;endmux4;2、CASE语句
格式:CASE表达式ISWHEN值1=>顺序语句1……WHEN值k=>顺序语句kWHENOTHERS=>顺序语句k+1ENDCASE;例:4选1数据选择器的顺序描述ENTITYmux4_1ISPORT(a,b,i0,i1,i2,i3:INBIT;y:OUTBIT);ENDmux4_1;ARCHITECTUREbehaveOFmux4_1ISSIGNALsel:bit_vector(1DOWNTO0);BEGIN
sel<=b&a;
PROCESS(sel)BEGINCASEselISWHEN“00”=>y<=i0;WHEN“01”=>y<=i1;WHEN“10”=>y<=i2;WHEN“11”=>y<=i3;ENDCASE;ENDPROCESS;ENDbehave;在PROCESS外传送,其变化激励PROCESS的执行四、循环语句
1、FOR循环
格式:标号:FOR变量IN范围LOOP
顺序语句
……
顺序语句
ENDLOOP标号;用NEXT语句可以结束本次循环,EXIT语句可以跳出循环,格式:NEXT标号WHEN条件;EXIT标号WHEN条件;2、WHILE循环
格式:标号:WHILE布尔表达式LOOP
顺序语句
……
顺序语句
ENDLOOP标号;P92、P93例1)FOR语句<循环标号>:FOR<循环变量>IN<范围>LOOP<语句>ENDLOOP<循环标号>;s:=0;L1:foriin1to100loops:=s+i;
Endloopl1;3、循环语句2)WHILE语句<循环标号>:WHILE<条件>LOOP<语句>ENDLOOP<循环标号>;s:=0;i:=1;L1:whilei<=100loops:=s+i;i:=i+1;Endloopl1;3、循环语句结构描述语句一、部件(元件)声明语句格式:COMPONENT部件名
PORT(信号名:类别信号类型;
……
信号名:类别信号类型);
ENDCOMPONENT;实际上只是将相应ENTITY描述中的PORT部分复制过来。二、部件描述语句
COMPONENT语句属于并行语句。也称为实例化语句。使用一次,就在电路中“安装”了一个部件
格式1:标号:部件名PORTMAP(信号名1,信号名2…,信号名n);
标号可以理解为部件在电路中的名称。
PORTMAP说明实际部件上的信号与部件声明中的信号的对应关系。格式1按位置顺序对应。
格式2:标号:部件名PORTMAP(接口信号1=>信号名1,…,接口信号n=>信号名n);
接口信号是ENTITY描述中PORT部分使用的信号名。
信号名是加到当前部件的实际信号名。例:使用前面定义的半加器half_adder描述全加器半加器半加器≥1xycincarrysumh1_sh1_ch2_c原理图ENTITYfull_adderISPORT(x,y,cin:INBIT;--输入信号
sum,carry:OUTBIT);--输出信号ENDfull_adder;ARCHITECTUREf_adderOFfull_adderISCOMPONENThalf_adder--半加器部件声明
PORT(a,b:INBIT;s,c:OUTBIT);ENDCOMPONENT;SINGALh1_s,h1_c,h2_c:BIT;--内部信号,与半加器接口信号对应BEGIN
h1:half_adderPORTMAP(x,y,h1_s,h1_c);--信号映射
h2:half_adderPORTMAP(h1_s,cin,sum,h2_c);carry<=h2_cORh1_c;ENDf_adder;三、重复部件的描述前面的方法是每使用一次部件就使用一次实例化语句。VHDL还有一种类似FOR循环的简单方法。即GENERATE语句。格式:标号:FOR标识符IN范围GENERATECOMPONENT语句
ENDGENERATE;
标识符相当于循环变量。例:8位反相器的结构描述。ENTITYinv_8_bitISPORT(x:INSTD_LOGIC_VECTOR(1TO8);y:OUTSTD_LOGIC_VECTOR(1TO8));ENDinv_8_bit;ARCHITECTUREstructOFinv_8_bitISCOMPONENTinvPORT(i:INSTD_LOGIC;o:OUTSTD_LOGIC);ENDCOMPONENT;BEGIN
u:FORnIN1TO8GENERATEv:invPORTMAP(x(n),y(n));ENDGENERATE;ENDstruct;3.7基本组合逻辑电路的设计举例3.7.1半加器和全加器的设计
半加器的设计
逻辑符号
A、B:加数、被加数S、C:和、进位半加器的设计步骤:
(1)列真值表:(3)化简:已经最简(4)电路图:方案1:(2)写出最小项之和表达式:方案2:方案3:
ENTITYhalf_adderISPORT(a,b:INBIT;--输入信号
s,c:OUTBIT);--输出信号ENDhalf_adder;ARCHITECTUREh_adderOFhalf_adderISSINGALc0,d:BIT;--中间信号BEGINc0<=aORb;d<=aNANDb;c<=NOTd;s<=c0ANDd;ENDh_adder;并行语句依据表达式:半加器的一种VHDL数据流描述:2.全加器的设计
将加数、被加数、低位向该位的进位相加,产生和、向高位的进位的加法器,称全加器(FullAdder,FA)
。
Ai、Bi、
Ci-1
:加数、被加数、低位向该位的进位;
Si、Ci:和、向高位的进位。
全加器的设计过程:
(1)列真值表:(2)“最小项之和”表达式:
Si=∑m(1,2,4,7)Ci=∑m(3,5,6,7)
(3)化简成最简“与-或”式:
(4)电路图:方案一:用“与非”门实现全加器:方案二:用半加器实现全加器:只用一个构造体的逻辑描述一位全加器。
libraryieee;useieee.std_logic_1164.all;entityfull_adderisport(a,b,cin:instd_logic;sum,cout:outstd_logic);endfull_adder;architecturea_adderoffull_adderissignals:std_logic;begins<=axorb;sum<=sxorcin;cout<=(sandcin)or(xandy);enda_adder;全加器的一种VHDL语言结构描述
:ENTITYfull_adderISPORT(x,y,cin:INBIT;--输入信号
sum,carry:OUTBIT);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年12月重庆飞驶特人力资源管理有限公司大足分公司公开招聘派往邮亭镇铁路护路队员公开招聘1人笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 《顺风代驾项目介绍》课件
- 《数学建模概述》课件
- 《诗经》之《无衣》课件
- 2025至2031年中国智能化综合安全防范系统行业投资前景及策略咨询研究报告
- 《跟着节气去探索》课件
- 2025至2031年中国中国结纸吊历行业投资前景及策略咨询研究报告
- 《招贴设计赏析》课件
- 《素养规范标准》课件
- 第一单元第一课 面向未来的职业生涯规划课件
- 20以内进位加法100题(精心整理6套-可打印A4)
- 高中语文统编版(部编版)必修下册第六单元 大单元公开课一等奖创新教学设计
- 技术标(城镇老旧小区改造工程)
- TB10092-2017 铁路桥涵混凝土结构设计规范
- 山东省各地市地图课件
- 2022年4月天津高考英语试题-(第一次)
- LH制造中心组织架构图职能
- 医院重点岗位工作人员轮岗制度
- 2023年通辽市中考数学试卷及答案
- (完整版)牧场物语精灵驿站详细攻略
- 2020年化学品泄漏应急演习报告(含现场图片)
评论
0/150
提交评论