您的位置 首页 FPGA

FPGA跨时钟域异步时钟规划的几种同步战略

实际的工程中,纯粹单时钟系统设计的情况很少,特别是设计模块与外围芯片的通信中,跨时钟域的情况经常不可避免。如果对跨时钟域带来的亚稳态、采样丢失、潜在逻辑错误等等一系列问题处理不当,将导致系统无法运行。

1 导言

依据FPGA的数字体系规划中大都引荐选用同步时序的规划,也便是单时钟体系。可是实践的工程中,朴实单时钟体系规划的状况很少,特别是规划模块与外围芯片的通信中,跨时钟域的状况常常不可防止。假如对跨时钟域带来的亚稳态、采样丢掉、潜在逻辑过错等等一系列问题处理不妥,将导致体系无法运转。本文总结出了几种同步战略来处理跨时钟域问题。

  2 异步规划中的亚稳态

触发器是FPGA规划中最常用的根本器材。触发器作业过程中存在数据的树立(setup)和坚持(hold)时刻。关于运用上升沿触发的触发器来说,树立时刻便是在时钟上升沿到来之前,触发器数据端数据坚持稳定的最小时刻。而坚持时刻是时钟上升沿到来之后,触发器数据端数据还应该持续坚持稳定的最小时刻。咱们把这段时刻成为setup-hold时刻(如图1所示)。在这个时刻参数内,输入信号在时钟的上升沿是不允许发生改变的。假如输入信号在这段时刻内发生了改变,输出成果将是不可知的,即亚稳态 (Metastability)。
  
一个信号在过渡到另一个时钟域时,假如仅仅用一个触发器将其锁存,那么采样的成果将或许是亚稳态。这也便是信号在跨时钟域时应该留意的问题。如图2所示。
  
信号dat通过一个锁存器的输出数据为a_dat。用时钟b_clk进行采样的时分,假如a_dat正好在b_clk的setup-hold时刻内发生改变,此刻b_ dat就既不是逻辑“1”,也不是逻辑“0”,而是处于中间状况。通过一段时刻之后,有或许回升到高电平,也有或许降低到低电平。输出信号处于中间状况到康复为逻辑“1”或逻辑“0”的这段时刻,咱们称之为亚稳态时刻。

触发器进入亚稳态的时刻能够用参数MTBF(Mean Time Between Failures)来描绘,MTBF即触发器采样失利的时刻距离,标明为:
  
其间fclock标明体系时钟频率,fdata代表异步输入信号的频率,tmet代表不会引起毛病的最长亚稳态时刻,C1和C2分别为与器材特性相关的常数。假如MTBF很大,就以为这个规划在实践作业中是能够正常运转的,不会因为亚稳态导致整个体系的失效。当触发器处于亚稳态,且处于亚稳态的时刻超过了一个时钟周期,这种不确定的状况还会影响到下一级的触发器,终究导致连锁反应,从而使整个体系功用异常。

  3 同步战略

在异步规划中,完全防止亚稳态是不或许的。因而,规划的根本思路应该是:首要尽或许削减呈现亚稳态的或许性,其次是尽或许削减呈现亚稳态并给体系带来损害的或许性。以下是依据实践作业总结出来的几种同步战略。

3.1 双锁存器法

为了防止进入亚稳态,应当使参数MTBF尽或许大。一般选用的办法是双锁存器法,即在一个信号进入另一个时钟域之前,将该信号用两个锁存器接连锁存两次(如图3所示)。理论研究标明这种规划能够将呈现亚稳态的几率降低到一个很小的程度,但这种办法一起带来了对输入信号的一级延时,需要在规划时钟的时分加以留意。
  
关于上面的双锁存器法,假如a_clk的频率比b_clk的频率高,将或许呈现因为dat改变太快,而使b_clk无法采样的问题。即在信号从快时钟域向慢时钟域过渡的时分,假如信号改变太快,慢时钟将或许无法对该信号进行正确的采样,所以在运用双锁存器法的时分,应该使原始信号坚持满足长的时刻,以便另一个时钟域的锁存器能够正确地对其进行采样。

3.2 结绳法

因为双锁存器法在快时钟域向慢时钟域过渡中或许存在采样失效的问题,咱们引入了一种安全的跨时钟域的办法:结绳法。结绳法合适任何时钟域的过渡(clk1,clk2的频率和相位联系能够恣意选定),如图4所示。

图4中的_clk1标明该信号归于clk1时钟域,_clk2的信号标明该信号归于clk2时钟域。在两次src_req_clk1之间被src_vld_clk1结绳(Pluse2Toggle)。将src_vld—clk1用双锁存器同步今后,该信号转换为dst_req_clk2(Toggle2Pluse)。同理,用dst_vld_clk2将dat_req_clk2结绳,dst_vld_clk2标明在clk2时钟域中,src_dat_clk1现已能够进行正确的采样了。最终将dst_vld_clk2转换为dst_ack_clk1(Synchronizer and Toggle2Pluse)。dst_ack_clk标明src_dat_clk1现已被clk2正确采样了,尔后clk1时钟域就能够安全地传输下一个数据了。能够看出,结绳法的关键是将信号结绳今后,使其坚持满足长的时刻,以便另一个时钟能够正确采样。图5描绘了结绳法的具体完成,首要包含3个根本单元:Pluse2Toggle、Synchronizer和Toggle2Pluse。

Pluse2Toggle模块担任将两个脉冲信号结绳,行将单脉冲信号延伸;Synchronizer模块用双锁存器法将得到的信号过渡到另一个时钟域;Toggle2Pluse模块与Pluse2Toggle功用相对,行将延伸的脉冲信号复原为单脉冲,这儿用到了异或门。全体的规划思维便是用Pluse2Toggle将信号延伸,用Synchronizer过渡,再用Toggle2Pluse复原,以确保另一个时钟域能够正确采样,而接收方用相反的流程送回呼应信号。

结绳法能够处理快时钟域向慢时钟域过渡的问题,且适用的规模很广。可是结绳法完成较杂乱,在规划要求较高的场合应该慎用。

  4 结束语

本文首要把FPGA异步时钟规划中发生的问题,原因以及处理问题所选用的同步战略做了具体的剖析。其间双锁存器法比较适用于只要少量信号跨时钟域;结绳法比较适用快时钟域向慢时钟过渡的状况。所以,在实践的使用中,应依据本身规划的特色挑选恰当的同步战略。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/fpga/195540.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部