施密特(smit)触发器

时间:2024-03-26 12:50:04

对于不停振荡的输入噪声,我们可以用施密特(smit)触发器来抑制噪声。施密特触发器的输入波形如下所示:

施密特(smit)触发器

从图中我们可以看到:

当输入从低到高,反相器的翻转电压VT+ > 0.5*vcc;

当输入从高到低,反相器的翻转电压VT- < 0.5*vcc;

这样当输入在0.5*vcc附近波动的时候,只要你的波动范围在VT- 与VT+之间,输出波形如下所示:

施密特(smit)触发器

跟我们预期的波形是一致的,只是翻转点略微推后一点,多了一点延迟。

下图是一种CMOS smit 触发器架构

施密特(smit)触发器

假设Vin从0->VDD,M2处于导通上拉状态;

Vx初始电位为VDD,Vout初始电位也为0,所以M4也处于导通上拉状态;这样相对于普通反相器多了一条上拉path,所以翻转电压Vtrig+要变得更大才能使得NMOS M1下拉改变输出Vx由VDD->0 ;


同理Vin从VDD->0,M1处于导通下拉状态;

Vx初始电位为0,Vout初始电位也为vdd,所以M3也处于导通下拉状态;这样相对于普通反相器多了一条下拉path,所以翻转电压Vtrig-变得更小才能使得PMOS M2上拉改变输出Vx由0->VDD;


这里由于翻转点比较敏感,所以对于M4/M3的设计最好选择比较长的length来可以减少工艺误差带来的影响,比如特征尺寸的2倍;在实际设计中,可以在TT corner下先将标准反相器的翻转点调到0.5*vdd的位置,然后再把smit 功能加入得到vtrig+ , vtrig-,最终得到更大的noise margin。注意要用spice dc仿真2次,一次输入从0->vdd,另一次是从vdd->0。


对于内部噪声中大尺寸的mos器件设计而言,首先确认设计是不是一定要用到这么大的size,有时候我们的设计并不是越快越好,只要满足spec且有一定的余量,设计也是没问题的。


如果器件尺寸没法减小,因为大尺寸的器件瞬间在VDD和GND上抽出的电流太大,那我们可以从VDD和GND的角度来处理noise的问题,有以下几个解决方案:

1. 给这些大尺寸器件提供相对独立的VDD和GND,比如从VDD/GND的源头拉一根粗线过去;


2. 将一些对power比较敏感的电路模块远离这些大尺寸器件电路,敏感电路包括一些电压基准电路,高精度放大器等等;

施密特(smit)触发器

3. 将noise模块与敏感模块的工作时序错开,比如原先的设计是一边放大一边输出,可以改成放大完再输出。这样控制逻辑虽然复杂了一点,但是保证了芯片的正确性

施密特(smit)触发器

对于内部噪声中的互联线之间串扰,一般以下几种情况要考虑:


  1. 敏感线的周围,如电压基准信号、高精度放大器的输入信号、高阻线等。这些线就跟游戏里面的智力型脆皮英雄一样,旁边的线稍微动一下,它们就挂了;
施密特(smit)触发器

对于这种情况,通常可以在敏感线的2侧各放1条GND线保护起来,这样可以应付绝大多数case,但是也遇到fail的情况,有时候需要2侧各放2条GND线确保万无一失。都隔着1/2条河了,你来打我啊。

施密特(smit)触发器


2 几根routing比较长的数据传输线在layout上放在一起走,这几根数据线都是不停的在传输数据,其中B线是critical path的信号;

施密特(smit)触发器

对于这种情况,如果线比较少可以用上面的加GND保护线的方法;如果线比较多,通常内部传输线16条、32条、64条一起传的情况还是蛮多的,这样加GND保护线的代价就太大了。假如一条线宽度0.1um,间隔0.1um,加一根GND线就要占用0.2um的空间,如果这些线都是贯穿整个chip的,加个几十条线项目老大估计要哭了。那我们可以稍微让步一点,可以把A B C之间的间距拉开一点,间距越大couple电容产生影响越小。我惹不起你离你远一点还不行。当然具体要多大的间隔,可以结合互联线的couple model进行仿真,这个跟公司用的具体工艺有关。


如果这些线都是同类型的线,我们还可以从设计的角度来削弱couple电容的影响,比如说在这些线变化之前先把它们统一reset到0或1,这样需要变化的线都是向同一个方向变化,大家节奏一致受到的伤害减小。