数字逻辑基础:从布尔代数到时序电路

大家好,我是你们的CPU架构设计课讲师。今天我们来聊聊数字逻辑基础——这块内容,说白了就是CPU设计的"砖瓦"。你想想看,无论多复杂的处理器,底层都是这些基本逻辑单元搭起来的。

我个人习惯把数字逻辑分成两大部分:组合逻辑和时序逻辑。组合逻辑只管"现在",时序逻辑则记住了"过去"。嗯,这个区分很重要,我们慢慢展开。

布尔代数:数字世界的数学语言

布尔代数,其实就是用数学的方式描述"真"和"假"。在数字电路里,我们用1表示高电平,0表示低电平。

最基本的运算就三个:与(AND)、或(OR)、非(NOT)。

  • 与运算:所有输入为1时,输出才为1。用乘号表示:A·B
  • 或运算:只要有一个输入为1,输出就为1。用加号表示:A+B
  • 非运算:取反。用上划线表示:Ā

核心定律:德摩根定律是我在项目中经常用到的——(A·B)' = A' + B',说白了就是"与的非等于非的或"。这个定律在化简电路时特别有用。

举个例子,假设我们要设计一个电路:当A=1且B=0,或者C=1时输出1。用布尔代数表达就是:F = A·B' + C。你看,多简洁。

逻辑门:从公式到电路

布尔代数的公式,最终要映射到实际的逻辑门上。每个逻辑门就是一个基本的电路单元。

逻辑门符号布尔表达式真值表(2输入)
与门ANDY = A·B00→0, 01→0, 10→0, 11→1
或门ORY = A+B00→0, 01→1, 10→1, 11→1
非门NOTY = A'0→1, 1→0
与非门NANDY = (A·B)'00→1, 01→1, 10→1, 11→0
或非门NORY = (A+B)'00→1, 01→0, 10→0, 11→0
异或门XORY = A⊕B00→0, 01→1, 10→1, 11→0

我的经验:实际项目中,NAND和NOR门用得最多,因为它们在CMOS工艺中实现起来面积最小、速度最快。我曾经用纯NAND门搭过一个加法器,虽然看起来绕,但性能反而更好。

组合逻辑电路:没有记忆的"直通"电路

组合逻辑电路的特点是:输出只取决于当前输入,与历史状态无关。说白了就是"输入一变,输出立刻变"。

常见的组合逻辑电路有:

  • 加法器:半加器、全加器,是ALU的基础
  • 多路选择器(MUX):从多个输入中选一个输出
  • 译码器:把二进制编码转换成独热码
  • 编码器:反过来,把独热码转成二进制

举个例子,一个1位全加器的逻辑表达式:

// 全加器:计算 A + B + Cin
// 输出:Sum(和),Cout(进位)
Sum = A ⊕ B ⊕ Cin
Cout = (A·B) + (A·Cin) + (B·Cin)

避坑指南:我曾经在设计一个32位加法器时,直接用32个全加器级联。结果发现进位链太长,延迟大到无法接受。后来改用了超前进位加法器(CLA),才把时序搞定。所以,组合逻辑的"深度"一定要控制好。

时序逻辑电路:记住"过去"的电路

时序逻辑电路就不一样了。它的输出不仅取决于当前输入,还取决于电路之前的状态。嗯,说白了就是它有"记忆"。

核心元件是触发器(Flip-Flop)。最常见的D触发器,它的行为很简单:在每个时钟上升沿,把输入D的值"锁存"到输出Q上。

// D触发器行为描述
always @(posedge clk) begin
    Q <= D;
end

时序电路的两大类:

  • 同步时序电路:所有触发器共用同一个时钟。设计简单,时序分析也容易。我建议初学者先从同步电路入手。
  • 异步时序电路:没有统一时钟,靠事件驱动。设计难度大,容易出毛刺。我在项目中很少用,除非是低功耗场景。

关键概念:建立时间(setup time)和保持时间(hold time)。这是时序电路能否正常工作的命门。我曾经因为没算好保持时间,导致芯片在高温下频繁出错——那叫一个惨。

知识体系总览

下面这张图,是我梳理的数字逻辑知识体系。你可以把它当作学习地图:

数字逻辑基础 布尔代数 基本运算:与、或、非 定律:交换律、结合律、德摩根 表达式化简:卡诺图 逻辑门 基本门:AND、OR、NOT 复合门:NAND、NOR、XOR CMOS实现:PMOS+NMOS 组合逻辑 加法器、减法器 多路选择器、译码器 比较器、乘法器 时序逻辑 触发器:D、JK、T 寄存器、计数器、状态机 时序约束 建立时间、保持时间 时钟偏斜、亚稳态

学习建议:我建议你先从布尔代数和基本逻辑门入手,然后练习搭一些简单的组合电路(比如全加器)。等组合逻辑熟练了,再接触时序电路。别急着一步到位,数字逻辑这东西,急不得。

好了,这一章的内容就到这里。记住,数字逻辑是CPU设计的"地基",地基打不牢,后面盖楼会出大问题。下一章我们会进入更具体的CPU微架构设计,到时候这些基础都会用上。


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