返回首页

BCD 解码器 7seg:合成与仿真

本文描述了为七段指示器合成 BCD 解码器的过程:从真值表经过 DNF/CNF 和最小化,到 Digital Deeds 中的层次原理图。提供了 a–g 段的完整公式和实现说明。

在模拟器中从零组装 BCD-7seg 解码器
Advertisement 728x90

从真值表到仿真:7段数码管的BCD译码器设计

BCD译码器将4位二进制编码十进制(0–9)输入转换为7段数码管的控制信号。每个段(a–g)由输入x3(最高位)、x2、x1和x0(最低位)的逻辑函数控制。对于数字10–15(1010–1111),所有段均关闭。

真值表定义了各段的状态:

| 数字 | x3 | x2 | x1 | x0 | a | b | c | d | e | f | g |

Google AdInline article slot

|------|----|----|----|----|---|---|---|---|---|---|---|

| 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |

| 1 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 |

Google AdInline article slot

| 2 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 1 |

| 3 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 |

| 4 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 |

Google AdInline article slot

| 5 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 1 |

| 6 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 |

| 7 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |

| 8 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |

| 9 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 |

逻辑函数综合方法

对每个段,合成布尔函数。方法的选择取决于1或0在输出中占主导地位:

  • SOP(积之和,基于1):使用输出为1的最小项的合取,通过析取连接。当超过50%的输出为1时效果最佳。
  • POS(和之积,基于0):使用输出为0的最大项的析取,通过合取连接。当超过50%的输出为0时效果最佳。

以段A为例(2个0:1, 4)——采用POS:

  • 第0001行:(x3 ∨ x2 ∨ x1 ∨ ¬x0)
  • 第0100行:(x3 ∨ ¬x2 ∨ x1 ∨ x0)
  • A = (x3 ∨ x2 ∨ x1 ∨ ¬x0) ∧ (x3 ∨ ¬x2 ∨ x1 ∨ x0)

以段E为例(4个1)——采用SOP:

  • 0000:¬x3 ∧ ¬x2 ∧ ¬x1 ∧ ¬x0
  • 0010:¬x3 ∧ ¬x2 ∧ x1 ∧ ¬x0
  • 0110:¬x3 ∧ x2 ∧ x1 ∧ ¬x0
  • 1000:x3 ∧ ¬x2 ∧ ¬x1 ∧ ¬x0
  • E = 通过∨合并。

表达式化简

使用卡诺图或在线计算器进行简化。最终化简后的表达式(积之和形式):

  • a((¬x0 ∧ ¬x2) ∨ x3 ∨ x1 ∨ (x0 ∧ x2))
  • b((¬x0 ∧ ¬x1) ∨ ¬x2 ∨ x3 ∨ (x0 ∧ x1))
  • cx3 ∨ x2 ∨ ¬x1 ∨ x0
  • d((¬x0 ∧ ¬x2) ∨ x3 ∨ (¬x0 ∧ x1) ∨ (x0 ∧ ¬x1 ∧ x2) ∨ (x1 ∧ ¬x2))
  • e((¬x0 ∧ ¬x1 ∧ ¬x2) ∨ (¬x0 ∧ x1 ∧ ¬x3))
  • f((¬x0 ∧ ¬x1) ∨ x3 ∨ (¬x0 ∧ x2) ∨ (¬x1 ∧ x2))
  • g((¬x0 ∧ ¬x1 ∧ ¬x2) ∨ (¬x0 ∧ x1 ∧ ¬x2) ∨ (x0 ∧ x1 ∧ ¬x2) ∨ (x3 ∧ ¬x2 ∧ ¬x1))

这些表达式通过与门、或门和非门实现。

在Digital Deeds中的分层实现

Digital Deeds支持分层模块(.cbe表示模块,.pbs表示原理图)。

步骤1:段模块

  • 创建新模块:4个输入(x3–x0),1个输出。
  • 重命名引脚:双击修改。
  • 按公式连接导线(Ctrl+W),例如段A。

步骤2:主电路

  • 新建电路。
  • 导入自定义组件(7个模块)。
  • 将x0–x3并联输入至所有模块。
  • 输出连接至7段数码管。

测试:循环0000–1001可正确显示数字。模拟器生成时序图用于调试。

核心要点

  • 根据真值表中1或0的密度选择SOP或POS。
  • 化简可减少元件数量:卡诺图对4变量最优化。
  • 分层模块便于扩展至FPGA/ASIC设计。
  • BCD译码器是计数器、定时器和数字显示的基础。
  • 仿真测试可在实物原型前发现错误。

— Editorial Team

Advertisement 728x90

继续阅读