以四位为一组,各位权重为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
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)的首要蕴含项只有红笔勾画出来的一个。因此红笔勾画出来的也是基本首要蕴含项
知道了上述定义,便可以进行卡诺图的化简了。只要找出所有基本首要蕴含项,则剩下项该如何圈就很清楚了。以下述卡诺图为例。
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
以下的所有推导方式均采用德摩根定理。
设F = XY’+X’Y = (X+Y)(X’+Y’)
要求条件
设计方法
首先得明白与非门、或非门的等价形式。如下图所示。由德摩根定理便可轻易推导
那么,知道了这一点,设计一般的最简多级与/或非门电路步骤就很简单了。下面介绍与或式电路化为与非式电路的基本思路,化为或非式电路思路基本一致。
直接给例子。f1、f2为两个输出函数的卡诺图。
如下图所示,图片同样来自《逻辑设计基础(第七版)》,由Charles等人编著,解晓萌等人翻译
下面,我来给大家解释一下(a)是如何找出来的。
利用真值表,确定对函数输入变量的不同组合下的输出结果,这被称为组合电路。(我们之前所谈的都是组合电路)
能够利用时序图分析的电路。(这个问题博主暂时还没有理解深透,请关注后续文章。)
函数最简表达式在一定条件下出现(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变成A’C’+BC+A’B,此时,由于卡诺图中没有相切项,故消除了冒险。验证一下,将A=0,B=1带入得,F=C’+C+1≡1,故确实消除了冒险。
多路选择器有n个数据控制端,2n个数据输入端。可以通过数据控制端来选择输出的数据。下图是MUX的一个例子。同样摘自《逻辑设计基础(第七版)》。后面的图,若非手画,则均摘自本书。
下图利用4选1MUX实现函数 Z=A’C’+A’BD’+AB’D’
上述例子中,需要注意,我们手里的MUX为4选1,因此控制变量需要两个。这里选择控制变量为C、D,因此我们需要将Z凑成以C、D表示最小项的形式。
3-8译码器如图所示
经过观察,可以发现,3-8译码器的输出就是变量a、b、c所对应的2n个最小项。因此,3-8译码器可以通过识别输入,从而选定在该变量条件下数值等于1的最小项。于是,我们便可以利用这一特点,通过写出函数的最小项展开式,并利用译码器予以实现。
博主今天总算稍微明白了什么叫时序电路。
时序电路的特点是输出不仅与现在的输入有关,且与过去的一系列输入也有关,事实上,为了产生当前的输出,这些电路必须能够“记住”过去一段时间内的输入
注意,并不是之前认为的,能够分析时序图**的电路。实际上,任何一个电路都可以分析时序图。
下图是组合电路与时序电路结构框图。
指输入信号变化时,锁存器或者触发器输出端Q的状态。通常用Q表示。
指锁存器或触发器对输入信号做出相应并稳定后输出端Q(次态是稳定后得到的)。通常用Q+表示。
没有时钟输入端的存储单元。保证输出P和输出Q相反。即P’=Q。
Q+=S+R’Q(SR=0)
为什么S=1,R=1不允许?因为当S=1,R=1时,Q=P,与锁存器定义相悖。
(怎么背? 死记硬背吧。不过检查自己是否背对有方法。即检查当S=1或者R=1的情况下,Q+是否为1或者0)
Q+=DG+QG’
(怎么背? 当G=0时,状态保持不变,即G’跟着现态Q;当G=1时,输出应该为D,因此G跟着D)
有时钟输入端,且输出状态只有在时钟信号变化时才变化的存储单元。变化的形式有两种,第一种是沿时钟上升沿;第二种是沿时钟下降沿。
可以用两个D锁存器实现边沿触发器,其原理可以从时序图分析出来。建议读者可以亲自分析一下,以体会其中的原理。
分为沿时钟上升沿触发与下降沿触发。主要的判断方法即为看Ck端有无小圆圈。
Q+=D
Q+=S+R’Q(SR=0)
在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’)
可直接利用D触发器或者J-K触发器实现。
Q+=TQ’+T’Q
(怎么背?让J-K触发器的特征方程中的J=K=T即可)
是T触发器的特例,T=1
Q+=Q’
Q+=CED+CE’Q
(怎么背?CE是一个使能端,和门控D寄存器的背法类似。当CE=0时,输出保持现态Q不变,因此CE’跟着Q;当CE=1时,输出为D,因此CE跟着D)
均可利用卡诺图进行。关键是知道输入方程的形式。例如
寄存器,可以存储信息的电子元件。
共用一个时钟信号的多个D触发器可以构成一组,形成一个寄存器。下面以4位寄存器为例。其中,Load是载入使能,表明是否写入数据;ClrN是异步清零端;CLK是时钟信号。
上图位带累加的并行加法器。如图所示,当时钟上升沿到来时,xi+=xi+yi,是不是和C语言我们常用的累加语句很像?对了,就是这样实现的。不过,就像C语言一样,累加之前需要对xi赋初值。赋初值的操作有如下两种。
利用异步清零端将累加器清零。然后将初值yi送入累加器。
修改电路模式,不需要在进行异步清零操作。
如图所示,当Ad=1,Ld=1时,yi在时钟上升沿到来时被送进累加器中,实现了赋初值的操作;当Ad=1,Ld=0时,便可进行累加操作xi+=xi+yi
原理很简单,当时钟沿到来时,4个D触发器同时接受前一级的输出。就相当于数据往右移了一位。
按照固定状态序列循环的电路。
一般步骤
首先,输出函数我们常常用λ表示,次态函数我们常常用δ表示。下面约定X表示输入值。
时序电路的输出只是现态的函数,即Z=λ(Q);另外,其次态仍与输入X及现态Q有关,即Q+=δ(X,Q)。
时序电路的输出是现态和输入的函数,即Z=λ(X,Q);其次态仍与输入X及现态Q有关,即Q+=δ(X,Q)。
形如下面表格的称为状态转换表
形如下图(摘自我自己的博客)的为状态转换图
从上图可以看出,输出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 |
若Si(i=0,1……n)两两相容,则(Si)为兼容类。最大兼容类即n最大得兼容类。可以利用图形法找最大兼容类。
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 |
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 |
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 |
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 |
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
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’
A/B | 0 | 1 |
---|---|---|
0 | 0 | 0 |
1 | 1 | 1 |
利用卡诺图计算得:Z = A’
综上,所得电路为:
2. 利用T触发器设计
T触发器的次态方程为Q+=T⊕Q,状态转换表为:
绘制次态和T的卡诺图
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 |
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’
A/B | 0 | 1 |
---|---|---|
0 | 0 | 0 |
1 | 1 | 1 |
题目:最大长度的移位寄存器型计数器的计数长度为?
题解:《数字逻辑设计(第七版)》P303页提到,对于每个整数n,都存在一个位的先行以为计数器可以循环长度为 2n-1的计数序列
题目:什么是空翻现象?
题解:在一个时钟周期内,触发器的状态改变多次,这种现象称为空翻现象。空翻现象产生的原因是因为触发器由电平触发,改用时钟边沿触发可以解决该问题。
题目:CP为1时,主从JK触发器主触发器的状态只能变化一次,这种现象被称为什么?
题解:一次性反转现象
逻辑代数又被称为布尔代数,最基本的逻辑关系有或、与、非。常用的几种导出的逻辑运算为:与非、或非、与或非、与或、或与、同或、异或
德摩根定律又叫反演定律
逻辑代数的三个重要规则是:代入规则、反演规则、对偶规则
分析数字电路的主要工具是逻辑代数,数字电路又叫做逻辑电路
逻辑函数的表示方式是:逻辑函数式、真值表、逻辑框图
若时钟沿与输入沿重合,那么读取输入时,应读取输入时钟沿前一点的值。