灵敏放大器SA仿真教程 - 副本 (1)(1)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
灵敏放大器(SA)仿真教程
此文档由研究生关立军提供
电压灵敏放大器一直广泛应用于SRAM设计中,通常有着较为稳定,结构简单的特点。工作时,为保证其能正确工作,需要耗费一段时间让存储单元下拉相应的位线,以形成足够的初始差分小信号电压,才能启动灵敏放大器进行放大。通常,初始差分小信号电压的形成所用的时间比灵敏放大器的工作时间还要多。在SRAM设计中,读操作过程中其中一根位线会放电,两根位线间形成电压差;当达到一定值时(SA的失调),SA开启将检测到的电压差进行放大输出;这样将大大缩短SRAM的读取速度,降低SRAM读操作时的功耗。
本教程采用应用较为广泛的锁存型电压灵敏放大,此类SA非常适合高速SRAM应用,另外,采用非耦合结构消除了输出信号全摆幅对输入的影响,从而可以降低Bitcell位线上信号摆幅,降低功耗。
图1: 锁存结构的电压灵敏放大器基本电路结构
图1是采用交叉耦合CMOS反相器作为锁存结构的电压灵敏放大器,完成数据的快速读出。P3、P4为传输管,将位线电压传递到OUT、BOUT端;P1、P2、M1、M2组成放大器的锁存结构,其具有的正反馈作用能够将位线差分信号快速的转换为符合逻辑的高低电平;M3为使能管,SAE为使能信号,它控制整个灵敏放大器电路的开启与关断。
使能信号SAE为低电平时,灵敏放大器不工作,位线BL、BLB被预充到高电平,P3,P4导通,内部处于高阻状态。当字线打开,足够的电压差形成后,SAE为高电平,灵敏放大器开始工作,P3,P4管关闭,以切断与外部大电容的联系,同时尾管下拉,这时的放大主要由M1,M2同时下拉完成,当上拉管PMOS打开后,构成的正反馈高增益结构迅速将小信号放大为全摆幅输出。
SA性能仿真
SA速度仿真
1、仿真电路
图2为锁存结构电压灵敏放大器的仿真电路图,最上方3个PMOS管为SA的预充电路,在控制信号PRE为低电平时,对SA的两个输出端进行预充到高的操作。PRE_BL控制的两个PMOS管,在PRE_BL为低电平时将电容电压传输到BL、BLB端,有效时间为预充结束到SAE开启之间的时间段。
图2:锁存结构的电压灵敏放大器仿真电路
2、仿真条件:位线寄生电容设为50fF,一端电容设置初值为1.2V,一端设置为1V,即假设位线电压差为200mV时,SA进行放大操作。
各个MOS尺寸设置,预充的三个PMOS:700n/60n; P1、P2:370n/80n;
P3、P4:370n/60n;M1、M2: 1μ/160n;M3:1μ/70n; PRE_BL:370n/60n。
3、仿真设置:因为SA的速度比较快,仿真时间设置为1.8n,这里延迟的计算仅仅计算SAE 开启到数据读出的这段时间,取下降到10%VDD为数据读出的时间点。功耗的计算:对于非耦合Latch型灵敏放大器的功耗主要集中在SA预充电和使能工作的一段时间(预充开始到数据读出的这段时间)。SA的电流取的是VSS端的电流值,经过计算可以得到SA放大过程中的功耗。图3为输入信号的示意图。
图3:SA输入信号时序图
仿真波形图如下图4所示:
图4:SA仿真波形图
功耗的计算公式如下:P=UI,这里U为电源电压1.2V,I为预充到数据读出这段时间的平均电流;在这段时间对I进行积分,之后除于这段时间的大小即可。如下图5所示。
下一步点击箭头所指之处,即可得到电流的积分值;之后进行功耗的计算。
图5:功耗公式设置
附注:感兴趣的同学,可在不同仿真条件下,比较SA的速度和功耗。
SA失调分析
1、仿真电路
图6为SA失调电压仿真电路图,与速度仿真的不同在于,其仿真方法用的是MC仿真方法。MC仿真方法在6T SRAM存储单元仿真教程里有介绍。这里,tran仿真
图6:锁存结构的电压灵敏放大器失调仿真电路
由于存在工艺失配,Latch类型SA存在较大的失调电压,这个电压将决定能识别的最小输入电压差,对位线上所需要建立电压差的设置有很大的指导意义。
2、具体的仿真方法如下:
Step1:调好SA电路的时序,加载各个信号的激励,例如,控制信号、使能信号、预充信号等。这些信号的加法:delay, plus width, period, voltage等。
具体信号如下图7:
BL端加载1.2直流电压源vdc,BLB端加载斜坡信号;预充信号PRE,使能信号SAE,加载方波信号vpulse。
BLB端信号设置预充信号PRE设置
使能信号SAE设置
图7:各信号设置
Model libraries设置:设置为tt。
设置好之后进行tran仿真,观察OUT,BOUT两节点,能否实现正常的预充电—信号输入—正反馈起作用输出,如果行,则可以设定各个失调所需函数。
Step2:设置函数:
图8:函数设置方法
(1)VOUT= (VT("/OUT") - VT("/BOUT"))(实际上是在calculator里选择vt选项后,在
电路图中选中OUT,BOUT;之后,点击减号即可。
(2)SAMPLE:设置一个取样函数,SAMPLE=sample((VT("/OUT") - VT("/BOUT"))
1.5e-09 8.02e-07 "linear" 2e-09);在(1)的结果上选择sample函数,设置取第一个点的时间,和最后仿真结束的时间;最后设置步长,这里步长为2n,用指数形式表示。
图9:取样函数
(3)CROSS:计算事件的上升或是下降发生时间的波动;CROSS=cross(sample((VT("/OUT") - VT("/BOUT")) 1.5e-09 8.03e-07 "linear" 2e-09) 0 1 "falling" nil nil)
图10:cross函数设置
(3)value:信号在某一时间点的值;失调电压OFFSET=BLB在cross时间点的值减去BL在cross时间点的值。OFFSET=(value(VT("/BLB") cross(sample((VT("/OUT") - VT("/BOUT")) 1.5e-09 8.02e-07 "linear" 2e-09) 0 1 "falling" nil nil)) - value(VT("/BL") cross(sample((VT("/OUT") - VT("/BOUT")) 1.5e-09 8.02e-07 "linear" 2e-09) 0 1 "falling" nil nil)))
图11:value函数设置