DL@数字逻辑@卡诺图及其化简

本文介绍卡诺图的基本概念及其在逻辑函数化简中的应用。通过将真值表转化为卡诺图,利用卡诺图进行逻辑函数的简化,包括卡诺图构造、相邻变量分组、合并规律及最小项等核心内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

abtract

  • 卡诺图的概念和构造
  • 从一般与或式快速得到标准与或式(主范式)

卡诺图

  • 用真值表可以描述一个逻辑函数。但是,直接把真值表作为运算工具十分不方便。

  • 如果将真值表变换成方格图的形式,按循环码(格雷码)的规则来排列变量的取值组合,所得的真值图称为卡诺图

卡诺图化简逻辑函数

  • 利用卡诺图,可以十分方便地对逻辑函数(变量个数不多的情况下)进行简化,通常称为图解法卡诺图法

卡诺图构造

  • 将真值表变换成卡诺图,是将变量分成两组
    • 如果是3变量,则分成AB组,C一组
    • 如果是4变量,则分成AB一组,CD一组。
    • 每一组变量取值组合按循环码的规则排列。
      • 所谓循环码,是相邻两组之间只有一个变量值不同的编码,
      • 例如,2变量的4种取值组合按00-01-11-10排列。
卡诺图中的相邻
  • 这里的相邻,包含头、尾两组,即10与00间也是相邻的(同样要求只有一个变量值不同)

变量分组

  • 当逻辑函数的变量较多时(超过4个),每组变量可能含有3个或4个以上的变量。

  • 如果是n个变量,则一共有 2 n 2^n 2n个取值组合。

    • 最低位变量取值按0110重复排列
    • 次低1位按00111100重复排列:
    • 再前1位按0000111111110000重复排列
    • …(参与重复的循环节是对称的;循环节给出的是最长的情况,如果循环节长度达到 2 n 2^n 2n,则不重复)
    • 依次类推,最高位变量的取值是 2 n − 1 2^{n-1} 2n1个连0和 2 n − 1 2^{n-1} 2n1个连1排列(不对称,不再重复)
    • 这样可以得到 2 n 2^n 2n个取值组合的循环码排列。
附:循环码规律
  • 下表给出了2~4个变量循环码的排列,从这个表可以看出循环码排列的规律。

  • 2 1 2^1 21 2 0 2^0 20 2 2 2^2 22 2 1 2^1 21 2 0 2^0 20 2 3 2^3 23 2 2 2^2 22 2 1 2^1 21 2 0 2^0 20
    A高位B低位A高位BC低位A高位BCD低位
    000000000
    010010001
    110110011
    100100010
    1100110
    1110111
    1010101
    1000100
    1100
    1101
    1111
    1110
    1010
    1011
    1001
    1000

合并规律

(1)2个相邻最小项可合并,并消去1个因子,剩下公共因子;
(2)4个相邻最小项可合并,并消去2个因子,剩下公共因子;
(3)8个相邻最小项可合并,并消去3个因子,剩下公共因子。

合并方法

  • 卡诺圈覆盖范围内,某个变量取值有0有1,则该变量可消去

  • 剩余变量取值为1的为原变量,取值为0的为反变量

卡诺图合并最小项的特点

  1. 任何一个卡诺圈所含的方格数 2 i 2^{i} 2i
  • 显然不能是奇数
  1. 必须按逻辑相邻规则画卡诺圈,包括,
    (a) 相接,即紧挨着的方格相邻;
    (b) 相对,即一行(或一列)的两头、两边、四角相邻;
    © 相重,即以对称轴为中心对折起来重合的位置相邻。
  2. 2 m 2^m 2m个方格合并,消去 m m m个变量。
    • 合并圈越大,消去的变量数越多。

用卡诺图化简逻辑函数

(1) 把逻辑函数化为最小项表达式;
(2) 画出该逻辑函数的卡诺图;

(3) 画卡诺圈

(4) 写出各卡诺圈对应的与项表达式,并将它们相或。

卡诺圈

