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

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

3天内不再提示

跨时钟域的解决方案

sanyue7758 来源:AriesOpenFPGA 2024-01-08 09:42 次阅读

导言

在很久之前便陆续谈过亚稳态,FIFO,复位的设计。本次亦安做一个简单的总结,从宏观上给大家展示跨时钟域的解决方案。

什么是亚稳态?

对大多数工程师来讲,亚稳态是非常难以追踪的,因为它具有不确定性,在相对规范的设计下,如果仍然发生这个问题,那么可能非常难以复现异常。简单来讲,当触发器不满足建立时间和保持时间要求时,就会导致亚稳态。亚稳态出现时,触发器既不是高逻辑也不是低逻辑,后续电路则可能读取为0或者1(不确定状态),导致电路逻辑做出不符合当前事物逻辑的事情。

对于数字设计人员来讲,只要信号从一个时钟域跨越到另一个时钟域,那么就可能发生亚稳态。我们称为“跨时钟域”即“Clock Domain Crossing”,或CDC

所以今天主要简单了解如何处理CDC这些基础问题。

同步跨时钟域信号

对大多数初学者来讲,当我们遇到CDCs时,有经验的工程师会告诉我们“打两拍”,即让信号通过两个 flip-flops,每个flip-flop都由新时钟域的时钟驱动(如下图)。第一个触发器出现亚稳态的概率很高,但第二个触发器的输出亚稳态的概率就会低得多。当然更多的flip-flops会让亚稳态的概率进一步下降,但一般下降的概率差距不会太大,如何选择取决于设计者自己。但并非多数CDC问题都能用这种简单方法,这种设计适用于旧时钟域比新时钟域慢的多的情况。经典的可配置的代码如下。

f01ed170-ad75-11ee-8b88-92fbcf53809c.png

//Language:Verilog-2001

`resetall
`timescale1ns/1ps
`default_nettypenone

/*
*Synchronizesanasyncronoussignaltoagivenclockbyusingapipelineof
*tworegisters.
*/
modulesync_signal#(
parameterWIDTH=1,//widthoftheinputandoutputsignals
parameterN=2//depthofsynchronizer
)(
inputwireclk,
inputwire[WIDTH-1:0]in,
outputwire[WIDTH-1:0]out
);

reg[WIDTH-1:0]sync_reg[N-1:0];

/*
*Thesynchronizedoutputisthelastregisterinthepipeline.
*/
assignout=sync_reg[N-1];

integerk;

always@(posedgeclk)begin
sync_reg[0]<= in;
    for (k = 1; k < N; k = k + 1) begin
        sync_reg[k] <= sync_reg[k-1];
    end
end

endmodule

`resetall

异步复位同步释放

CDC中一个常见的例子就是异步复位,这个问题我在“FPGA复位信号设计讨论“一文中有详细的表述,这里简单讲解,对于初学者而言,不太建议用异步复位,尽管他们各有优劣,但至少对FPGA设计者而言,这个建议应该是有效的,即使是Xilinx官方也同样建议使用同步复位(UG949)。

但有些状态下可能同步复位无效,比如在低功耗设计中,时钟可能在复位前就已经被“无效”,那么异步复位自然成为一个选择。异步复位关键点不在进入复位状态,而在于移除复位,因为移除状态可能会进入亚稳态,除了“FPGA复位信号设计讨论”一文,大家同样可以参阅我翻译的经典论文“同步复位与异步复位”。经典的代码如下所示,但请注意区别此处代码和“打两拍“的区别。

//Language:Verilog-2001

`resetall
`timescale1ns/1ps
`default_nettypenone

/*
*Synchronizesanactive-highasynchronousresetsignaltoagivenclockby
*usingapipelineofNregisters.
*/
modulesync_reset#
(
//depthofsynchronizer
parameterN=2
)
(
inputwireclk,
inputwirerst,
outputwireout
);

(*srl_style="register"*)
reg[N-1:0]sync_reg={N{1'b1}};

assignout=sync_reg[N-1];

always@(posedgeclkorposedgerst)begin
if(rst)begin
sync_reg<= {N{1'b1}};
    end else begin
        sync_reg <= {sync_reg[N-2:0], 1'b0};
    end
end

endmodule

`resetall

