如何反转数字信号


29

我需要一种方法来反转数字信号,即,如果输入为高电平,我希望输出为低电平,如果输入为低电平,则我希望输出为高电平。

我认为可以使用单个PNP晶体管完成此操作,但想在此进行验证。我要处理的电压小于5V。


BJT逆变器的详细处理:EE 307第2部分MoHAT项目 -“此页面的目的是指导对BJT逆变器的基本操作感兴趣的人员。”
彼得·莫滕森

Answers:


34

或者,因为无论如何您都在谈论数字信号,所以请使用逆变器

在此处输入图片说明

A是输入(用于与多个输入门,这将是ABC等),Y是输出。如果没有使您的原理图复杂化,请将符号和输入放在左侧。

恩智浦具有单栅极逆变器。仅有四个连接:电源,地线,输入和输出。

不过,可以用一个晶体管和两个电阻来完成。这是一个简单的示意图,但是您仍然必须进行一些简单的计算。您将拥有与逆变器完全相同的连接。
顺便说一句,PNP是一种选择,但是更经常使用NPN。

编辑(发表评论)

在此处输入图片说明

如果输入信号为高电平,则电流将流过R2和晶体管的基极-发射极结(基极而非栅极)。该电流将被放大,流经R1的集电极电流将引起电压降,从而使输出变低。输入高,输出低。
如果输入信号为低电平,则不会有任何基极电流,也不会有集电极电流。没有电流通过R1意味着没有电压降,因此输出将为+ V。输入低,输出高。

这已经导致了进一步的发展,但是就像我在对桑顿的评论中所说的那样,输出是高度不对称的。如果输出连接到电容器,则高输出电平将意味着电容器通过R1充电,这将导致具有时间常数R1C的指数斜率。当输出变低时,电容器将通过低得多的电阻放电,并且斜率将陡峭得多。CMOS门具有对称的源/宿功能,您将不会有这种区别。

晶体管版本的输入在高电平时也会汲取(较小)电流。CMOS版本在高电平和低电平时都只有很小的泄漏电流。

总体而言,集成逻辑门是赢家。


我在这里肯定会感到困惑,但是当栅极供电时NPN会打开,而供电时PNP会关闭。使用NPN进行信号放大是有意义的,但不会导致信号反相。有什么想法吗?
马特·鲁

2
栅极用于MOSFET,而不用于BJT。NFET开启,PFET关闭。但是您必须确保信号源已正确连接。NPN和PNP是BJT,需要更多数学才能确保它们正常工作
ajs410 2012年

恩智浦的自由空间很小。存在诸如时序,扇入,扇出,输入噪声容限,毛刺等限制,在这种情况下,使用晶体管要容易得多。只是因为您没有被那些约束锁定。
Standard Sandun '04

@Matt-编辑了我的答案。
stevenvh 2012年

1
@sandundhammika,如果您自己构建,则扇出和噪声容限仍然受到限制(扇入不适用于此处)。但是您必须自己计算这些限制是什么。如果使用现成的门,则只需阅读数据表即可查找。此外,对于现成的门,功耗(另一种典型的系统约束)可能要好得多。
Photon

24

是的,这可以通过单个晶体管和电阻器来完成,但是有些芯片专门设计用于反转数字信号。奇怪的是,它们被称为逆变器。例如,检出74HC04。这样就可以在一个14引脚封装中为您提供六个独立的逆变器。也有采用小型SOT-23封装的单个反相器(和其他小型逻辑门),与单个晶体管所采用的封装相同。

几乎没有理由尝试制造自己的逆变器,但是可以。

添加以回应评论:

如我所说,单个双极晶体管可以用作简单逆变器的基础。至少需要晶体管和基极电阻。为了完整起见,我还将添加一个输出负载电阻,除非您知道将要连接到输出的任何东西都会提供必要的负载,否则应该假定需要该负载电阻。特别是PNP晶体管没有什么神奇之处。也可以使用NPN。以下是每种用法的用法:

