我必须制作一个包含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中有3个1,因此三进制中的3是0 1 1)。
我想在Atanua(http://sol.gfxile.net/atanua/index.html)工具中展示它的结果(例如,当我按下按钮E时,蓝灯会亮起,当按下ABD时,绿灯和蓝灯会闪烁,等等)。但是要求我只能使用AND,OR,NOT操作数,每个操作数只能有两个输入。虽然我正在使用卡诺图来最小化它,但是对于这么多记录,每个输出的结果都很长(特别是对于最后一个)。
我试图通过将所有三个输出布尔函数添加到一个来简化它,并且最小化过程结束得非常好:
A + B + C + D
它似乎工作正常(但由于只有一个输出光,它只能分别在红绿蓝列中工作)。我担心的是,我希望有三个输出(三个灯,而不是一个),并且在这种最小化之后是否可能? Atanua有一个很好的解决方案吗?或者我必须制作3个独立的布尔函数,无论它们有多长时间(即使在最小化之后也有很多)?
编辑:整个真值表:) A B C D E R G B
0 0 0 0 0 0 0 0
0 0 0 0 1 0 0 1
0 0 0 1 0 0 0 1
0 0 0 1 1 0 1 0
0 0 1 0 0 0 0 1
0 0 1 0 1 0 1 0
0 0 1 1 0 0 1 0
0 0 1 1 1 0 1 1
0 1 0 0 0 0 0 1
0 1 0 0 1 0 1 0
0 1 0 1 0 0 1 0
0 1 0 1 1 0 1 1
0 1 1 0 0 0 1 0
0 1 1 0 1 0 1 1
0 1 1 1 0 0 1 1
0 1 1 1 1 1 0 0
1 0 0 0 0 0 0 1
1 0 0 0 1 0 1 0
1 0 0 1 0 0 1 0
1 0 0 1 1 0 1 1
1 0 1 0 0 0 1 0
1 0 1 0 1 0 1 1
1 0 1 1 0 0 1 1
1 0 1 1 1 1 0 0
1 1 0 0 0 0 1 0
1 1 0 0 1 0 1 1
1 1 0 1 0 0 1 1
1 1 0 1 1 1 0 0
1 1 1 0 0 0 1 1
1 1 1 0 1 1 0 0
1 1 1 1 0 1 0 0
1 1 1 1 1 1 0 1
每种颜色的卡诺图(〜是门NOT,*是AND,+ OR):
RED:
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
BLUE:
〜A〜B〜C〜DE +〜A〜B〜CD〜E +〜A〜BC〜d〜E +〜A〜BCDE +〜AB〜C〜d〜E +〜AB〜CDE +〜ABC〜DE +〜ABCD〜E +甲〜B〜C〜d〜E + A〜B〜CDE + A〜BC〜DE + A〜BCD〜E + AB〜C〜DE + AB〜CD〜E + ABC〜d〜E + ABCDE
答案 0 :(得分:0)
不得不承认这些公式有些难看,但实现逻辑集合并不太复杂,因为你可以重用部件。
A -----+------+------------- - - -
NOT |
+------|--AND- ~AB
| | |
AND-----|---|-- ~A~B
+--AND-+ |
| +--|---|-- A~B
NOT AND--|-- AB
B -----+------+---+---------- - - -
这里作为一个例子,我创建了[not] A和[not] B的所有组合。您可以对C和D执行相同的操作。因此,您可以通过将每个“框”中的导线与a和gatter组合来获得[not] A和[not] B和[not] C和[not] D的任意组合(例如,对于ABCD,我们将采用AB线和CD线。