0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

揭秘FPGA跨时钟域处理的三大方法

454398 来源:alpha007 作者:alpha007 2022-12-05 16:41 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

时钟域处理是 FPGA 设计中经常遇到的问题,而如何处理好跨时钟域间的数据,可以说是每个 FPGA 初学者的必修课。如果是还在校生,跨时钟域处理也是面试中经常常被问到的一个问题。

这里主要介绍三种跨时钟域处理的方法,这三种方法可以说是 FPGA 界最常用也最实用的方法,这三种方法包含了单 bit 和多 bit 数据的跨时钟域处理,学会这三招之后,对于 FPGA 相关的跨时钟域数据处理便可以手到擒来。

这里介绍的三种方法跨时钟域处理方法如下:

打两拍;

异步双口 RAM

格雷码转换。

01

方法一:打两拍

大家很清楚,处理跨时钟域的数据有单 bit 和多 bit 之分,而打两拍的方式常见于处理单 bit 数据的跨时钟域问题。

打两拍的方式,其实说白了,就是定义两级寄存器,对输入的数据进行延拍。

应该很多人都会问,为什么是打两拍呢,打一拍、打三拍行不行呢?

先简单说下两级寄存器的原理:两级寄存是一级寄存的平方,两级并不能完全消除亚稳态危害,但是提高了可靠性减少其发生概率。总的来讲,就是一级概率很大,三级改善不大。

data 是时钟域 1 的数据,需要传到时钟域 2(clk)进行处理,寄存器 1 和寄存器 2 使用的时钟都为 clk。假设在 clk 的上升沿正好采到 data 的跳变沿(从 0 变 1 的上升沿,实际上的数据跳变不可能是瞬时的,所以有短暂的跳变时间),那这时作为寄存器 1 的输入到底应该是 0 还是 1 呢?这是一个不确定的问题。所以 Q1 的值也不能确定,但至少可以保证,在 clk 的下一个上升沿,Q1 基本可以满足第二级寄存器的保持时间和建立时间要求,出现亚稳态的概率得到了很大的改善。

如果再加上第三级寄存器,由于第二级寄存器对于亚稳态的处理已经起到了很大的改善作用,第三级寄存器在很大程度上可以说只是对于第二级寄存器的延拍,所以意义是不大的。

02

方法二:异步双口 RAM

处理多 bit 数据的跨时钟域,一般采用异步双口 RAM。假设我们现在有一个信号采集平台,ADC 芯片提供源同步时钟 60MHz,ADC 芯片输出的数据在 60MHz 的时钟上升沿变化,而 FPGA 内部需要使用 100MHz 的时钟来处理 ADC 采集到的数据(多 bit)。在这种类似的场景中,我们便可以使用异步双口 RAM 来做跨时钟域处理。

先利用 ADC 芯片提供的 60MHz 时钟将 ADC 输出的数据写入异步双口 RAM,然后使用 100MHz 的时钟从 RAM 中读出。对于使用异步双口 RAM 来处理多 bit 数据的跨时钟域,相信大家还是可以理解的。当然,在能使用异步双口 RAM 来处理跨时钟域的场景中,也可以使用异步 FIFO 来达到同样的目的。

03

方法三:格雷码转换

我们依然继续使用介绍第二种方法中用到的 ADC 例子,将 ADC 采样的数据写入 RAM 时,需要产生 RAM 的写地址,但我们读出 RAM 中的数据时,肯定不是一上电就直接读取,而是要等 RAM 中有 ADC 的数据之后才去读 RAM。这就需要 100MHz 的时钟对 RAM 的写地址进行判断,当写地址大于某个值之后再去读取 RAM。

在这个场景中,其实很多人都是使用直接用 100MHz 的时钟与 RAM 的写地址进行打两拍的方式,但 RAM 的写地址属于多 bit,如果单纯只是打两拍,那不一定能确保写地址数据的每一个 bit 在 100MHz 的时钟域变化都是同步的,肯定有一个先后顺序。如果在低速的环境中不一定会出错,在高速的环境下就不一定能保证了。所以更为妥当的一种处理方法就是使用格雷码转换。

对于格雷码,相邻的两个数间只有一个 bit 是不一样的(格雷码,在本文中不作详细介绍),如果先将 RAM 的写地址转为格雷码,然后再将写地址的格雷码进行打两拍,之后再在 RAM 的读时钟域将格雷码恢复成 10 进制。这种处理就相当于对单 bit 数据的跨时钟域处理了。

对于格雷码与十进制互换的代码,仅提供给大家作参考:

代码使用的是函数的形式,方便调用,op 表示编码或者译码,WADDRWIDTH 和 RADDRWIDTH 表示位宽。

