在异步跨时钟域场合,对于控制信号(通常位宽为1-bit)常使用双触发器方法完成跨时钟域操作,如下图所示。此时对于图中标记的1号和2号触发器需要使用综合属性ASYNC_REG,有两个目的:
-表明1号触发器接收的数据是来自于与接收时钟异步的时钟域
-表明2号触发器是同步链路上的触发器
从而,保证1号、2号触发器在布局时会被放置在同一个SLICE内,减少线延迟对时序的影响。
实际工程中,1号和2号触发器往往被设计者忘记标记ASYNC_REG,一个好的方法是使用Xilinx提供的XPM_CDC模板,相应的代码如下图所示。可以看到这里只需要实例化xpm_cdc_single即可,无需标记ASYNC_REG(该属性已被标记)。上图显示的电路图即为该代码综合后的结果。
打开综合后的设计,执行如下操作可以验证ASYNC_REG已被标记。
结论
-ASYNC_REG用于单bit采用双或多触发器实现异步跨时钟域的场合,此时所有用于同步的触发器都要标记ASYNC_REG。
-可使用Xilinx提供的XPM_CDC模板避免遗忘标记ASYNC_REG
附:XPM_CDC的位置
上期内容:
Vivado OOC综合方式
下期内容:
Vivado综合属性:MAX_FANOUT