很多人争论高电平复位有效好还是低电平复位有效好,一般情况下我常见低电平复位有效,但高电平复位有效也不是没有,一般认为在FPGA中区别不是太大,但在ASIC中,低电平似乎更加常见。

跨时钟握手

有时需要一种方法来处理CDC,例如从慢时钟到快时钟,从快时钟到慢时钟,这时需要:握手信号,在“AXI4协议逻辑规范以及BUG处理”一文写过握手的注意点。握手的详细技术点感兴趣的朋友可以网上找相关资料

FIFO

FIFO网上的文章特别多,具体的设计细节有很多需要讨论的地方,但对于跨时钟域而言,FIFO几乎是最方便的数据传输方式。这里不展开讲,之前我写过关于FIFO的相关文章,不是特别详细,接下来会有详细的关于FIFO的计划,在此之前,大家可以看Clifford E. Cummings经典论文,他的论文真的很推荐

http://www.sunburst-design.com/papers/CummingsSNUG2008Boston_CDC.pdf

f038a370-ad75-11ee-8b88-92fbcf53809c.png








审核编辑:刘清

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

    关注

    9

    文章

    425

    浏览量

    26273
  • fifo
    +关注

    关注

    3

    文章

    369

    浏览量

    43069
  • CDC
    CDC
    +关注

    关注

    0

    文章

    55

    浏览量

    17670
  • 触发器
    +关注

    关注

    14

    文章

    1677

    浏览量

    60402
  • 时钟域
    +关注

    关注

    0

    文章

    49

    浏览量

    9455

原文标题:跨时钟域的几种基本处理方法

