数字逻辑笔记
第一章 数制系统与转换
数字系统 Big Picture
数字系统与模拟系统的差异:数字系统有更高的精确度和可靠性,数字系统是离散量,而模拟系统是连续量,数字系统在设计范围内无误差,而模拟系统会有精度导致的误差,且数字系统可以重新设计以适应要求,比如处理更多数字位数,而模拟系统在精度方面改进是几乎不可能的。
数字系统设计大体分为3个部分:系统设计,逻辑设计,电路设计。
系统设计:涉及将整个系统划分成若干子系统并确定每个子系统的特性。
逻辑设计:涉及如何将基本的逻辑功能块互连起来以实现特定的功能。ep:将逻辑门和触发器互连形成二进制加法器。
电路设计:涉及如何确定特定部件之间的连接。ep:连接寄存器,二极管和晶体管形成门电路。
数字系统中的许多子系统以开关电路形式出现,开关电路具有一个或多个输入端,一个或多个输出端,输入端和输出端都取离散值。
本课程将学习两种类型开关电路:组合电路和时序电路。
组合电路类似于Markov性质,输出值仅与当前的输入值有关,而时序电路和历史的值也有关。
构成组合电路的基本功能块是逻辑门,具体而言,组合逻辑电路的涉及如下:
- 推导出一个真值表或代数化的逻辑等式,该真值表或逻辑等式可以把电路输出描述为电路输入的一个函数(布尔代数理论数学化)
- 为了经济地实现此电路,利用各种方法进行化简(代数化简,卡诺图化简等)
- 利用几种门电路实现化简过的逻辑等式
(未完ing…)
数制系统与转换
主要是两个数制系统转化:
- k进制和m进制间的互换(包括小数)
- 2进制,4进制,8进制,16进制间的快速互换
第一种常采取k进制->10进制->m进制的方法,详见P6,7。
第二种就是划分合并(从小数点开始向左右,注意补位) or 拆分。
二进制乘法和除法 P9,10
二进制利用补码进行加减法 P12
二进制编码:BCD码(有权码),余3码(无权码),格雷码(无权码)
第二&三章 布尔代数
布尔运算和集合运算相似的原因:就运算而言,集合蕴含的信息是 某个元素是否存在,对于每个元素,只能是存在or不存在,对应于位向量的0,1,因此位向量所含的信息也可以理解为 某个元素是否存在。
因式分解及展开
和之积与积之和之间转换。
普通分布定律说明了与运算可以分布与或运算上,而第二分布定律则说明了或运算可以分布于与运算上。
因式分解时,应该在使用第二分配律前先使用普通分配律。然后找或这种的进行因式分解。
展开时,也是看看有无或。
Example P49
异或与同或运算
一个重要的等式:
蕴含定理
应用蕴含定理得到的结果取决于项被删除的先后顺序。
有时无法简单地通过删除项直接将某个表达式化简,可以考虑先用蕴含定理增加一个项,然后利用这个项删除其他项,
化简技巧
合并项:存在符合这种的
消除项:利用消去律和蕴含律
消除因子:可以先提取公因式,然后对于剩下的因子进行消去操作,ep :
一个比较常见的模型是这种,除了公共项外,是满足消去律形式
添加蕴含项:这个是当表达式用基本方法化简不了的时候,可以把所有可能的蕴含项写出来,然后逐个加一下康康能不能消去更多
等式成立的证明
布尔代数的等式证明和普通代数不同,因为布尔代数没有定义除法和减法,因此等式两边乘项和加项都是不可逆转的,所以不能这么做。
可取的方法是从等式一边化简得到另一边,或者从两边化简到一个式子。
ps:证明展开式相同也可以利用扩展至最小项
第四章 布尔代数的应用、最小项与最大项展开式
最小项与最大项展开式
是说当输入为的二进制时输出为1的乘积项组合,同理。
给定一个
一个逻辑表达式的最小项和最大项的系数是互补的:
原因:若则成立,由此可知,若不在最小项展开式中,那么一定在最大项展开式中。
逻辑表达式取反后的最小项和最大项:
原因:
逻辑表达式取对偶后的最小项和最大项:
原因:对偶相当于取反后每个元素再取反,所以得到的是互补项
标准最小项和最大项展开式
对于n个变量的函数,其真值表共有行,因为每行的可取,所以共有种含有n个变量的可能函数。
先从3变量最小项开始
其中的取值为
最大项为
推广得到
两个函数最小项展开式乘法
乘积为
由于交叉项乘积为0,也就是时
非完全给定函数
就是真值表有无关项,然后就单独把无关项列出来就行了。例如:
二进制加法器与减法器的设计
加法器:半加器与全加器
半加器就是不带进位,只对两个1位二进制数执行相加运算,通过真值表不难得到,和是异或,进位是与。
串行加法器就是必须一位一位地算,速度很慢,并行加法器利用数学推导,得出了每一位进位和其余进位的关系,也就是说一次就可以算出其余的,然后延迟的话就是两个门,因为的逻辑函数可以用二级门电路实现。
第五章 卡诺图
开关函数的最简形式
函数的最简积之和表达式定义为乘积项的和,并且满足:
- 乘积项的数目最少
- 在所有具有最少数目乘积项的表达式中,其包含的因子最少
最简积之和式直接对应一个最简二级门电路,满足:
- 具有最小数目的门
- 具有最小数目的门输入
值得注意的是,与函数的最小展开式不同,最简积之和式并不是唯一的。
用基本首要蕴含项确定最简表达式
原理:卡诺图的化简原理是利用相邻项的合并律。相邻项由于是格雷码分布,所以只有一个变量不同,可以进行合并化简。
蕴含项:任何在函数的卡诺图上的单个1或者一组可以合并在一起的1都代表一个乘积项,该乘积项成为F的蕴含项。
首要蕴含项代表乘积项的一个蕴含项如果不能和其他项合并消除一个变量,那么它称为首要蕴含项,也就是说,如果单个1在图上不和其他任何1相邻。则表示一个首要蕴含项,如果两个相邻的1在图上不被包含在4个一组的1中,那么它们也形成一个首要蕴含项,以此类推。
基本首要蕴含项:如果最小项仅被一个首要蕴含项涵盖,那么该首要蕴含项就是基本的,它肯定含在最简积之和式内,但是值得注意的是,最简积之和式可能除了基本首要蕴含项外还由其他的项构成。
通过基本首要蕴含项能确定出最简表达式,因此要研究如何得到基本首要蕴含项。
这里提供两种方法:
- 当卡诺图比较简单时,可以先得到所有首要蕴含项,然后找仅有一个首要蕴含项涵盖的1,那么这一项就是基本首要蕴含项。
- 系统的方法是,判断某个最小项是否仅被一个首要蕴含项所涵盖是,检查所有和该最小项相邻的方格,如果该最小项和与之邻近的1(无关项X也要考虑,视为1)都被一个项涵盖了,那么这个项就是基本首要蕴含项。P112的流程图很直观。
对于最简和之积式,可以先求的最简积之和,然后取反即可,或者是直接去找0写。
五变量卡诺图
康康书上的介绍,其实就是分层处理 P113
第六章 奎因-麦克拉斯基法
(挖坑)
第七章 多级门电路/与非门和或非门
电路设计可以从三方面考虑,电路级数,输出数,扇入数。
也就是二级和多级门电路,单一输出和多输出电路,以及扇入受限的电路(输入受限)。
常讨论的有 二级单输出,多级单输出(扇入受限),二级多输出,多级多输出(扇入受限)
二级单输出最简电路可以先从最简与或式or最简或与式入手,对比得出最简二级与或电路,然后再转换为与非/或非门。但是如果扇入受限了,就需要因式分解来减少扇入,但同时增加级数,也就会把二级电路增加到多级,得到对应最简多级电路后,转换为与非/或非门时要注意添加反相器的问题。
多输出的情况就是要考虑公共项,像二级的简单情况可以从卡诺图看看,多级的话就是代数法,需要对每个函数单独化简,然后对所得到的二级表达式接着因式分解,引入公共项。
多级门电路
电路输入与输出之间串联的门的最大数值就是门的级数。所以,积之和式,和之积式的函数直接对应一个两级门电路。
与或电路的级数通常随着对推导出该电路积之和式进行因式分解而增加,但是通过提取公共项,是可以减少输入数的。
减少门数的方法可以通过合并输入得到,如P150(d),而且似乎通过因式分解之类的方法减少不了门的数目。
一般来说,为了得到最简结果,必须找出与门输出和或门输出的两种结果。(P156)
例如对于二级门电路来说,逻辑函数有最大项和最小项表达式,无论是最大项还是最小项,每一项都对应一个门,最后再用与门or或门进行输出。但是化简过后两种表示门的个数可能不同ep :,或者即使是门的数量一样,输入的数量也可能有差异,如课本上的例子,这就导致了要两种情况都要找出来比较后,才能得到最简的二级门电路,三级门也是同理。
与非门和或非门
和与门、或门相比,通常与非门和或非门速度更快、需要的元件更少。
如果任何布尔函数都可以用一组逻辑运算来描述,那么就称这组逻辑运算是功能完善的。与运算、或运算、非运算显然是功能完善的,因为任何函数都可写成积之和式,由于或门可以由与门和非门实现(P157),因此与门和非门也是功能完善的,进而也可以证明与非门是功能完善的。(P158)
两级与非门和或非门电路设计
由与门和或门组成的二级电路通过两次取定律,很容易转换为由与非门or或非门组成的电路。
设计最简两级与非-与非电路的步骤:
- 找出函数的最简积之和式
- 画出对应的两级与-或电路
- 用与非门代替所有的门,并保留原有门的相互连接不变。如果输出门有任何作为输入的单个变量,那么将这些变量取反
多级与非门和或非门电路设计
见课本P161
用门的替代符号转换电路
利用定律,可以得到与非门和或非门的等效替代符号。这样可以方便进行分析和设计,上一个小节的原理其实就是可以由本节推出(奇数级取反的原因)。如果是或门-或门相连or与门-与门相连(扇入受限,不然的话其实是可以合并输入的),则根据等价转换是要添加反相器保证成立。
对于扇入受限的电路,往往采取多级电路设计,因为多级电路的一个优点是可以降低门的扇入数,也就是可以通过因式分解减少输入数。对于积之和式,因式分解后如果不存在像(AB)C这种同种门相连的情况(扇入受限),是可以直接转换为与非门,而不增加电路级数的(P165)
如果扇入不受限,那么积之和式是可以直接转换为二级与非门电路的。
Example: 7.6、7.7
二级、多输出电路的设计
上面几个小节讨论的都是单一输出,这里开始多输出电路设 计学习。
核心问题还是确定一个最简的两级多输出电路,有代数法和卡诺图法。
代数法的原理是展开积之和项进行化简得到公共项,然后对于一个逻辑函数如果展开其中一项来说,是会多一个项,但是通常多的那个项是可以消除的,因此对于两个逻辑函数,分别展开一项后,经过消除,也其实只有公共项了,这样就做到了化简的目的,减少了一个门。
Example: 7.9
卡诺图法:
- 确定基本首要蕴含项:当检查每个卡诺图上的1是否仅被一个首要蕴含项所涵盖时。应该只需要那些没有再其他函数的卡诺图上出现的1。
- 选择剩余项来构成最简结果
ps:这其实不是通用方法,而是针对一些简单情况有效,详见P168
而且对于多级多输出这种方法也不是很有效。
总结
P177 8.1
第8章 用门电路设计和模拟组合电路
使用扇入受限的门设计电路
在设计二级以上的多输出电路时,通常最好对每个函数单独化简,所得到的二级表达式必须接着因式分解,以增加电路的级数,因式分解的方法就是再尽可能的情况下去引入公共项,而且因式分解的时候要注意,如果题目要求说用与非or或非实现。
门延迟和时序图
当改变逻辑电路的输入时,输出并不会立刻发生改变,这样就产生了门延迟。
时序图经常用来分析时序电路。
时序图的画法可以借鉴一下课本的图,其实就是画方格。
组合逻辑的冒险
输入信号发生一次变化只引起一个错误信号脉冲称为静态冒险。
输入信号发生一次变化引起多个错误信号脉冲称为动态冒险。ps:常发生在多级电路,不同的路径有不同的传输延迟。
冒险是电路自身的特性,与电路中存在的延迟无关。
两个点:发现冒险,消除冒险
发现冒险的方法:
- 代数法:看表达式中同时存在原变量和反变量的变量,然后就是将其余值依次01遍历,看函数表达式的结果,如果存在的情况,就说明存在险象。
- 卡诺图法:找相切的圈,画切线,切线两侧的1构成的项就是险象(取最小项值对应输入值的时候)。
消除冒险的方法:
- 代数法:添加冗余项
- 卡诺图法:在切点处添加卡诺圈
逻辑电路的仿真与测试
排除逻辑电路的错误的方法是:通过输出门往回推,直到定位出错误的连接或有问题的门。
第9章 多路选择器、译码器和可编程逻辑器件
多路选择器
多路选择器有(MUX)一组数据输入端和一组控制端,控制端用于选择出一路数据并将其与输出端相连。
原理:当输入确定时,仅有一个最小项输出为1,其余均为0。
具有n个控制端和个数据端的多路选择器表达式为:
其中,为个控制变量的最小项,为相应的数据输入。
多路选择器有不同类型,主要体现在输出是否取反,允许端是否加反相器。
输入不取反,就是普通的选择器,称为高有效输出,取反就是低有效输出。
然后允许端E取1时正常工作的称为允许端高有效,反之则称允许端低有效。
三态缓冲器
通过使能端来决定该路是否通路的一个元器件,可以实现选择的功能。
应用:三态总线(选择信号源,ep: 4个输入选1个)、管脚输入输出可编程、双向数据总线、从8421BCD码中选择被5整除的数输出