说在开头:关于玻姆的“隐变量理论”
玻姆的隐变量理论是德布罗意导波的一个增强版,只不过他将“导波”换成了“量子势”的概念;在他的理论中,电子和光子始终是一个实在的粒子,不论我们是否观察它,它都有确定的位置和动量,但是除了一些普通的性质外还具有所谓的量子势,这个量子势按照薛定谔方程发展,在电子的周围扩散开来;不过量子势所产生的效应与它的强度无关,而只和它的形状有关,这使得它可以一直延伸到宇宙的尽头而不发生衰减。
在玻姆的理论中,我们必须将电子想象成这样一种东西:其本质上是一个经典的粒子,但以它为中心发散出一种“势场”,这种势场弥漫在整个宇宙中,使它每时每刻都对周围的环境了如指掌。举个栗子:当一个电子向双缝进发时,它的量子势会在它到达之前便感应到双缝的存在,从而指导它按照标准的干涉模式行动;如果我们关闭一条狭缝,无处不在的量子势便会感应到这一变化,从而引导电子改变它的行为模式。但如果你试图去测量一个电子的具体位置的话,你的测量仪器将首先与它的量子势发生作用,将使电子本身发生微秒的变化,这种变化是不可预测的,因为主宰它们的是一些“隐变量”,无法直接探测到。
但是玻姆的隐变量理论始终显得有些多余(就如咱们之前所说的那条隐形的喷火巨龙),量子力学是如此漂亮而简洁,在实际中又如此管用,以至我们觉得除非绝对必要,似乎没有理由给它强加上笨重的附加假说。玻姆的隐函数理论复杂繁琐又难以服众,他假设一个电子具有确定的轨迹,却又规定因为隐变量的扰动关系,我们绝对观察不到这样的轨迹。这违反了奥卡姆剃刀原则:存在却绝对观测不到,这和不存在又有什么分别呢?为了这个世界的实在性,就非要放弃物理的优美、明晰和简洁吗?同时,玻姆在不惜一切代价恢复世界的实在性和决定性之后,却放弃了另一个同等重要的东西:定域性(在某段时间里所有的因果关系都必须维持在一个特定的区域内,而不能超越时空瞬间地作用和传播;也就是不能有超距作用的因果关系,任何信息都必须以光速为上限传播);在玻姆理论里,量子势可以瞬间将它的触角伸到宇宙的尽头,一旦某地发生了什么,其它信息立刻便传到了每个电子。如果玻姆的理论成立,那么超光速通信在宇宙中简直是无处不在,爱神斯坦绝对不会容许这一切!
尽管如此,隐变量理论从荆棘丛中艰难地开辟了一条道路,毕竟它在原则上是可能的。那么是否可以发展出一个完美的隐变量理论,使得我们在将来的某一天得以同时拥有一个确定、实在而又定域性的经典世界呢?这个世界是爱因斯坦的终极梦想。
1928年7月,约翰.斯图尔特.贝尔出生在爱尔兰的首府贝尔法斯特,小贝儿在孩提时就表现出过人的聪明才智,在11岁时立志要称为一个科学家,16岁时因为年龄不够上大学,先到贝尔法斯特女王大学的实验室当了一年的实习生,然而他的才华已经深深感染了那里的教授和员工;一年后他顺理成章地进入女王大学攻读物理,虽然主修是实验物理,但他也对理论物理表现出了极大的兴趣,特别是量子论,它展现出的深刻的哲学内涵令贝尔沉迷其中。他将为爱因斯坦和玻尔的这场“世纪大战”做出一个公正的裁决。(参考自:曹天元-上帝掷骰子吗)
一,TTL/CMOS逻辑电平
上一章我们讲到了发送和接收电平的噪声容差,表示发送端的高电平Vohmin要大于接收端器件的Vihmin,而发送端的低电平Volmax 要小于接收端器件的Vilmax,以保证单板在大多数的应用场景下,接收端器件能够正确识别发送端所发出的数据。那如果Vohmin < Vihmin呢?那么从理论上来说,接收端存在识别数据错误的风险;需要尽量避免这种情况的发生。这也是硬件设计专题之一:电平匹配专题(后续分享《硬件设计开发流程基础》中的“硬件详细设计”专题中再深入分析)。
我们平时在硬件设计中所接触到的最常用的电平是TTL和CMOS电平,而且一般不会对它们进行区分,相互驱动;即在我们看来这两者是相互等价的。那事实是否如我们的平常经验呢?
1,逻辑电平基本概念
我们首先需要了解电平相关的基本概念。如下图所示,为TI SN74LVTH16245器件的规格书中的参数。
1. 输入高电平(VIH): 保证逻辑门的输入为高电平时所允许的输入电平;
——VIHmin(上图中为2V):表示输入电平高于该值时,则认为输入电平为高电平,但只要低于该值(高于VIL)时会认为是低电平么?也不一定,可能被识别为高或为低,也有可能是振荡(一会识别高一会识别是低,所以驱动器器件的输入信号边沿太缓,输出可能出现振荡,如下图所示);但它不会长时间被当做是中间态输出(男生站左边,女生站右边,对!就是你,来站中间)。
——上图中没有VIHmax值,但并不是说输入电压可以无限大,如下图所示器件规定了一个Absolute Maximum值,所有管脚电平必须满足这个电压范围(该Maximum值与Overshoot和Undershoot指标又有所不同,具体后《硬件测试基础》专题中详细介绍)。
2. 输入低电平(VIL):保证逻辑门的输入为低电平时所允许的输入电平;
——VILmax(上图:0.8V):表示输入电平低于该值时,则认为输入电平为低电平;同理如果输入电平高于该值(低于VIHmin)时,我们不能确定器件所接收的数据状态。
3. 输出高电平(VOH):器件输出为高电平时,保证管脚输出的高电平范围;
——VOHmin:器件输出为高电平时的最小电压值,输出最小高电平的大小与负载电流相关(输出电流越大,则输出高电平越低),这是可以理解的;举个栗子:对于负载为1Ω的电阻来说,输出管脚需要将电压驱动为高电平,必须要有输出2A的驱动能力,否则将会被拉为低电平。
4. 输出低电平(VOL):器件输出为低电平时,保证管脚输出的低电平范围;
——VOLmax:器件输出为低电平时的最大电压值,输出最大低电平的大小与负载电流相关(输出电流越大,则输出低电平越高)。
5. 阈值电平(VT): 数字电路芯片都存在一个阈值电平,这是电路刚刚勉强能翻转时的电平。
——器件内部有一个判断的电压值(或范围),超过该电压值(VILmax <VT <VIHmin)就认为是输入高电平,反之低于该电平就认为是低电平;对于 CMOS 电路的阈值电平,很多情况是二分之一的高低电平门限电压值,如下图所示(当我们不知道阈值电平时,可以估其为(1/2)*(VILmax +VIHmin)左右)。
6. 对于一般的逻辑电平来说,以上各种电平参数的关系如下: VOH > VIH > VT > VIL > VOL;
我们接下来继续了解器件电流相关的基本概念,如下图所示。
1. IOH:器件输出为高电平时,允许负载电流的范围(拉电流);
——IOHmax:器件输出为高电平时,允许最大的输出电流;举个栗子:输出管脚的负载电流为1uA,是不是可以?有什么差别?首先当然是可以的,其次由于负载电流小,那么信号边沿更快,最终稳定状态下的高电平更高。
2. IOL:器件输出为低电平时,允许负载电流的范围(灌电流);
——IOLmax:器件输出为低电平时,允许最大的输入电流。如上图所示,输出电流和输入电流是不同方向的(相反)。
3. IIH:器件输入为高电平时的电流(灌电流);
——IIHmax:表示输入为高电平时,输入器件最大所消耗的电路;我们在上一章分析过了,这部分电流是输出器件所提供的,消耗的是输出器件的功耗。
4. IIL:逻辑门输入为低电平时的电流(拉电流);
5. II(hold):该电流是带保持(Bus-hold)功能逻辑器件所特有,输出器件需要提供超过II(hold)电流值,才能保证电平被正确翻转。
——举个栗子,如下图中翻转电流最大值是750uA,假如翻转电平是1.6V,那么输出器件从电平驱动到高电平转换,在1.6V时需要提供750uA的拉电流,否则输入电平被卡在1.6V不能跳变到2.0V以上。
有一种特殊的门电路输出结构,在集成单元内不接负载电阻而直接引出作为输出端,这种形式的门称为开路门;开路的 TTL、CMOS门分别称为集电极开路(OC)、漏极开路 (OD)。
OC、OD 门使用时应检查是否接上拉电阻,以及电阻阻值是否合适。举个栗子:IIC总线(后续《低速总线基础》专题详细分析)就是OD门输出,其上拉电阻的阻值 RL应 满足下面条件:
1. RL < (VCC-VOH)/(n*IOH+m*IIH) ;
2. RL > (VCC-VOL)/(IOL+m*IIL)。
——其中 n:线与的开路门数;m:被驱动的输入端数;对于IIC总线来说还有负载电容和边沿时间的要求,具体计算在《低速总线基础》专题分享。
2,Bus-Hold
既然已经说到了Bus Hold功能,那就顺带聊一下Bus Hold是啥,为什么要有这个功能。正如我们上一章关于推挽结构中所述,当输入处于中间电平时(VIL < V <VIH),如下左示意图所示,上管PFET和NFET处于半导通的状态,此时器件消耗的电流非常大,如下中图所示。
——如果输入信号长时间处于中间电平状态,那么输出会振荡,如下右图所示。
那这种现象会带来什么问题呢?
1. 如下图所示,为多负载的双向传输总线系统:这个系统在输入/输出切换或则总线没有操作时处于高阻态,那么总线大概率会进入半高状态(中间电平状态);举个栗子:如上中图所示的5mA/pin的电流计算,如果是16bit总线,那么器件功耗P = 5mA * 16 * 5V = 0.4W(对于这个简单逻辑器件来说,已经不是低功耗了)。
1, 当然我们可以有一些解决办法,首先可以通过总线的控制,将高阻态(或称“三态”,这个名称我内心是比较拒绝的)的时间尽量短:这样电平从高电平状态还来不及回落到中间电平状态,就又被拉高了,不会产生这个问题;
2, 采用上拉电阻:我们一般选取总线上的上拉电阻在4.7KΩ~10KΩ左右,但是对于总线上来说,边沿速度有要求以防止上升沿过程中出现振荡:Rp = tr/(2.2*Cs*n);举个栗子:对于5V器件,假如信号边沿最低速率要求是10ns/V,负载电容为20pF,总共有10个负载,那么计算Rp = 50/(2.2*20Pf*10) ≈ 110Ω。
——高阻态之前的状态如果是高电平,那么上拉电阻可以保持其电平状态不变;如果高阻态之前是低电平,那么上拉电阻会将总线上的电压从0V上拉到高电平,此时会经过中间电平状态,所以要求最小边沿时间。
好,现在轮到Bus Hold功能驱动器上场了,如下图所示为带Bus hold功能器件的内部电路结构。
1. 输入信号在Q1和Q2组成的反相器中被放大,同时将内部电路与器件的外部信号解耦;
2. 总线保持(Bus Hold)电路由Q3和Q4组成,此时信号再次被反转(总共翻转了360°),然后返回到电路的输入端(如上图橙色部分电路);
3. 通过反馈回路,两个反相器组成了一个锁存器,而且不断尝试达到两个稳定(高或低)状态之一:
1, 如果输入为高电平,那么第二个反相器的输出也高,因此Q3(PMOS)导通;
2, 如果输入电压降低,那么上拉电流通过Q3提供,来抵消线电压的进一步下降;
3, 同理,如果输入为低电平,那么Q4(NMOS)导通,并补偿连接到接口的漏电电流。
——也就是说:Q3和Q4连接到了信号输入端,当信号电平偏出VCC和GND电压时,这两个MOS管就会给输入信号提供驱动电流,防止它“溜出去”;距离高/低电平的偏压越大,提供“纠正”的驱动电流越大。
那么最终会达成怎样的一个效果呢?如下图所示,终于又看到这张经典的带总线保持(Bus-Hold)的特性图了,记得在刚工作时碰到了一个问题:在驱动器74LVTH16245的输入侧使用4.7KΩ上拉(无器件驱动该管脚),结果某些单板有小概率(10%左右)在上电后74LVTH16245的输出电平是低电平(真当百撕不得其姐~)。定位了好多天,最后找到这张图才知道了问题的原因。
1. 如果原输入状态为高,现在如果要变成低电平,那么必须在阈值电平VT处输入一个大电流(例如:500uA)才能翻转成功;
——正是这个机制,保证了总线在高阻态(输入管脚是中间电平)时驱动器输出不会“胡乱跳变”;因为总线在高阻态时无法提供500uA的驱动电流,所以输入电平会被卡在中间电平附近,而驱动器输出电平保持不变。
2. 同样由于该机制,导致对带Bus Hold功能驱动器输入端的上下拉电阻值有更高要求。
——接着我十六年前刚工作时碰到那个问题,我们要保证驱动器输入端可靠上拉,如何计算其上拉电阻值呢?我们估算其阈值电压VT = 1.5V,我们要保证在翻转瞬间的上拉电阻能够提供500uA的上拉电流,所以Rp = (3.0V-1.5V)/500uA = 3KΩ,那我们选择2KΩ左右应该是比较保险的方案了。
3. 带Bus Hold功能的驱动器用在总线上之外,还有什么地方用起来会比较爽呢?可以用在板间信号,以及对外低速信号上;因为Bus Hold功能天然带有抗干扰的能力,一些微小的波动和干扰,不足以让器件的输入信号翻转而被滤除,从而保证了后端信号的稳定。
3,TTL/COMS 逻辑电平关系
如下图所示为TTL和CMOS逻辑电平示意图,我们分别对它们进行分析;
1. 首先我们需要知道TTL和CMOS表示了什么意思;
1, TTL:Transistor-Transistor Logic,是由晶体管(三极管)组成的逻辑门电路,所以是电流控制型器件(忘记的胖友们,请回顾《三极管基础》专题相关章节);
2, CMOS:Complementary Metal-Oxide-Semiconductor(互补金属氧化物半导体),是由MOS器件组成的逻辑电路,是电压控制型器件(《MOS管基础》专题相关章节);
3, CMOS相对于TTL的最大特点是啥?驱动MOS电路结构所需的电流非常小,所以CMOS电平的静态扇出能力(1个输出可以驱动多少个负载)明显要大于TTL。
——TTL扇出能力为:10;CMOS静态扇出能力为:1000(注意:是静态;跳变信号需要根据信号频率和负载电容决定)。
2. 5V TTL 逻辑电平和 5V CMOS 逻辑电平目前已经不是很常用了,他们的输入/输出电平差别较大,万一有使用到,那么在互连时要特别注意;
1, 5V CMOS的VIH:0.7*Vcc = 3.5V,而5V TTL的V OH = 2.4V(VOH < V IH);所以当5V TTL电平器件输出至5V CMOS电平器件时存在电平不匹配的风险;
2, 5V CMOS的VOH = 4.4V,而5V TTL的V IH = 2.0V(VOH > V IH);所以当5V CMOS电平器件输出至5V TTL电平器件时,可以直接对接,没有风险;
3, 那么5V CMOS器件输出到5V TTL器件输入,需要如何实现呢?
(1)如果是单向低速信号,可以通过逻辑门电路搭一个电压转换器;
——举个栗子,一个三极管/MOS管可以做“反相器”,那么两个三极管/MOS就是一个简易的“反反相器”:电平转换器;还可以利用二极管的特性,做一个电平转换器。(具体参考《普通二极管》和《三极管基础》相关章节)
(2)如果是高速信号,就使用驱动器,例如:16245/16244等。
3. JEDEC 组织在定义 3.3V 的逻辑电平标准时,定义了 LVTTL 和 LVCMOS 逻辑电平标准。
1, LVTTL (3.3V)逻辑电平标准的输入/输出电平与 5V TTL 逻辑电平标准的输入/输出电平很接近,从而给它们之间的互连带来了方便;
——LVTTL 逻辑电平定义的工作电压范围是 3.0-3.6V。
2, LVCMOS (3.3V)逻辑电平标准是从 5V CMOS 逻辑电平关注移植过来的,所以它的 VIH、VIL 和 VOL 与工作电压有关,其值如上图所示(根据工作电压有关的范围);
——LVCMOS 逻辑电平定义的工作电压范围是 2.7- 3.6V。
3, TTL和LVTTL电平之间的互连:如果LVTTL器件管脚的耐压能够满足TTL输出最高电平,那么它们之间是可以完全互连的;
4, CMOS和LVCMOS之间的互连:由于CMOS电平的VIH要求很高(3.5V)远高于LVCMOS的VOH,所以它们之间并不能保证可靠的电平匹配;
5, LVCMOS和LVTTL电平之间的互连:
(1) LVTTL输出LVCMOS输入:LVCMOS电平VILmin = 2.7V * 0.2 = 0.54V,VIHmax = 3.6V * 0.7 = 2.52V;而LVTTL电平VOLmax = 0.4V,VOHmin = 2.4V(VILmin <VOLmax;VIHmax > VOHmin);互连存在一定的风险;
——如果我们保证LVCMOS的工作电压为3.4V以下,则VIHmax = 3.4V * 0.7 = 2.38V(VIHmax < VOHmin = 2.4V);在理论上可以满足LVTTL输出而LVCMOS输入的互连。
(2)LVCMOS输出LVTTL输入:LVTTL电平VILmin = 0.8V,VIHmax = 2.0V;而LVCMOS电平VOLmax = 0.1V,VOHmin = 2.7V-0.1V = 2.6V(VILmin <VOLmax;VIHmax < VOHmin);不存在互连风险。
(3)所以当LVCMOS的工作电压 < 3.4V时,从理论上可以实现LVCMOS和LVTTL的相互连接,但压差太小存在工作不稳定的风险。
4. 如下图所示,JEDEC组织还定义了更低的电平标准:2.5V,1.8V,1.5V,1.2V,这些电平为统一标准,不再区分TTL和CMOS。低电压互连是硬件设计的趋势,因为低的电压意味着更低的功耗,更小的串扰,以及更快的信号速率。
但是逻辑电平从5V至1.2V有如此多的标准,在实际硬件设计中选择的不同器件(芯片)所支持的电平必然会有所不同,那它们之间的信号互连要如何解决呢?
我们下一章节再继续分析。