文章出处:【微信号:处芯积律,微信公众号:处芯积律】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    IDT推出低抖动电压控制声表面波振荡器VCSO

    IDT公司推出用于高端光网络和通信应用的低抖动电压控制声表面波振荡器。新的VCSO时钟发生器进一步扩展了IDT公司领先业界的时钟和计时解决方案产品组合。
    发表于 09-01 09:02 1161次阅读

    超低抖动时钟分配解决方案 整合了 EZSync多芯片同步

    凌力尔特公司 (Linear Technology Corporation) 推出超低抖动 1.8GHz 时钟分配芯片系列 LTC6954,该器件有 3 个独立的输出,每个都有自己的分频器和相位延迟
    发表于 11-24 09:55 3014次阅读

    瑞萨电子宣布与赛灵思合作,共同开发Versal ACAP参考设计

    高性能时钟与电源解决方案支持Versal ACAP器件,适用于云、网络及边缘应用。
    发表于 12-17 14:22 957次阅读

    Silicon Labs发布时钟行业超小尺寸、超低抖动的 I2C可编程晶体振荡器

    Si54x/6x是光模块和线卡中400/600/800G相干光和56G/112G SerDes时钟的理想解决方案,这些模块和线卡需要高性能及小尺寸封装。
    的头像 发表于 09-23 12:15 2480次阅读

    WP370 -采用智能时钟门控技术降低动态开关功耗

    赛灵思推出业界首款自动化精细粒度时钟门控解决方案,该解决方案可将 Virtex-6 和 Spartan-6 FPGA 设计方案的动态功耗降低高达 30%。赛灵思智能
    发表于 01-17 15:34 34次下载
    WP370 -采用智能<b class='flag-5'>时钟</b>门控技术降低动态开关功耗

    安捷伦推出测试高速数字通信系统解决方案

      安捷伦科技公司日前宣布推出一系列新型仪表级时钟恢复解决方案,非常适合对高速数字通信元器件和系统进行光和电测试。该解决方案以显著低于同类产品的价格提供业界最高带
    发表于 03-27 17:04 617次阅读

    电信基带单元的系统方框图 (SBD)

    具有 TI 无线 SoC 处理器以及时钟和接口解决方案的电信基带单元的系统方框图 (SBD)。
    发表于 06-13 15:22 2664次阅读
    电信基带单元的系统方框图 (SBD)

    创新时钟解决方案 意法半导体高精度实时时钟

    意法半导体的M41TC8025是一个实时时钟整体解决方案,在一个简单易用的封装内集成了晶体、温度传感器、自动温度补偿算法和实时时钟
    发表于 01-25 11:14 4047次阅读
    创新<b class='flag-5'>时钟</b><b class='flag-5'>解决方案</b> 意法半导体高精度实时<b class='flag-5'>时钟</b>

    CDCE72010时钟合成器芯片作为高速模数转换器时钟信号的解决方案

    TI最近推出了一套适合于高速、高IF采样模数转换器(ADC)的设备,如ADS583,它能够采样多达135个MSPS。为了实现这些高性能设备的全部潜力,系统必须提供极低的相位噪声时钟源。CDCE72010时钟合成器芯片提供了现实的时钟
    发表于 05-28 09:09 11次下载
    CDCE72010<b class='flag-5'>时钟</b>合成器芯片作为高速模数转换器<b class='flag-5'>时钟</b>信号的<b class='flag-5'>解决方案</b>

    WEBENCH® 时钟架构如何获取完整、优化的时钟解决方案

    WEBENCH® 时钟架构
    的头像 发表于 08-02 01:03 3435次阅读

    卫星机顶盒的时钟生成解决方案

    卫星机顶盒(STB)和电视接收器包含许多需要高速时钟的芯片。如果视频解码器芯片没有外部时钟驱动器 - 并且许多新设备没有 - 必须为需要它的任何音频组件间接生成时钟。本文介绍如何使用锁相环(PLL
    的头像 发表于 04-03 08:23 3657次阅读
    卫星机顶盒的<b class='flag-5'>时钟</b>生成<b class='flag-5'>解决方案</b>

    采用EZSync的小于20fsRMS加性抖动时钟分配解决方案

    采用EZSync的小于20fsRMS加性抖动时钟分配解决方案
    发表于 05-20 17:42 7次下载
    采用EZSync的小于20fsRMS加性抖动<b class='flag-5'>时钟</b>分配<b class='flag-5'>解决方案</b>

    基于时钟生成器的时钟解决方案

    PCIe 参考时钟 (RefClk) 规范可针对 3 种不同架构定义,分别是:数据时钟、独立 RefClk 以及通用 RefClk。每个架构都具有特定的滤波器函数。在接收器时钟数据恢复输入端出
    的头像 发表于 06-28 16:49 2270次阅读
    基于<b class='flag-5'>时钟</b>生成器的<b class='flag-5'>时钟</b>树<b class='flag-5'>解决方案</b>

    泰酷辣!赛思医院时钟系统解决方案精准赋能荆州市中心医院智慧化建设!

    近年来,我国医疗服务正在从“信息化”迈向“智慧化”。赛思医院时钟系统解决方案精准赋能荆州市中心医院的智慧化建设。荆州市中心医院始建于1950年3月,是集医疗、教学、科研、预防、康复为一体的综合性三甲
    的头像 发表于 03-29 10:14 110次阅读
    泰酷辣!赛思医院<b class='flag-5'>时钟</b>系统<b class='flag-5'>解决方案</b>精准赋能荆州市中心医院智慧化建设!

    EPSON 的 RX8010SJ 为安防产品提供高可靠性低功耗的实时时钟模块解决方案

    EPSON作为实时时钟解决方案提供商中的佼佼者,为了适应市场需求,推出实时时钟模块RX8010SJ。该款实时时钟模块除了拥有超高性价比以外,还拥有不俗的整体性能,同时集成了日历功能可用
    发表于 04-15 16:04 0次下载