请注意,每个都有4个连接:电源,接地,输入和输出。两者之间的区别在于,它是在哪个方向上加载输入,输出是在哪个方向上被主动驱动而不是被负载被动拉动。如果您不关心这些问题,那么这两个电路在功能上是等效的。

但是,这比较容易:

它还更快,所需的稳态功率更少,输入阻抗更高并且更小。它具有与上面的逆变器相同的四个连接。像这样的单门可提供SOT-23封装,这与单个晶体管所采用的封装相同。这只需要一个外部部分,即旁路电容。它不需要输出负载电阻,因为其输出可主动驱动双向驱动。

确实,对于数字信号的一般反相,使您自己的反相器对于正常应用是愚蠢的。

除了关于原理图的主题外:

该脚本实际上只有三行。这是整个文件:

@回声关闭
雷姆
雷姆MAKE_SCHEM_GIF
雷姆
rem从原始Eagle输出创建一个经过过滤的原理图GIF文件
rem /temp/a.tif。生成的GIF文件将为/temp/b.gif,并将为
雷姆灰度。
雷姆
image_filter /temp/a.tif /temp/b.img -shrink 5
image_copy /temp/b.img /temp/b.gif -form -gray
image_disp /temp/b.gif -zoom 1 -dev medium

这是一个非常具体的一次性脚本,但足以满足此目的。在Eagle中,将原理图导出到图像文件\ temp \ a.tif,运行生成\ temp \ b.gif的脚本。用于图像导出的Eagle设置为600 DPI和单色。真的,这就是全部。听起来可能比实际要复杂。


1
@MattRuwe可以“满足”,但是Olin的观点是专用芯片会做得更好(上升和下降时间更加对称)。PNP可以“上拉”到Vdd,但是当PNP允许输出浮动时,您需要将其拉回Vdd。基于阻抗,“某物”将在上升/下降时间中产生不对称性。
ajs410'4

Gotcha,很有道理
Matt Ruwe 2012年

1
您的原理图看起来比我的还要漂亮?:-)
stevenvh 2012年

4
@stevenvh:一定是因为我更好。认真地说,我使用Eagle并小心些。在Eagle中绘制后,我将600 DPI的原理图导出到图像文件,然后运行脚本以对其进行过滤和缩小5倍,并将结果写入灰度GIF文件。这使得结果尺寸合理,没有像素伪影。但是,这确实会使线条有些模糊,这是不具有锯齿和可见像素化的折衷方案。
奥林·拉斯洛普

1
@abdullah:参见答案。
Olin

8

以下是一些适用于CMOS信号的电阻值:

我找到这个线程是因为我想将一个较旧的“ LCD数字背包”连接到Arduino。Arduino发出正串行信号,而数字背包则需要反相信号。较新版本的LCD控制器具有反向/非反向跳线,但我的没有。同样,可以通过软件生成反向串行信号,但这涉及运行非标准库。我想使用标准Serial.write命令。

最初,我将4001 CMOS四或非门中的4个NOR之一连接为反相器,但是这占用了我的试验板上的大量空间,并且由于您应该将所有未使用的输入都接地,因此涉及很多布线。(我认为我需要连接封装上14个引脚中的除3个引脚之外的所有引脚;除3个未使用的NOR上的输出以外的所有引脚。)

我想要一个更简单的解决方案。我使用了@stevenvh提供的电路。

链接到这里:

在此处输入图片说明

我正在处理9600波特的5V CMOS逻辑,因此输入阻抗非常高/电流非常低。由于我仅以9600波特进行切换,因此我认为基于晶体管的逆变器的不对称行为不会给我带来太大的伤害。

我发现输入端有100K电阻(在stevenvh的图中为R2)可以工作,并使用3.3k电阻作为R1的上拉电阻。根据我的计算(I = V / R,5/3300),此设置在导通状态下将消耗<= 1.5 mA(由于晶体管的内部电阻而导致的损耗要小一些。)我可能会连接一个电位器并观察其大小一个可以让LCD接收信号的电阻器。


4

这是您使用CMOS方式的方法:

原理图

模拟此电路 –使用CircuitLab创建的原理图

只要电源轨电压低于栅极击穿电压,它就可以随心所欲地升高。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.