文章目录
静态存储器和动态存储器
静态:1. 只要接通电源,存储状态就会一直被保存,基于正反馈或再生原理
2. 一个电路的输出连到输入
3. 寄存器较长时间不被更新的时候最有用
SRAM例子:主要用于二级cache
动态:1. 存储时间很短,也许只有几毫秒,通过寄生电容暂时存储
2. 较高的性能和低的功耗
DRAM例子:内存
0. 时序电路的时间参数
寄存器模块
建立时间Tsu:时钟翻转前数据D必须有效的时间
维持时间Thold:时钟边沿之后数据输入必须仍然有效的时间
传播延时Tc-q:输入端D处的数据在最坏情况下
组合逻辑模块
最小延迟Tplogic:一个逻辑最坏情形的延迟。
污染延迟**(contamination delay)Tcd:一个逻辑最小的延迟
==!!==关于Tcdregister + Tcdlogic >= Thold 的理解:
对于Thold,只有当为锁存器的时候才有效,因为寄存器(因为上升沿的缘故)Thold=0。
对于锁存器,当clk刚刚等于1的时候,D信号进入,然后进入Thold时间,如果此时Tcdregister + Tcdlogic < Thold,那么输出Q会变化,下一个寄存器的输入D会变化。
1. 静态锁存器和寄存器
静态的存储模块由两个反相器构成双稳态结构来保存数据。
1. 双稳态原理 —— 使用两个反向器
这一交叉耦合的两个反相器形成了双稳电路,可以用作存储器,存放1或者0
破坏稳态的方法
- 切断反馈回路 —— 多路开关型锁存器:CLK=1,输入值;CLK=0,保持
- 触发强度超过反馈环
2. 多路开关型锁存器 — 传输门多路开关
3. 主从结构的寄存器
(1). 传输门设计 —— 稳定性好但时钟负载大
当CLK=0的时候,T1、T4导通,T2、T3不导通,此时D信号到达Qm,同时Q保持之前输出
当CLK=1的时候,T2、T3导通,T1、T4不导通,此时T1关闭,D无法进入,Qm进入T2和T3,Q输出Qm的内容
对于时序:
Tsu(建立时间):I1 + I3 + I2 + T1 = 3 * Tinv + Tgate
Tcd(传播延时):T4 + I6 = Tinv + Tgate
Thold = 0
(2). 有比电路 —— 降低稳定性,减低时钟负载
缺点:存在反向传导,当T2导通的时候,有反向电流
4. 时钟偏差 Clock Skew
因为反相器的存在,所以CLK和非CLK会有时钟偏差
采用两相不重叠时钟
2. 动态锁存器和寄存器
1.动态传输门边沿触发寄存器
静态的两个反相器来进行双稳态的缺点是比较复杂,当频率较高的时候,可以不需要让数据保存这么久——电荷暂存在寄生电容
可以使用8个晶体管或用NMOS也就是6个晶体管。
Tsu: T1的延时
Thold = 0
Tc-q:I1 + T2 + I3 = 2 * Tinv + Tgate
时钟重叠问题的解决
对于(0,0)重叠:T1、T2的PMOS导通,导致在clk的下降沿就会出现Q的变化。
解决方法:保证D输入和节点B直接有足够的延时,以使主级采样的新数据不会传到从级
对于(1,1)重叠:T1、T2的NMOS导通。
解决方法:保证一个Thold时间。
得到条件如下
如果想增加稳定性,可以加一个小的反相器
2. C2MOS——一种对时钟偏差不敏感的方法
当(0,0)的时候,M3关断,X只能是0到1,但是如果到1了,M6就断了。所以Q的数据始终不会变。
当(1,1)的时候,X只能从1到0,如果为0,M7会断,Q也不会变
C2MOS还有双边沿触发的一个设计,可以不需要那么高频率
3.真单相钟控寄存器(TSPCR)
本方法只用一个时钟,避免了时钟重合的问题,还可以嵌入逻辑
左边为正锁存器、右边为负锁存器,将两者串联即可得到寄存器
缺点是增加了晶体管的实现
嵌入逻辑
4. 脉冲触发器
生成毛刺来表示脉冲
3. 流水线
在每个环节直接插入寄存器
可以使用锁存器代替寄存器来设计流水线。
但当有时钟重叠的时候,例如(1,1),F的值刚送到C2,新进来的值也有可能到C2,会有竞争。
改进:用一个时钟——C2MOS
4. 非双稳时序电路 —— 施密特触发器
对于0->1和1->0,有不同的阈值Vm+和Vm-
Vin = 0, Vout=0的时候,相当于M3关断,那么PMOS/NMOS = (M2 + M4)/M1,阈值增加。
当Vin = 0 -> 1的时候,阈值为Vm+
当变为1之后,M4关断,PMOS/NMOS = M2/(M1 + M3),阈值降低。