当前位置: 首页 > news >正文

逻辑表达式与真值表转换

逻辑表达式与真值表转换

真值表与逻辑表达式是数字电路设计的两种等价表示,掌握它们之间的转换是基本功。


🎯 本章学习要点

  • 理解真值表的结构和表示方法
  • 掌握从真值表写出逻辑表达式(最小项之和)
  • 掌握从逻辑表达式列出真值表
  • 了解最大项之积的表达方式

1️⃣ 真值表基础

什么是真值表?

📊 真值表的定义 真值表(Truth Table)是一种列出逻辑函数所有输入组合 及其对应输出的表格。 ┌─────────────────────────────────────────────────────────────┐ │ │ │ 真值表 = 列出所有可能的输入组合 + 对应的输出值 │ │ │ │ 对于n个输入变量,真值表有 2ⁿ 行 │ │ │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ 2输入与门的真值表 │ │ │ ├───────┬───────┬───────┐ │ │ │ │ A │ B │ Y │ │ │ │ ├───────┼───────┼───────┤ │ │ │ │ 0 │ 0 │ 0 │ │ │ │ │ 0 │ 1 │ 0 │ │ │ │ │ 1 │ 0 │ 0 │ │ │ │ │ 1 │ 1 │ 1 │ │ │ │ └───────┴───────┴───────┘ │ │ │ │ └─────────────────────────────────────────────────────────────┘

真值表的行数规律

🔢 输入变量数与真值表行数 ┌─────────────────────────────────────────────────────────────┐ │ │ │ 1个变量: 2¹ = 2 行 (0, 1) │ │ 2个变量: 2² = 4 行 (00, 01, 10, 11) │ │ 3个变量: 2³ = 8 行 │ │ 4个变量: 2⁴ = 16 行 │ │ n个变量: 2ⁿ 行 │ │ │ │ 💡 规律:每增加一个变量,行数翻倍 │ │ │ └─────────────────────────────────────────────────────────────┘

真值表的排列顺序

📝 标准的输入排列顺序(二进制递增) 对于3变量函数 A, B, C: ┌─────────────────────────────────────────────────────────────┐ │ │ │ 标准顺序(自然二进制计数): │ │ ┌───────┬───────┬───────┐ │ │ │ A │ B │ C │ │ │ ├───────┼───────┼───────┤ │ │ │ 0 │ 0 │ 0 │ ← m0 │ │ │ 0 │ 0 │ 1 │ ← m1 │ │ │ 0 │ 1 │ 0 │ ← m2 │ │ │ 0 │ 1 │ 1 │ ← m3 │ │ │ 1 │ 0 │ 0 │ ← m4 │ │ │ 1 │ 0 │ 1 │ ← m5 │ │ │ 1 │ 1 │ 0 │ ← m6 │ │ │ 1 │ 1 │ 1 │ ← m7 │ │ └───────┴───────┴───────┘ │ │ │ │ ⚠️ 最后一列通常从0→1快速变化(LSB), │ │ 第一列变化最慢(MSB) │ │ │ └─────────────────────────────────────────────────────────────┘

2️⃣ 从真值表到逻辑表达式

最小项(Minterm)

📐 最小项的定义 对于n个变量,最小项是所有变量的乘积项, 每个变量以原变量或反变量形式出现且仅出现一次。 ┌─────────────────────────────────────────────────────────────┐ │ │ │ 【示例】3变量 A, B, C 的最小项 │ │ │ │ 变量状态 │ 最小项 │ 符号表示 │ │ ───────────────────────────────────────────── │ │ A=0,B=0,C=0 │ Ā·B̄·C̄ │ m0 │ │ A=0,B=0,C=1 │ Ā·B̄·C │ m1 │ │ A=0,B=1,C=0 │ Ā·B·C̄ │ m2 │ │ A=0,B=1,C=1 │ Ā·B·C │ m3 │ │ A=1,B=0,C=0 │ A·B̄·C̄ │ m4 │ │ A=1,B=0,C=1 │ A·B̄·C │ m5 │ │ A=1,B=1,C=0 │ A·B·C̄ │ m6 │ │ A=1,B=1,C=1 │ A·B·C │ m7 │ │ │ │ 💡 规律: │ │ - 变量=1 → 写原变量 │ │ - 变量=0 → 写反变量 │ │ │ └─────────────────────────────────────────────────────────────┘

