更新于 

逻辑电路的表达式

晶体管功耗

功耗就是单位时间内消耗的能量,这里分为两种:静态功耗和动态功耗。

动态功耗

对栅极电容进行充电所消耗的能量,对电容充电到电压VDD所消耗的能量为CVDD^2即:

Pdynamic=1/2CVDD2fP_{dynamic}=1/2*C*V_{DD}^2f

其中C就是电容,单位法拉第,当晶体管以频率f来工作,充电的消耗为f/2,放点的频率也是f/2,因为放电过程不需要消耗能量,因此动态功耗中还乘了一个1/2f。

静态功耗

当系统处于空闲状态时,晶体管处于截止状态,单仍然会泄露少量的电流,因此会产生静态功耗,静态功耗由电源和地直接的漏电流IDD产生,正比于漏电流。公式如下:

Pstatic=IDDVDDP_{static}=I_{DD}*V_{DD}

思考:对比前面学到的PN结知识,我们可以怎样理解动态功耗和静态功耗?

动态功耗充电就是可以看成借助外界力量解除堆积的PN结,从而增强导电能力,而静态功耗就是可以看成自然状态下自动向PN结形成的过程,他会产生微小电流也就是漏电流同时由于产生PN结从而降低了导电能力。

例题

估算如下无限手持设备的功耗,假如此时VDD=1.2V,C=20nF,f=1GHz,IDD=20mA。那么晶体总功耗是多少?

Pdynamic=1/2CVDD2f=1/2(20nF)(1.2V)2(1GHz)P_{dynamic}=1/2*C*V_{DD}^2f=1/2*(20nF)*(1.2V)^2*(1GHz)

Pstatic=(20mA)(1.2)VP_{static}=(20mA)*(1.2)V

P=Pdynamic+Pstatic=14.4WP=P_{dynamic}+P_{static}=14.4W

数字逻辑电路

数字逻辑电路是一个可以处理离散值变量的网络。它主要是使用一种逻辑门电路图来显示各种逻辑计算的实现原理,例如我们上面画的非门和异或门的图就是数字逻辑电路。数字逻辑电路具有如下几个特点:

  1. 一个或多个离散值输入端
  2. 一个或多个离散值输出端
  3. 描述输入和输出关系的功能规范
  4. 描述当输入改变时输出相应延迟的时序规范

结点和模块

电路由结点和模块组成,结点是一段导线,通过电压传递离散值变量,结点可以分为如下几种:

  1. 输入结点:接收外部的值,比如上图中的A,B,C是三个输入结点,个输如一个0/1信号值
  2. 输出结点:输出值到外部,是输入信号经过门电路处理后输出的离散值信号
  3. 内部节点:不属于以上两者的结点,比如n1

模块本身是一个带有输入、输出、功能规范和时序规范的电路(注意buf逻辑也是一个模块,它具有驱动的功能)。每一个电路都是一个电路,一般会有逻辑门组合,例如上图中的E1,E2,E3。

数字逻辑电路的分类

组合逻辑电路

  1. 任一时刻的输出仅由该时刻的信号决定
  2. 无记忆的,与电路状态无关

时序逻辑电路

  1. 任一时刻的输出由该时刻的输入和电路该时刻的状态共同决定
  2. 具有记忆性,与电路状态有关

思考:组合逻辑电路与时序逻辑电路的延迟?

首先我们需要明确无论是哪种逻辑电路,都是一定会有延迟的即输出会晚于输入一段时间才输出,因为都需要通过逻辑门对输入进行处理才可以输出。但是组合逻辑电路无外界或电路状态的影响,会随着输入信号即刻改变,例如非门,当输入信号为0,那么输出信号就是1,但是一旦输入信号改变成了1,那么输出信号也会立刻改变成1,所以不会受到电路状态的影响。而对于时序逻辑电路,例如一个时序逻辑模块的功能是对于输入信号A和B,只有当B信号为1时才可以对A信号取非,那么此时即使A传进来1了,也需要等待电路状态改变成接收到了B信号1才可以对A进行信号取非,即此时会受到电路状态影响,同时如果此时B不为1,那么模块也会记录输入信号A为1,所以有记忆性。

一定要注意基本上每一个模块都是一个组合逻辑模块(毕竟一般是多个逻辑门的组合,功能会复杂)。如下图:

对于组合逻辑电路,每一个电路节点或者叫线交汇点只可能是两种情况:①电路的输入结点②只连接电路模块的一个输出端。毕竟如果一个电路结点连接着两个输出端的话,当两个输出不同即一个信号为1一个信号为0时,那么交汇结点就会出现信号冲突。 并且要注意电路中应该不能存在回路,因为也可能会造成信号冲突。

组合逻辑电路的错误状况

