自适应同步器的FPGA实现- Cryinrain的日志- 网易博客

自适应同步器的FPGA实现

2010-04-22 22:23:33 阅读14 评论0 字号:

  摘 要: 提出了一种采用FPGA实现自适应同步器的设计。该同步器利用采样时钟与输入数据的周期特性,预测时钟与数据的相位关系,自适应地选择时钟上升沿或下降沿锁存,使数据变化避开时钟沿的亚稳态窗,降低出现亚稳态的概率。该同步器设计选用Xilinx公司的FPGA,应用Synplify综合工具和ISE提供的约束功能,仅用16个SLICE资源。
  关键词: 自适应同步器 亚稳态 FPGA


  在许多高速数据采集系统中,数据正确锁存是设计者必须要面对的问题。特别是在内部时钟与外部时钟采用同一个时钟源的基于FPGA的高速数据采集系统中,由于走线延时、器件延时、FPGA输入管脚延时,导致FPGA输入数据与FPGA内部时钟的相对相位关系不确定;在时钟频率可变的情况下,相对相位关系还会随频率变化。在FPGA内部一般采用D触发器实现对输入数据的采样。为了避免亚稳态[3],D触发器要求输入数据相对时钟沿满足一定的建立、保持时间,即输入数据与FPGA内部时钟要满足一定的相位关系。由于输入数据与采样时钟相对相位的不确定性,就有可能不满足FPGA内部D触发器的建立、保持时间,出现亚稳态。针对上述情况,本文给出在FPGA中可以自适应地选择时钟上升沿或下降沿采样的自适应同步器电路设计。该电路能够检测锁存时钟上升沿与输入数据跳变的相位关系,由检测结果选择上升沿采样或下降沿采样,使数据变化避开时钟沿的亚稳态窗[1],降低出现亚稳态的概率。
1 某雷达数据采集系统简介
  图1所示为某雷达系统数据采集原理图,该雷达系统有两种带宽,要求两种采样频率,采样时钟由FPGA产生。设计采用了ECL输出电平标准的ADC,FPGA输入输出采用LVTTL标准。因此,FPGA输出时钟以及ADC数据送入FPGA均需要采用电平转换芯片。这样,FPGA输出时钟的上升沿到相应FPGA输入管脚上升沿之间(图1中C点到D点)有8~9ns的延时。相同的延时,不同的采样频率,输入数据与采样时钟的相对相位不同;而且由于FPGA内部布线延时的不确定性,采样时钟与输入数据的相对相位会随着每次重新布局布线而改变,这两种情况都可能导致不满足D触发器的建立、保持时间,导致采样失效。


  如图2所示,在FPGA内部若采用上升沿锁存数据,对于115MHz采样频率可以保证正确采样,对于85MHz的采样频率,有可能出现采样失效;反之,若采用下降沿锁存数据,115MHz的采样频率可能出现采样失效。
  解决上述问题的难点在于预测输入数据与采样时钟的相位关系,从而选择合适的采样时钟沿。采用图1所示的采样方案,经常出现某一种采样频率采样失效的情况,如115MHz采样频率采样正常,而85MHz采样频率采样失效。自适应同步器可以预测采样时钟与输入数据的相位关系,自适应地选择上升沿或下降沿采样,降低出现亚稳态的概率。
2 自适应同步器原理
  自适应同步器能够预测采样时钟上升沿与输入数据的相位关系。如果相位关系不能满足D触发器的建立、保持时间,则自适应同步器能自适应地对数据或者时钟作延时调整,直到满足建立、保持时间。
  根据同步器延时调整对象不同,同步器可以分为时钟延时同步器和数据延时同步器。下面给出两种同步器的实现原理。
2.1 时钟延时同步器
  图3所示为时钟延时同步器,冲突检测电路检测输入数据与时钟沿的相位关系,根据检测结果由状态机自适应选择时钟是否延时。图3中时钟延时单元可实现时间为T的延时,延时单元若为一非门,该电路就是一个简单的时钟上升沿采样或者下降沿采样的自适应选择电路。

自适应同步器的FPGA实现 - Cryinrain - 海纳百川,有容乃大; 壁立千仞,无欲则刚


  该电路具有相对简单、容易实现的特点。但是由于时钟延时只有两种选择,不可能实现相位的xx匹配,很难适应一些超高速电路的需求。该电路一般选取数据总线中的某一位做相位匹配,因此要求数据总线上各位数据延时尽可能相等。
