FPGA基础之亚稳态分析及应对策略

亚稳态分析

在进行异步信号采集的过程中,有时候输入的数据是正常的,但是我们采集的时候总是输出的信号。通过使用modulesim等仿真软件进行逻辑仿真查看,又发现信号采集是正常的,这个时候,我们就应该来思考为什么会有错误的数据,这也是本文要分析的一个问题,亚稳态的分析。
一般来说,我们进行信号采集都是在时钟信号的上升沿进行判定,此时我们要求采集的信号应该是保持稳定的,不会震荡的信号,如图:
在这里插入图片描述
在上图中,异步信号的变化总是在上升沿的信号采集之前,在时钟信号的上升沿,信号总是保持稳定,此时,输入的信号是正常的,但是在经过1个寄存器的输出之后,在寄存器的q端,则会产生一定的震荡,如图:
在这里插入图片描述
上图中,时钟信号上升沿采集异步信号采集后,第一个reg信号的输出总会有一些震荡,这个震荡的周期根据各厂家对FPGA的工艺决定。性能较好的FPGA,其震荡的时间较短,可以快速稳定。因此,在进行高速运算时,假设在下一个时钟上升沿到来时,输出仍处于震荡状态,采用此时的数据进行运算,势必会发生错误,因此,在硬件上,限制了一个FPGA的工作频率。
在进行一个reg的输出后,输入第二个reg型变量,此时两个reg信号之间的传输属于同步信号传输,第二个reg的输出将会很平缓,少有震荡,根据各厂家的FPGA性能介绍,进行异步信号的采集时,第一个reg输出的信号有较大的情况发生震荡,第二个reg输出的信号则只有很小的概率发生震荡,切震荡时间极短,能够很快稳定。两个reg型级联之后的输出信号如下:
在这里插入图片描述
在上图中,异步信号data_in进入clk的时钟域,信号从高变低,此时reg1信号的q端输出有震荡现象,reg2的q端输出基本稳定,此时,采用reg2的q端和d端进行信号边沿的采样,基本能够正确抓取data_in信号的边沿数据,只是相比于输入信号data_in,采集的边沿信号延迟了两个时钟,但都能正确采集,此时,避免了异步信号的亚稳态信号采集。
至此,异步信号data_in在经过两个reg缓冲之后,输出了在时钟域中的同步信号。因此,对亚稳态的数据的处理,最少需要进行两个D触发器的缓冲,才能避开亚稳态的情况,正常输出采集到的信号和信号边缘。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值