FPGA-亚稳态

亚稳态生产原理时序图

在这里插入图片描述
在这里插入图片描述

消除亚稳态

在这里插入图片描述
单比特信号从慢速时钟域同步到快速时钟域需要使用打两拍的方式消除亚稳态。第一级寄存器产生亚稳态并经过自身后可以稳定输出的概率为 70%~80%左右,第二级寄存器可以稳定输出的概率为 99%左右,后面再多加寄存器的级数改善效果就不明显了,所以数据进来后一般选择打两拍即可。另外单比特信号从快速时钟域同步到慢速时钟域还仅仅使用打两拍的方式会漏采数据,所以往往使用脉冲同步法或的握手信号法;而多比特信号跨时钟域需要进行格雷码编码(多比特顺序数才可以)后才能进行打两拍的处理,或者通过使用 FIFO、RAM 来处理数据与时钟同步的问题。亚稳态振荡时间 Tmet 关系到后级寄存器的采集稳定问题,Tmet 影响因素包括:器件的生产工艺、温度、环境以及寄存器采集到亚稳态里稳定态的时刻等。甚至某些特定条件,如干扰、辐射等都会造成 Tmet 增长。

电路模型

在这里插入图片描述

这里按键的输入信号 key_in 相对于 FPGA 内部信号来说是一个异步信号(key_in 的状态不依赖于时钟 Clk),如不进行处理直接将其输入使用,容易出现时序违例导致亚稳态。因此这里就需要先将信号同步到 FPGA 的时钟域内才可以供后续模块使用,常见的同步方法即使用两级触发器,也就是使用触发器对信号打两拍的方式进行与系统时钟进行同步,参考电路即如上图所示。其中key_in 为按键输入,key_in_sb 为同步后的信号。

verilog 语言描述

reg key_in_a,key_in_b;//声明同步寄存器
 always@(posedge Clk or negedge Rst_n)
 if(!Rst_n)begin
 key_in_a <= 1'b0;//第一个寄存器
 key_in_sb <= 1'b0;//第二个寄存器
 end
 else begin
 key_in_a <= key_in;
 key_in_b <= key_in_a;
 end

在一些高速设计中,也有使用三级触发器进行单 Bit 信号同步的设计,此方法只是为了提高平均故障时间(Mean Time Between Failure,MTBF),其电路为在两级触发器后再接一级触发器。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谢谢~谢先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值