4、逻辑门电路:TTL与CMOS逻辑门,逻辑门的电气特性(扇入、扇出、传输延迟),三态门与OC门

各位同学,今天我们来聊聊逻辑门电路。说实话,这是数字电路最基础的东西,但也是很多工程师容易翻车的地方。我见过不少新手,画原理图时只管逻辑功能对不对,结果板子一调,信号乱飞,电平对不上——嗯,这就是没吃透电气特性。

咱们先从最常用的两种逻辑门家族说起:TTL 和 CMOS。

4.1 TTL 与 CMOS 逻辑门

TTL,全称 Transistor-Transistor Logic,也就是晶体管-晶体管逻辑。它用的是双极性晶体管,速度比较快,但功耗也大。我记得十几年前刚入行时,TTL 芯片还是主流,像 74LS 系列,满大街都是。

CMOS 呢,是 Complementary Metal-Oxide-Semiconductor,互补金属氧化物半导体。它用的是场效应管,功耗极低,集成度也高。现在你随便拿个 FPGA 或者 MCU,内部基本都是 CMOS 工艺。

两者有什么区别?我列个表,你一看就明白。

特性 TTL(如 74LS) CMOS(如 74HC)
供电电压 5V ± 0.25V 2V ~ 6V(宽范围)
功耗 较高(mA级静态电流) 极低(μA级静态电流)
噪声容限 约 0.4V 约 0.3Vcc(更优)
传输延迟 约 10ns 约 20ns(但低压下更慢)
输入阻抗 低(几kΩ) 极高(MΩ级)
输出驱动 强(灌电流大) 对称驱动(拉/灌电流相近)

你看,CMOS 的输入阻抗极高,这意味着它几乎不消耗前级的驱动电流。但凡事都有两面——高阻抗也意味着容易受静电干扰。我有个同事,徒手摸 CMOS 芯片引脚,结果芯片直接报废。所以,CMOS 器件一定要防静电,这是铁律。

我的习惯: 在 FPGA 设计中,如果外部接口是 5V 的 TTL 电平,而 FPGA 是 3.3V 的 CMOS 电平,我会加一个电平转换芯片,或者用电阻分压。千万别直接连,否则 FPGA 的 IO 可能会烧掉。

4.2 逻辑门的电气特性

逻辑门不只是做与或非运算,它还有一堆电气参数需要你关注。说白了,你把它当成一个“黑盒子”,输入输出都有电压电流要求。

4.2.1 扇入(Fan-in)

扇入就是一个逻辑门能接受的输入信号数量。比如一个 4 输入与非门,扇入就是 4。扇入越多,门内部的晶体管堆叠就越多,传输延迟也会变大。我在项目中遇到过,用 8 输入与非门做地址译码,结果时序跑不过,最后拆成两级 4 输入门才搞定。

所以,扇入不是越大越好。一般建议扇入不超过 4~5 个,如果逻辑需要更多输入,就用树形结构展开。

4.2.2 扇出(Fan-out)

扇出是一个门的输出能驱动多少个后续门的输入。这个参数跟电流有关。CMOS 门因为输入阻抗高,扇出可以很大,几十个都没问题。但 TTL 门就不行,它的输入需要灌电流,扇出一般只有 10 左右。

你想想看,如果一个门的输出接了太多负载,输出电平就会被拉偏,高电平不够高,低电平不够低,逻辑就乱了。

扇出计算公式:
扇出 = I_OH(max) / I_IH + I_OL(max) / I_IL
取两者中的较小值。

举个例子,74LS00 的 I_OH 是 -0.4mA(拉电流),I_IH 是 20μA,那么高电平扇出 = 0.4mA / 20μA = 20。低电平扇出类似。实际设计中,我会留 50% 的余量,也就是最多接 10 个负载。

4.2.3 传输延迟(Propagation Delay)

传输延迟就是信号从输入变化到输出变化所需的时间。它分为 t_PLH(低到高)和 t_PHL(高到低)。这个参数直接决定了你的电路能跑多快。

我刚开始做 FPGA 时,总觉得时序约束是软件自动搞定的。直到有一次,一个 100MHz 的时钟,数据路径上串了 5 个逻辑门,每个门延迟 5ns,加起来 25ns,一个时钟周期才 10ns——结果数据根本传不过去。嗯,从那以后,我每次综合完都会看时序报告。

