标签:防止 over 示意图 晶体管 rac ilo 实现 采样 性能
Moore状态机:输出仅仅与当前状态有关;
Mealy状态机: 输出同输入和当前状态均有关。
双稳态器件是存储器件的基本模块,双稳器件的的一种电路结构是:交叉耦合反相器 结构。
双稳态器件存在两种状态:稳定态和亚稳态。
双稳态器件一般都有两种存储机理:
latch的实现方式可以是Mux构成的:
基于传输门实现的Mux的latch:
优点:
基于传输管Mux的Latch:
基于三态缓冲器的Latch:
通常是主-从结构, 由一个正电平灵敏Latch和一个负电平灵敏Latch 构成( 主从Latch 对)
输出状态在效果上表现为在时钟边沿处发生变化(正边沿处或负边沿处),确保整个寄存器可能的反馈路径被切断,防止由于反馈造成的信号“竞争”问题。
时序参数:
Register的时序参数:
Latch的时序参数:
latch的hold时间实际上是半个周期多,如果数据在时钟正半个周期发生变化,输出也将变化。跟register不同的是,latch还有d-q的概念,即数据在透明期间改变到输出响应的时间。
两者的示意图也由差别:
latch的clk没有三角,有三角的代表register。
一般,两个电平灵敏的latch构成主从(Master-Slave)边沿触发寄存器:
高电平时主latch保持,Qm输出不变,Q等于时钟上升沿前的输入D值。效果相当于正沿触发。因此,在时钟上升沿时刻,如果数据D端发生改变,寄存器中仍然存的是D改变之前的值。
例如如下verilog代码使用非阻塞赋值语句:
always @(posedge clk or negedge rst_n) begin
if(!rst_n) begin
b <=0;
c <=0;
d <=0;
end
else begin
b <=in;
c <=b;
d <=c;
end
end
生成的电路图以及仿真波形如下:
在代码中,b,c,d信号使用非阻塞语句赋值,因为非阻塞语句的特性,在编译器中实际上这几个赋值的表达式会全部依次存入时间队列中,当当前仿真时间内所有活动事件结束后同步执行这些语句,形成了非阻塞的效果。
查看c和b的信号可以发现,在b信号发生跳变的时钟上升沿,c寄存器的主latch开始保持,而从latch的输出仍然是上升沿之前b寄存器的q端值0,因此在当前上升沿结束后,c寄存器的输出仍然是0.
因此时序逻辑中常常是在一个上升沿更新数据,下一个上升沿采样刚更新的数据。
回到正题,由传输门实现的正负电平灵敏latch也可以构成主从边沿触发寄存器:
但是这种结构的缺点在于:时钟负载大,需要8个时钟晶体管。
--用强制写入代替Mux
通过两个交叉耦合的反相器实现数据的锁存。前提是T1以及其源驱动必须比\(I_2\)强,否则无法打断反馈。
优点:时钟晶体管数目从8->4
缺点:
由于时钟的反向信号与原始时钟之间通常存在一个overlap(组合逻辑延迟),因此进入两级latch的时钟会有交叠的区域,从而导致触发器D-Q的直接通路,形成竞争(race):
此外,节点A会同时被D和B驱动,导致不确定态。
解决办法:两相不交迭时钟
由交叉的NOR或NAND门构成。
时钟控制的SR触发器:
CMOS静态触发器:
缺点:
解决办法:增加一个弱反馈的反相器
保持时间hold = 0
延迟时间:\(T_{c-q} = I_1+T_2+I_2\)
时钟重叠的影响:
对时钟交迭不敏感,无论是0-0还是1-1交迭,输出都是保持。
但是,在交迭期间还是对输入D有一定的要求。当0-0交迭时,主latch可以接受D从1到0的变化,X可以从0变为1。
在高频下为了满足上述时钟的要求,应该在寄存器单元内部对clk反相,而非使用全局反相时钟。
标签:防止 over 示意图 晶体管 rac ilo 实现 采样 性能
原文地址:https://www.cnblogs.com/lyc-seu/p/12359543.html