指遵循以下规则的卡诺图中的圈:

  1. 2 n 2^n 2n大小画方框。(主要项)
  2. 使画出的方框的总个数最少,即代数式的与项最少
  3. 使每个方框尽可能大,即每个与项的变量最少

卡诺圈之间的要求

  1. 每个方框必须有新的含“1”的最小项。(必要项)
  2. 用完所有的含“1”的最小项
  3. 可以重复使用最小项;

用卡诺图表示逻辑函数的方法

  • 由于任意一个n变量的逻辑函数都可以变换成最小项表达式。

  • 而n变量的卡诺图包含了n个变量的所有最小项,所以n变量的卡诺图可以表示n变量的任意一个逻辑函数。

  • 例如,表示一个3变量的逻辑变量 F ( A , B , C ) = ∑ m ( 3 , 5 , 6 , 7 ) F(A,B,C)=\sum{m}(3,5,6,7) F(A,B,C)=m(3,5,6,7),可以在3变量卡诺图的 m 3 , m 5 , m 6 , m 7 m_3,m_5,m_6,m_7 m3,m5,m6,m7,的小方格中加以标记

    • 一般是在3变量卡诺图对应 m 3 , m 5 , m 6 , m 7 m_3,m_5,m_6,m_7 m3,m5,m6,m7的小方格中填1,其余各小方格填0(或者不填)。
    • 填1的小方格称为1格,填0的小方格称为0格
    • 1格的含义是,当函数的变量取值与该小方格代表的最小项相同时,函数值为1
  • 对于一个非标准的逻辑函数表达式(即不是最小项表达式),通常是将逻辑函数变换成最小项表达式再填图。例如

    • F = A B C ˉ + A ˉ B D + A C = A B C ˉ D ˉ + A B C ˉ D + A ˉ B C ˉ D + A ˉ B C D + A B ˉ C D ˉ + A B ˉ C D + A B C D ˉ + A B C D = ∑ m ( 12 , 13 , 5 , 7 , 10 , 11 , 14 , 15 ) \begin{aligned} F= & A B \bar{C}+\bar{A} B D+A C\\ =&A B \bar{C} \bar{D}+A B \bar{C} D+\bar{A} B \bar{C} D+\bar{A} B C D+ \\ & A \bar{B} C \bar{D}+A \bar{B} C D+A B C \bar{D}+A B C D \\ =& \sum m(12,13,5,7,10,11,14,15) \end{aligned} F===ABCˉ+AˉBD+ACABCˉDˉ+ABCˉD+AˉBCˉD+AˉBCD+ABˉCDˉ+ABˉCD+ABCDˉ+ABCDm(12,13,5,7,10,11,14,15)

最小项👺

  • 最小项(minterm):一个与项(乘积项),它包含了某逻辑函数的全部变量,且每个变量在该与项中只出现一次
  • 最小项编号:使最小项等于1的一组变量取值组合(二进制),所转换成对应的十进制数,用 m i m_i mi表示
  • 最小项表达式:全部由最小项相加而构成的与-或表达式,又叫标准与-或式、标准积之和式。

直接观察法(与或式)快速绘制卡诺图

  • 有些函数变换成最小项表达式时十分繁琐,可以采用直接观察法。
    • 特别是变量多但是逻辑函数与或式中的与项又十分简单,还原标准与或式比较费劲

