数字电路/卡诺图
此页面讨论卡诺图,它是分析和优化数字电路的基本工具。
卡诺图(简称 K 图)是一种有用的工具,用于简化组合布尔方程和创建时序逻辑电路。卡诺图由 Maurice Karnaugh 于 1953 年创建。卡诺图的尺寸可能非常大,但是四列四行的尺寸比任何更大的地图都更容易理解。
这些图背后的理念是,布尔方程逻辑中只有一位不同的项彼此相邻。这只是布尔逻辑真值表的组织方法,但它可以帮助你简化逻辑方程。这已被证明对数字电路设计人员特别有用,因为它可以建议可以消除的组件或简化电路设计的方法。这降低了这些设计的成本和复杂性,甚至是一种自动化方法来开发这些电路,假设你可以首先得出逻辑真值表。
这里将演示如何手动评估卡诺图。对于涉及数十甚至数百个变量的非常复杂的电路设计,有可用的软件可以自动化此过程。
卡诺图的结构是网格状的。用于教学或小型项目的两种最常见的尺寸是三变量(2x4 网格或 4x2 网格,具体取决于用户)和四变量图(4x4 网格)。
只有在存在真值表的情况下才能创建 K 图;它在时序逻辑中以不同的方式工作,这将在后面讨论。一个完成的 K 图可以生成真值表,或者布尔方程反之亦然。一旦获得真值表,就可以创建卡诺图。K 图的左上角(有时只是顶部和左侧)显示了用于该边的变量。K 图示例的图片显示了与该边关联的变量。顶部是 A 和 B,下面的数字是 A 和 B 处于该列的哪个状态(即,列 10 是当 A 为真(高)且 B 为假(低)时)。从真值表中,我们将其输出放在相应的方块中(即,如果在真值表中,当 ABCD 为 1011 且输出为 1 时,那么在四变量图上,1 将放在第四列第二行)。以下示例显示了如何将真值表转换为 K 图,然后将 K 图转换为布尔方程。
在 K 图上,输入值组合的排列顺序至关重要。通过查看上面的示例图像,可以注意到它没有使用正常的或数字顺序的值(00, 01, 10, 11),而是使用(00, 01, 11, 10)。虽然通常可以使用许多排序方法,但并非所有可能的排序方法都适用于 K 图。有效 K 图排序的正式描述将由以下规则定义
- 两行或两列相邻的输入值组合必须恰好有一位不同。
- 该图是循环的:第一行和最后一行被认为是相邻的,第一列和最后一列也是相邻的。
- 每个可能的位组合必须在图中恰好出现一次。
对于二维图,满足这些规则很简单:一个变量分配给行,另一个变量分配给列,可以绘制一个 2x2 图,其中两个可能的序列(0,1 和 1,0)都是有效的。即使使用 (0,1) 表示一个变量,使用 (1,0) 表示另一个变量也是有效的。在三变量或四变量上,列或行(或两者,对于 4 个变量)都需要包含两个变量。上面示例中使用的序列 (00, 01, 11, 10) 很有效,也是最常用的;另一种选择可能是 (00, 10, 11, 01)。如果需要一个 5 个或更多输入电路的 K 图,那么需要组成更长的序列来满足上述规则。对于三个变量(8 种组合),通常使用 (000, 001, 011, 010, 110, 111, 101, 100) 序列。这足以用于最多 6 个输入或 64 种组合的地图;更大的电路很少用手绘制,最常见的是使用专门的软件来构建地图,甚至从中检索信息;但是,如果有需要,可以通过 构建 n 位格雷码 来构建合适的组合序列。
正如从后面的部分中可以注意到,通过 K 图优化电路完全依赖于上述规则或这些图的属性,因此使用错误的组合序列可能会导致电路不优化,甚至导致电路无法产生预期的输出。