第二章:数字电路基础回顾——组合逻辑 vs 时序逻辑

各位同学好,我是老张。今天咱们聊聊数字电路最基础的两个概念:组合逻辑和时序逻辑。别看是基础,我做了十几年后端,见过不少工程师在这上面栽跟头。

说白了,组合逻辑就是「输入一变,输出马上变」的电路。时序逻辑呢?它得靠时钟驱动,输出不仅看当前输入,还得看之前的状态。嗯,这个区别很关键。

2.1 基本门电路:芯片的「积木块」

先回顾一下最基本的门电路。这些门电路,就是构成一切数字芯片的原子单元。我个人习惯把门电路分成三类:

  • 基本门:AND(与)、OR(或)、NOT(非)
  • 复合门:NAND(与非)、NOR(或非)
  • 异或门:XOR(异或)

你可能会问:「为什么NAND和NOR要单独拎出来?」因为在实际的芯片设计中,NAND和NOR才是主流。我在项目中遇到过,有些新手画原理图喜欢用AND+NOT拼成NAND,结果面积和延迟都翻倍了。其实标准单元库里直接就有NAND,干嘛不用呢?

来看一下真值表,这是理解门电路最直观的方式:

输入A输入B ANDORNANDNORXOR
0000110
0101101
1001101
1111000
小技巧:NAND和NOR是「万能门」。理论上,只用NAND就能搭出任何逻辑电路。我在逆向分析时,经常看到芯片里全是NAND门,因为它在工艺上面积最小、速度最快。

2.2 布尔代数:化简的艺术

布尔代数,说白了就是用数学公式来描述逻辑电路。常用的几个定律:

  • 交换律:A·B = B·A,A+B = B+A
  • 结合律:(A·B)·C = A·(B·C)
  • 分配律:A·(B+C) = A·B + A·C
  • 德摩根定律:¬(A·B) = ¬A + ¬B,¬(A+B) = ¬A · ¬B

德摩根定律在逆向分析中特别有用。我曾经分析过一个加密芯片,里面全是NAND门,看得眼花缭乱。用德摩根定律一化简,发现其实就是个简单的XOR结构。你想想看,如果不懂布尔代数,光靠眼睛看网表,那得看到猴年马月去?

实战案例:化简表达式 F = A·B + A·¬B
根据分配律:F = A·(B + ¬B) = A·1 = A
你看,两个门就简化成了一个缓冲器。

2.3 组合逻辑 vs 时序逻辑

好,现在进入正题。组合逻辑和时序逻辑的区别,我用一句话概括:

组合逻辑没有记忆,时序逻辑有记忆。

组合逻辑的输出,只取决于当前的输入。比如一个加法器,输入1+1,输出永远是2,不会因为之前加过什么而改变。

时序逻辑就不一样了。它靠触发器(Flip-Flop)来存储状态。输出不仅看当前输入,还得看之前的状态。举个例子,一个计数器,你给它一个脉冲,它加1。再给一个脉冲,它再加1。这个「当前值」就是它记住的状态。

在网表逆向中,区分组合逻辑和时序逻辑是第一步。我个人习惯这样判断:

  • 看有没有时钟信号输入——有时钟的,大概率是时序逻辑
  • 看有没有反馈回路——输出连回输入的,可能是时序逻辑
  • 看有没有存储单元——比如D触发器、锁存器
避坑指南:我曾经在逆向一个老芯片时,看到一个奇怪的反馈回路,以为是时序逻辑。结果分析半天发现,那只是个组合逻辑的振荡器——因为路径延迟导致的毛刺。所以,别看到反馈就以为是时序,得结合时钟信号一起判断。

2.4 知识体系总览

下面这张图,是我自己整理的本章知识结构。你看一眼,心里就有数了:

数字电路基础 基本门电路 AND/OR/NOT NAND/NOR XOR 布尔代数 基本定律 德摩根定律 化简技巧 逻辑分类 组合逻辑 时序逻辑 触发器/锁存器 核心:组合逻辑无记忆,时序逻辑有记忆 网表逆向第一步:区分组合与时序

2.5 实战:从网表中识别逻辑类型

假设你拿到一段网表,里面有个模块是这样的:

module mystery (clk, a, b, q);
  input clk, a, b;
  output q;
  wire w1;
  NAND2 U1 (.A(a), .B(b), .Z(w1));
  DFF U2 (.D(w1), .CK(clk), .Q(q));
endmodule

一眼就能看出来:U1是组合逻辑(NAND门),U2是时序逻辑(D触发器)。整体功能就是:先把a和b做与非运算,结果存到触发器里,在时钟上升沿输出。

这种结构在芯片里太常见了。我逆向过的一个通信芯片,里面密密麻麻全是这种「组合逻辑+触发器」的流水线结构。你只要抓住时钟信号这根主线,顺着它一层层往下捋,整个芯片的架构就清晰了。

总结一下
1. 门电路是芯片的积木,NAND和NOR是主力
2. 布尔代数是化简工具,德摩根定律是逆向利器
3. 组合逻辑看输入,时序逻辑看时钟
4. 网表逆向第一步:分清组合和时序

好了,这一章就到这里。记住我说的:基础不牢,地动山摇。这些门电路和逻辑分类,后面每一章都会用到。你先把这些吃透了,后面分析复杂网表的时候,才能游刃有余。


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