VERILOG | 组合逻辑的Glitch与时序逻辑的亚稳态

https://www.cnblogs.com/-9-8/p/5409862.html

竞争(Race):一个门的输入有两个及以上的变量发生变化时,由于各个输入的组合路径的延时不同,使得在门级输入的状态改变非同时。

冒险或险象(Hazard):竞争的结果,如毛刺Glitch。

相邻信号间的串扰也可能产生毛刺Glitch。

组合逻辑的冒险是过渡性的,它不会使得稳态值偏离正常值。根据严格的metal delay和gate delay可以计算出Glitch的出现时间和宽度。

组合逻辑很容易带来毛刺,当信号作用在FF的reset,clear,clock,gate端时,会造成严重的后果。

措施:使用Gray编码,保证一个时刻只有一个bit发生变化;

         采用寄存器采样;(将异步电路转换为同步电路);

         改变电路结构,加入冗余的电路来消除险象;如(加入delay cell进行滤波,再相与输出)

         后端加入滤波电容;

寄存器的输入端对毛刺并不敏感,只有当毛刺出现在时钟沿并且影响到数据的建立时间和保持时间,才会导致寄存器输出出错。

glitch的危害,在组合逻辑中大面积传播。

(由于毛刺一般时间很短,多为皮秒级,发生错误的机会不大)

 

在clock switch中如何保证Glitch-Free

由于select信号与clock0和clock1可能完全无关,clock0与clock1也可能完全无关,所以在下图的电路中很容易出现Glitch

 

一种Glitch-free的设计电路:(必须是加入clock,之后再进行Latch互锁)

加入两个negative_edge的FF来相互互锁,在FF0和FF1的下降沿都还没到来,select已经改变时,FF输出信号与select信号相与

必然都为0,在第一个FF触发后,FF0或FF1中的某一个工作一拍。

1)由两级FF,且后一级是negative FF,保证拉长的clock段是clock=0的段,同时最终切换的clock一定是一个完整的clock 高电平部分。

2)由互锁,保证只有在当前clock,已经接受到enable之后,另一个clock才能开始准备切换,保证当前clock,有完整沿。

3)一个上升沿,一个下降沿,保证切换时间最小。

总之,正确的切换到另一clock的时间会被拉长,拉长的部分是低电平。

 

在clock0和clock1完全异步的情况下,做两级寄存器同步处理。

亚稳态:在时序逻辑不满足setup/hold/revovery/removal时。

触发器输出端从一个不确定的状态到一个随机值的过程,可能会经过震荡,这段时间叫做决断时间(resolution time)

两个异步信号之间出现亚稳态的概率由MTBF(Mean Time Between Failures)来表示,一级的register以年为单位。二级的register以万年为单位。

亚稳态造成的危害:

1)时序逻辑存在一个时间tMET来保证亚稳态不能传播到下一级的寄存器。

2)在不同的寄存器load中,造成值不同。原因是不同寄存器的MTBF可能不同。

怎么处理亚稳态:

1)通过同步寄存器链,来进行同步。不能同步频率很高的信号(输入保持至少三个时钟,来保证第二级寄存器能输出正确的值),                                

且可能带来一个clock的错的值,需要依靠协议来保证电路的正确性。

2)异步FIFO

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值