图二错误,就是因为存在回路可能会造成冲突。比如假设此时传入的两个信号都是1,那么经过异或门后应该输出的是0,但是还有一部分1信号却通过短接的回路到达了输出导线上,那么此时输出导线上同时有接收到的0和1会产生信号冲突,所以不正确。

图四错误,由于一个结点接受了两个输出端的信号,可能会产生信号冲突。

图六也是错误的,由于有回路同样也有可能会产生信号冲突(分析一下就很容易知道)。所以数字逻辑电路中是坚决要避免回路或者连接多个输出端的结点的。

布尔代数的定义

我们在前面也知道了数字逻辑电路通过不同门组成了有不同功能的模块,每一个模块实际上就是使用的0/1信号的逻辑运算来模拟各种复杂的数学计算的。(如果学习了机组原理,我们知道实际上ALU中的一位加法器也是使用的各种逻辑门实现的)。那么明显布尔代数对于数字逻辑电路的规划设计很重要,所以我们详细介绍一下布尔代数。在布尔代数中变量只能取"真"或者"假"。1代表的就是真,0代表的就是假。并且有三种最基本的逻辑运算:

  • 与运算:A·B或者AB
  • 或运算:A+B
  • 非运算:—A(假装横线在A上面)

布尔表达式

实际上就是一些布尔代数的复杂运算表达公式,一般是来描述组合逻辑电路中输入与输出之间的功能规范的。比如:

实际上我们不难发现上面的这个布尔表达式就是模拟的加法。这种加法运算实际上已经是需要复杂的布尔表达式来表示的了。

布尔代数的公理

下面我们给出以下布尔代数常用的公理,理解最重要:

对偶规则

F为任意逻辑表达式,若将F中所有运算和常量作如下变换:

所得到的的新的表达式就是F的对偶式F’,比如:

我们发现就是分别将数值和符号进行了上面的对偶规则的改变,那么我们可以得出以下结论:

  1. 对偶式相互的,F和F’互为对偶式
  2. 对偶规则:两个逻辑表达式F和G相等,那么对偶式F’和G’也是相等的

一定要注意对偶规则不是逻辑表达式的整体取反,他是在原有的顺序不变的基础上,对于每一个元素进行了逻辑取反。其主要是为了使用第二个特点来描述两个表达式的内在关系。

单变量定理

那么对于上面这几种定理,我们都可以使用组合逻辑电路表示:

如果你对门的符号还不太熟悉,请快速跳转《机组原理门符号》

多变量定理

这部分就有点难理解了,可能需要思考一段时间或者画韦恩图分析。一定要注意这里的值只能取0或1,所以上面的吸收律等才可以成立。

思考:上面的一致律如何推得的?

我们以左边的式子为例:

实际上就是补1法,缺哪个就用X+非X补。右边的式子也类似,我就不讲解了。同样的买也可以使用组合逻辑电路表示:

最小项

最小项就是一种特殊的乘积项(或者叫做"与"项)。即元素之间只能是乘积,并且还要求对于n个变量逻辑函数的每一个最小项,必须同时包含有n个因子的乘积,即各个最小项中,每一个变量必须以原变量或者反变量形式作为因子出现一次,而且仅出现一次,(毕竟n个变量只够每一个变量因子出现一次)。

如上面,都是最小项,我们就可以理解每一个元素因子为什么只能出现一次了,如果有一个元素出现了两次,那就必定有一个元素没出现过,那么就不是最小项了,因为最小项要求n位最小项必须由n个元素。并且我们可以知道:

最小项个数=2n(n是元素种类数)最小项个数=2^n(n是元素种类数)

最小项的编号

最小项用mi来编号(i从0开始递增),最小项的编号值是由使最小项取值为1决定的,比如:

那么很明显编号为零的就会非A非B非C,只有三个元素取值都为0整体才为1。这里我们给出三变量的最小项:

我们不难看出每一个最小项只有一组变量能使其值为1,而其他各组取值该最小项都为0.由于这种函数真值表中1的个数最少,因此称为最小项。

最小项的性质

性质1

变量任取一组值,仅有一个最小项为1,其他最小项为0

性质2

n变量的全体最小项(共有2^n个)之和为1,毕竟有一个最小项会为1,那么整体之和就是1了。

n=02n1mi=1\sum_{n=0}^{2^n-1}{m_i}=1

性质3

n个变量任意两个不同的最小项相与,结果恒为0,毕竟每次只有一个最小项为1,其他最小项都是0,所以取交就是0。

性质4

如果两个最小项仅有一个变量因子不同,那么我们就成这两个最小项相邻。两个最小项相邻,相邻最小项相或,可以合并成一项,并且可以消去一个变量因子,比如:

性质5

任一n变量的最小项,必定有n个不同最小项相邻(即n位变量因子有一个取反就成为了他的相邻最小项),比如:

最大项

最大项是一种特殊的和项(又称为"或"项)。即元素之间只能是或,并且还要求对于n个变量逻辑函数的每一个最大项,必须同时包含有n个因子的或,即各个最大项中,每一个变量必须以原变量或者反变量形式作为因子出现一次,而且仅出现一次,(毕竟n个变量只够每一个变量因子出现一次)。比如:

最大项的编号

最大项用Mi来编号(i从0开始递增),最大项的编号值是由使最大项取值为0决定的,比如:

如上面,都是最大项,我们就可以理解每一个元素因子为什么只能出现一次了,如果有一个元素出现了两次,那就必定有一个元素没出现过,那么就不是最大项了,因为最大项要求n位最小项必须由n个元素。并且我们可以知道:

最大项个数=2n(n是元素种类数)最大项个数=2^n(n是元素种类数)

其实和最小项的结论很相似。可以对比着记忆。

那么很明显编号为零的就会ABC,只有三个元素取值都为0整体才为0。这里我们给出三变量的最大项:

每一个最大项只有对应的一组变量取值为0,而其他各组取值该最大项都为1.由于这种函数真值表中1的个数最多,因此称为最大项。

最大项的性质

性质1

变量任取一组取值,仅有一个最大项为0,其他最大项为1

性质2

n变量的全体最大项之和为0(毕竟有一个最大项取值为0,那么整体就是0了)。

n=12n1Mn=0\prod_{n=1}^{2^n-1}{M_n}=0

性质3

不同的最大项相或结果为1,毕竟每一次只有一个最大项取值为0,其他的最大项取值都是1,所以取或就是1。

性质4

两个最大项如果仅有一个变量因子不同,其他变量均相同,则称这两个最大项相邻。两个相邻的最大项相"与",可以合并成一项(等于相同因子之和),并且可以消去一个因子。

性质5

任一n变量的最大项,必定有n个不同的相邻最大项(n位中任意一个变量因子取反就是一个相邻最大项)。

最小项和最大项的关系

编号下标相同的最小项和最大项互为相反数,即

Mi=mi或者mi=MiM_i=\overline{m_i}或者m_i=\overline{M_i}

标准与或式

由最小项之和构成且最小项之间取或的运算逻辑表达式,如下:

我们可以使用编号和运算求和符号来简写表达式。那么他的真值表如下:

我们发现有如下几个特点:

  1. 每一个最小项都对应真值表中值为1的一行
  2. 标准与或式是最小项之间的或运算,不存在其他运算
  3. 标准与或式与真值表间一一对应
  4. 从标准与或式中可以直接判断哪些变量取值可以使表达式为1(就是有一个最小项取1的时候可以使表达式值为1)
我们发现一个规律:任一逻辑函数都可以表达为最小项之和的形式,而且是唯一的,比如:

标准或与式

由最大项之积构成且最大项之间取乘积的运算逻辑表达式,如下:

我们可以使用编号和运算求乘积符号来简写表达式。那么他的真值表也和标准与或式一样有以下几个特点:

  1. 每一个最大项都对应真值表中值为0的一行
  2. 标准或与式是最大项之间的与运算,不存在其他运算
  3. 标准或与式与真值表间一一对应
  4. 从标准或与式中可以直接判断哪些变量取值可以使表达式为0(就是有一个最大项取0的时候可以使表达式值为0)

我们同样发现一个规律:任一逻辑函数都可以表达为最大项之积的形式,而且是唯一的,再联系任一一个逻辑函数也可以唯一表示成一个标准与或式,所以我们可以推出一个结论,相同的逻辑函数对应的标准与或式和标准或与式可以互相转化。

标准与或式和标准或与式的关系

那么我们接下来就给出他们之间转换的关系公式:

F=imi=jiMjF=\sum_{i}{m_i}=\prod_{j≠i}{M_j}

证明如下:

那么也就是说对于3位逻辑表达式F如果标准与或式使用了编号1,3,7的最小项,那么标准或与式就是用了编号0,2,4,5,6的最大项。

一定要求是标准与或式或者标准或与式,如果不是,那么需要用补1法进行变换使之转化成标准式。

布尔表达式到真值表的转化

我们对于一个布尔表达式,可以将它表示为标准式,然后使用编号就可以轻易求得一个式子取得不同值所需要的变量组了。比如:

我们将这个非标准化布尔表达式首先用补1法转换成标准式,然后转换成标准与或式,那么编号有3,6,7的最小项,所以只有ABC取011,110和111时可以使表达式为1,其他情况都是0,并且是3位表达式,所以一共真值表有8行对应8个情况:

我们可以用标准或与式再求解以下上面的布尔表达式,那么F就会转化成标准或与式:

M(0,1,2,4,5)\prod{M(0,1,2,4,5)}

那么也就是说当ABC,000,001,010,100,101的时候表达式会为0,其他情况为1,发现和上面的真值表一样。这样我们也就证明了标准与或式和标准或与式的转换定理是正确的。