1 PCIe弹性缓存主要用于解决跨时钟域问题-德赢Vwin官网 网
0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

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

3天内不再提示

PCIe弹性缓存主要用于解决跨时钟域问题

SwM2_ChinaAET 来源:未知 作者:李倩 2018-09-08 09:59 次阅读

前面在介绍PCIe物理层逻辑子层的文章中,有提到过弹性缓存(Elastic Buffer,又称为CTC Buffer或者Synchronization Buffer)。其本质上是一种FIFO,主要用于解决跨时钟域问题。当然,PCIe的弹性缓存还用于补偿时钟误差(Compensate for the clock differences)。实际上,除了PCIe,弹性缓存还广泛应用于其它的高速串行接口——USB、InfiniBand、Fibre Channel、Gigabit Ethernet等基于SerDes的应用。

由于PCIe采用的基于8b/10b的嵌入式源同步时钟,接收端存在两个时钟域:一个是通过CDR从数据流中解析出来的时钟,用该时钟对数据进行采样;另一个是本地时钟域,用于其他的逻辑的。借助弹性缓存(FIFO),可以实现数据在这两个时钟域的转换。

以PCIe Gen1为例,链路上的数据速率为2.5Gbps。但实际上,任何晶振(或者其他频率发生器)都是有误差的,PCIe Spec允许的误差范围为±300ppm(Parts Per Million)。即,链路上实际的频率范围为2.49925GHz~2.50075GHz。借助弹性缓存,通过删除或者插入SKP Ordered Set可以消除链路频率误差的影响。如下图所示:

需要注意的是PCIe Spec并没有规定弹性缓存的具体位置,设计者可以将弹性缓存放在8b/10b解码器之前,也可以把弹性缓存放在8b/10b解码器之后。不过,Mindshare的建议是将弹性缓存放置于8b/10b解码器之前的。

当本地时钟域的时钟(Local Clock)的速度比数据流通过CDR解析出的时钟(Recovered Clock)的时钟要快时,且弹性缓存即将被读空之前,可以向SKP Ordered Set中插入1~2个SKP。如下图所示:

当本地时钟域的时钟(Local Clock)的速度比数据流通过CDR解析出的时钟(Recovered Clock)的时钟要慢时,且弹性缓存即将溢出之前,可以从SKP Ordered Set中移除1~2个SKP。如下图所示:

需要特别注意的是,Intel提出的PIPE规范(并非PCI-SIG强制的规范,具体参考前面关于PIPE的文章)中,只允许每次从一个SKP Ordered Set中插入或者移除一个SKP。如果需要插入或者移除两个SKP,则需要对两个SKP Ordered Set进行操作。如下图所示:

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

    关注

    9

    文章

    1143

    浏览量

    40716
  • PCIe
    +关注

    关注

    15

    文章

    1234

    浏览量

    82574

原文标题:【博文连载】PCIe扫盲——弹性缓存(Elastic Buffer,or CTC Buffer)

文章出处:【微信号:ChinaAET,微信公众号:电子技术应用ChinaAET】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    FPGA设计中解决时钟的三大方案

    时钟处理是FPGA设计中经常遇到的问题,而如何处理好时钟间的数据,可以说是每个FPGA初
    的头像 发表于 11-21 11:13 3863次阅读
    FPGA设计中解决<b class='flag-5'>跨</b><b class='flag-5'>时钟</b><b class='flag-5'>域</b>的三大方案

    关于时钟信号的处理方法

    我在知乎看到了多bit信号时钟的问题,于是整理了一下自己对于时钟信号的处理方法。
    的头像 发表于 10-09 10:44 6152次阅读

    如何处理好FPGA设计中时钟间的数据

    时钟处理是FPGA设计中经常遇到的问题,而如何处理好时钟间的数据,可以说是每个FPGA初
    发表于 07-29 06:19

    FPGA时钟处理简介

    (10)FPGA时钟处理1.1 目录1)目录2)FPGA简介3)Verilog HDL简介4)FPGA时钟
    发表于 02-23 07:47

    调试FPGA时钟信号的经验总结

    1、时钟信号的约束写法  问题一:没有对设计进行全面的约束导致综合结果异常,比如没有设置异步时钟分组,综合器对异步时钟路径进行静态时序分
    发表于 11-15 14:47

    cdc路径方案帮您解决时钟难题

    这一章介绍一下CDC也就是时钟可能存在的一些问题以及基本的时钟处理方法。
    的头像 发表于 11-30 06:29 7182次阅读
    cdc路径方案帮您解决<b class='flag-5'>跨</b><b class='flag-5'>时钟</b><b class='flag-5'>域</b>难题

    关于FPGA中时钟的问题分析

    时钟问题(CDC,Clock Domain Crossing )是多时钟设计中的常见现象。在FPGA领域,互动的异步时钟
    发表于 08-19 14:52 3346次阅读

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

    时钟处理是 FPGA 设计中经常遇到的问题,而如何处理好时钟间的数据,可以说是每个 FP
    的头像 发表于 12-05 16:41 1642次阅读

    关于时钟的详细解答

    每一个做数字逻辑的都绕不开时钟处理,谈一谈SpinalHDL里用于时钟
    的头像 发表于 04-27 10:52 4266次阅读
    关于<b class='flag-5'>跨</b><b class='flag-5'>时钟</b><b class='flag-5'>域</b>的详细解答

    介绍3种方法时钟处理方法

    时钟处理是FPGA设计中经常遇到的问题,而如何处理好时钟间的数据,可以说是每个FPGA初
    的头像 发表于 09-18 11:33 2.2w次阅读
    介绍3种方法<b class='flag-5'>跨</b><b class='flag-5'>时钟</b><b class='flag-5'>域</b>处理方法

    SpinalHDL里用于时钟处理的一些手段方法

    每一个做数字逻辑的都绕不开时钟处理,谈一谈SpinalHDL里用于时钟
    的头像 发表于 07-11 10:51 1859次阅读

    时钟电路设计总结

    时钟操作包括同步时钟操作和异步
    的头像 发表于 05-18 09:18 735次阅读
    <b class='flag-5'>跨</b><b class='flag-5'>时钟</b><b class='flag-5'>域</b>电路设计总结

    FPGA时钟处理方法(一)

    时钟是FPGA设计中最容易出错的设计模块,而且一旦时钟出现问题,定位排查会非常困难,因为
    的头像 发表于 05-25 15:06 1983次阅读
    FPGA<b class='flag-5'>跨</b><b class='flag-5'>时钟</b><b class='flag-5'>域</b>处理方法(一)

    FPGA时钟处理方法(二)

    上一篇文章已经讲过了单bit时钟的处理方法,这次解说一下多bit的时钟方法。
    的头像 发表于 05-25 15:07 1021次阅读
    FPGA<b class='flag-5'>跨</b><b class='flag-5'>时钟</b><b class='flag-5'>域</b>处理方法(二)

    如何处理时钟这些基础问题

    对于数字设计人员来讲,只要信号从一个时钟跨越到另一个时钟,那么就可能发生亚稳态。我们称为“时钟
    发表于 01-08 09:39 632次阅读
    如何处理<b class='flag-5'>跨</b><b class='flag-5'>时钟</b><b class='flag-5'>域</b>这些基础问题