说在开头:关于统一动力学
大众对单个光子或电子究竟是“幽灵”还是“实在”,并没有太大的关心,而薛定谔猫咪的思想实验才真正的引起了人们的担忧:现在这个幽灵从微观世界转换到了宏观世界。如果电子既是粒子又是波,那么猫为什么不是既死又活的呢?如果电子同时出现在这里又出现在了那里,那么为什么我的手机还是安稳地待在我手上,而并未弥漫扩散开去呢?我们已经有很多个解释:猫的确既死又活,只是它在被我们观测瞬间坍缩了(哥本哈根解释);猫在一个宇宙中活着,在另外一个宇宙中死了(平行宇宙解释);猫从未既死又活,它的死活由看不见的隐变量决定(隐变量理论解释)等等。有些人对这些解释都不满意,然后小心翼翼地去考察一条新开辟的道路。
1986年7月15日,三位来自意大利的物理学家:Ghirardi,Rimini和Weber在《物理评论》杂志上发表了一篇论文,题为“微观和宏观系统的统一动力学”,从而开创了GRW理论。GRW理论的主要假设是:任何系统,不管是微观还是宏观的,都不可能在严格意义上孤立,即不可能是和外界毫不相干。它们总是和周围环境发生着种种交流,被一些随机的物理过程所影响。这些随机的物理过程,会随机地造成某些微观系统,比如一个电子的位置从一个弥漫的叠加状态变为在空间中比较精确的定域。
举个栗子:对于单个粒子来说,平均要10¹⁶秒(10亿年)才会自发地迎来一次定域(波函数坍缩成粒子),而薛定谔的那只猫咪是由大约10²³个粒子组成的系统,所以虽然单个粒子自发定域要十亿年,但每秒有成千上万的粒子会经历自发定域的过程。GRW理论中将薛定谔方程换成了所谓的密度矩阵方程,然后作了复杂计算后发现:因为整个系统中的粒子实际上都是互相纠缠在一起的,少数几个粒子的自发定域会非常迅速的影响到整个系统,就像推到多米诺骨牌一样,所以对于10²³个粒子组成的系统来说,只要0.1us就会发生一次定域,使得自己的位置从弥漫开来的状态变成精确地出现在某个地点。这里既不需要观测者,更不需要涉及意识,它是基于随机过程的。
所以不管是猫咪还是人,都会经历死/活的叠加,不过这种叠加只维持了非常非常短的时间,然后就马上精确定域了;以至于我们根本没法察觉到这一叠加过程。这看上去很不错,很符合常识,也没有什么疯狂的假设。但是GRW自身仍然面临着许多严重的困难,他们论文发表的当年,海德堡大学的E.Joos就向《物理评论》递交了这个理论的点评,对GRW提出了质疑,自那时起物理学家中对GRW的质疑一直很大。
GRW理论中虽然不需要“观测者”,但是它的框架里面没有什么东西实际上是确定的,只有“非常精确”,“比较精确”以及“非常不精确”的区别,比如我看着那只猫咪的时候,猫咪并没有一个完全确定的位置,虽然组成猫咪的大部分粒子都聚集在猫咪所蹲的地方,但真正描述猫咪的位置是一个类似于正态分布图,我们只能说“绝大部分的猫咪”在它所蹲的地方,而组成猫咪的另外那“小部分”(极小的一部分),却仍然弥漫在空间中,充斥着整个房间,一直延伸到宇宙的尽头。
就如佛陀所说,天上地下,唯我独尊。任何时候“我”都充满了整个宇宙,只不过“绝大部分”的“我”聚集在某个特定的地方而已。这虽然从逻辑上也能讲的通,但这明显跟传统“哥本哈根解释”一样违反了常识,那既然大家都违反了常识,还不如接受“根本哈根解释”好了。同时GRW还抛弃了能量守恒,这在许多人看来是无法容忍的行为;当年玻尔的BKS理论也是抛弃了能量守恒,遭到了爱因斯坦和泡利犀利的抨击。(参考自:曹天元-上帝掷骰子吗)
一,单端逻辑电平匹配
单端逻辑电平的匹配是我们平时在硬件设计中最经常碰到的,我们在《TTL&CMOS电平》章节中已经对TTL和COMS电平的匹配设计做了一些分析,一般3.3V LVTTL和LVCMOS是可以直接相互驱动的。但是其它不同逻辑电平之间呢?举个栗子,3.3V逻辑电平和1.8V逻辑电平之间呢?
1,门电路电平匹配方案
如下图所示,利用三极管/MOS管搭建不同电平之间的电路匹配;
1. 如果输入/输出侧接至CPLD/FPGA等逻辑器件的话,可以只用1个三极管/MOS管来实现电平的转换,但是此时逻辑上是取“非”的关系,需要在CPLD/FPGA内部再取“非”操作;
2. 一般电源模块(DC-DC,LDO等)的PG或EN信号,如果没有合适的电平时,适用这种电平转换方式;
3. 由于三极管/MOS管的逻辑电平切换需要时间(开关时间),所以信息传递的延时会比较大;
1, 三极管/MOS管本身切换时间比较慢(具体原因分析,请参考《三极管基础》和《MOS管结构和原理》相关章节);
2, 三极管/MOS管在B/G极需要达到一定的电压才能导通三极管/MOS管,而在此电压之前三极管/MOS管不会有大动作(开关),会造成一定的延时。
4. 对于较低速率信号,如上右图所示UART数据传输,可以通过三极管来实现不同电平的匹配和防挂死;
——对于数据(非电平状态)的传输,需要对三极管相关参数进行设计,保证其在特定传输速率下能够正常工作(信号边沿时间,占空比,传输延时以及三极管/MOS管支持的最大开关频率等等)。
5. 三极管/MOS管的开启电压VBE/VGS(th) 大小,一般情况下SOT23封装的三极管/MOS管极限开启电压(最大值)可能在1V左右,所以如果是电压在1.0V左右,采用该电平转换方案存在一定的风险;
6. 如左上图所示结构,如果采用三极管/MOS管来作为电源是否OK的判断,那么需要确定确定监测门限,来确定对输入电压的分压大小;
——举个栗子,假如监测2.5V电源是否OK,如果直接输入至MOS管G极,其开启电压:VGS(th) 假设为1.0V,那么当2.5V电源电压上升至1.0V时,我们就认为2.5V这路电源电压OK了,这是有问题的;需要对2.5V电源电压进行分压,比如串联1KΩ后再下拉1KΩ,进行50%电源电压的分压,那么当2.5V电源电压上升为2.0V时我们才判断其电源电压OK。当然这是一种粗略且方便的监测设计。
2,逻辑器件电平匹配方案
如果规模较大的硬件电路,我们往往会CPLD来作单板的管理和信号汇聚功能(具体关于CPLD的设计及功能,后续在《硬件详细设计流程-CPLD设计》中详细描述)。我们知道CPLD的I/O管脚有很多个不同的Bank组成,而不同的Bank可以支持不同的供电电源。如下图所示,为Lattice MachXO2系列CPLD支持的不同单端I/O电源电压;其支持1.2V~3.3V的多种电平电压,基本上可以涵盖了一般硬件电路中所涉及到的电平。
那采用CPLD实现不同逻辑电平之间的转换,举个栗子(如下图所示):器件A是1.2V逻辑电平需要接到3.3V逻辑电平的器件B,设计CPLD的Bank0可以供1.2V而Bank1供3.3V,那么将器件A的信号接至CPLD的Bank0,而器件B的信号接至CPLD的Bank1;只要在CPLD逻辑内部将器件A和器件B的信号线连在一起,就完美地实现了电平转换。但在实际硬件设计上有这么完美么?(完美只存在于“理念世界”)
1. CPLD有VCC和VCCIO两种电源,VCC电源(Core 电源)和VCCIO电源是否有什么关系呢?
1, VCC电源电压要求与VCCIO不一样,如下图所示(Lattice MachXO2系列CPLD支持的Core 电压),core电源电压与VCCIO电源电压本质上是两种不同的电源需求;所以两者可以合用也可以分开来提供,看怎样简单;
2, CPLD器件本身的上电时序,一般会要求VCC要先于或同时于VCCIO上电(后续《硬件详细设计:单板电源分析》详细介绍),否则可能会导致漏电,即VCCIO漏向VCC。
2. 当单板中有多个器件使用了同样的电压,但那些器件由于上电时序的控制要求(或则布局要求,电源本身特殊需求等等),不能同时上电;那么CPLD的VCCIO电源要如何设置呢?
——举个栗子,器件A的I/O电源电压是+1.2V,器件B的I/O电源电压也是+1.2V,但是器件A的I/O电源电压要早于器件B上电,那么CPLD的VCCIO电源要选哪个呢?
1, 建议CPLD的VCCIO电源选择最早的那路,因为一些信号(举个栗子:复位、时钟等)需要器件上电时就要有明确的状态输入,如果CPLD的VCCIO电源较迟上电,那么会导致器件上电和CPLD 的VCCIO上电间隙的状态不确定;
2, CPLD的VCCIO电源早于器件的I/O电源上电,那么在器件的I/O电源还未上电时,CPLD输出的信号线上就有高电平输出到器件I/O管脚上,那么会导致电源电流的倒灌,并产生漏电压;
——举个栗子,如下图所示:P3V3_COM电源先于P3V3_IO上电,当在上电时序间隙,P3V3_COM电源会沿着输入管脚,通过防护二极管漏导P3V3_IO,使得P3V3_IO电源电压抬升;但电源电压被抬升就一定不允许么?1,如果器件资料中明确漏电压必须小于的电压值,那么必须严格执行;因为器件一旦监测到该路电源超过了某电压值,就表示开启了Power On 流程,但实际上漏电流无法支持器件正常工作所需的电流,会导致器件异常(可能需要完全下电后才能恢复);2,如果器件资料未明确规定漏电压的大小,建议漏电压小于0.5V。
3. 我们已经明确了CPLD选择的VCCIO电源要早或同时于其它器件的上电时序,但是也会引入漏电压的问题,那如何来解决?
1, 与CPLD相连的信号线上拉电源,均使用器件侧I/O电源电压(而不是CPLD的VCCIO电源),这样避免了由于上拉电源导致的漏电流(如上图所示);
2, CPLD监测单板各路电源的上电状态,
(1)对于CPLD输出管脚:在监测到对接器件I/O电源上电之前,输出保持高阻态,在监测到对接器件I/O电源OK后,输出正常逻辑状态;
(2)对于CPLD输入管脚:保持输入状态,在监测到对接器件I/O电源上电之前,不对输入信号做响应。
3, 特殊信号,举个栗子:复位信号;器件要求上电之前需要保持低电平,而如果信号外接是通过电阻上拉,则需要特殊处理,以保持满足器件的要求。
——对不同的信号做不同的处理:由具体的器件、硬件系统以及应用需求所决定,并非有一个绝对的标准可遵循;所以做硬件设计之前,首先需要明确的是产品应用需求,然后分解系统需求,再是硬件需求,然后才是选择器件,制定硬件设计方案,我们所设计的每个器件、每条走线都是从上述需求中分解下来了的,可以进行验证和解释的。
4. 解决了上述漏电压的问题后,CPLD方案也并非是一个万能的解决方案;如下图所示,CPLD内部的传输延时会比较大(typ:7ns左右),一般情况下7ns的延时是不会产生影响的,但是对于较高速的总线传输来说就会有问题了;此时最好采用专用电平转换器件(延时:百ps级别)。
——举个栗子:50MHz的SPI总线通过CPLD进行电平转换(3.3V—>1.8V),此时的读时序就会受到非常大的影响,导致读失败(关于SPI总线的读时序,后续《总线设计基础》详细分析)。
采用CPLD实现电平转换的设计,虽然整体看起来有点复杂,但这是系统性解决整板电平匹配最简洁、方便的方案。同时,CPLD由于较好的过冲防护设计,以及输出驱动可调等特性,所以在很多应用场合可以省去源端匹配电阻设计,进一步简化单板硬件设计。如下图所示。
3,专用器件电平匹配方案
这类器件非常多,有4路、8路、16路等驱动器(举个栗子:74LVX4245MTCX,SN74LVC16T245等等),只要在对应端口的Vcc电源管脚接上对应的电源电压即可实现电平转换;其延时小,无需考虑漏电电压的问题,对于简单小数量信号线的电平转换是非常好的选择。
除此之外,我们还经常会用到IIC(OD,双向)的电平转换器件,这类双向数据传输的电平转换,如果采用CPLD,实现起来需要比较复杂的逻辑(需识别读、写操作),所以使用专用电平转换器件会方便很多,举个栗子:PCA9517等。
另外,还有一类是自动识别方向的双向电平转换器件,这类器件无需进行方向控制,可以自动识别并进行驱动,举个栗子:TXS0108EPWR等;其好处是使用方便,缺点是如果信号质量设计有问题(不匹配导致过冲),会使得器件的方向识别错误,导致产生信号振荡。
专用器件来实现电平的转换,对于局部电路来说更加简单、方便,也是平时硬件设计中最常用的方法,适合两个器件之间的多个信号的电平转换;如果一个电平转换器件对应多个器件之间的互连,或需要大量使用电平转换器件,那样会导致单板面积和器件成本的增加;可以考虑CPLD。