传输延迟受几个因素影响:

  • 工艺:CMOS 比 TTL 慢一些,但现代工艺已经追上来了。
  • 电压:电压越低,延迟越大。比如 3.3V 的 CMOS 比 5V 的慢 30%。
  • 温度:温度越高,延迟越大。高温下芯片会变慢。
  • 负载电容:输出接的电容越大,延迟越大。
避坑指南: 我曾经在高温环境下(85°C)测试一块板子,发现逻辑门的延迟比常温下大了 40%,导致时序违规。所以,设计时一定要考虑最坏情况,用数据手册上的最大延迟值来算时序。

4.3 三态门与 OC 门

这两种门是数字电路里的“特殊兵种”,专门用来解决总线冲突和电平转换问题。

4.3.1 三态门(Tri-state Gate)

普通逻辑门只有两种输出状态:高电平和低电平。三态门多了一个“高阻态”(High-Z),也就是输出跟电路断开,相当于没接。

三态门有一个使能引脚(EN)。EN 有效时,它就是个普通门;EN 无效时,输出变成高阻态。多个三态门可以共用一条总线,但同一时刻只能有一个门处于使能状态。

我举个例子,FPGA 的 IO 口内部就是三态结构。你可以把 IO 配置成输入、输出或双向。双向模式就是靠三态门实现的:输出时使能,输入时高阻。

// 三态门的行为描述(Verilog)
assign data_bus = (en) ? data_out : 1'bz;

这里 1'bz 就是高阻态。注意,如果多个三态门同时使能,总线就会冲突,轻则逻辑错误,重则烧毁芯片。我曾经见过一个同事,两个三态门同时使能,结果总线上的电流瞬间飙升,芯片直接冒烟。

我的建议: 设计总线时,一定要确保使能信号互斥。可以用一个译码器来生成使能信号,保证同一时刻只有一个有效。

4.3.2 OC 门(Open Collector Gate)

OC 门,也叫集电极开路门。它的输出端是晶体管的集电极,没有内部上拉电阻。所以,OC 门只能输出低电平或高阻态,不能主动输出高电平。

要让它输出高电平,必须在外部接一个上拉电阻到 Vcc。这个电阻的阻值需要根据负载和速度来选。阻值太小,功耗大;阻值太大,上升沿变慢。

OC 门有两个典型应用:

  • 电平转换:OC 门的上拉电阻可以接到不同的电压上,比如 5V 的 OC 门输出接 3.3V 的上拉,就能实现 5V 到 3.3V 的电平转换。
  • 线与逻辑(Wired-AND):多个 OC 门的输出可以直接连在一起,共用一个上拉电阻。只要有一个门输出低电平,总线就是低电平。这就是“线与”功能。

我记得在某个项目中,需要用一个中断信号来通知多个设备。我用 OC 门实现了“线与”,任何一个设备拉低中断线,CPU 就能检测到。简单又可靠。

OC 门上拉电阻计算:
R_min = (Vcc - V_OL) / I_OL(max)
R_max = (Vcc - V_IH) / (n * I_IH + m * I_IL)
其中 n 是输入高电平的负载数,m 是输入低电平的负载数。

实际选型时,我会取 R_min 和 R_max 之间的一个标准值,比如 4.7kΩ 或 10kΩ。如果速度要求高,就选小一点的电阻,但要注意功耗。

4.4 知识体系总览

下面这张图,是我画的本章知识结构。你可以把它当成一个思维导图,快速回顾。

逻辑门电路 TTL vs CMOS 双极性晶体管 场效应管 电气特性 扇入 扇出 传输延迟 三态门 & OC门 高阻态 集电极开路 线与逻辑 核心:理解电气特性,才能正确设计接口电路 应用场景:总线设计、电平转换、中断共享 常见问题:扇出不足导致电平异常、三态冲突烧芯片 ⚠ 设计时务必留余量,参考数据手册最坏情况

好了,这一章的内容就到这里。逻辑门看似简单,但电气特性才是决定电路能不能稳定工作的关键。下次你画原理图时,记得多看一眼数据手册里的扇出和延迟参数——嗯,这能帮你省掉不少调试时间。


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