最小项之和(Sum of Minterms)

📝 从真值表写出逻辑表达式的步骤 ┌─────────────────────────────────────────────────────────────┐ │ │ │ 【方法】 │ │ │ │ Step 1: 找出所有输出为1的行 │ │ │ │ Step 2: 对每行写出对应的最小项 │ │ (变量=1写原变量,变量=0写反变量) │ │ │ │ Step 3: 将所有最小项相加(OR运算) │ │ │ └─────────────────────────────────────────────────────────────┘

实例演练

📖 示例1:3输入多数表决器 ┌─────────────────────────────────────────────────────────────┐ │ │ │ 【问题】Y=1 当且仅当 输入A,B,C中1的个数≥2 │ │ │ │ 【真值表】 │ │ ┌───────┬───────┬───────┬───────┐ │ │ │ A │ B │ C │ Y │ │ │ ├───────┼───────┼───────┼───────┤ │ │ │ 0 │ 0 │ 0 │ 0 │ │ │ │ 0 │ 0 │ 1 │ 0 │ │ │ │ 0 │ 1 │ 0 │ 0 │ │ │ │ 0 │ 1 │ 1 │ 1 │ ← m3 = ĀBC │ │ │ 1 │ 0 │ 0 │ 0 │ │ │ │ 1 │ 0 │ 1 │ 1 │ ← m5 = A B̄C │ │ │ 1 │ 1 │ 0 │ 1 │ ← m6 = AB C̄ │ │ │ 1 │ 1 │ 1 │ 1 │ ← m7 = ABC │ │ └───────┴───────┴───────┴───────┘ │ │ │ │ 【写出最小项之和】 │ │ │ │ Y = m3 + m5 + m6 + m7 │ │ = ĀBC + AB̄C + ABC̄ + ABC │ │ │ │ 【化简】(使用卡诺图或代数法) │ │ │ │ Y = AB + AC + BC │ │ 或 │ │ Y = AB + BC + AC (三个乘积项) │ │ │ └─────────────────────────────────────────────────────────────┘
📖 示例2:8421BCD码校验器 ┌─────────────────────────────────────────────────────────────┐ │ │ │ 【问题】检测输入是否为有效的8421BCD码(0~9) │ │ │ │ 【真值表】(输入为4位二进制 D C B A) │ │ │ │ ┌─────┬─────┬─────┬─────┬─────┐ │ │ │ D │ C │ B │ A │ Y │ │ │ ├─────┼─────┼─────┼─────┼─────┤ │ │ │ 0 │ 0 │ 0 │ 0 │ 1 │ ← 有效 0 │ │ │ 0 │ 0 │ 0 │ 1 │ 1 │ ← 有效 1 │ │ │ 0 │ 0 │ 1 │ 0 │ 1 │ ← 有效 2 │ │ │ ...(0~9都有效)... │ │ │ 1 │ 0 │ 1 │ 0 │ 0 │ ← 无效 A │ │ │ 1 │ 0 │ 1 │ 1 │ 0 │ ← 无效 B │ │ │ 1 │ 1 │ 0 │ 0 │ 0 │ ← 无效 C │ │ │ 1 │ 1 │ 0 │ 1 │ 0 │ ← 无效 D │ │ │ 1 │ 1 │ 1 │ 0 │ 0 │ ← 无效 E │ │ │ 1 │ 1 │ 1 │ 1 │ 0 │ ← 无效 F │ │ └─────┴─────┴─────┴─────┴─────┘ │ │ │ │ 【最小项之和】 │ │ │ │ Y = Σm(0,1,2,3,4,5,6,7,8,9) │ │ = m0 + m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 │ │ │ │ 【简化分析】 │ │ Y=0 只有当输入≥10时,即 D=1 且 (C=1 或 (B=1 且 A=1)) │ │ 所以 Ȳ = D·(C + B·A) │ │ Y = D̄ + C̄·B̄ + C̄·Ā = D̄ + C̄·(B̄ + Ā) │ │ │ └─────────────────────────────────────────────────────────────┘

