存储元件类型的区别
时钟的形式:电平型 或 边沿型
保持存储值的方式:静态 或 动态
输出与输入的关系:锁存器(latch) 或 寄存器(register / flip-flop)
多相结构:主从式(master-slave)
存储元件术语
锁存器(Latch):电平敏感;当内部存储由输入设置时是透明的(transparent),也就是说,输出会随着输入立即变化。
寄存器(Register / Flip-flop):边沿触发;不透明(not transparent),也就是说,读取输入和改变输出是两个分开的事件。
时钟术语
时钟边沿(Clock edge):上升沿或下降沿的跳变。
占空比(Duty cycle):在一个时钟周期内,时钟处于有效状态的时间所占的比例。
例如,对于低有效时钟(active-low clock),时钟信号为 0 的时间所占的比例。
时序电路工作的时钟周期 T 必须能容纳电路中任何一级的最长延时。
含义:
理解公式:一个时钟周期必须足够长,这样数据才能从前一级寄存器之前出发,穿过组合逻辑,并在下一级寄存器采样前提前稳定下来。
时序元件的输入数据在时钟边沿之后需要维持足够长的时间,确保不会因为新进入的数据流而过早改变。
含义:
理解公式:新数据到达下一级寄存器所花的最短时间必须大于等于保持时间,也是为了确保保持时间内的数据是可信的
Latches
电平敏感的电路:当时钟为高电平时,输入会传到
在时钟下降沿采样到的输入值,会在时钟为低电平时保持稳定(输入必须在时钟下降沿附近的一段较短时间内稳定以满足建立时间和保持时间的要求),此时处于保持模式(hold mode)。
一个由两类锁存器配合组合逻辑构成的时序设计:
N Latch:负锁存器,
P Latch:正锁存器,
再生特性(The Regenerative Property)
静态存储器用正反馈来建立双稳电路(两个稳定态 0 和 1)
如果过渡区的增益大于 1,那么只有 A 和 B 是稳定工作点。
C 是一个亚稳态工作点(metastable operation point)。
双稳态电路(Bistable Circuits)
两个反相器交叉耦合会形成一个双稳态电路(bistable circuit),也就是具有两个稳定状态的电路。
必须能够改变存储的数值。做法是:通过把 A(或 B)暂时变成不稳定状态,使环路增益增加到大于 1,从而完成状态翻转。
在
触发脉冲的宽度只需要比环路总传播延时稍大一点 (大约等于绕环路一周的总延时,约为两个反相器延时之和)
常用的两种方法:
切断反馈环路,例如 基于多路选择器的锁存器(mux based latch)
压过反馈环路,例如 SRAM 中使用的方法
SR锁存器
S=1, R=0:把 Q 置成 1
S=0, R=1:把 Q 置成 0
S=0, R=0:保持原来的值不变
S=1, R=1:非法/不允许
CMOS工艺如何实现锁存器?
idea:基于 MUX 的锁存器
采用传输门多路开关来实现的正锁存器
只需交换 clk和!clk即可变成 负锁存器
无比逻辑,晶体管尺寸对于实现正确功能并不重要
从功率角度看,时钟驱动的晶体管数目是一个重要指标,锁存器效率不高,对于CLK信号有4个晶体管的负载。
PT : Pass Transistor
特点:仅用NMOS传输管实现多路开关。减小了时钟负载,但传输晶体管输出端会有阈值压降,因此会降低噪声容限和性能。同时也会造成第一个反相器中的静态功耗,因为反相器的最大输入电压为
CMOS工艺如何实现寄存器?
正边沿触发寄存器:负锁存器(主)+ 正锁存器(从)。负边沿相反即可
假设反相器和传输门传播延时分别为
建立时间 —— 建立时间是输入数据 D 在时钟上升沿之前必须有效的时间。这就相当于问:在时钟上升沿之前输入 D 必须稳定多长时间才能使
传播延时 —— 传播延时是
保持时间 —— 在时钟
每个寄存器的时钟负载很重要,因为它直接影响时钟网络的功耗。而传输门寄存器的时钟信号的电容负载很大(每个寄存器 8个晶体管的时钟负载)
如何解决?用交叉耦合反相器替换反馈传输门
代价:稳定性,成为有比电路,设计更加复杂,考虑反向传导
约束:
传输门(
反相器
从级可能影响主级的状态。从级导通时,
Note
必须记住
实际中,产生反相时钟信号的反相器的延时不为 0,产生时钟偏差(clock skew),clk和!clk会产生重叠
竞争条件(Race condition) —— 当 clk 和 !clk 在短时间内同时为高电平时(1-1 重叠,发生在上升沿),会存在一条从 D 到 Q 的直接通路。直观的结果就是负沿触发器输出端的数据也可以在上升沿改变。
未定义状态(Undefined state) —— 当 clk 和 !clk 同时为高电平时,B 和 D 都在驱动 A,导致A处于不确定的状态。
解决方法:伪静态两相边沿触发 触发器
采用两相非重叠时钟 clk1 / clk2,轮流导通
注意在时钟的不重叠时间
两相不重叠时钟 PHI1 和 PHI2的产生电路。
核心:利用门延时和交叉耦合,生成两路互斥且不重叠的时钟信号。
静态时序电路的存储依赖如下概念:一对交叉耦合的反相器形成了一个双稳元件,并因此可以来存储二进制值;只要电源电压加在该电路上,它所保存的值就一直有效。但是在流水线中,本身时钟频率较高,可以采用动态结构。
动态传输门正边沿触发寄存器
clk = 0 ,D被采样,从级处于维持状态(节点浮空),clk 上升时刻,
这一电路的建立时间就是传输门 1 的延时,它相应于节点 A 采样 D 输入所需要的时间。维持时间近似为 0,因为传输门 1 在时钟边沿处关断,因此不受输入进一步变化的影响。传播延时
动态寄存器,存储节点的状态必须周期性刷新(周期性时钟解决了这一问题)
时钟重叠是这个寄存器的重要问题。
在(0-0)重叠(下降沿)期间,
对于(1-1)重叠区也是一样,这时存在一条通过
后一种情况可以通过强加一个维持时间约束来解决,即数据必须在高电平重叠期间稳定(因为本身就是正触发器)。而前一种情况,即(0-0)重叠,可以这样来解决,即保证在 D 输入和节点 B (C2电容处)之间有足够的延时,以使主级采样的新数据不会传送到从级。一般来说,内置单个反相器的延时就足够了。对(0-0)重叠期间的限制条件为
同样,对(1-1)重叠的限制条件为
其工作分为如下两个阶段。
CLK = 0(
CLK = 1 时恰好相反。主级部分处在维持模式(
重要特性:只要时钟边沿的上升和下降时间足够小,具有 CLK 和
在(0-0)重叠情况(下降沿)下,电路简化成图 (a)所示的电路,在这段时间,电路中的两个 PMOS 器件都导通。为了能正确工作,不应当有任何在重叠窗口期间采样的新数据传送到输出 Q,因为数据在正沿触发寄存器的负边沿上不应当有变化。确实,在重叠期间新数据通过串联的 PMOS 器件
两个 NMOS 器件
TSPCR(True Single-Phase Clocked Register)真单相钟控寄存器
注意:电路由两个串联的反相器构成,信号的传播需要在一个上拉之后跟着一个下拉,或反过来亦可。对于正锁存器,CLK=0时下拉网络不工作,信号无法传播。
动态电路。输出节点可能浮空并收到其他信号耦合的影响,应该借助静态反相器隔离 / 设计成伪静态(P229)以提高抗噪声能力
TSPC的额外优点:可以将逻辑功能嵌入锁存器中,显著提高性能
CLK=1,左图:前级逻辑功能+后级反相
用单相时钟 clk 实现的“主从式边沿触发寄存器”
进一步降低TSPC锁存器电路的复杂性(目的:降低时钟负载、减少晶体管数目)
缺点:并不是所有节点的电压都经历全摆幅逻辑,比如说A点(相当于左图中clk作为NMOS上拉,损失一个Vth,右图中clk作为PMOS下拉,也损失了一个Vth),从而降低了对输出管子的驱动能力,使性能变差
一个具体的单相边沿触发寄存器的设计。
当 CLK = 0 时(准备好内部节点 X 和 Y,但输出 Q 不更新)
输入反相器在节点 X 上采样反相的 D 输入。
第二个(动态)反相器处于预充电状态,由 M6 将节点 Y(
第三个反相器处于维持状态,因为 M8 和 M9 均关闭。因此在时钟的低电平阶段,最后一个(静态)反相器输入保持着它原来的值,因而输出 Q 处于稳定状态。
在时钟的上升沿,动态反相器 M4~M6 求值。
如果 X 在上升沿处是高电平,那么节点 Y 放电。
在时钟的高电平阶段第三个反相器 M7~M9 导通,在 Y 节点上的值传送到输出 Q。
注意,在时钟的正电平阶段,如果 D 翻转到高电平,则节点 X 翻转到低电平。因此输入必须保持稳定,直到节点 X 在时钟上升沿之前的值传送到 Y。这即是寄存器的维持时间(注意,维持时间小于一个反相器延时,因为使输入影响节点 X 需要一个反相器的延时时间)。
寄存器的传播延时实际上就是三个反相器的延时,因为节点 X 上的值必须传送到输出 Q。
最后,建立时间是使节点 X 有效的时间,所以这是一个反相器的延时。
流水线,经常用来加速数字处理器的数据通路
当组合逻辑延时时决定系统性能的主导因素时,可以在组合逻辑各模块之间插入寄存器,使得一组输入数据的计算分布在几个时钟周期中,从而改进电路的最小时钟周期
优化前
优化后
采用正、负锁存器来构成流水线电路。
在主从系统的 主锁存器 和 从锁存器 之间插入逻辑
不采用边沿触发寄存器。锁存型系统在实现流水线系统时具有更大的灵活性,且往往提供更好的性能
工作原理:输入数据 In 在 CLK 的下降沿处存放在C1上,并且逻辑块 F 开始计算;逻辑块 F 的计算结果在
当两相时钟不重叠时,流水线系统可以正常工作,一旦重叠,会在前一个输入和当前输入之间有竞争。
使用
该电路一个重要特征:只要锁存器之间的所有逻辑功能块 F (用静态逻辑实现)不是反相的,没有竞争。
非双稳时序电路—— Schmitt Trigger 在直流特性上表现出滞环特性:开关阈值可变且取决于翻转的方向
施密特触发器一个重要特性是:对于一个变化很慢的输入波形,在输出端有一个快速翻转的响应(利用了正反馈)
该电路的基本设计思想:CMOS反相器的开关阈值是由PMOS管和NMOS管之间的导电因子(
假设
反相器一旦切换,反馈环就关断
在由高至低的翻转中也可以观察到类似的情形。在这一情形中,下拉网络最初由并联的
双稳态多谐振荡器 触发器、施密特触发器
单稳态多谐振荡器 单次脉冲电路
无稳态多谐振荡器 振荡器
单稳元件是每当其静止状态受到 一个脉冲或一个翻转事件触发 时,就产生一个宽度确定的脉冲的电路。
只有一个稳定状态,静态。
实现单脉冲电路最常用的方法,采用简单的延时单元(偶数个反相器的级联就可以)来控制脉冲的宽度(宽度就是td)
非稳电路:输出在两个准稳态之间来回震荡
振荡器的主要应用是片上时钟信号发生器
环振是不稳电路的一个简单例子。它由奇数个反相器连成一个环形链构成。由于反相器的数目为奇数,故电路不存在任何稳定的工作点,而是以等于
选择合适的时钟方案会影响电路的功能、速度和功耗
双相设计
优点:稳健,且概念上较简单
缺点:需要产生并布线两路时钟信号
缺点:设计时必须考虑两路时钟信号之间可能存在的偏斜
单相设计
优点:只需要产生并布线一路时钟信号
优点:受大多数自动化设计方法支持
优点:不必担心两路时钟之间的偏斜
缺点:必须保证时钟边沿具有足够陡的斜率