将设计一个组合电路来计算 4 位输入中 1 位的出现次数。但是,输入 1111 是电路的无效输入,在这种情况下输出将为 00。
这种电路的一个有效输入可能是 1110 和输出 11;另一个有效输入可能是 1010 和输出 10。
画出电路的真值表。使用卡诺图设计电路并使用 AND、OR 和 NOT 门绘制电路。
将设计一个组合电路来计算 4 位输入中 1 位的出现次数。但是,输入 1111 是电路的无效输入,在这种情况下输出将为 00。
这种电路的一个有效输入可能是 1110 和输出 11;另一个有效输入可能是 1010 和输出 10。
画出电路的真值表。使用卡诺图设计电路并使用 AND、OR 和 NOT 门绘制电路。
因为 4bit 输入最多可以有 4 个 1,所以我们可以将输出编码为 3bit 长的二进制数。
真值表如下所示:
w x y z y_2 y_1 y_0
---------+------------- number of positive bits
0 0 0 0 | 0 0 0 ~ 0
0 0 0 1 | 0 0 1 ~ 1
0 0 1 0 | 0 0 1 ~ 1
0 0 1 1 | 0 1 0 ~ 2
---------+-------------
0 1 0 0 | 0 0 1 ~ 1
0 1 0 1 | 0 1 0 ~ 2
0 1 1 0 | 0 1 0 ~ 2
0 1 1 1 | 0 1 1 ~ 3
---------+-------------
1 0 0 0 | 0 0 1 ~ 1
1 0 0 1 | 0 1 0 ~ 2
1 0 1 0 | 0 1 0 ~ 2
1 0 1 1 | 0 1 1 ~ 3
---------+-------------
1 1 0 0 | 0 1 0 ~ 2
1 1 0 1 | 0 1 1 ~ 3
1 1 1 0 | 0 1 1 ~ 3
1 1 1 1 | 1 0 0 ~ 4
但!您的情况下的输出只有两位。您的规范还认为 1111 输入与 00 输出无效。因此,您可以简单地删除真值表中最重要的列,不会有其他变化:
w x y z y_1 y_0
---------+--------- number of positive bits
0 0 0 0 | 0 0 ~ 0
0 0 0 1 | 0 1 ~ 1
0 0 1 0 | 0 1 ~ 1
0 0 1 1 | 1 0 ~ 2
---------+-------------
0 1 0 0 | 0 1 ~ 1
0 1 0 1 | 1 0 ~ 2
0 1 1 0 | 1 0 ~ 2
0 1 1 1 | 1 1 ~ 3
---------+-------------
1 0 0 0 | 0 1 ~ 1
1 0 0 1 | 1 0 ~ 2
1 0 1 0 | 1 0 ~ 2
1 0 1 1 | 1 1 ~ 3
---------+-------------
1 1 0 0 | 1 0 ~ 2
1 1 0 1 | 1 1 ~ 3
1 1 1 0 | 1 1 ~ 3
1 1 1 1 | 0 0 ~ invalid, showing zeros
现在您可以使用不同的样式来最小化输出函数y_1
和y_0
,但我认为卡诺图适合于此。
使用索引(表中从零开始索引的行数)或比较变量的组合,将每个输出函数的真值表的行转移到单独的 K-map 中。
对于输出函数y_0
,最终的 K-map 看起来像这样,您可以看到这是最小化的 SOP(DNF;连词的析取)函数,没有找到更大的组(项)。
y_0 = ¬w·¬x·¬y·z + ¬w·x·¬y·¬z + ¬w·¬x·y·¬z + ¬w·x·y·z
+ w·¬x·y·z + w·x·y·¬z + w·¬x·¬y·¬z + w·x·¬y·z
对于输出的最高有效位,我选择查找 POS(CNF;析取的合取),因为在输出中位的情况0
比位少。1
输出功能也可以y_0
通过标出所有正确的位来描述。在这种情况下,它将是这个 K-map 和函数:
y_1 = (w + x + y + z) · (w + x + y + ¬z) · (w + ¬x + y + z)
· (w + x + ¬y + z) · (¬w + ¬x + ¬y + ¬z) · (¬w + x + y + z)
但这可以最小化为 K-map 中的这个输出函数:
y_1 = (w + x + y) · (w + y + z) · (w + x + z)
· (¬w + ¬x + ¬y + ¬z) · (x + y + z)
之后,您可以使用正确的门或使用 Rott 网格将其转换为更合适的门组合。