2.2 数据延时同步器
  图4所示电路为数据延时同步器,输入数据经过若干级延时单元的延时,冲突检测电路检测时钟上升沿与各级延时数据的相位关系,由状态机选择较为理想的延时数据。
  数据延时同步器可以实现对数据的xx延时,实现对超高速数据或DDR数据的锁存。但是,由于大量延时单元的使用,增加了FPGA设计的复杂度,实现较为困难。


3 自适应同步器在采样系统中的应用
  图5所示电路为自适应同步器在图1所示的某雷达采样系统中的应用。图5中采样时钟、D触发器组与图1中相同,只是图5中D触发器组的时钟改为同步时钟,BUFG为FPGA内部的全局时钟缓冲。自适应同步器检测同步时钟与数据{zd1}位data[0]的相对相位,自适应地选择采样时钟,达到同步输入数据的目的。由于数据总线只选取其中一位data[0],因此要求总线上各位数据延时尽可能相等。

自适应同步器的FPGA实现 - Cryinrain - 海纳百川,有容乃大; 壁立千仞,无欲则刚


4 自适应同步器的FPGA实现
  数据延时同步器实现较为复杂,尤其对于位数较多的数据总线,需要占用很多资源,状态机也较复杂。但其实现原理与时钟延时同步器基本相同,本文只给出时钟延时同步器的实现。图6所示电路为自适应同步器,其中del为延时单元,延时时间计为T_del;me_p为data上升沿与时钟上升沿的冲突检测模块,me_n为data下降沿与时钟上升沿的冲突检测模块;fsm为有限状态机。当data跳变发生在时钟上升沿[-T_del,T_del]时间之内时,电路输出sel有效。
4.1 延时单元的FPGA实现
  图7为延时单元电路,采用FPGA内部的LUT4作延时。由于FPGA内部布线延时与LUT4延时相比不可忽略,因此需要对LUT4作相对布局约束,必要时还要作布线约束。

 

自适应同步器的FPGA实现 - Cryinrain - 海纳百川,有容乃大; 壁立千仞,无欲则刚


4.2 突检测单元me_p,me_n的实现
  图8为冲突检测单元me_p的原理图[2]。该电路可以实现两路输入信号上升沿的相位检测,如果输入信号r1上升沿较r2的上升沿提前,则g1输出为‘1’,g2为‘0’;否则g1输出为‘0’,g2为‘1’。在FPGA实现时,采用基于四输入查找表(LUT4)的设计,对于布局布线要尽可能保持对称性,需要加入布局约束、甚至布线约束。图9为经Synplify综合后的原理图。


  冲突检测单元me_n可以实现输入信号r1下降沿与输入信号r2上升沿的相位检测,原理同me_p。对于me_n的实现,只要在配置FPGA查找表(LUT)时,将图9中I0单元(LUT4_7FFF)改为“LUT4_DFFF”即可。
4.3 状态机的实现
  图10为自适应同步器状态机,输入为conflict,输出为sel。状态机共8个状态,状态为S0、S1、S2、S3时,输出为‘0’,选择图(5)所示‘sam_clk’;否则输出为‘1’,选择‘sam_clk’的反向时钟‘~sam_clk’;中间态S0、S1、S2以及S4、S5、S6可以有效防止状态机振荡。图10中′x′表示任意状态。

  上述自适应同步器已经过图1所示的雷达采样系统的验证。采样频率在20MHz到140MHz范围内变化时,未出现采样失效。
参考文献

[1] FOLEY C,Characterizing metastability proc.2nd IEEE Symp.Adv.Res.Asynchronous circuits and systems,1996.
[2] SEMIAT Y,GINOSAR R.Timing measurements of synchronization circuits,Proc.9th IEEE Int.Symp.on  asynchronous circuits and systems(ASYNC′03),2003.
[3] DALLY W J,POULTON J W.Digital systems engineering.Cambridge University Press,1998.
[4] BAETONIU C,YEOH T Y.Dynamic phase alignment using asynchronous data capture XAPP697 (v1.2).January 7,2005.www.xilinx.com.
[5] SAWYER N.Data to clock phase alignment  XAPP225(v1.1).April 4,2002.www.xilinx.com.

<#--{zx1}日志--> <#--推荐日志--> <#--引用记录--> <#--相关日志--> <#--推荐日志--> <#--推荐阅读--> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构-->
郑重声明:资讯 【自适应同步器的FPGA实现- Cryinrain的日志- 网易博客】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——