3️⃣ 从逻辑表达式到真值表

步骤方法

🔧 从逻辑表达式列出真值表的步骤 ┌─────────────────────────────────────────────────────────────┐ │ │ │ Step 1: 确定变量数和真值表行数(2ⁿ行) │ │ │ │ Step 2: 按标准顺序列出所有输入组合 │ │ │ │ Step 3: 对每个输入组合,计算输出值 │ │ (代入表达式,逐一计算) │ │ │ │ Step 4: 填入真值表 │ │ │ └─────────────────────────────────────────────────────────────┘

实例演练

📖 示例:列出 Y = A + B̄C 的真值表 Step 1: 3个变量 → 2³ = 8行 Step 2: 列出所有输入组合 ┌───────┬───────┬───────┐ │ A │ B │ C │ ├───────┼───────┼───────┤ │ 0 │ 0 │ 0 │ │ 0 │ 0 │ 1 │ │ 0 │ 1 │ 0 │ │ 0 │ 1 │ 1 │ │ 1 │ 0 │ 0 │ │ 1 │ 0 │ 1 │ │ 1 │ 1 │ 0 │ │ 1 │ 1 │ 1 │ └───────┴───────┴───────┘ Step 3: 逐一计算 Y = A + B̄C m0: A=0, B=0, C=0 → Y = 0 + (1·0) = 0 + 0 = 0 m1: A=0, B=0, C=1 → Y = 0 + (1·1) = 0 + 1 = 1 m2: A=0, B=1, C=0 → Y = 0 + (0·0) = 0 + 0 = 0 m3: A=0, B=1, C=1 → Y = 0 + (0·1) = 0 + 0 = 0 m4: A=1, B=0, C=0 → Y = 1 + (1·0) = 1 + 0 = 1 m5: A=1, B=0, C=1 → Y = 1 + (1·1) = 1 + 1 = 1 m6: A=1, B=1, C=0 → Y = 1 + (0·0) = 1 + 0 = 1 m7: A=1, B=1, C=1 → Y = 1 + (0·1) = 1 + 0 = 1 Step 4: 填入真值表 ┌───────┬───────┬───────┬───────┐ │ A │ B │ C │ Y │ ├───────┼───────┼───────┼───────┤ │ 0 │ 0 │ 0 │ 0 │ │ 0 │ 0 │ 1 │ 1 │ │ 0 │ 1 │ 0 │ 0 │ │ 0 │ 1 │ 1 │ 0 │ │ 1 │ 0 │ 0 │ 1 │ │ 1 │ 0 │ 1 │ 1 │ │ 1 │ 1 │ 0 │ 1 │ │ 1 │ 1 │ 1 │ 1 │ └───────┴───────┴───────┴───────┘ 验证:Y = Σm(1,4,5,6,7) ✓

4️⃣ 最大项与最大项之积

最大项(Maxterm)

📐 最大项的定义 对于n个变量,最大项是所有变量的和项, 每个变量以原变量或反变量形式出现且仅出现一次。 ┌─────────────────────────────────────────────────────────────┐ │ │ │ 【与最小项的对比】 │ │ │ │ ┌──────────────┬────────────────┬────────────────┐ │ │ │ 输入 │ 最小项m │ 最大项M │ │ │ │ A B C │ A·B·C │ A+B+C │ │ │ ├──────────────┼────────────────┼────────────────┤ │ │ │ 0 0 0 │ Ā·B̄·C̄ (m0) │ A+B+C (M0) │ │ │ │ 0 0 1 │ Ā·B̄·C (m1) │ A+B+Ā (M1) │ │ │ │ 0 1 0 │ Ā·B·C̄ (m2) │ A+Ā+C̄ (M2) │ │ │ │ ... │ ... │ ... │ │ │ │ 1 1 1 │ A·B·C (m7) │ Ā+B̄+C̄ (M7) │ │ │ └──────────────┴────────────────┴────────────────┘ │ │ │ │ 💡 规律: │ │ - 最小项:变量=0写反变量,变量=1写原变量 │ │ - 最大项:变量=0写原变量,变量=1写反变量 │ │ - mⱼ 与 Mⱼ 互为补集:mⱼ = M̄ⱼ │ │ │ └─────────────────────────────────────────────────────────────┘

