【发布时间】:2017-09-02 14:50:02
【问题描述】:
我必须制作一个包含 5 个输入和 3 个输出的真值表,如下所示:
A B C D E red green blue
0 0 0 0 0 0 0 0
0 0 0 0 1 0 0 1
0 0 0 1 0 0 0 1
.
.
.
.
1 1 0 1 0 0 1 1
.
.
.
1 1 1 1 1 1 0 1
等等。 (总共 32 行,rgb 表中的数字表示二进制中每行中 1 的数量,即在第 1 1 0 1 0 行中有三个 1,因此二进制中的三个是 0 1 1)。
我想在 Atanua (http://sol.gfxile.net/atanua/index.html) 工具中显示它的结果(例如,当我按下按钮 E 时,蓝色灯会发光,当按下 ABD 时,绿色和蓝色灯会发光等等)。但是有一个要求,我只能使用 AND、OR、NOT 操作数,并且每个操作数只能有两个输入。尽管我使用卡诺图将其最小化,但对于这么多记录,每个输出的结果仍然很长(尤其是最后一个)。
我试图通过将所有三个输出布尔函数合而为一来进一步简化它,最小化过程结束得很好:
A + B + C + D
它似乎工作正常(但由于只有一个输出光,它只在红绿蓝列中单独工作)。我担心的是我想要三个输出(三个灯,而不是一个),并且在这种最小化之后甚至可能吗?在阿塔努阿有一个好的解决方案吗?还是我必须创建 3 个单独的布尔函数,不管它们有多长(即使在最小化之后也有很多)?
编辑:整个真值表:)
A B C D E R G B
0 0 0 0 0 0 0 00 0 0 0 1 0 0 10 0 0 1 0 0 0 10 0 0 1 1 0 1 00 0 1 0 0 0 0 10 0 1 0 1 0 1 00 0 1 1 0 0 1 00 0 1 1 1 0 1 10 1 0 0 0 0 0 10 1 0 0 1 0 1 00 1 0 1 0 0 1 00 1 0 1 1 0 1 10 1 1 0 0 0 1 00 1 1 0 1 0 1 10 1 1 1 0 0 1 10 1 1 1 1 1 0 0
@ 987654341@1 0 0 0 1 0 1 01 0 0 1 0 0 1 01 0 0 1 1 0 1 11 0 1 0 0 0 1 01 0 1 0 1 0 1 11 0 1 1 0 0 1 11 0 1 1 1 1 0 01 1 0 0 0 0 1 0 1 1 0 0 1 0 1 11 1 0 1 0 0 1 11 1 0 1 1 1 0 01 1 1 0 0 0 1 11 1 1 0 1 1 0 01 1 1 1 0 1 0 01 1 1 1 1 1 0 1
以及每种颜色的卡诺图(~是非门,* 是 AND,+ OR):
红:
BCDE+ACDE+ABDE+ABCE+ABCD
绿色:
~A~BDE+~AC~DE+~ACD~E+~BCD~E+~AB~CE+B~CD~E+BC~D~E+A~B~CE+A~B~CD+A~BC~D +AB~C~D
蓝色:
~A~B~C~DE+~A~B~CD~E+~A~BC~D~E+~A~BCDE+~AB~C~D~E+~AB~CDE+~ABC~DE+~ABCD~E+A ~B~C~D~E+A~B~CDE+A~BC~DE+A~BCD~E+AB~C~DE+AB~CD~E+ABC~D~E+ABCDE
【问题讨论】:
-
您可以发布其余的值吗?也许有一个模式。我认为您需要创建 3 个布尔函数是对的,但它们不必完全分开,某些部分可能会被重用。
-
我添加了带有整个真值表的编辑以及每种光色的卡诺图。
-
我不认为 RED 是正确的,在最后一行红灯会被点亮。您必须将 ~A 添加到 BCDE。也许其他颜色也有错误,然后简化变得更好?
-
你是对的,最后一行是错误的,我已经编辑过了。但是其余的都很好,而且还没有接近简化:(
标签: optimization boolean truthtable karnaugh-map