参考文献
数制与码制
此处省略了一部分知识点
格雷码
定义
又称 “循环BCD码” 或 “Gray码”。
定义:。表现为:相邻的编码只有一位不同。
来源
常规的二进制在不断加一的过程中,可能会出现多位同时翻转的情况,例如从 3 加到 4 的过程中,最低的三位全都变了(011 -> 100)。而 格雷码希望“每次只变一位”。
格雷码在编码器、计数器、位置检测等场景中更稳定,不容易因为多位同时翻转而出错。
为了得到 格雷码,我们需要先观察二进制进位时发生的现象。从 3 到 4 时,最后两位从 11 变成了 00, 第三位则从 0 变成了 1。
这个过程中,没有变的是 “最后两位相同”。而利用异或,恰好可以抹去这种 “11” 到 “00” 的变化。
换句话说,格雷码记录的实际上是:二进制的相邻两位之间有没有发生变化。
这使得当二进制数加 1 时,虽然底层可能有多个位翻转,但这些翻转在“相邻位关系”里最终只会体现为一个位置的变化,于是 格雷码就只变 1 位。
例如数字 3,计算:;数字 4,计算:。两者只差了一位
逆变换
为二进制数, 为格雷码
也就是:最高位不变,后续位分别与左侧的结果进行异或。
逻辑代数基础
与、或、非、异或的特殊用途
- 与运算 AND:可将指定的位 置0
- 或运算 OR:可将指定的位 置1
- 非运算 NOT:整体取反
- 异或运算 XOR:可将指定位取反。与 0 异或不变,与 1 异或取反
注释异或运算( )也可以表示为
基础定理
分配率公式
注释上述公式的推导为:
反演率 (德摩根定律)
这是 “与” 和 “或” 互换的基石。
提示与的非等于非的或,或的非等于非的与
- 对应:A 与 B 中至少有一个为假
- 对应:A 与 B 都为假
反演定律
两条基本公式:
- 对应:A 和 B 不同时为真
- 对应:A 和 B 都不为真
多余项定律
对偶定理
若两逻辑表达式相等,则它们的“对偶式”也相等。
对偶式的书写规则:与 ↔ 或; 0 ↔ 1; 变量和反变量不变
公式法化简
利用基础定理进行化简,注意慎用“消去率”
待补充
波形图转逻辑函数式
通法
观察所有 Y = 1 的部分,假设某一个时刻:
则有:
以此类推,按顺序写完所有情况。也就是每组输入变量取值的组合对应一个乘积项。
最小项
在上面的通法中, 就是一个最小项。使其值为 1 的变量取值就是它的编号(在某一类输入下为 1),此处为 ,即
全体最小项之和为 1;任意两个最小值之积为 0;两个逻辑相邻的最小项之和可以合并,消去一对因子。
最大项
例如 。使其值为 0 的变量取值就是它的编号(在某一类输入下为 0),此处为 ,即
全体最大项之积为 0;任何两个最大项之和为 1;
最小项与最大项的关系
最小项是从单个输入开始,不断寻找更多的输入来作为限制条件
最大项是从所有输入开始,不断排除无关的输入
单个最大项与最小项存在联系,,最大项与最小项相反的编号原则恰好凑上了反演定律。
而在 n = 3 时,,所以:,即 ,两者的下表集合是互补的。
卡诺图化简法
卡诺图的绘制
卡诺图,本质是用格雷码列出最小项矩阵,将逻辑上的相邻表现为几何图形的相邻。
理想的卡诺图应该是一个 n 维的立方体,我们只能尽量将它投影到纸面上。
使用格雷码而非二进制数,是因为格雷码能保证逻辑上相邻
例如三个变量时:
| A\BC | 00 | 01 | 11 | 10 |
|---|---|---|---|---|
| 0 | ||||
| 1 |
四个变量时(表中的数字为最小项编号):
| AB\CD | 00 | 01 | 11 | 10 |
|---|---|---|---|---|
| 00 | 0 | 1 | 3 | 2 |
| 01 | 4 | 5 | 7 | 6 |
| 11 | 12 | 13 | 15 | 14 |
| 10 | 8 | 9 | 11 | 10 |
卡诺图中的相邻卡诺图更接近与一个闭合的图形,由于格雷码的特性,两个轴对称的方块也是相邻的(注意不是中心对称),有:
- 左右边界相邻
- 上下边界相邻
- 四个角可以组成一组
注意:下文中的“相邻”指的都是逻辑上的相邻
函数式转卡诺图
例如 ,遵循以下步骤:
- AB:在同时满足 A = 1 与 B = 1 的方格内填 1
- AC:在同时满足 A = 1 与 C = 1 的方格内填 1
- 其余表格填 0
注释这里本质上是用了 的公式
对于更复杂的 ,则有:(空白格子为 0)
| AB\CD | 00 | 01 | 11 | 10 |
|---|---|---|---|---|
| 00 | 1 | 1 | 1 | |
| 01 | 1 | 1 | 1 | |
| 11 | ||||
| 10 | 1 |
卡诺图转最简式
在卡诺图上,“相邻”的两个方格对应一个可以消去的因子,“相邻”的 2*2 共4个方格对应两个可以消去的因子, 个格子对应 个可以消去的因子……
不断寻找这种“相邻”关系,并将它们圈起来作为标记,就可以据此写出对应的最简式。
同时,圈的个数越少越好,单个圈越大越好。这样才能保证最简。
需要注意的是,每个方格都是可以重复利用的,逻辑上的并集并不影响正确性。
例如:上图中右上四个可以合并,最左侧的两个可以合并,第二排的中间两个也可以合并。
提示卡诺图中六个相邻的方格不可能一次性化简完毕,至少分为两组
卡诺图转最简与或式
最简与或式:包含的乘积项最少,且每个乘积项里的因子也不能再减少。或者也可以说是最小项的和。
结合最小项的定义,应该在卡诺图中将所有 1 的格子圈起来。
对于上图,可得 ,相比原式更简单了。
卡诺图转最简或与式
或与式,也就是最大项的乘积。
结合最大项的定义,应该在卡诺图中将所有 0 的格子圈起来。
同时需要注意:最大项的编号原则与最小项相反。
证明逻辑等式
可以将卡诺图视作“满足逻辑相邻”的真值表,因此也可以用它来证明逻辑等式成立。
嵌套逻辑函数的化简
对于较为复杂的嵌套型逻辑函数,例如:
针对左右两个与或式,可以记为 Y1 与 Y2, 分别画出卡诺图,然后对两张卡诺图相同位置的方块做异或,结果就是 Y 的卡诺图。
注释此处如果不使用卡诺图来计算,将非常复杂
含有无关项的化简
通常以最小项之和的形式讨论无关项,无关项分为:
- 约束项:使其取值为 1 的输入组合是不允许出现的,因此(实际上)约束项的值始终为 0。即使函数式中包括了约束项,也不会影响最终结果
- 任意项:在特定的(可能出现的)输入组合下,无需关心其输出,值为 0 或 1 均可
提示实际上这俩区别不大,都表现为:在某些输入组合下,不需要关心输出。
两种无关项的共同点是:在特定的输入组合下,函数输出未被规定,取 0 或 1 皆可。
其在卡诺图中通常用 表示,化简时可以依据具体需要,将 当作 0 或 1.
在函数式中,无关项通常用 表示 (don’t care),表示无关项对应的编号集合,例如:
表示: 对应的输入组合是无关项。
逻辑函数的其他变换形式
与非-与非形式
将 与或式 取两次反,也就是利用反演率:
与或非形式
针对 的卡诺图进行化简,写出 与或式 后取反:
或与形式
对 与或非式 应用反演率:
提示也可以直接由卡诺图得到
或非-或非形式
对 与或非式 中的“与”应用反演率,例:
重要上述形式即使化到最简,也不一定是唯一的
证明题
- 用公式变换化简
- 两边取对偶式,证明对偶式相等
- 写出真值表 / 画出卡诺图(写成最小项之和)