奎恩-麦克拉斯基化简法(Q M 法)

为什么需要化简?

因为表达式的复杂度决定了逻辑门元器件的搭建复杂度,也就是说化简后的式子所搭建的逻辑电路不仅功能上等同未化简的式子,而且成本更少,制造的电子元件更轻. 所以说化简是很有必要的

逻辑函数的化简史

那么化简有哪些方式?

  1. 代数化简(人工苦力,利用公式化简)————适用于四输入及以下变量加减化简

  2. 卡诺图化简(相对来说轻松了一点,从代数 → \rightarrow 几何)顺序按照格雷码 [ 1 ] ^{[1]} [1]编码方式. 利用了卡诺图的相邻性——消除相邻因子的不同因子.

    [1] 格雷码:在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,
    则称这种编码为**格雷码**`(Gray Code)
    
    1. Q M 法(划时代的化简方法),解放人力,运用计算机解决化简

在这里插入图片描述

在卡诺图中相邻的格子不仅在几何上相邻也在逻辑上相邻, 如你所见上图中 m 0 m_0 m0 m 1 m_1 m1(表格中为1的地方)几何相邻, 从逻辑来看他们都是 A ′ B ′ C ′ − A'B'C'- ABC (这里的 " − " "-" "" 代表任意取值), 又因为二进制只有 0 / 1 0 / 1 0/1所以也满足逻辑相邻.


我们来化简下这两项合并的结果:

A ′ B ′ C ′ ( D + D ′ ) = A ′ B ′ C    ( 1 ) ′ \\A'B'C'( D+D') = A'B'C'_{\;(1)} ABC(D+D)=ABC(1)

如你所见,化简的基本思路是留下相同因子,消去相邻项不同因子

运用Q M法化简

卡诺图虽然看起来很直观,但是他在逻辑变量 ≥ 5 \geq 5 5失去了直观上的相邻 [ 2 ] ^{[2]} [2]同时增加了复杂度 [ 3 ] ^{[3]} [3],再仔细想想,目前生活中变量 ≤ 4 \leq 4 4
的电路基本上凤毛麟角, 所以卡诺图与代数化简就失去了优势.

[2] 例如,一个5变量卡诺图可以表示为两个4x4矩阵叠在一起。尽管每个矩阵内部的相邻性还算容易理解,但跨矩阵的相邻性变得非常难以直观地识别。
下表中的四个格子就是相邻的
[3] 随着变量数量的增加,卡诺图的大小呈指数级增长。对于5变量卡诺图,它有2^5=32个格子,而6变量卡诺图则有2^6=64个格子。
这样的大图非常难以管理和视觉化

下面是5变量的卡诺图:
在这里插入图片描述

新的主角登场: 计算机, 计算机不擅长视觉思考,正好避免了使用卡诺图和代数化简(促使了Q M法的诞生),计算机适合加法,适合多层嵌套调用,比如:递归. 要想让计算机学会化简我们先得总结出Q M的步骤.
人擅长视觉上和逻辑上的抽象思考, 计算机擅长加减以及执行指令

Step 1:补全最小项

将逻辑表达式用最小项和**(补全不满4个字母的项)**的形式表示
假设: A B ′ C D + A B C ′ D + A B ′ + A D ′ + A B ′ C AB'CD+ABC'D+AB'+AD'+AB'C ABCD+ABCD+AB+AD+ABC
化简得到 3  ⁣ ∗  ⁣ A B ′ C D + 2  ⁣ ∗  ⁣ A B ′ C D ′ + 2  ⁣ ∗  ⁣ A B ′ C ′ D ′ + A B C D ′ + A B C ′ D ′ + A B C ′ D + A B ′ C ′ D 3\!*\!AB'CD+2\!*\!AB'CD'+2\!*\!AB'C'D'+ABCD'+ABC'D'+ABC'D+AB'C'D 3ABCD+2ABCD+2ABCD+ABCD+ABCD+ABCD+ABCD
Σ m ( 8 , 9 , 10 , 11 , 12 , 13 , 14 ) \Sigma m(8,9,10,11,12,13,14) Σm(8,9,10,11,12,13,14)

编号891011121314
代码1000100110101011110011011110
Step 2:合并格雷码

将这些最小项写成二进制的形式并含按1的个数分组,合并逻辑上相邻的最小项(两个只有一个字母不同,例如:ABCD和ABCD’可以归到同一组,编号8,9)同时使用最小项的十进制数作为对应编号, 无法合并的项用 P i P_i Pi表示.

在这里插入图片描述

通过合并我们可以得到未合并的项以及Group 3 (显然Group 3也无法再合并了)
至此我们得到了所有的素蕴含项(其中包含着本质蕴含项)

Step 3:列出蕴含项表,找出本质蕴含项.
\891011121314
p 1 p1 p1
p 2 p2 p2
p 3 p3 p3
p 4 p4 p4

为了找到本质素蕴涵项,我们寻找只有一个“✓”的列。如果一列只有一个“✓”,这意味着最小项只能由一个素蕴涵项覆盖。这个素蕴涵项是本质的。不难发现本质蕴含项是 p 2 p2 p2 p 3 p3 p3

所以素蕴含项是 p 1 p1 p1 p 4 p4 p4

我们只需要将两个本质蕴含项加上任意一个素蕴含项就可以得到最简的表达式
f A , B , C , D = A B ′ + A C ′ + A D ′ f_{A,B,C,D}=AB'+AC'+AD' fA,B,C,D=AB+AC+AD

or

f A , B , C , D = A B ′ + A B C ′ + A D ′ f_{A,B,C,D}=AB'+ABC'+AD' fA,B,C,D=AB+ABC+AD

这两个最终方程在功能上等同于原始的详细方程: A B ′ C D + A B ′ C D ′ + A B ′ C ′ D ′ + A B C D ′ + A B C ′ D ′ + A B C ′ D + A B ′ C ′ D AB'CD+AB'CD'+AB'C'D'+ABCD'+ABC'D'+ABC'D+AB'C'D ABCD+ABCD+ABCD+ABCD+ABCD+ABCD+ABCD

证明:
ABCDAB′AD′AC′AB′+AD′+AC′ABC′AB′+AD′+ABC′
0000000000
0001000000
0010000000
0011000000
0100000000
0101000000
0110000000
0111000000
1000111101
1001101101
1010110101
1011100101
1100011101
1101001111
1110001111
1111000000

从真值表中可以看到,对于每一个输入组合,两个表达式 AB′+AD′+AC′ AB′+AD′+ABC’ 的输出都是相同的。因此,这两个表达式是相等的。

结论:
A B ′ + A D ′ + A C ′ ≡ A B ′ + A D ′ + A B C ′ AB'+AD'+AC'\equiv AB'+AD'+ABC' AB+AD+ACAB+AD+ABC
自此**奎恩-麦克拉斯基化简法(Q M 法)**简述证明完毕


代码实现

C语言实现奎恩-麦克拉斯基化简法 见码云

https://gitee.com/U-smiles/bit_code/blob/master/Q-M%20method/Q-M%20method/test.c

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值