数字逻辑复习记录
编码
8421BCD码
以四位为一组,各位权重为8421。
例如
24的8421BCD码为 0010 0100
余三码
在8421BCD码的基础上加3(0011).
例如
求二进制10000011的余三码
1.首先,应该先把二进制10000011转化为8421BCD码,该步骤分为两步进行
- 将10000011转化为十进制数,即3+1*2^7 = 131
- 131的BCD码为0001 0011 0001
2.将BCD码按位转换为余三码
即
0001 0011 0001
+ 0011 0011 0011
————————————————
0100 0110 0100
3.综上,10000011的余三码为 0100 0110 0100
典型格雷码
给出典型各类码表格
计算法
类卡诺图法
布尔代数
重要定律
- 0 – 1律
1. X+0=X Dual: X*1=X
2. X+1=1 Dual: X*0=X
- 重叠律
3. X+XY=X Dual: X(X+Y)=X
- 还原律
4. (X')'=X
- 互补定律
5. X+X'=1 Dual: XX'=0
- 交换律
6. X+Y=Y+X Dual: XY=YX
- 结合律
7. X+Y+Z=(X+Y)+Z=X+(Y+Z) Dual: XYZ=(XY)Z=X(YZ)
- 分配律
8. X(Y+Z)=XY+XZ Dual: X+YZ=(X+Y)(X+Z)
- 德摩根定律
9. (X+Y)'=X'Y' Dual: (XY)'= X'+Y'
对偶式介绍
若等式出现数字0、1,则互换;因数(literal)不变,乘号变加号、加号变乘号
更加深入
- 合并律
10. XY'+XY=X Dual: (X+Y')(X+Y)=X
- 吸收律
11. X+XY=X Dual: X(X+Y)=X
- 消除律
12. X+X'Y=X+Y Dual: X(X'+Y)=XY
证明:
方法一:从Dual推导
方法二:由分配律的Dual形式知X+X'Y=(X+X')(X+Y)=X+Y
- 蕴含律
13. XY+X'Z+YZ=XY+X'Z Dual: (X+Y)(X'+Z)(Y+Z)=(X+Y)(X'+Z)
证明:
YZ=X'YZ+XYZ
- 展开和因式分解定律
15. (X+Y)(X'+Z)=XZ+X'Y Dual: XY+X'Z=(X+Z)(X'+Y)
最小项与最大项
最小项
真值表第i行以乘积形式表示,满足正逻辑,1为变量,0为反变量,用mi表示
最小项展开式
输出值f为1的行的最小项之和。
最大项
真值表第i行以和的形式表示,满足负逻辑,0为变量,1为反变量,用Mi表示
最大项展开式
输出值f为0的最大项之积,
以一个表格举例
编号 | A B C | 最小项 | 最大项 | f值 |
---|---|---|---|---|
0 | 0 0 0 | A’B’C’=m0 | A+B+C=M0 | 1 |
1 | 0 0 1 | A’B’C=m1 | A+B+C’=M1 | 1 |
2 | 0 1 0 | A’BC’=m2 | A+B’+C=M2 | 1 |
3 | 0 1 1 | A’BC=m3 | A+B’+C’=M3 | 1 |
4 | 1 0 0 | AB’C’=m4 | A’+B+C=M4 | 0 |
5 | 1 0 1 | AB’C=m5 | A’+B+C’=M5 | 0 |
6 | 1 1 0 | ABC’=m6 | A’+B’+C=M6 | 1 |
7 | 1 1 1 | ABC=m7 | A’+B’+C’=M7 | 0 |
最小项展开式为:f = m0 + m1 + m2 + m3 + m6
最大项展开式为:f = M4 + M5 + M7
性质
-
任意最小项取反为最大项,即 (mi)’ = Mi
-
所有最小项之和为1
-
所有最大项之积为0
-
一部分最小项之和的反等于其所有最小项之和
证明:先取定一组ABC值
这时,有且仅有一个最小项的值等于1。如果性质所给的一部分最小项之和包含了这个等于1的最小项,那么和为1,又剩下的所有最小项之和为0,所以性质成立;同理,如果性质所给的一部分最小项之和没有包含了这个等于1的最小项,那么和为0,又剩下的所有最小项之和为1,所以性质成立
-
不同最小项之积为0
-
不同最大项之和为1
上面两条性质的证明类似第四点证明
一个关于最大项和最小项例子
由性质1知
若f的最小项展开为
f = m0 + m1 + m2
则f的最大项展开为
f = M3*M4*M5*M6*M7
则f'的最小项展开为
f = (M3*M4*M5*M6*M7)' = m3 + m4 + m5 + m6 + m7
f'的最大项展开为
f = (m0 + m1 + m2)' = M0*M1*M2
有无关项的展开式
若表格是这样的
编号 | A B C | 最小项 | 最大项 | f值 |
---|---|---|---|---|
0 | 0 0 0 | A’B’C’=m0 | A+B+C=M0 | 1 |
1 | 0 0 1 | A’B’C=m1 | A+B+C’=M1 | 1 |
2 | 0 1 0 | A’BC’=m2 | A+B’+C=M2 | 1 |
3 | 0 1 1 | A’BC=m3 | A+B’+C’=M3 | X |
4 | 1 0 0 | AB’C’=m4 | A’+B+C=M4 | 0 |
5 | 1 0 1 | AB’C=m5 | A’+B+C’=M5 | 0 |
6 | 1 1 0 | ABC’=m6 | A’+B’+C=M6 | X |
7 | 1 1 1 | ABC=m7 | A’+B’+C’=M7 | 0 |
最小项展开式为:f = m0 + m1 + m2 + d3 + d6
最大项展开式为:f = M4 + M5 + M7
卡诺图
卡诺图是求解最简积之和式(SOP)和和之积式(POS)的神兵利器。
蕴含项
任何在函数F的卡诺图上的单个1或者一组可以合并在一起的1都代表一个蕴含项。
首要蕴含项
局部最大的蕴含项。
基本首要蕴含项
某个最小项只能被一个首要蕴含项覆盖,则称该首要蕴含项为基本首要蕴含项。为什么要强调基本这个概念,是因为,基本首要蕴含项一定会构成最简积之和式或者最简和之积式。
一个例子
如图所示,蓝笔和红笔勾画出来的都是蕴含项,而其中,因为红笔勾画出来的是局部最大的蕴含项,所以它是是首要蕴含项。由于覆盖最小项m0(或者m1,m2,m3)的首要蕴含项只有红笔勾画出来的一个。因此红笔勾画出来的也是基本首要蕴含项
列表法求解基本首要蕴含项
- Step1 – 找到所有首要蕴含项
红笔勾画的均为首要蕴含项。因为它们均是局部最大的蕴含项。 - Step2 – 列表法找到基本首要蕴含项
如下图所示列表
由于基本首要蕴含式要保证无某个最小项只能被一个首要蕴含项覆盖,则需找只有一个X的列,首先自然就是m0这一列,因此,A’C’是我们的首要蕴含项,它蕴涵了m0、m1、m4、m5,因此将第一行的m5与第二行的m5连起来。接着重复这个步骤,直到所有X都被线连接。其中,长横线所对应的行就是我们需要的基本蕴含项。
当然,注意这里,我们一般用不到这种方法,很多时候我们能够直接看出基本首要蕴含项。
利用卡诺图化简得到最简表达式
知道了上述定义,便可以进行卡诺图的化简了。只要找出所有基本首要蕴含项,则剩下项该如何圈就很清楚了。以下述卡诺图为例。
CD/AB | 00 | 01 | 11 | 10 |
---|---|---|---|---|
00 | 0 | 0 | 0 | 0 |
01 | 0 | 1 | 1 | 0 |
11 | 1 | 1 | 1 | 1 |
10 | 1 | 0 | 1 | 1 |
其基本首要蕴含项被我用红笔勾出。用以判断的最小项被我用蓝笔画出。
因此,该卡诺图化简出的最简结果是
F=BD+B’C+AC
多级门电路
8种不同的两级门电路
以下的所有推导方式均采用德摩根定理。
设F = XY’+X’Y = (X+Y)(X’+Y’)
- 利用积之和式推导(SOP)F = [(XY’+X’Y)’]'
- 与非-与非式
F = [(XY’)’*(X’Y)’]' - 或与-非式
F = [(X’+Y)*(X+Y’)]' - 或非-或式
F = (X’+Y)’ + (X+Y’)' - 与-或式
F = XY’+X’Y
- 与非-与非式
- 利用和之积式推导(POS)F = [ [(X+Y)(X’+Y’)]’]'
- 或非-或非式
F = [ (X+Y)’+(X’+Y’)’]' - 与或-非式
F = [ X’Y’+XY]' - 与非-与式
F = (X’Y’)’*(XY)' - 或-与式
F = (X+Y)(X’+Y’)
- 或非-或非式
设计最简两级与非-与非电路步骤
- 利用卡诺图(或者前面章节说的布尔代数定律)找出F的最简积之和式
- 根据最简积之和式画出对应的两级与-或电路
- 用与非门代替所有的门,并保留原有门的相互连接不变。若输出门有任何作为输入的单个变量,则将这些变量取反
以一例示之
右图即为结果
设计最简两级或非-或非电路步骤
- 利用卡诺图(或者前面章节说的布尔代数定律)找出F的最简和之积式
- 根据最简积之和式画出对应的两级或-与电路
- 用或非门代替所有的门,并保留原有门的相互连接不变。若输出门有任何作为输入的单个变量,则将这些变量取反
设计特殊的最简多级与/或非门电路步骤
要求条件
- 利用卡诺图(或者前面章节说的布尔代数定律)化简
- 结果为与、或门交替排列。或门输出连接到与门的输入;与门的输出连接到或门的输入
设计方法
- 每两级为一组,按照前述设计两级与/或非门电路方式进行即可
设计一般的最简多级与/或非门电路步骤
首先得明白与非门、或非门的等价形式。如下图所示。由德摩根定理便可轻易推导
那么,知道了这一点,设计一般的最简多级与/或非门电路步骤就很简单了。下面介绍与或式电路化为与非式电路的基本思路,化为或非式电路思路基本一致。
- 化简电路,化简为与或式电路。
- 将所有的与门加圈变成与非门,所有的或门加圈变成与非门(如上图第一个箭头所示)
- 最后,添加反相器,将加入的所有不成对出现的圈圈效果抵消掉。
如下图所示,图片来自《逻辑设计基础(第七版)》,由Charles等人编著,解晓萌等人翻译
两输出电路的基本首要蕴含项的确定
直接给例子。f1、f2为两个输出函数的卡诺图。
如下图所示,图片同样来自《逻辑设计基础(第七版)》,由Charles等人编著,解晓萌等人翻译
下面,我来给大家解释一下(a)是如何找出来的。
- 寻找两张卡诺图中相互不覆盖的1
- 这些相互不覆盖的1会有一个首要蕴含项,这种首要蕴含项就是两输出函数的基本首要蕴含项。
- 确定了基本首要蕴含项后,再评估abcd项的圈法,即可容易得到答案(a)为最优解。
时序图与冒险
什么是组合电路?
利用真值表,确定对函数输入变量的不同组合下的输出结果,这被称为组合电路。(我们之前所谈的都是组合电路)
什么是时序电路?
能够利用时序图分析的电路。(这个问题博主暂时还没有理解深透,请关注后续文章。)
什么是冒险?
静态1冒险
如上图所示
静态0冒险
如上图所示
动态冒险
如上图所示
冒险产生的条件
函数最简表达式在一定条件下出现(X’+X)或者X’*X。
例如,F=AB’+BC
当A=C=1时,F=B’+B,则说函数F所对应的电路有静态1冒险。
原理如图所示。
在图中红色圈圈定的地方,由于变化并非瞬时的,因此,B+B’在一段时间内会变为0,这也是为什么说冒险是电路自身的特性,与电路中存在的延迟无关的原因了
如何利用卡诺图来判断冒险?
寻找相切点。例如,某一个函数为的最简积之和式为
F=A’C’+BC,则其卡诺图如下图所示
这里,相切点为m5和m7以及m4和m6。故说明该电路存在冒险。
如何判断是哪种类型的静态冒险?
- 方法一:注意到函数F为和之积式,故为静态1冒险。
- 方法二:主要到相切点m5和m7以及m4和m6均为1,故为静态1冒险。
如何判断是哪一个变量变化引起的冒险?
- 对于m5和m7
观察到其ABD变量均不发生改变,只有C发生改变,故是因为C变化引起的冒险。这里,A=0、B=D=1,此时,F=C+C’,这也进一步说明了冒险产生的条件 - 对于m4和m6
同理,这里,A=D=0、B=1,此时,F=C+C’,故是因为C变化引起的冒险。
如何消除冒险?
原理很简单:消除相切项。如下图所示。
添加蓝笔勾画的项后,函数F变成A’C’+BC+A’B,此时,由于卡诺图中没有相切项,故消除了冒险。验证一下,将A=0,B=1带入得,F=C’+C+1≡1,故确实消除了冒险。
多路选择器(MUX)
多路选择器有n个数据控制端,2n个数据输入端。可以通过数据控制端来选择输出的数据。下图是MUX的一个例子。同样摘自《逻辑设计基础(第七版)》。后面的图,若非手画,则均摘自本书。
利用MUX表示逻辑函数
下图利用4选1MUX实现函数 Z=A’C’+A’BD’+AB’D’
上述例子中,需要注意,我们手里的MUX为4选1,因此控制变量需要两个。这里选择控制变量为C、D,因此我们需要将Z凑成以C、D表示最小项的形式。
3-8译码器
3-8译码器如图所示
经过观察,可以发现,3-8译码器的输出就是变量a、b、c所对应的2n个最小项。因此,3-8译码器可以通过识别输入,从而选定在该变量条件下数值等于1的最小项。于是,我们便可以利用这一特点,通过写出函数的最小项展开式,并利用译码器予以实现。
利用译码器实现逻辑函数
这里利用4-10译码器实现了两输出逻辑函数:
- f1=m1 +m2+m4
- f2=m4+m7+m9
锁存器与寄存器
什么是时序电路?
博主今天总算稍微明白了什么叫时序电路。
时序电路的特点是输出不仅与现在的输入有关,且与过去的一系列输入也有关,事实上,为了产生当前的输出,这些电路必须能够“记住”过去一段时间内的输入
注意,并不是之前认为的,能够分析时序图**的电路。实际上,任何一个电路都可以分析时序图。
下图是组合电路与时序电路结构框图。
现态
指输入信号变化时,锁存器或者触发器输出端Q的状态。通常用Q表示。
次态
指锁存器或触发器对输入信号做出相应并稳定后输出端Q(次态是稳定后得到的)。通常用Q+表示。
锁存器
没有时钟输入端的存储单元。保证输出P和输出Q相反。即P’=Q。
S-R锁存器
门电路图
电路逻辑符号
特征方程
Q+=S+R’Q(SR=0)
为什么S=1,R=1不允许?因为当S=1,R=1时,Q=P,与锁存器定义相悖。
(怎么背? 死记硬背吧。不过检查自己是否背对有方法。即检查当S=1或者R=1的情况下,Q+是否为1或者0)
门控D锁存器
门电路图
电路逻辑符号
特征方程
Q+=DG+QG’
(怎么背? 当G=0时,状态保持不变,即G’跟着现态Q;当G=1时,输出应该为D,因此G跟着D)
触发器
有时钟输入端,且输出状态只有在时钟信号变化时才变化的存储单元。变化的形式有两种,第一种是沿时钟上升沿;第二种是沿时钟下降沿。
边沿D触发器
门电路图
可以用两个D锁存器实现边沿触发器,其原理可以从时序图分析出来。建议读者可以亲自分析一下,以体会其中的原理。
电路逻辑符号
分为沿时钟上升沿触发与下降沿触发。主要的判断方法即为看Ck端有无小圆圈。
特征方程
Q+=D
S-R触发器
门电路图
可以利用主从S-R锁存器实现,原理如时序图。
电路逻辑符号
特征方程
Q+=S+R’Q(SR=0)
J-K触发器
门电路图
在S-R门电路图的基础上,将S变成符号J,R变成符号K。然后将输出Q’接到S所在的与门上;将输出Q接到R所在的与门上。
电路逻辑符号
特征方程
Q+=JQ’+K’Q
(怎么背?首先需要记清楚S-R触发器的特征方程Q+=S+R’Q(SR=0),然后将S变成J,R变成K,在J后面乘上Q’)
T触发器
门电路图
可直接利用D触发器或者J-K触发器实现。
电路逻辑符号
特征方程
Q+=TQ’+T’Q
(怎么背?让J-K触发器的特征方程中的J=K=T即可)
T’触发器
是T触发器的特例,T=1
特征方程
Q+=Q’
D-CE触发器
门电路图
电路逻辑符号
特征方程
Q+=CED+CE’Q
(怎么背?CE是一个使能端,和门控D寄存器的背法类似。当CE=0时,输出保持现态Q不变,因此CE’跟着Q;当CE=1时,输出为D,因此CE跟着D)
触发器的转换
均可利用卡诺图进行。关键是知道输入方程的形式。例如
- 单输入方程转换(例如D、T触发器)
- 转换为S-R触发器
f = (S, R, Q) - 转换为J-K触发器
f = (J, K, Q) - 转换为D触发器
f = (D, Q) - 转换为T触发器
f = (T, Q)
- 两输入方程转换(例如S-R、J-K触发器)
- 转换为S-R触发器
f1 = (S, R, Q)
f2 = (S, R, Q) - 转换为J-K触发器
f1 = (J, K, Q)
f2 = (J, K, Q) - 转换为D触发器
f1 = (D, Q)
f2 = (D, Q) - 转换为T触发器
f1 = (T, Q)
f2 = (T, Q)
下图是将T触发器转换为J-K触发器的例子
寄存器
寄存器,可以存储信息的电子元件。
4位寄存器
共用一个时钟信号的多个D触发器可以构成一组,形成一个寄存器。下面以4位寄存器为例。其中,Load是载入使能,表明是否写入数据;ClrN是异步清零端;CLK是时钟信号。
利用门电路实现具有Load和异步清零功能的4位寄存器
该方法的弊端是与门具有延时
利用时钟使能实现具有Load和异步清零功能的4位寄存器
带累加器的并行加法器
上图位带累加的并行加法器。如图所示,当时钟上升沿到来时,xi+=xi+yi,是不是和C语言我们常用的累加语句很像?对了,就是这样实现的。不过,就像C语言一样,累加之前需要对xi赋初值。赋初值的操作有如下两种。
第一种赋初值操作
利用异步清零端将累加器清零。然后将初值yi送入累加器。
第二种赋初值操作
修改电路模式,不需要在进行异步清零操作。
如图所示,当Ad=1,Ld=1时,yi在时钟上升沿到来时被送进累加器中,实现了赋初值的操作;当Ad=1,Ld=0时,便可进行累加操作xi+=xi+yi
移位寄存器
基本的右移寄存器
原理很简单,当时钟沿到来时,4个D触发器同时接受前一级的输出。就相当于数据往右移了一位。
能够实现左移右移的寄存器
不要被电路吓到了。且听我慢慢分析。
- A=0,B=0时,保持不变。
2-4多路选择器选择00端。而这个时候可以看出Q+i=Qi,故此时输出保持不变。 - A=1,B=1时,装载数据。
2-4多路选择器选择11端。这个时候,相当于是将D3、D2、D1、D0送进D触发器中保存起来。 - A=0,B=1时,右移寄存器。
2-4多路选择器选择01端。我们去掉那些繁杂的线,眼睛里只有01,那么现在的图是不是就和上面的右移寄存器一毛一样啦。
- A=1,B=0时,左移寄存器。
原理很简单。就是让后一级的D触发器输出接到前一级D触发器的输入上。当然,最后一级D触发器应该有一个初始序列输入SI。跟着下面的线走,就会发现非常简单了。
计数器
什么是计数器?
按照固定状态序列循环的电路。
利用T触发器设计计数器
- 知道T触发器的状态转移表
- 画出状态转换表,并根据T触发器的状态转移表求出对应输入T的值
- 画出输入T对应的卡诺图
- 利用卡诺图求出T的输入方程
利用D触发器设计计数器
- 知道D触发器的状态转移表
- 画出状态转换表,并根据D触发器的状态转移表求出对应输入D的值
- 画出输入D对应的卡诺图
- 利用卡诺图求出D的输入方程
利用S-R触发器设计计数器
- 知道S-R触发器的状态转移表
- 画出状态转换表,并根据S-R触发器的状态转移表求出对应输入S-R的值
- 画出输入S-R对应的卡诺图
- 利用卡诺图求出S-R的输入方程
利用J-K触发器设计计数器
- 知道J-K触发器的状态转移表
- 画出状态转换表,并根据J-K触发器的状态转移表求出对应输入J-K的值
- 画出输入J-K对应的卡诺图
- 利用卡诺图求出J-K的输入方程
总结
各类触发器的特征方程
利用触发器设计计数器一般步骤
- 知道触发器的状态转移表
- 画出状态转换表,并根据触发器的状态转移表求出对应输入触发器的值
- 画出触发器的输入对应的卡诺图
- 利用卡诺图求出触发器的输入方程
时序电路分析
一般步骤
- 列出输入方程
- 列出次态方程(异步时序电路需要标注时钟沿,同步时序电路则不需)
- 列出输出方程
- 画出状态转换表
- 画出状态转换图
- 得出结论
序列奇偶校验器
- 若采用奇校验序列,则当序列是奇数个1时,输出为1;否则输出为0
- 若采用偶校验序列,则当序列是偶数个1时,输出为1;否则输出为0
注意:别管什么“奇偶校验位”,那玩意儿容易把人搞晕,就像上面这么记就正确
信号跟踪与时序图分析
首先,输出函数我们常常用λ表示,次态函数我们常常用δ表示。下面约定X表示输入值。
Moore机
时序电路的输出只是现态的函数,即Z=λ(Q);另外,其次态仍与输入X及现态Q有关,即Q+=δ(X,Q)。
Mealy机
时序电路的输出是现态和输入的函数,即Z=λ(X,Q);其次态仍与输入X及现态Q有关,即Q+=δ(X,Q)。
状态转换表与状态转换图
什么是状态转换表/图?
形如下面表格的称为状态转换表
形如下图(摘自我自己的博客)的为状态转换图
如何建立状态转换表?
- 给定一个电路,首先确定输入、输出方程
- 根据触发器类型确定触发器次态方程
- 根据触发器次态方程确定状态转换表
- 根据状态转换表确定状态转换图
- Moore机
输出Z与状态Q写在代表状态的圈圈里,输入X写在边上。如下图所示。
- Mealy机
输出Z与X写在边上,通常以X/Z的格式书写。状态Q写在代状态的圈圈里,如下图所示。
- 二者异同
区别在于Moore机输出变化时只有在时钟沿到来时,而Mealy机输出的变化很根据现态以及输入。也就是说,Mealy机的输出可以实时响应X的变化,而不必等待时钟沿的到来;
共同点在于不管是Moore机还是Mealy机,它们的状态改变都发生在时钟沿到来之时;
- Moore机
时序电路通用模型
Moore型
从上图可以看出,输出Z只与现态Q有关。
Mealy型
从上图可以看出,输出Z不仅与现态Q有关,同时也与输入X有关。
状态表的化简
状态等价的定义
如果一个时序电路的两个状态为p和q,若果对每单个输入X,输出是相同的且它们的次态是等价的,那么这两个状态等价。也就是说,满足状态等价首先要满足输出相同;其次再看该状态的次态是否等价。
两状态等价条件
如前文所述,两首先满足输出相同。判断次态是否等价的性质如下:
- 两个次态完全相同
Q | Q+ | Z |
---|---|---|
a | c | 1 |
b | c | 1 |
- 次态与现态完全相同
Q | Q+ | Z |
---|---|---|
a | a | 1 |
b | b | 1 |
- 次态与现态交错出现
Q | Q+ | Z |
---|---|---|
a | b | 1 |
b | a | 1 |
- 形成封闭链
Q | Q+ | Z |
---|---|---|
a | c | 1 |
b | d | 1 |
c | a | 0 |
d | b | 0 |
这里,a和b是否等价取决于c和d是否等价,而c和d是否等价取决于a和b是否等价,构成封闭链,故a和b等价,c和d等价
蕴含表法(掐头去尾、横排竖列)
以下面这个状态转换表为例。
Q | Q+ | Z |
---|---|---|
a | c | 1 |
b | d | 1 |
c | a | 1 |
d | b | 1 |
e | e | 0 |
f | f | 1 |
其蕴含表为
图中有四队状态封闭链。
- a和b是否等价取决于c和d是否等价,而c和d是否等价取决于a和b是否等价,故a与b等价,c与d等价;
- a和d是否等价取决于c和b是否等价,而c和b是否等价取决于a和d是否等价,故a与d等价,c与b等价;
- a和f是否等价取决于c和f是否等价,而c和f是否等价取决于a和f是否等价,故a与f等价,c与f等价;
- b和f是否等价取决于d和f是否等价,而d和f是否等价取决于b和f是否等价,故b与f等价,d与f等价;
综上,a≡b≡d≡f≡c
不完全定义的状态表化简
最大兼容类
若Si(i=0,1……n)两两相容,则(Si)为兼容类。最大兼容类即n最大得兼容类。可以利用图形法找最大兼容类。
不完全定义的状态表化简步骤
- 利用蕴含表法找到相容对;
- 利用图形法找到最大兼容类;
- 找到最小闭合覆盖集
- 首先 ,利用最大兼容类和相容对寻找最小覆盖集,最小覆盖集需要包含状态表中的所有状态
- 其次,寻找最小闭合覆盖集。令X=0和X=1,观察各自情况下的次态集合。如果它们均包含于选取的最大兼容类或相容对,则这个最小覆盖集为最小闭合覆盖集。
如下图所示
- 化简不完全定义的状态表,其中不确定项X可以按需代表任意值;
时序电路设计举例
题一
- Step1 – 定义状态
X1X2 | Z | State |
---|---|---|
00 | 0 | S0 |
00 | 1 | S1 |
01 | 0 | S2 |
01 | 1 | S3 |
11 | 0 | S4 |
11 | 1 | S5 |
10 | 0 | S6 |
10 | 1 | S7 |
- Step2 – 绘制状态转换表/图
X1X2=00 | X1X2=01 | X1X2=11 | X1X2=10 | ||
---|---|---|---|---|---|
Q | Q+ | Q+ | Q+ | Q+ | Z |
S0 | S0 | S2 | S4 | S6 | 0 |
S1 | S1 | S3 | S5 | S7 | 1 |
S2 | S0 | S2 | S4 | S6 | 0 |
S3 | S0 | S3 | S5 | S7 | 1 |
S4 | S1 | S2 | S4 | S6 | 0 |
S5 | S1 | S3 | S5 | S7 | 1 |
S6 | S1 | S2 | S4 | S6 | 0 |
S7 | S0 | S3 | S5 | S7 | 1 |
- Step3 – 状态表化简
可以很容易地发现,S0≡S2,S4≡S6,S1≡S5,S3≡S7
于是,接下来令
G0 = {S0,S2}
G1 = {S4,S6}
G2 = {S1,S5}
G3 = {S3,S7}
于是,状态表可化简为
X1X2=00 | X1X2=01 | X1X2=11 | X1X2=10 | ||
---|---|---|---|---|---|
Q | Q+ | Q+ | Q+ | Q+ | Z |
G0 | G0 | G0 | G1 | G1 | 0 |
G1 | G2 | G0 | G1 | G1 | 0 |
G3 | G0 | G3 | G2 | G3 | 1 |
G2 | G2 | G3 | G2 | G3 | 1 |
- Step4 – 状态编码
定义编码表
0 | 1 | |
---|---|---|
0 | G0 | G1 |
1 | G2 | G3 |
即
G0:00
G1:01
G2:10
G3:11
设G=AB于是状态转换表可化为
X1X2=00 | X1X2=01 | X1X2=11 | X1X2=10 | ||
---|---|---|---|---|---|
AB | A+B+ | A+B+ | A+B+ | A+B+ | Z |
00 | 00 | 00 | 01 | 01 | 0 |
01 | 10 | 00 | 01 | 01 | 0 |
11 | 00 | 11 | 10 | 11 | 1 |
10 | 10 | 11 | 10 | 11 | 1 |
- Step5 – 利用D/T触发器设计实现电路
这里有4个状态编码,一个触发器只能编码两种状态,故应该用两个触发器。
- 利用D触发器设计
首先D触发器得次态方程为:Q+=D, 所以A+=DA,B+=DB。下面绘制A+、B+以及Z的卡诺图:
- A+
AB/X1X2 | 00 | 01 | 11 | 10 |
---|---|---|---|---|
00 | 0 | 0 | 0 | 0 |
01 | 1 | 0 | 0 | 0 |
11 | 0 | 1 | 1 | 1 |
10 | 1 | 1 | 1 | 1 |
利用卡诺图计算得:DA=A+ = AB’+A * X2 + A’B * X1 * X2 + A* X1
- B+
AB/X1X2 | 00 | 01 | 11 | 10 |
---|---|---|---|---|
00 | 0 | 0 | 1 | 1 |
01 | 0 | 0 | 1 | 1 |
11 | 0 | 1 | 0 | 1 |
10 | 0 | 1 | 0 | 1 |
利用卡诺图计算得:DB=B+ = A * X1’ * X2 + A’ * X1 + X1 * X2’
- Z
A/B | 0 | 1 |
---|---|---|
0 | 0 | 0 |
1 | 1 | 1 |
利用卡诺图计算得:Z = A’
综上,所得电路为:
2. 利用T触发器设计
T触发器的次态方程为Q+=T⊕Q,状态转换表为:
绘制次态和T的卡诺图
- A+
AB/X1X2 | 00 | 01 | 11 | 10 | 00/TA | 01/TA | 11/TA | 10/TA |
---|---|---|---|---|---|---|---|---|
00 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
01 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
11 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 |
10 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
由TA的卡诺图计算得:TA=X1’ * X2’ *B
- B+
AB/X1X2 | 00 | 01 | 11 | 10 | 00/TB | 01/TB | 11/TB | 10/TB |
---|---|---|---|---|---|---|---|---|
00 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 |
01 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 |
11 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 0 |
10 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |
由TB的卡诺图计算得:TB=X1’ * X2’ B + A’B * X1’ + AB’ X1’* X2 + A’B’ * X1 +
X1 * X2’ * B’
- Z
A/B | 0 | 1 |
---|---|---|
0 | 0 | 0 |
1 | 1 | 1 |
利用卡诺图计算得:Z = A’
综上,所得电路为:
更多题目等博主以后闲得不能再闲了再说吧——可以再续
踩坑一
题目:最大长度的移位寄存器型计数器的计数长度为?
题解:《数字逻辑设计(第七版)》P303页提到,对于每个整数n,都存在一个位的先行以为计数器可以循环长度为 2n-1的计数序列
踩坑二——空翻现象
题目:什么是空翻现象?
题解:在一个时钟周期内,触发器的状态改变多次,这种现象称为空翻现象。空翻现象产生的原因是因为触发器由电平触发,改用时钟边沿触发可以解决该问题。
踩坑三——一次性反转
题目:CP为1时,主从JK触发器主触发器的状态只能变化一次,这种现象被称为什么?
题解:一次性反转现象
踩坑四——概念1
逻辑代数又被称为布尔代数,最基本的逻辑关系有或、与、非。常用的几种导出的逻辑运算为:与非、或非、与或非、与或、或与、同或、异或
踩坑五——德摩根定律
德摩根定律又叫反演定律
踩坑六——逻辑代数的三个重要规则
逻辑代数的三个重要规则是:代入规则、反演规则、对偶规则
踩坑七——概念2
分析数字电路的主要工具是逻辑代数,数字电路又叫做逻辑电路
踩坑八——逻辑函数的表示方式
逻辑函数的表示方式是:逻辑函数式、真值表、逻辑框图
踩坑九——输入读取
若时钟沿与输入沿重合,那么读取输入时,应读取输入时钟沿前一点的值。
踩坑十——OC门
OC门需要外加电阻才能实现线与。