基本原理

  • 在数理逻辑(离散数学)中,我们讨论过任意 n n n元逻辑函数F的真值表有 2 n 2^{n} 2n个不同赋值

  • F的标准与或式能够容易得反映(还原)真值表

  • F的标准与或式中的与项设有 s s s项,那么相应得有 s s s个成真赋值,剩余 2 n − s 2^{n}-s 2ns个都是成假赋值

  • 并且如果我们能够枚举(或者已经知道)所有 F F F的成真赋值,那么可以立即写出F的标准与或式

  • 例如 F F F的所有成真赋值为 i 1 , ⋯   , i s i_1,\cdots,i_s i1,,is,那么F的标准与火项(最小项间的并)表示为 F = m i 1 + ⋯ + m i s F=m_{i_1}+\cdots+m_{i_s} F=mi1++mis

  • 再根据 i 1 , ⋯   , i s i_1,\cdots,i_s i1,,is二进制形式对卡诺表填充1即可

  • 总结一句话:在逻辑函数与或式F中,与项中只要有一个变量因子(输入变元)的成真赋值取1,该乘积项则为1,从而F成真

  • 上述过程和一般的步骤大致相同:先得到标准与或式,再根据各个最小项的成真赋值填充卡诺表

  • 重点在于枚举出所有成真赋值

    • 假设4元逻辑函数 F = A B ‾ C + A ‾    B ‾ C + D + A D F=A\overline{B}C+\overline{A}\;\overline{B}C+D+AD F=ABC+ABC+D+AD

      • 我们分别将上述 F F F的4个与项记为 t 1 , t 2 , t 3 , t 4 t_1,t_2,t_3,t_4 t1,t2,t3,t4
      • t 1 t_1 t1相较于4元最小项少了 ( D ) (D) (D),说明 t 1 t_1 t1 ( D ) (D) (D)的无关项
        • (我们不妨用 ( D ) (D) (D)表示 D , D ‾ D,\overline{D} D,D中的一个),缺少的这一个文字代表该与或式有1个自由度
        • 设F的输入的4个位为 x 1 x 2 x 3 x 4 x_1x_2x_3x_4 x1x2x3x4,
    • 分别讨论

      1. 令前3位 x 1 x 2 x 3 x_1x_2x_3 x1x2x3分别取101,那么至少能保证 t 1 t_1 t1此时成真,从而F成真(不论 x 4 x_4 x4取多少不影响F成真)

        1. 1010
        2. 1011
      2. 令赋值的前3位分别为001,则至少能保证 t 2 t_2 t2为1

        1. 0010
        2. 0011
      3. x 4 = 1 x_4=1 x4=1,则能够保证 t 3 t_3 t3成真(前3位有 2 3 2^3 23中可能取值,它们都能使 t 3 t_3 t3成真)

        1. 0001
        2. 0011(和2.2重复)
        3. 0101
        4. 0111
        5. 1001
        6. 1011(和1.2重复)
        7. 1101
        8. 1111
      4. x 1 = 1 , x 4 = 1 x_1=1,x_4=1 x1=1,x4=1,则能保证 t 4 t_4 t4成真

        1. 1001(和2.5重复)
        2. 1011(和1.2重复)
        3. 1101(和2.7重复)
        4. 1111(和2.8重复)
    • 根据所有不重复的取值(公10个)填入卡诺表中即可完成卡诺图

在这里插入图片描述

改进

  • 如果函数能够进行初步化简,应当要先适当化简

  • 例如 F = A B ‾ C + A ‾    B ‾ C + D + A D F=A\overline{B}C+\overline{A}\;\overline{B}C+D+AD F=ABC+ABC+D+AD,

    • A B ‾ C + A ‾    B ‾ C A\overline{B}C+\overline{A}\;\overline{B}C ABC+ABC= B ‾ C ( A + A ‾ ) \overline{B}C(A+\overline{A}) BC(A+A)= B ‾ C \overline{B}C BC
    • D + A D = D D+AD=D D+AD=D(吸收律)
  • 化简成了: F = B ‾ C + D F=\overline{B}C+D F=BC+D

w 1 = B ‾ C w_1=\overline{B}C w1=BC w 2 = D w_2=D w2=D备注
1.0010
2.0011
3.1010
4.1011
1. 0001
2. 0011(重复)
3. 0101
4. 0111
5. 1001
6. 1011(重复)
7. 1101
8. 1111
w 1 , w 2 w_1,w_2 w1,w2中仍然有重复,但是容易去除
只要将 w 1 w_1 w1中最后一位是1再合计时剔除即可
x01xxxx1

5变量卡诺图

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cxxu1375

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值