(M1由关断到开启,肯定是先进入饱和区,因为这个临界点时,M1的Vds=VDDH>Vgs-Vth1=VDDL-Vth1,肯定是饱和区)
M1的饱和区电流肯定先是大于M3的线性区电流,使得N点持续由VDDH放电到地,这个过程不能使得M1电流小于M3电流,否则N点下拉失败,OUT无法输出高电平VDDH。也就是说,这个过程中M1和M3竞争,M1要赢过M3,才会使得N点下拉成功,OUT输出VDDH。同理,M2也要赢过M4。
第一种情况:当N点放电的时候,N点电压由VDDH减小,即M1的Vds减小,M3的Vds增大,M1的电流减小,M3的电流增大,那么,两者会有相等的时候吗?肯定会有,当两者电流相等的时候,如果N点电压足够高,使得M4无法导通,那么M1和M3会一直保持这个电流,N点电压保持,电路维持在这个状态。这个状态是我们不希望的。
第二种情况:当M3电流增大,M1电流减小过程中,在二者电流相等之前,N点电压就足以使得M4导通,M点被上拉到VDDH,M3关断,上拉能力很快减弱到没有,使得N点继续放电到0,输出OUT输出高电平VDDH,这种情况是我们希望的。
正反馈在哪里呢,当N点电压减小到使得M4导通,那么M点电压增大,促使M3关断,下拉能力减小,使得N点继续减小,这就是正反馈。
那么,如何才能保证是第二种状态而不是第一种呢?只要nmos的下拉大于pmos的上拉就可以了。
临界点的M1和M3的宽长比计算依据:当M1和M3电流相等时,N点电压恰好使得M4导通,即N点电压为VDDH-|Vth4|。(M3和M4的Vth相等)
但是nmos的宽长比远远大于pmos的宽长比也会带来一个新问题,就是下拉电流远大于上拉的电流,这样导致risetime和fall time的不一致。
最简单的办法就是增加pmos的尺寸和修改后面inv的尺寸。
修改之后有良好的改善,将差距缩小到40ps左右。但是要注意跑一下mc仿真,以防功能不正常。但是这样的修改方式是有极限的,那需要更好的结果就需要更改架构。
在pmos管DS端增加电阻,用来扩大上拉电流,在M1/M2上增加M5/M6管子通过使能控制完全关断下拉电流,这样可以使建立更加迅速,但是需要通过后面的使能控制让其功能正常。
注意事项
虽然说高到低不加level shifter也不会影响逻辑功能,但是不加也会有坏处,关于高到低不加HL的危害有四种说法:
第一种说法,过驱动会产生额外的电流;
第二种说法,某些极端情况下,输入端的逻辑0会被输出端当做逻辑1;
第三种说法,压差过大会对信号输出端的晶体管氧化层造成破坏(一般认为高压高过低压25%就会影响器件寿命)
第四种说法,仔细观察过pmk库liberty文件会发现,level shifter有一个输入输出电压的范围,这是普通cell没有的,不用HL的话,仅使用普通cell延迟计算会不够准确,压差越大偏差越多。
HL型level shifter从结构上看,可以看做buffer或是串联的inverter,延迟很小对时序影响不大。