审核编辑黄昊宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1664

    文章

    22519

    浏览量

    639772
  • 时钟域
    +关注

    关注

    0

    文章

    53

    浏览量

    10064
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    英诺达ECDC上线RDC复位检查新功能

    英诺达自主研发的静态验证系列产品EnAltius昂屹CDC(ECDC),近日正式上线了复位(Reset Domain Crossing, RDC)检查新功能,其静态验证EDA工具链得以进一步完善,为芯片设计团队提供更严谨、更高效的RTL签核整体解决方案。
    的头像 发表于 04-21 09:34 221次阅读

    为何复位问题是危险的“芯片杀手”

    在追求更高性能、更低功耗的当今芯片设计中,工程师们除了要应对复杂的时钟网络,还面临着一个同样关键却常被忽视的挑战——复位信号的管理,这就是复位(Reset Domain Crossing, 简称
    的头像 发表于 04-13 15:35 239次阅读
    为何<b class='flag-5'>跨</b>复位<b class='flag-5'>域</b>问题是危险的“芯片杀手”

    使用PYTHON进行的平台仿真

    内部的解决方案,而且还允许平台模拟,以从其他程序或编程语言获益,并结合熟悉物理光学特性的VirtualLab Fusion,从而扩展模拟、优化、设计和后处理的选项。 因此,我们正在深入研究
    发表于 04-02 08:21

    浅谈FPGA时钟输入要求

    Virtex-7 FPGA时钟输入主要通过其全局时钟缓冲器(BUFG、BUFH等)和时钟管理模块(MMCM、PLL)来处理。对输入
    的头像 发表于 03-25 15:26 976次阅读

    不止于连接:云翎智能“低轨卫星+AIoT”通信终端如何打通“天地人”数据闭环?

    云翎智能以低轨卫星+AIoT为翼,构建天无缝覆盖、地域智能处理、人精准感知的数据闭环,让全球每一寸土地的数据都能采集无界、传输无阻、
    的头像 发表于 03-16 20:58 627次阅读
    不止于连接:云翎智能“低轨卫星+AIoT”通信终端如何打通“天地人”<b class='flag-5'>三</b><b class='flag-5'>域</b>数据闭环?

    揭秘LMK1D210x:高性能LVDS时钟缓冲器的卓越之选

    揭秘LMK1D210x:高性能LVDS时钟缓冲器的卓越之选 在电子工程领域,时钟缓冲器作为信号处理与传输的关键角色,其性能直接影响着整个系统的稳定性与可靠性。今天,就带大家深入了解TI
    的头像 发表于 02-06 17:20 1814次阅读

    什么是位

    有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。 例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种
    发表于 12-15 08:07

    航盛电子搭载QNX技术的墨子融合平台正式量产

    近日,航盛创新引领行业的单芯片级舱驾融合解决方案--墨子融合平台实现全球量产首发,并将配套国内某头部合资车企。该平台搭载QNX Hypervisor for Safety技术,具备更强的稳定性、灵活性和安全性,实现车规级设计与功能安全、网络信息安全要求,为消费者带来舱
    的头像 发表于 12-04 15:19 635次阅读

    黑芝麻智能武当C1200家族作为计算芯片的核心突破

    本文围绕汽车电子电气架构(EEA)向中央计算演进的技术需求,分析分布式、集中架构的碎片化、间壁垒等痛点,重点阐述武当 C1200 家族作为计算芯片的核心突破:7nm 异构融合架
    的头像 发表于 11-20 16:38 1748次阅读

    基于FPGA的高效内存到串行数据传输模块设计

    本文介绍了一个基于FPGA的内存到串行数据传输模块,该模块设计用来高效地处理存储器中的数据并传输至串行接口。项目中自定义的“datamover_mm2s_fpga_”方案利用异步FIFO结构来解决不同
    的头像 发表于 11-12 14:31 4553次阅读
    基于<b class='flag-5'>FPGA</b>的高效内存到串行数据传输模块设计

    ”图像视频监测装置:为输电线路安全保驾护航

    输电线路“”指的是跨越高速铁路、高速公路和重要输电通道的架空输电线路区段。其中,重要输电通道由若干重要输电线路组成。 “”的监测难点: 1.环境复杂多样:“
    的头像 发表于 10-29 09:39 494次阅读

    E203软核提高CPU时钟频率方法

    本文将分享我们团队提高E203软核主频的办法。 查阅芯来科技官方出版的《手把手教你设计CPU——RISC-V处理器篇》教材,我们发现,原本设计的E203主时钟应该是100MHZ
    发表于 10-29 06:19

    黑芝麻智能时间同步技术:消除多计算单元的时钟信任鸿沟

    上海2025年7月21日 /美通社/ -- 本文围绕时间同步技术展开,作为智能汽车 "感知-决策-执行 -交互" 全链路的时间基准,文章介绍了 PTP、gPTP、CAN 等主流同步技术及特点
    的头像 发表于 07-22 09:17 703次阅读
    黑芝麻智能<b class='flag-5'>跨</b><b class='flag-5'>域</b>时间同步技术:消除多<b class='flag-5'>域</b>计算单元的<b class='flag-5'>时钟</b>信任鸿沟

    比亚迪 · 超级e平台 · 技术方案的全面揭秘 | 第曲: 30000转驱动电机 · 12项核心技术揭秘

    比亚迪 · 超级e平台 · 技术方案的全面揭秘 | 第曲: 30000转驱动电机 · 12项核心技术揭秘
    的头像 发表于 06-08 07:20 2614次阅读
    比亚迪 · 超级e平台 · 技术方案的全面<b class='flag-5'>揭秘</b> | 第<b class='flag-5'>三</b>曲: 30000转驱动电机 · 12项核心技术<b class='flag-5'>揭秘</b>

    异步时钟处理方法大全

    方法只用于慢到快时钟的1bit信号传递。在Xilinx器件中,可以使用(* ASYNC_REG = "TRUE" *)标记,将两个寄存器尽量靠近综合,降低 亚稳态因导线延迟太大而传播到第二个寄存器的可能性。
    的头像 发表于 05-14 15:33 1754次阅读
    <b class='flag-5'>跨</b>异步<b class='flag-5'>时钟</b><b class='flag-5'>域</b><b class='flag-5'>处理</b><b class='flag-5'>方法</b>大全