请教下怎么用卡诺图化简逻辑函数

2023-03-29 10:02:15 +08:00
 brader


卡诺图我会画,就是一直搞不懂,最后一步到底是怎么通过卡诺图得到的 F=AB+BC ,是直接通过图可以观察得到?还是它中间省略了很多化简步骤?所以我一直搞不明白
1391 次点击
所在节点    程序员
10 条回复
RecursiveG
2023-03-29 10:21:26 +08:00
基本就是观察,用最少的矩形覆盖并仅覆盖所有 1 。这个矩形是可以跨边界的(类似吃豆人)。
你可以画个 `BD+!B!D` 的卡诺图感受一下。
brader
2023-03-29 10:32:42 +08:00
@RecursiveG 我知道圈的 1 要尽量大,但是我不明白的是,这个图得到的为什么是 F=AB+BC ,而不是 F=AB+CD 、F=AC+CD 之类的
jmc891205
2023-03-29 10:33:26 +08:00
用卡诺图化简逻辑函数的步骤[1]:
- 如果表达式为最小项表达式,则可直接填入卡诺图
- 如表达式不是最小项表达式,但是“与—或表达式”,可将其先化成最小项表达式,再填入卡诺图。也可直接填入。
- 合并相邻的最小项,即根据下述原则画圈
- 尽量画大圈,但每个圈内只能含有 2 n 2^{n}( n=0,1,2,3……)个相邻项。要特别注意对边相邻性和四角相邻性。
圈的个数尽量少。
- 卡诺图中所有取值为 1 的方格均要被圈过,即不能漏下取值为 1 的最小项。
- 在新画的包围圈中至少要含有 1 个未被圈过的 1 方格,否则该包围圈是多余的。
- 写出化简后的表达式。每一个圈写一个最简与项,规则是,取值为 l 的变量用原变量表示,取值为 0 的变量用反变量表示,将这些变量相与。然后将所有与项进行逻辑加,即得最简与—或表达式。

在进行化简时,如果用图中真值为 0 的项更方便,可以用他们来处理,方法和真值取 1 时一样,只是结果要再做一次求反。

[1]: https://zh.wikipedia.org/wiki/%E5%8D%A1%E8%AF%BA%E5%9B%BE#%E7%94%A8%E5%8D%A1%E8%AF%BA%E5%9B%BE%E5%8C%96%E7%AE%80%E9%80%BB%E8%BE%91%E5%87%BD%E6%95%B0%E7%9A%84%E6%AD%A5%E9%AA%A4
1647846714
2023-03-29 10:39:32 +08:00
@brader 找 1 ? 横这的那个,AB 对应 11 ,CD 全都取到了所以是 AB ;圈的那个,AB 对应 01 和 11,B 是 1 ,CD 对应的是 11 和 10 ,C 是 1 ,所以是 BC
oldshensheep
2023-03-29 10:45:13 +08:00
都快忘了,看了维基百科,现学现卖。
横着的框,当且仅当 K=AB 时 K=1
1100, 1101, 1111, 1110 = 1
K=ABCD

方框,当且仅当 K=BC 时 K=1
0111, 0110, 1111, 1110 = 1
K=ABCD

合起来就是 F=AB+BC

其实就是找圈圈中恒为 1 的字母
llr8031
2023-03-29 11:06:42 +08:00
@brader 1*4 的矩形里,当 AB=1 时,不论 C 和 D 取什么,结果都为 1 ,也就是和 CD 没关系,故得 AB 。
同理,2*2 得矩形里,当 BC=1 时,A 和 D 的取值不论为什么,结果都为 1 ,也就是和 CD 没关系,故得 BC
简单的说,找矩形框里恒为 1 的信号,每个矩形框找一组把他们与起来,最后把所有的结果或
llr8031
2023-03-29 11:08:44 +08:00
@llr8031 勘误一下,AB=1 ,CD=1 中插入一个逗号
brader
2023-03-29 11:15:53 +08:00
@jmc891205
@1647846714
@oldshensheep
感谢各位,听君一言如醍醐灌顶,我总结了各位给的答案,按自己的理解去套用了几个题目,都能得到正确答案,那应该没错了,我说一下我总结的东西,不对的地方欢迎指正:
每一个圈中,恒为 1 或 0 ( 0 的用反变量表示)的变量留下来相与,然后将不同的圈进行逻辑加。
例 1:如我的提问,横圈( AB 在 4 个格子都是 1 ,留下来相与)+方圈( BC 在 4 个格子都是 1 ,留下来相与),最后得到 AB+BC
例 2:

下面的圈( AB 在 2 个格子都是 1 ,留下来相与)+上面的圈( A 在 2 个格子都是 0 ,取!A ,C 在 2 个格子都是 1 ,留下来相与),最后得到 AB+!AC
brader
2023-03-29 11:19:00 +08:00
@llr8031 帮忙看看我上面总结的对不对,按您说这个,应该还少一个恒为 0 的,也得找出来才是,对吧
llr8031
2023-03-29 12:46:09 +08:00
@brader 是的,恒为 0 的也要找出来,归纳的没有问题

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/928057

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX