前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >异步跨时钟域电路怎么设计

异步跨时钟域电路怎么设计

作者头像
Lauren的FPGA
发布2020-05-15 09:52:50
1.3K0
发布2020-05-15 09:52:50
举报
文章被收录于专栏:Lauren的FPGA

同步跨时钟域电路,由于时钟之间有明确的相位关系,可通过时序约束明确建立时间需求,保证电路正常工作。异步跨时钟域电路,由于发送时钟与接收时钟之间没有明确的相位关系,因此,需要通过电路本身保证数据被稳定地传输。Xilinx提供了模板可减少设计开发的难度。如下图所示。分两种情形,若该信号为复位信号,则根据复位信号是同步复位还是异步复位,分别采用XPM_CDC_SYNC_RST或XPM_CDC_ASYNC_RST;若该信号是脉冲信号,则采用XPM_CDC_PULSE;若不是脉冲信号,则采用XPM_CDC_SINGLE。

(图片来源:ug949(v2018.3) figure 3-63)

下图显示了异步复位信号的跨时钟域模板,只需要把第73行至第87行复制到相应文件中即可。注意采用VHDL时,需要添加第66到第67行内容。

下图显示了非脉冲信号的跨时钟域模板,只需要把第78行至第90行复制到相应文件中即可。注意采用VHDL时,需要添加第71到第72行内容。

多bit异步跨时钟域电路

对于多bit异步跨时钟域电路,第一步,要明确数据是否已经处于稳定状态,不会再翻转。例如,clka驱动的4个触发器,其输入端是固定数值(或0或1),其输出端连接到clkb驱动的4个触发器。那么此时并不需要跨时钟域电路。又或者,clka驱动的4个触发器,其输入端由外部CPU提供,只在上电时给数据,之后保持不变,那么此时也不需要跨时钟域电路。第二步,数据是否每个时钟周期都要被传输,如果是,就需要用到XPM_FIFO_ASYNC;如果不是,就需要明确数据是否需要缓存,如果需要,仍需用XPM_FIFO_ASYNS,否则就转到第三步,检查数据是否是个计数器,如果是,就需要用到XPM_CDC_GRAY,如果不是,就跳转到最后一步,明确所有bit是否要求在同一时钟周期到达。如果是,需要用到XPM_CDC_HANDSHAKE;否则就用XPM_CDC_ARRAY_SINGLE。整个流程如下图所示。

(图片来源:ug949(v2018.3) figure 3-64)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Lauren的FPGA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档