最大项之积(Product of Maxterms)

📝 从真值表写出最大项之积 【方法】 Step 1: 找出所有输出为0的行 Step 2: 对每行写出对应的最大项(变量=0写原变量,变量=1写反变量) Step 3: 将所有最大项相乘(AND运算) 【示例】 ┌───────┬───────┬───────┬───────┐ │ A │ B │ C │ Y │ ├───────┼───────┼───────┼───────┤ │ 0 │ 0 │ 0 │ 0 │ ← M0 = A+B+C │ 0 │ 0 │ 1 │ 1 │ │ 0 │ 1 │ 0 │ 0 │ ← M2 = A+Ā+C̄ │ 0 │ 1 │ 1 │ 1 │ │ 1 │ 0 │ 0 │ 0 │ ← M4 = Ā+B+C │ 1 │ 0 │ 1 │ 1 │ │ 1 │ 1 │ 0 │ 1 │ │ 1 │ 1 │ 1 │ 1 │ └───────┴───────┴───────┴───────┘ Y = Σm(1,3,5,6,7) = ΠM(0,2,4) = (A+B+C)(A+Ā+C̄)(Ā+B+C)

最小项之和 vs 最大项之积

⚖️ 两种表达式的对比 ┌─────────────────────────────────────────────────────────────┐ │ │ │ ┌────────────────────────────────────────────────────┐ │ │ │ Y = Σm(输出为1的最小项) │ │ │ │ 或 │ │ │ │ Y = ΠM(输出为0的最大项) │ │ │ │ │ │ │ │ Σm = Sum of Minterms = 最小项之和 = "OR形式的1" │ │ │ │ ΠM = Product of Maxterms = 最大项之积 = "AND形式" │ │ │ └────────────────────────────────────────────────────┘ │ │ │ │ 💡 何时用哪种? │ │ - 输出1少 → 用最小项之和(更简洁) │ │ - 输出0少 → 用最大项之积(更简洁) │ │ │ │ ⚠️ 两种形式可以互相转换! │ │ Y = Σm(i,j,k) ⟺ Y = ΠM(其他所有索引) │ │ │ └─────────────────────────────────────────────────────────────┘

5️⃣ 完整设计流程回顾

🔄 组合逻辑电路设计完整流程 ┌─────────────────────────────────────────────────────────────┐ │ │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ 开始 │ │ │ └────────────────────┬────────────────────────────────┘ │ │ ↓ │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ 1. 确定输入输出,明确电路功能 │ │ │ └────────────────────┬────────────────────────────────┘ │ │ ↓ │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ 2. 列出真值表 │ │ │ └────────────────────┬────────────────────────────────┘ │ │ ↓ │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ 3. 写出逻辑表达式(最小项之和) │ │ │ └────────────────────┬────────────────────────────────┘ │ │ ↓ │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ 4. 化简逻辑表达式 │ │ │ │ - 代数法(布尔代数定律) │ │ │ │ - 卡诺图法(可视化) │ │ │ └────────────────────┬────────────────────────────────┘ │ │ ↓ │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ 5. 画出电路图 │ │ │ │ - 选择合适的逻辑门 │ │ │ │ - 优化门电路(与非门/或非门实现) │ │ │ └────────────────────┬────────────────────────────────┘ │ │ ↓ │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ 6. 验证设计 │ │ │ └────────────────────┬────────────────────────────────┘ │ │ ↓ │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ 完成 │ │ │ └─────────────────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────┘

📝 本章小结

