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
    +关注

    关注

    1655

    文章

    22283

    浏览量

    630277
  • 时钟域
    +关注

    关注

    0

    文章

    53

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

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

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

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

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

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

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

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

    上海2025年7月21日 /美通社/ -- 本文围绕时间同步技术展开,作为智能汽车 "感知-决策-执行 -交互" 全链路的时间基准,文章介绍了 PTP、gPTP、CAN 等主流同步技术及特点
    的头像 发表于 07-22 09:17 405次阅读
    黑芝麻智能<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 1737次阅读
    比亚迪 · 超级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 1280次阅读
    <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>大全

    算力筑基!揭秘DeepSeek爆火的“心跳密码”——时钟同步

    当《哪吒2》登顶全球动画票房第一,DeepSeek也正在全球科技圈铸就新神话!作为国内时钟同步领域领衔者,赛思将以DeepSeek为例,从专业角度揭秘AI背后的“心跳密码”——时钟同步。
    的头像 发表于 03-03 13:59 838次阅读
    算力筑基!<b class='flag-5'>揭秘</b>DeepSeek爆火的“心跳密码”——<b class='flag-5'>时钟</b>同步

    基于FPGA的数字时钟设计

    ,大家可以自己做拓展设计再使用一个按键控制数字时钟的,然后用第个按键来控制数字时钟的运行。采取"Top to down"设计思想,分模块设计,由于本次设计比较简单,这里就没有设计总设计框架图,上面也大致描述了设计思路,给大家截
    的头像 发表于 01-21 10:29 1201次阅读
    基于<b class='flag-5'>FPGA</b>的数字<b class='flag-5'>时钟</b>设计

    探索对抗训练的概率分布偏差:DPA双概率对齐的通用自适的目标检测方法

    检测) 目标检测作为计算机视觉领域的核心任务,在闭集场景中已经取得了显著的进展。然而,现有的方法通常假设类别集合是固定的,并依赖于大量的标注数据,这导致它们在处理数据时,特别是在源
    的头像 发表于 01-15 13:45 1173次阅读
    探索对抗训练的概率分布偏差:DPA双概率对齐的通用<b class='flag-5'>域</b>自适的目标检测<b class='flag-5'>方法</b>

    FPGA频率测量的三种方法

    1、FPGA频率测量? 频率测量在电子设计和测量领域中经常用到,因此对频率测量方法的研究在实际工程应用中具有重要意义。 通常的频率测量方法种:直接测量法,间接测量法,等精度测量法。
    的头像 发表于 01-09 09:37 1168次阅读
    <b class='flag-5'>FPGA</b>频率测量的<b class='flag-5'>三种方法</b>

    TSP研究:车内网联服务向融合、全场景融合、舱驾融合方向拓展

    的数据采集与供应,进而为车主提供更加多样化服务。其服务内容涵盖导航服务、社交服务、娱乐服务、远程保养服务、安全服务等。 来源:公开资料 随着融合、舱驾融合等趋势的演进,TSP供应商也在悄然进步,从纯车内网联服务应用向
    的头像 发表于 01-06 09:40 2083次阅读
    TSP研究:车内网联服务向<b class='flag-5'>跨</b><b class='flag-5'>域</b>融合、全场景融合、舱驾融合方向拓展

    请问ADC32xx的时钟FPGA直接输出吗?

    大家好,我的ADC32XX 采样率为125M,将转换后的数据发送给FPGA,请问ADC32xx的时钟FPGA直接输出吗?FPGA IO口是3.3V的,如果是这样的话是不是得电平转换
    发表于 01-02 08:30

    混合示波器的原理和应用

    与教育:在科研和教育领域,混合示波器也是重要的实验工具。它可以帮助研究人员和学生深入了解电子信号的特性和分析方法,促进电子技术的发展和创新。 、实例说明以泰克公司推出的MDO4000混合
    发表于 12-27 15:54

    如果用FPGA采集AD1672,如何保障FPGA时钟同1672时钟一致?

    第一次用这种AD芯片,买了个开发板,发现,开发板母板上没有晶振。请教几个问题。 1。母板上用的时钟是SCLK作为源时钟吗? 2、如果用FPGA采集AD1672,如何保障FPGA
    发表于 12-24 06:17