第3章 逻辑代数基础:基本逻辑运算与复合逻辑运算

各位同学,今天我们来聊聊数字电路的“语言”——逻辑代数。说实话,这东西刚接触时觉得抽象,但用久了你会发现,它就是数字世界的加减乘除。

我个人习惯把逻辑代数比作“开关游戏”。每个变量要么是0,要么是1。没有中间态,没有模糊地带。这种二值性,恰恰是数字电路可靠性的根源。

3.1 基本逻辑运算:与、或、非

最基本的三种运算,就像红黄蓝三原色。所有复杂的逻辑功能,最终都能拆解成这三种操作。

3.1.1 与运算(AND)

与运算的规则很简单:所有条件都满足,结果才成立。用数学表达式就是 Y = A · B,或者简写为 Y = AB。

我在项目中遇到过一个问题:一个使能信号和时钟信号做与运算,结果时钟沿出现了毛刺。后来发现,与门对信号边沿很敏感,不能随便用。嗯,这里要注意。

ABY = A·B
000
010
100
111
小技巧:在Verilog中,与运算用 & 表示。比如 assign y = a & b; 注意,位宽不同时,系统会自动扩展,但容易出bug。我建议你始终保证操作数位宽一致。

3.1.2 或运算(OR)

或运算的逻辑是:只要有一个条件满足,结果就成立。表达式为 Y = A + B。

你想想看,这就像并联的两个开关。任何一个闭合,灯就亮。在FPGA中,或门常用于多路信号的选择或中断合并。

ABY = A+B
000
011
101
111

3.1.3 非运算(NOT)

非运算最简单,就是取反。Y = Ā,或者写成 Y = !A。0变1,1变0。

我曾经在调试一个状态机时,发现状态跳转总是不对。查了半天,原来是一个取反信号被综合工具优化掉了。所以,非运算虽然简单,但使用时要注意综合器的行为。

核心记忆法:
  • 与门:全1出1,有0出0
  • 或门:有1出1,全0出0
  • 非门:1变0,0变1

3.2 复合逻辑运算

基本运算组合一下,就得到了复合逻辑。这些在实际电路中更常用,因为一个复合门就能完成多个基本门的功能,节省面积和延迟。

3.2.1 与非运算(NAND)

与非就是“先与后非”。Y = (A·B)'。说白了,就是与门后面接个非门。

有意思的是,与非门是通用门。什么意思?只用与非门,就能搭出任何逻辑电路。我在做ASIC设计时,标准单元库里最常用的就是与非门,因为它驱动能力强,面积也小。

ABY = (A·B)'
001
011
101
110

3.2.2 或非运算(NOR)

或非是“先或后非”。Y = (A+B)'。它也是通用门。

我记得有一次,一个同事用或非门搭了一个SR锁存器,结果因为输入信号有毛刺,锁存器状态乱跳。后来加了滤波才解决。所以,用或非门时要注意输入信号的稳定性。

3.2.3 异或运算(XOR)

异或很有意思:两个输入不同,输出为1;相同则输出0。表达式为 Y = A ⊕ B。

异或在数字电路中应用极广。比如加法器、奇偶校验、数据加密。我在做通信接口时,经常用异或来生成CRC校验码。

ABY = A⊕B
000
011
101
110
避坑指南:我曾经在高速设计中,用异或门做数据比较。结果发现,当两个信号同时跳变时,异或门输出会出现毛刺。这是因为两个输入到达时间有微小差异。解决办法是加一级寄存器同步。

3.2.4 同或运算(XNOR)

同或是异或的取反。Y = (A⊕B)'。两个输入相同,输出为1;不同则输出0。说白了,就是“相等检测器”。

同或常用于数据比较、错误检测。比如,你想判断两个8位数据是否相等,用8个同或门,再把结果与起来就行。

3.3 逻辑代数的基本定律

这些定律,说白了就是化简逻辑表达式的“武功秘籍”。掌握了它们,你就能把复杂的逻辑电路化简成最简形式,节省资源,提高速度。

3.3.1 基本定律

  • 交换律:A·B = B·A,A+B = B+A。这个好理解,就像加法乘法一样。
  • 结合律:(A·B)·C = A·(B·C),(A+B)+C = A+(B+C)。多个变量运算时,顺序不影响结果。
  • 分配律:A·(B+C) = A·B + A·C,A+B·C = (A+B)·(A+C)。注意,第二个分配律在普通代数中没有,是逻辑代数特有的。

3.3.2 摩根定律

这是最重要的定律,没有之一。它描述了与非、或非与基本运算的关系:

  • (A·B)' = A' + B'
  • (A+B)' = A' · B'

你想想看,有了摩根定律,我们就能在“与或式”和“或与式”之间自由转换。我在做逻辑综合时,经常用摩根定律把表达式转换成目标工艺库支持的逻辑门类型。

记忆口诀:“头上戴帽子,中间变符号,下面每个变量都戴帽子”。意思是,对整个表达式取反时,与变或,或变与,每个变量单独取反。

3.3.3 吸收律与冗余律

  • 吸收律:A + A·B = A,A·(A+B) = A。这个很实用,能直接消掉多余项。
  • 冗余律:A·B + A'·C + B·C = A·B + A'·C。第三项是冗余的,可以去掉。

我曾经优化一个组合逻辑,用了冗余律,把6个门简化成了3个门。时序一下子就满足了。所以,别小看这些定律,它们是真能帮你解决问题的。

3.4 本章知识体系

下面这张图,帮你理清本章的知识结构。建议你保存下来,复习时对照着看。

第3章 逻辑代数基础 · 知识体系 逻辑代数基础 基本逻辑运算 与运算 (AND) · Y = A·B 或运算 (OR) · Y = A+B 非运算 (NOT) · Y = A' 复合逻辑运算 与非 (NAND) · (A·B)' 或非 (NOR) · (A+B)' 异或 (XOR) · A⊕B 同或 (XNOR) · (A⊕B)' 基本定律与规则 交换律 · 结合律 · 分配律 摩根定律 · 吸收律 冗余律 · 对偶规则 核心:用最少的门,实现最稳定的逻辑 化简 → 优化 → 实现

好了,这一章的内容就到这里。逻辑代数就像练武的“马步”,基础打牢了,后面学组合逻辑、时序逻辑才会轻松。记住,多用真值表验证,多用手工化简,慢慢就会形成直觉。


公众号:蓝海资料掘金营,微信deep3321