某年某月某日
我在知乎看到了多bit信号跨时钟的问题,于是整理了一下自己对于跨时钟域信号的处理方法。
1,fifo
数据的话,直接用fifo
2,使用赛灵思原语XPM(Xilinx Parameterized Macros)
打开vivado — tools — language_templates,里面直接搜索XPM,相关的原语里会注释相应的用法和参数配置,对于不同场景的跨时钟,有不同的原语。
同步复位,XPM_CDC_SYNC_RESET
异步复位,XPM_CDC_ASYNC_RESET
脉冲信号,XPM_CDC_PULSE
单bit信号(电平信号),XPM_CDC_SINGLE
单bit信号数组,xpm_cdc_array_single
(这个用得较多,官方说数组的每1bit需不相关,即可以把多个不相关的单bit信号拼起来,用一个原语,甚至可以是上百bit位宽。
除了不相关的单bit信号,同一个多bit信号我也经常使用此原语,这种信号一般是跨时钟域的参数,在下发后保持不变,这样有助于时序收敛。)
格雷码同步器,利用了格雷码单次只能跳变1位的特性,要求输入的数据是累加1或者累减1的数据,本质上是单比特跨时钟域处理,xpm_cdc_gray
握手机制的跨时钟域总线数据同步,XPM_CDC_HANDSHAKE
3,只要是正确处理了跨时钟域的问题,也可以不用xpm,直接使用set_false,但xpm是赛灵思官方认可的跨时钟处理,处理后不会有时序问题出现在时序报告中。
免责声明:文章内容来自互联网,本站不对其真实性负责,也不承担任何法律责任,如有侵权等情况,请与本站联系删除。
转载请注明出处:关于跨时钟域信号的处理方法-跨时钟域的处理方式 https://www.yhzz.com.cn/a/7036.html