在数字电路设计和应用中,常常会遇到带有特殊输出结构的逻辑门,其中最常见且重要的两种就是开集电极(Open Collector,简称OC)门和开漏极(Open Drain,简称OD)门。理解它们之间的差异对于正确地设计和使用电路至关重要。
什么是OC门和OD门?它们的基本结构是什么样的?
首先,要理解OC门和OD门的区别,需要知道它们在输出级的特殊构造。
开集电极(Open Collector,OC)门
是什么: OC门是一种数字逻辑门的输出级使用一个双极性结型晶体管(BJT)的电路。这个晶体管的集电极(Collector)是“开路”的,即它没有直接连接到电源电压(VCC或V+),而是悬空的,需要外部电路来提供连接。
结构:
一个典型的OC门(例如OC反相器)内部结构通常包含输入逻辑处理部分和一个输出级的NPN晶体管。当输入导致输出晶体管导通时,集电极会通过发射极(Emitter)连接到地(GND)。当输入导致输出晶体管截止时,集电极与地断开,处于高阻抗状态。
- 输出高电平:晶体管截止,集电极与地之间是断开的,输出悬空,表现为高阻抗状态,电压不确定。
- 输出低电平:晶体管导通,集电极通过晶体管连接到地,输出电压接近地电平。
因为输出集电极没有连接到正电源,所以它无法主动“拉高”输出电压。
开漏极(Open Drain,OD)门
是什么: OD门是另一种数字逻辑门的输出级使用一个场效应晶体管(FET),通常是N沟道增强型MOSFET的电路。这个晶体管的漏极(Drain)是“开路”的,类似于OC门的集电极,没有直接连接到电源电压,需要外部连接。
结构:
一个典型的OD门(例如OD反相器)内部结构包含输入逻辑处理部分和一个输出级的N沟道MOSFET。当输入导致输出MOSFET导通时,漏极会通过源极(Source)连接到地(GND)。当输入导致输入MOSFET截止时,漏极与地断开,处于高阻抗状态。
- 输出高电平:MOSFET截止,漏极与地之间是断开的,输出悬空,表现为高阻抗状态,电压不确定。
- 输出低电平:MOSFET导通,漏极通过MOSFET连接到地,输出电压接近地电平。
与OC门类似,OD门的输出漏极也没有连接到正电源,无法主动“拉高”输出电压。
为什么需要OC/OD结构?为什么需要外部上拉电阻?
标准的推挽输出(Push-Pull)或互补输出(CMOS)结构可以主动拉高和拉低输出电压,提供较快的上升和下降沿。然而,OC/OD结构虽然不能主动拉高,但它们具有独特的优势和用途,这解释了为什么需要它们:
1. 实现线与(Wired AND)或线或(Wired OR)逻辑:
这是OC/OD结构最核心的用途之一。多个OC或OD门的输出可以直接连接在一起,然后通过一个外部上拉电阻连接到电源电压。当所有连接的门都输出高阻抗状态时(即内部晶体管都截止),输出电压会被上拉电阻拉到电源电压,表现为逻辑高电平。只要有一个门输出低电平(即内部晶体管导通),它就会将共同的输出线拉低到地电平,表现为逻辑低电平。
这种连接方式可以实现逻辑“与”功能(对于输出低电平有效的逻辑,即只要有一个为低,整体就为低,这等价于传统与门的非)或逻辑“或”功能(对于输出高电平有效的逻辑,即只有所有都为高阻抗时整体才为高,这等价于传统或门的非)。这极大地简化了某些电路设计,特别是在总线系统中,允许多个设备共享同一条数据线或控制线。
2. 电压电平转换:
OC/OD门的输出悬空,其高电平电压由外部上拉电阻连接的电源决定。这意味着可以使用一个工作在3.3V电源下的OC/OD门,其输出通过上拉电阻连接到5V电源。当门输出高阻抗时,外部上拉电阻将输出电压拉到5V,从而实现3.3V逻辑电平到5V逻辑电平的转换。OD门(基于MOSFET)在这方面通常比OC门(基于BJT)更有优势,因为MOSFET的漏极电压通常可以高于其栅极(输入)电压,而BJT的集电极电压不能太高超过基极驱动能力范围,或者需要考虑反向耐压等问题。OD门尤其适合连接到远高于其自身供电电压的上拉电源。
3. 驱动外部负载:
OC/OD门的输出晶体管在导通时可以将负载的一端连接到地,从而驱动负载。例如,可以将一个LED的一端连接到正电源,另一端连接到OC/OD门的输出。当门输出低电平时,LED导通发光。这种结构可以用于驱动比逻辑门本身输出电流能力更大的负载(前提是内部晶体管的电流承受能力足够)。
为什么需要外部上拉电阻:
如前所述,OC/OD门内部没有连接到电源的上拉电路,它们只能主动将输出拉低(灌电流 Sink Current)。当输出晶体管截止时,输出端处于悬空的高阻抗状态,电压是不确定的,容易受到噪声干扰。外部的上拉电阻提供了一个电流通路,将输出端“拉向”一个确定的高电平电压(通常是外部上拉电源电压)。这个电阻同时限制了输出晶体管导通时的电流,防止晶体管损坏,也影响了输出上升沿的速度(与输出端电容形成RC电路)。因此,外部上拉电阻是OC/OD门正常工作并输出高电平的必要组件。
OC门和OD门有什么具体的区别?
虽然OC和OD都是“开路”输出,都需要外部上拉电阻,但它们基于不同的半导体技术(BJT vs. MOSFET),这导致了它们在一些关键特性上的区别:
-
基础器件不同:
- OC门:输出级使用双极性结型晶体管(BJT),通常是NPN管。
- OD门:输出级使用场效应晶体管(FET),通常是N沟道MOSFET。
-
输出低电平特性:
- OC门:输出低电平时,BJT处于饱和状态,输出电压(Vce(sat))通常比OD门略高(约0.1V ~ 0.4V或更高,取决于电流)。存在集电极到发射极的饱和压降。
- OD门:输出低电平时,MOSFET处于导通电阻很小的状态,输出电压(Vds(on))通常非常接近地电平(几十毫伏到一两百毫伏,取决于电流和MOSFET的导通电阻)。输出电压受限于MOSFET的导通电阻和灌电流。
因此,OD门通常能提供更接近理想地的低电平输出。
-
高电平电压灵活性:
- OC门:集电极的电压受限于BJT的C-E反向耐压和驱动基极时的电压关系。通常,外部上拉电压不能远高于OC门本身的供电电压(VCC),或者需要仔细考虑电压转换接口设计。
- OD门:漏极的电压可以相对独立于OD门本身的供电电压(VCC)。只要外部上拉电压不超过MOSFET漏源极的耐压(Vds(max)),OD门就可以用于将信号拉到较高的电压电平。这使得OD门在不同电压域的接口转换中更为灵活和常用,比如I2C总线就是一个典型的例子,它经常用于连接不同电压的设备。
-
驱动能力(灌电流):
- OC门:BJT的灌电流能力通常较大,但受限于基极驱动电流。
- OD门:MOSFET的灌电流能力通常也很强,且易于通过改变MOSFET尺寸来调节。在低电压下,OD门的低电平导通电阻通常比OC门的饱和电阻更小,意味着在相同灌电流下电压更低,或在相同低电压下能灌更大的电流。
总的来说,两者都能提供一定的灌电流能力,具体数值取决于具体的芯片型号。
-
开关速度:
- OC门:BJT存在存储效应,从饱和到截止需要时间,可能影响开关速度,特别是在从低电平变为高电平时(上升沿由外部上拉电阻和负载电容决定,通常较慢)。
- OD门:MOSFET是电压控制器件,没有存储效应,开关速度通常比同等工艺下的BJT快。但同样,上升沿的速度取决于外部RC常数。
OC门和OD门通常用在哪里?
基于它们“开路”输出和需要外部上拉的特性,OC门和OD门在特定应用中非常常见:
-
总线系统:
- I2C总线: 典型的OD门应用。SDA(数据线)和SCL(时钟线)都是开漏结构,允许多个主设备和从设备连接到同一总线,并通过线与逻辑实现仲裁和通信。不同电压的设备也可以方便地连接到同一I2C总线。
- 其他需要多点连接和线与/线或逻辑的总线。
-
中断请求线:
微控制器或处理器上的中断请求线经常使用OC或OD结构。多个外设(如定时器、UART、SPI等)可以将各自的中断输出连接到同一根中断输入线上。只要任何一个外设需要中断,它就将该线拉低(假设是低电平有效中断),处理器接收到中断信号。这实现了多个中断源的“或”逻辑(当所有中断源都释放中断时,中断线被上拉电阻拉高)。
-
电平转换:
如前所述,OD门(以及在一定限制下的OC门)可以用于连接工作在不同电源电压下的电路。例如,将3.3V逻辑输出转换为5V逻辑输入,或反之。
-
驱动外部负载:
直接驱动LED、小型继电器、蜂鸣器等。门的输出晶体管在导通时提供灌电流通路。
-
简化的逻辑门实现:
利用线与/线或功能,可以在不增加额外门的情况下实现某些逻辑功能,简化电路。
如何正确使用OC/OD门?如何计算上拉电阻?
正确使用OC/OD门的关键是理解其输出特性和外部上拉电阻的作用。
如何正确使用:
- 必须连接外部上拉电阻: OC/OD门输出端不能直接连接到下一个逻辑门的输入(除非下一个门内部有上拉/下拉,但这不常见于标准输入,且电压不确定)。必须在输出端和所需的高电平电源(VPULLUP,可以是VCC或其他电压)之间连接一个合适的上拉电阻。
- 上拉电源电压: 上拉电阻连接的电源电压(VPULLUP)决定了输出高电平的电压。VPULLUP的选择应考虑下一个输入级的逻辑高电平阈值以及OC/OD门自身的耐压能力(尤其是OD门在更高电压下的应用)。
- 考虑灌电流能力: 使用时必须确保当OC/OD门输出低电平时,流过内部晶体管的电流(即灌电流)不超过芯片数据手册规定的最大值。这个电流由上拉电阻、负载(如LED)以及连接到此输出的其他输入级的电流总和决定。
- 考虑输出电容和速度: 输出端存在寄生电容和负载电容。这个电容与上拉电阻一起形成了RC电路,决定了输出信号从低电平到高电平的上升时间。电阻值越大,上升时间越长,信号速度越慢。
- 并联输出: 只有OC或OD门的输出可以直接并联以实现线与/线或逻辑。标准推挽输出的门绝不能直接并联,否则当一个门输出高电平而另一个输出低电平时会造成短路,损坏芯片。
如何计算上拉电阻:
上拉电阻(R_pullup)的选择是一个折衷的过程,需要考虑几个因素:
- 低电平输出电压(VOL)要求: 当OC/OD门输出低电平时,需要将输出电压拉低到下一个输入级能识别为低电平的电压阈值(VIL(max))以下。此时,流过上拉电阻和负载的总电流(I_sink_total)会全部灌入OC/OD门。根据欧姆定律和门的数据手册,可以得到一个最小电阻值限制:
R_pullup >= (VPULLUP - VOL(max)) / I_sink_total(max)
其中 VOL(max) 是在最大灌电流时,芯片数据手册保证的最大低电平输出电压。实际上,更常用的是确保在最大允许灌电流(IOL(max))时,输出电压仍在可接受范围内。所以另一个考虑是:
R_pullup <= (VPULLUP - VOL_target) / IOL_total
这里 VOL_target 是你希望达到的低电平目标值(例如 < 0.4V),IOL_total 是总的灌电流(上拉电阻产生的电流 + 负载电流 + 下一级输入级的灌电流)。你需要确保这个 IOL_total 不超过芯片的 IOL(max) 额定值。因此,从低电平角度,R_pullup 不能太大,否则无法将电压有效拉低,且灌电流可能超过芯片能力(如果上拉电压很高而电阻太小)。 - 高电平输出电压(VOH)要求: 当OC/OD门输出高阻抗时,输出电压被上拉到 VPULLUP。需要确保 VPULLUP 能够被下一个输入级识别为高电平(> Vih(min))。这主要取决于 VPULLUP 的选择,与电阻值关系不大,除非有显著的漏电流。
- 上升时间要求: 输出端的总电容(负载电容 C_load + 寄生电容 C_parasitic)与上拉电阻 R_pullup 形成 RC 电路。上升时间(从10%到90% VPULLUP)大约是 2.2 * R_pullup * C_total。如果需要较快的上升时间,R_pullup 就不能太大。
R_pullup <= T_rise_max / (2.2 * C_total) - 功耗: 上拉电阻会消耗功率,特别是在输出长时间处于低电平时(持续有电流流过电阻和门)。电阻值越小,功耗越大。
P_dissipated = (VPULLUP - VOL)^2 / R_pullup - 负载驱动能力(高电平): 当输出为高电平(通过上拉电阻)时,上拉电阻需要为连接到该点的任何输入级提供电流(输入级可能吸取微小电流)。R_pullup 太大可能导致在高电平时电压下降。
综合以上因素,R_pullup 的选择通常在一个经验范围内:几百欧姆到几十千欧姆。对于高速、大电容负载或需要较低低电平电压的应用,会选择较小的电阻值;对于功耗敏感或对速度要求不高的应用,可以选择较大的电阻值。实际应用中,常常从几千欧姆(如4.7kΩ或10kΩ)开始试验,并根据波形和低电平电压进行调整。对于I2C总线等标准接口,通常有推荐的上拉电阻范围(例如,快速模式下为1.5kΩ ~ 4.7kΩ)。
怎么分辨一个门是OC还是OD?
分辨一个逻辑门是标准推挽输出、OC输出还是OD输出,最可靠的方法是查阅其数据手册(Datasheet)。
- 数据手册通常会在器件名称、特性描述或输出结构图示中明确标注“Open Collector”、“OC”、“Open Drain”、“OD”。
- 在逻辑门符号旁或引脚描述中,有时会用特定的图形符号表示OC或OD输出。
- 查看数据手册中的“Output Characteristics”(输出特性)章节,特别是关于“High-Level Output Current (IOH)”和“Low-Level Output Current (IOL)”的描述。
- 对于推挽输出,通常会同时给出 IOH 和 IOL 的较大数值,表明它可以主动拉高和拉低。
- 对于OC或OD输出,IOH 的数值通常会标注为“High-impedance”或一个非常小的漏电流值,而 IOL 会给出一个明确的、相对较大的灌电流能力数值。这是因为它们只能主动拉低(灌电流),而不能主动拉高(源电流 Source Current)。
- 如果能看到内部电路图,可以观察输出级是连接到电源(推挽),还是只有一个晶体管的集电极/漏极悬空(OC/OD)。
在不查阅数据手册的情况下进行测试是危险的,但如果必须尝试,一个简单(但有风险)的方法是:将门的输出引脚通过一个电阻连接到一个低电平(如地),再通过另一个电阻连接到一个高电平(如电源)。然后改变输入状态,观察输出电压。对于OC/OD门,当输入使其输出晶体管截止时,输出电压会被拉高电阻拉到高电平;当输入使其导通时,输出会被拉低到地(假设低电平电阻存在)。而如果直接将一个OC/OD门输出连接到电源高电平,输入使其导通时会造成短路。对于推挽输出,无论输入如何,输出都会被主动拉到高或低,直接连接拉高或拉低电阻只是改变其驱动负载能力。
总结OC和OD的主要区别:
下表简要概括OC和OD的主要区别:
- 基础器件: OC使用BJT,OD使用MOSFET。
- 低电平电压: OD通常比OC的低电平更接近地电平。
- 高电平灵活性(电平转换): OD更擅长连接到远高于其自身VCC的上拉电压,OC在这方面有限制。
- 开关速度: OD通常比OC速度快,尤其是上升沿(尽管上升沿主要受外部RC影响)。
- 驱动能力: 两者都提供灌电流能力,具体数值看型号,OD在低电压下可能更优。
理解这些区别有助于根据具体的应用需求(如总线接口、电平转换、驱动负载、速度要求等)选择合适的开路输出逻辑门。