✅ 逻辑表达式与真值表转换要点 ┌─────────────────────────────────────────────────────────────┐ │ 【最小项】 │ │ - 定义:n个变量的乘积项,每个变量出现一次 │ │ - 变量=0 → 写反变量;变量=1 → 写原变量 │ │ - 符号:m₀, m₁, m₂, ... │ │ - 性质:mⱼ = M̄ⱼ(互补) │ │ │ │ 【最大项】 │ │ - 定义:n个变量的和项,每个变量出现一次 │ │ - 变量=0 → 写原变量;变量=1 → 写反变量 │ │ - 符号:M₀, M₁, M₂, ... │ │ │ │ 【表达式形式】 │ │ - 最小项之和:Y = Σm(i,j,k...) │ │ - 最大项之积:Y = ΠM(i,j,k...) │ │ │ │ 【转换关系】 │ │ Y = Σm(1的行) ⟺ Y = ΠM(0的行) │ │ │ └─────────────────────────────────────────────────────────────┘

🔗 延伸阅读

  • 《数字电子技术基础》- 阎石 - 第4章组合逻辑电路
  • 工具:在线真值表生成器
  • 实践:完成5道真值表↔表达式互化练习

http://www.jsqmd.com/news/799426/

相关文章:

  • 为什么92%的SaaS团队在3个月内切换了语音服务商?——ElevenLabs与PlayAI在WebRTC集成、WebAssembly兼容性及低功耗端侧部署的实战踩坑全记录
  • 工控HMI界面设计:从原则到实践的效率革命
  • Neovim涂抹光标插件:提升编码体验的动态轨迹设计
  • 避坑指南:在STM32上实现Modbus RTU主机,这些时序和中断处理的细节你注意了吗?
  • AUTOSAR Wdg模块的两种“狗”:片内看门狗与SPI外挂看门狗配置异同点解析
  • 从DataOperation接口到QuickSort实现:探究适配器模式在算法整合中的应用
  • 实测推荐!2025年在线降重工具终极指南,6款平台横向对比帮你选出最优方案
  • mysql如何提升临时表的处理性能_优化tmp_table_size与内存设置
  • New-API数据导出功能:轻松管理AI模型使用记录与账单数据
  • 基于KMM与Compose Multiplatform的跨平台聊天机器人SDK集成指南
  • 自动驾驶核心技术解析:从ODD、OEDR到商业化落地路径
  • Google Maps路线响应延迟超800ms?Gemini边缘推理加速方案上线即降为112ms(附可复用TensorRT优化脚本)
  • 新手避坑指南:大疆F450机架+Pixhawk飞控组装,从焊接电调到调参的完整流程
  • 告别驱动开发:手把手教你用himm工具在用户空间玩转Hi3516的GPIO
  • 终极指南:FanControl如何解决Windows风扇控制难题,让你的电脑告别噪音与高温
  • 2026最权威的五大AI学术方案解析与推荐
  • 避开Halcon傅里叶滤波的坑:你的‘dc_center’参数真的设对了吗?
  • ARMv8-M架构与Cortex-M33安全特性详解
  • 硬件开发中云边端架构的平衡之道:从实时性到可靠性的工程实践
  • Google Calendar智能安排深度拆解(Gemini原生集成技术白皮书级解析)
  • 别再只盯着密钥了!深入ESP32 eFuse,看懂flash加密背后的硬件安全逻辑
  • Python入门之基础语法详解
  • Armv8-R AArch64架构TLB维护指令与内存屏障详解
  • PostgreSQL数据清洗实战:用CAST和CASE表达式把混乱的‘A/B/C/1/2/3’评分表统一成数字
  • 手把手教你用Gstreamer和V4L2在Zynq MPSoC上搭建视频流Pipeline(HDMI IN to DP OUT)
  • 网络空间安全:第五空间的“守护者”,这个专业为什么越来越“香“?
  • 路线图:AI 编程新范式与框架生态
  • Go 里什么时候可以“panic”?
  • Matlab中repelem函数:从向量到矩阵的智能元素复制
  • Deno-ANSI:专为Deno打造的终端样式与控制库