PCIE 参考时钟架构

一、PCIe架构组件

    首先先看下PCIE架构组件,下图中主要包括

ROOT COMPLEX (RC) (CPU);

PCIE PCI/PCI-X Bridge;

PCIE SWITCH;

PCIE ENDPOINT (EP) (pcie设备);

 BUFFER;

    各个器件的时钟来源都是由100MHz经过Buffer后提供。一个PCIE树上最多可以有256个PCIE设备。

1、RC (ROOT COMPLEX)

    RC是PCIE树的根节点,为主模式,RC可以有一个或者多个PCIE端口(port),它可以根CPU 和memory controller相接,CPU 与 PCIe 总线之间的接口可能包含一系列的组件(处理器接口,DRAM 接口等,甚至是包含多个芯片)将这些组件合起来称这一组的组件为根组件(Root Complex);或者说分隔PCIE domain和CPU/MEMORY domain。

   个人理解:RC在功能上和Switch几乎一样,都是用于将一个PCIE接口拓展成多个PCIE接口,区别是RC集成在芯片内部,并且还会连接内存,类似PCI总线的根桥;

    RC 存在于 PCI 树状拓扑的“根部”,代表 CPU 与系统的其余部分通信;但PCIe 协议规范并没有对 RC 进行严格定义,而是给出了一个 RC 必需功能与可选功能的列表;所以从广义上说,根组件可以被理解为系统 CPU 与 PCIe 拓扑之间的接口,这个 PCIe 端口即是 RC,在配置空间中被标记为“根端口”。

——不同处理器的RC设计并不相同,只有x86才存在PCIe总线规范定义的“标准RC”,而其它很多处理器并不存在真正意义上的RC,而只是PCIe总线控制器。

——RC与HOST主桥并不相同,RC除了完成地址空间的转换之外,还需要完成物理信号的转换(举个栗子:FSB信号协议与PCIe总线的电气特性不兼容,总线事务也不同,必须进行信号协议和总线事务的转换)。

2、Switch

提供了扇出以及聚合能力:使得单个 PCIe 端口上可以连接更多的设备,它作为数据包路由器的角色,可以根据所给数据包的地址或者其他路由信息来识别这个数据包要走哪条路径;

    Switch有一个上游端口和两个或者两个以上的下游端口。上游端口是RC或者上游Switch的下游端口。

3、EP(endpoint)

EP就是终端设备,为从模式,没有转发数据的功能;

EP有三种: legacy EP,PCIE EP,RC integrated EP。

Legacy EP:就是PCI device

PCIE EP:

RC integrated EP:集成在RC内部的EP。

4、PCIE bridge

PCIE bridge就是PCI-to-PCI/PCI-X bridge。

    提供了一个通往其他总线的接口。现在使用PCI总线的场景应该已经不多,不做扩展分析。

    PCI的EP和RC分别对应从模式和主模式,普通的PCI RC主模式可以用于连接PCI-E以太网芯片或PCI-E的硬盘等外设。RC模式使用外设一般都有LINUX 驱动程序,安装好驱动基本都能正常使用。但是对于SOC芯片本身能做EP有能做RC 两者如何互相通信可能就需要对PCIE的使用和基本原理有所了解才能较好的使用。
 

接着上图的架构,我们来简单看下PCIE时钟的三种架构:

1. Common Clock Architecture (即常说的CC架构);

2. Separate Clock Architecture;

3. Data Clock Architecture;

二、PCIe 参考时钟架构

开聊之前先梳理几个概念:

  •    Jitter,时钟抖动,是对于同一 Clock 而言的, 是时钟源引起的,用来描述被测时钟与理想时钟在时域的偏差(单位为 ps RMS,皮秒均方根)。
  •    Skew,时钟偏斜,是对于多个时钟线而言的,是时钟树不平衡引起的。
  •    此外还有一个概念是频率稳定性,用来描述被测时钟频率与理想时钟频率的偏差(单位 ppm,百万分之一)。
  •     Refclk Architecture是指 PCIe 系统中收发端设备给定参考时钟的方案。

参考时钟

    PCIe Serdes 在时钟驱动下收发串行数据流。Serdes 所用时钟由 PHY 内的 PLL 生成,PLL 的参考时钟由外部提供或从接收数据流中恢复出来。

    PCIe 协议指定标准的参考时钟为 HCSL 电平的 100 MHz 时钟,Gen1~Gen4 下要求收发端参考时钟精度在 ±300 ppm 以内,Gen5 要求频率稳定性 ±100 ppm。在 FPGA 应用中,为了兼顾其他 IP,采用 LVCMOS/LVDS/LVPECL 电平 125 MHz/250 MHz 的方案也较为常见。

    关于参考时钟详细参数需求,已经测试测量等相关内容,本文将不会涉及,具体请参考PCIe CEM Spec和2.0或以上版本的PCIe Base Spec中的相关章节。

1. Common Refclk Architecture

    即同源参考时钟架构,PCIe收发设备共用一个时钟源,是目前是使用最为广泛的方案,也是Spec推荐使用的,三种 PCIe 参考时钟架构中,Common Clock 是最为常用的一种时钟架构。

    对于适用同一 Common Clock 作为参考时钟的 PCIe 设备,所有设备的参考时钟分布必须匹配到15英寸以内在系统板上。在接收端数据和时钟之间的传输延迟增量(时钟偏斜(Clock Skew))必须要小于等于12ns。通常允许PCIE卡上的时钟线长不大于4inch。特别注意这点,涉及到我们实际PCB走线。这无疑对大型电路板上或跨板的 PCIe 设备间布局布线形成巨大挑战。

    采用 Common Clock 支持时钟扩频(SSC, Spread Spectrum Clock) 且对参考时钟的要求不如 Separate Clock 方案严苛。

    即使系统使用了带有扩频的参考时钟源,时钟抖动也只有-300~+2800ppm,对于频率稳定性的要求是 ±300 ppm。这对于物理层中的RxCDR和TxPLL就比较友好了,可以降低RxCDR和TxPLL的复杂程度,达到节约成本的目的。

     其次,当PCIe链路处于L0s或者L1状态时,即使链路上没有数据流,RxCDR依然可以设计出保持锁定的状态,这样做的好处是,链路从L0s或L1状态恢复到L0状态的时间将会更短。

图片

缺点:

对于适用同一 Common Clock 作为参考时钟的 PCIe 设备,所有设备间的时钟偏斜(Clock Skew)必须保持在一定范围内(有部分文章介绍是12ns,我目前还没找到数据来源),大型电路板设计或者跨板的PCIe设备布局布线存在很大挑战。

优点:

·收发侧的时钟抖动jitter都是相同的,因此便于跟踪和计算

·在此架构中,支持SSC功能,很容易达到600 ppm的指标

·即使收发端进入L0S和L1低功耗状态,refclk仍然是可用的,即使在缺少bit流提供数据边沿(in the absence of a bit stream to supply the edges in the data)的情况下,接收器的CDR仍然能够保持恢复时钟的平衡,有效阻止了本地PLL的偏移,相对于其他时钟方案,恢复到L0状态所需时间最少。

    总结:Common Refclk Architecture 稳定性好,支持SSC,是目前应用最广泛的参考时钟方案,也是最推荐的设计方案。

     

2.Separate Clock Architecture

     即独立参考时钟架构,收发端采用独立的参考时钟。 PCIe Spec强烈不推荐使用这种参考时钟架构,尽管这是其提出的三种参考时钟架构之一。

    PCIe Spec强调,如果使用这种架构,扩频时钟必须被禁止使用(2.5GT/s & 5GT/s),因为这中情况下使用扩频时钟的话,CDR的带宽需甚至需要大于5600ppm,这对于CDR来说是非常大的挑战。

     对于收发端采用独立参考时钟的方案,其收发端独立使用不同的参考时钟源,无需单独传递时钟,对布局布线的要求更宽松。SRNS 允许 ±300 ppm (600ppm),而 SRIS 允许 ±2800 ppm (5600 ppm,其中SSC允许 5000ppm,TX/RX允许 600 ppm)。

   根据有无 SSC 可进一步分为 SRNS ( Separate Refclk with No SSC) 及 SRIS (Separate Refclk with Independent SSC)。

    SRNS:不使用SSC功能,时钟抖动更小,不需要额外加大弹性缓存(Elastic Buffer)的深度

    SRIS: 使用SSC功能,能够有效减少电磁干扰(EMI),但是时钟抖动增加,需要额外加大弹性缓存(Elastic Buffer)的深度。

    相对于SRNS,SRIS:开启了SSC,接收侧观察到的时钟抖动会加大,因此发生SKP的频率会增加,因此在物理层需要加大弹性缓存(Elastic Buffer)的深度,用于消除开启SSC的负面影响。但是弹性缓存(Elastic Buffer)深度加大后,数据传输路径延时也增加了。

     若 PCIe 设备开启了 SRIS,其发生 SKP 的频率应该加大,同时加大弹性缓存(Elastic Buffer)的深度。弹性缓存加大使得延时更大,在一定程度上降低了 performance。对于一条 PCIe 链路,如何知道要不要采用 SRIS 呢?遗憾的是,目前尚没有机制实现收发端之间的 SRIS 协商。

需要注意的是,PCIe Base Spec V3.x中,提到对于8GT/s的PCIe链路而言,在Separate Refclk Architecture下实现扩频时钟也是可行的(即Separate Refclk With Independent SSC (SRIS) Architecture),但是需要更复杂的CDR设计,具体请参考Spec相关章节。

图片

优点:参考时钟独立,参考时钟不需要穿越背板和连接器,从而使PCB设计变得更为简单,使得架构更加的灵活。

缺点:接收侧观察到的时钟抖动(jitter)是两端参考时钟jitter的组合,并且不利于计算,使得参考时钟的设计更加严格。在此模式下,支持SSC模式对设计提出了更高的要求,例如物理层CDR设计更加复杂,物理层需要更大的缓存。

3.Data Clock Architecture

    即数据时钟参考时钟架构,仅发送端需要 Refclk,接收端无需外部 RefClk,接收端物理层从数据流中恢复出时钟提供给 CDR(Clock Data Recovery,时钟数据恢复)作为参考时钟。

 这种参考时钟架构最为简洁,也是三种方案中最易实现的方案。Rx端器件的CDR并不需要外部参考时钟,而是直接从数据流中恢复出时钟

    Data Clocked Refclk Architecture在PCIe2.0中首次,PCIe3.0中保留了这项技术,该方案仅适用于 Gen2 及 Gen3,单 lane 单向最高速率 8GT/s。但是在PCIe4.0又丢弃了。因此不推荐使用,慎用,有些不支持。  

    不过这种结构的RxCDR几乎很少在FPGA的SerDes中使用,因为在没有外部参考时钟的协助下,CDR实现锁定都是一个很大的挑战,还要保证在5600ppm的抖动范围内不失锁(对于带有扩频时钟的PCIe链路来说)。

    注:绝大部分的FPGA SerDes都是多协议SerDes,除了支持PCIe外,往往还需要支持其他主流的串行协议,比如SATA、USB、DisplayPort、HDMI、Ethernet (Q)SGMII、CoaXpress、CPRI、FPD-Link II/III、Serial RapidIO、SLVS-EC等等。这种参考时钟架构对于PCIe来说行得通,对于其他的某些串行协议来说可能是无法实现的。

 

图片


 

优点:实现简单,Data Clock 时钟方案是三种方案中最易实现的方案,其无需外部参考时钟

缺点:PCIe4.0 没有保留此方案,不推荐使用。

 

    注意,虽说PCIE时钟有三种架构,但是最常用的还是CC架构,无特殊情况,不要使用其他时钟架构,如果真的要使用其他两种架构,也需要严谨评估先。

从下表可知,展频跟非CC架构慎用。

图片

         

    鉴于PCIE时钟要求多且复杂的,故此文章给出主要的参数要求,其它详细的要求以及测试方法,后续有机会再编写分享。

信号要求:

图片

PCIE_CLK_P/N是差分信号,通常差分阻抗为100Ω,少部分要求85Ω。

电平:HCSL or LP-HCSL。

频率:100±0.03MHz。

频率稳定度:±300ppm,越小越好。

占空比:50%±10%。

抖动:如下CC模式的要求:

图片

注意:上图给出的是CC时钟架构下的抖动要求;仿真PCIE4.0时候,抖动是按照0.7ps RMS来的;仿真PCIE5.0时候,抖动是按照0.25ps RMS来的;因为标准考虑了实际系统中的额外噪声,故会比较严格。

         

提到PCIE时钟,相信大部分人会联想到CLKREQ#:

很多时候有疑问,CLKREQ#是否要接,首先要知道的是,这个信号是可选的,可要可不要。那么什么时候需要呢?如果要支持L1-PM子状态(ASPM(Active State Power Management)中的状态)和/支持时钟电源管理,那么这个信号就是必要的(即使你不是使用的CC模式)。

注意:如果硬件电路这个CLKREQ#没接的话,可让BIOS把PCIE中的ASPM的L1状态默认关闭,不然容易出现异常现象。

扩频时钟

什么是SSC?展频时钟全称Spread Spectrum Clocking 。

    顾名思义是一种对时钟频率进行调制以削平时钟产生的峰值能量的技术,可降低由时钟基频及其谐波信号产生的EMI尖峰,从而优化系统EMC结果(含传导与辐射骚扰);

    由于信号的能量过于集中在其载波频率位置,导致信号的能量在某一频点位置处的产生过大的辐射发射。为了有效地降低EMI辐射,芯片厂家在设计芯片时也给容易产生EMI的信号增加了SSC扩频时钟的功能,频率变化的时钟,其频谱能量被分散在一定频谱范围上。当前PCIE、SATA、SAS、USB3.0等高速芯片都支持SSC的功能。采用SSC的功能可以有效的降低信号所产生的EMI。

    展频的基本原理是通过将窄带信号转换为宽带信号,将能量分散在一定的宽频范围内,从而降低EMI的影响,如下图所示。

    扩频时钟可以抑制电磁干扰(EMI)。为了降低 PCIe 时钟及数据线的电磁辐射、增强高速数据传输可靠性,PCIe 时钟可以采用 SSC 对参考进行时钟扩频。Gen1~Gen5 都支持 SSC,但只有 Gen3 及以上支持 SRIS。

     PCIe 扩频模式为向下扩频,扩频范围为-0.5%~0%,确保最大频率在标称频率之下。最大调制幅度为 -0.5%!

     调制频率为 30 KHz ~ 33 KHz,确保 PLL 能够跟得上,同时减小音频噪声的引入。调制波形采用三角波,该波形易于实现,且调制后的频谱接近均匀分布。

     注意:30 KHz ~ 33 KHz 是指频率随时间周期变化的频率,不是展宽的带宽,带宽为时钟频率的 0.5% 。

     扩频时钟对于PCIe来说是可选的,并非是强制的。如果选择支持扩频时钟的话,需满足以下要求:
※ 调制范围为+0%到-0.5%,即向下扩频(Down Spreading),如下图所示
※ 调制频率必须在30KHz到33KHz,一般为三角波
※ 参考时钟源的抖动(Jitter)需在300ppm以内


带有SSC的参考时钟频率变化曲线如下图所示:

注:为什么选用的是向下扩频,而不是中心扩频或者向上扩频?主要是考虑到,当100MHz已经是系统最靠基准频率的话, 向上扩频或者中心扩频会导致系统基准频率超过最高值,进而可能引发系统工作异常。
注:三角波的能力较为集中在低次谐波中,相比于正弦波,方波或者锯齿波,更适合用于SSC中。

 

图片

PCIe CC架构

 

 更多扩频相关介绍,请查看参考资料:http://blog.chinaaet.com/justlxy/p/5100064134。 

三、PCIe时钟实现方法和参考设计

1.使用有容微GM5528或GM5508时钟清抖器/时钟产生器芯片输出HCSL 100MHz时钟

图片

图片

图片

GM5528/GM5508输出HCSL 100MHz时钟的相噪/抖动测试

图片

GM5528/GM5508输出HCSL 100MHz 抖动数据 vs PCIe时钟标准要求

可见:GM5528/GM5508输出的HCSL 100MHz时钟符合PCIe Gen1/2/3/4/5/6 (CC)标准

(*说明:GM5528支持多达14路输出,GM5508支持多达8路输出)

2.使用有容微GM5351A时钟产生器芯片输出HCSL 100MHz时钟

    GM5351A时钟产生器芯片本身是3路2.5KHz-250MHz之间任意频率的单端输出,但是可以使用双通道(一般使用CLKout0和CLKout1,因为这两路输出PIN脚相邻便于设计)做反相配置实现HCSL的差分输出,且达到PCIe Gen2/Gen3标准:

图片

图片

GM5351A输出HCSL 100MHz 抖动vs PCIe时钟标准要求

3.使用有容微GM50301/GM50304时钟缓冲器芯片输出HCSL 100MHz时钟

图片

图片

GM50301/GM50304输出HCSL 100MHz抖动测试



 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/373516.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何在Termux中使用Hexo结合内网穿透工具实现远程访问本地博客站点

文章目录 前言 1.安装 Hexo2.安装cpolar3.远程访问4.固定公网地址 前言 Hexo 是一个用 Nodejs 编写的快速、简洁且高效的博客框架。Hexo 使用 Markdown 解析文章,在几秒内,即可利用靓丽的主题生成静态网页。 下面介绍在Termux中安装个人hexo博客并结合…

考研数据结构笔记(1)

数据结构(1) 数据结构在学什么?数据结构的基本概念基本概念三要素逻辑结构集合线性结构树形结构图结构 物理结构(存储结构)顺序存储链式存储索引存储散列存储重点 数据的运算 算法的基本概念什么是算法算法的五个特性有…

LeetCode、198. 打家劫舍【中等,一维线性DP】

文章目录 前言LeetCode、198. 打家劫舍【中等,一维线性DP】题目及分类思路线性DP(一维) 资料获取 前言 博主介绍:✌目前全网粉丝2W,csdn博客专家、Java领域优质创作者,博客之星、阿里云平台优质作者、专注…

记一次页面接口502问题:“502 Bad Gateway”

接收别人的项目进行迭代,项目部署到服务器上之后,有一个接口数据刷不出来,一直502 后来联想到网关的问题,想通过设置白名单的方式解决,设置之后依旧不行。 查看nginx日志发现报错: *169 connect() failed …

vue - 指令(一)

看文章可以得到什么? 1.可以快速的了解并会使用vue的指令 2.可以加深你对vue指令的理解,知道每个指令代表什么功能​​​​​​​ 目录 什么是vue的指令?​​​​​​​ vue常见指令的使用 v-html v-show v-if v-else 和v-else-…

Redis(三)(实战篇)

查漏补缺 1.spring 事务失效 有时候我们需要在某个 Service 类的某个方法中,调用另外一个事务方法,比如: Service public class UserService {Autowiredprivate UserMapper userMapper;public void add(UserModel userModel) {userMapper.…

QMUI_Android:提升Android开发效率与质量的利器

QMUI_Android:提升Android开发效率与质量的利器 在Android应用开发过程中,开发者常常面临着重复编写基础组件和处理兼容性问题的挑战,这不仅耗费时间,也降低了开发效率。为了解决这一问题,Tencent推出了QMUI_Android框…

Linux-3 进程概念(三)

1.环境变量 1.1基本概念 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数 如:我们在编写C/C代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但是照样可以链接成功…

【教学类-46-05】吉祥字门贴5.0(华光彩云_CNKI 文本框 空心字涂色 ,繁简都可以,建议简体)

作品展示 背景需求: 1、制作了空心字的第1款 华光通心圆_CNKI ,发现它不能识别某些简体字,但可以识别他们的繁体字(繁体为准) 【教学类-46-01】吉祥字门贴1.0(华光通心圆_CNKI 文本框 空心字涂色&#xf…

怎么把几百M大小的视频做成二维码?扫码播放视频在线教程

怎么把几百M大小的视频做成一个二维码展示呢?通过二维码来作为视频的载体是现在很常用的一种手段,通过这种方式不仅成本比较低,而且传播速度也比较快,通过访问云端数据就可以播放视频。 视频二维码生成的方法一般会通过二维码生成…

蓝桥杯----凑算式

这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。 比如: 68/3952/714 就是一种解法, 53/1972/486 是另一种解法. 这个算式一共有多少种解法? 注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字。

RPA财务机器人之UiPath实战 - 自动化操作Excel进行财务数据汇总与分析之流程建立与数据读取、处理、汇总、分析

一、案例介绍: A公司共有13个开在不同银行的帐户,分别用于不同的业务分部或地区分部收付款。公司总部为了核算每月的收支情况,查看银行在哪个月交易量频繁,需要每月汇总各个银行的帐户借方和贷方金额,并将其净收支&am…

springboot 拦截器

定义 拦截器类似于javaweb中filter 功能 注意: 只能拦截器controller相关的请求 作用 举一个例子,例如我们在Controller中都有一段业务逻辑,这样我们就可以都统一放在拦截器中 因此拦截器的作用就是将controller中共有代码放入到拦截器中执行,减少co…

Leetcode02.05:链表求和

一、题目描述 给定两个用链表表示的整数,每个节点包含一个数位。 这些数位是反向存放的,也就是个位排在链表首部。 编写函数对这两个整数求和,并用链表形式返回结果。 示例: 输入:(7 -> 1 -> 6) (5 -> 9 -…

UML之在Markdown中使用Mermaid绘制类图

1.UML概述 UML(Unified modeling language UML)统一建模语言,是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路。 类图是描述类与类之间的关系的,是UML图中最核心的。类图的是用于…

【MATLAB】交叉验证求光滑因子的广义神经网络回归预测算法

有意向获取代码,请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 交叉验证求光滑因子的广义神经网络回归预测算法是一种用于选择模型超参数并提高泛化性能的方法。下面将对该算法进行详细介绍: 广义神经网络回归模型: 广义神经网络…

地下停车场智慧监查系统:科技让停车更智能

随着城市化进程的加速,停车难成为了许多城市居民的痛点。而地下停车场作为解决停车难问题的重要手段,其安全性和便捷性也成为了人们关注的焦点。为了解决这一问题,山海鲸可视化搭建的地下停车场智慧监查系统应运而生,为车主们提供…

单向循环链表——插入、删除、实现约瑟夫环、排序

2024年2月3日 1.请编程实现单向循环链表的头插&#xff0c;头删、尾插、尾删 自定义头文件&#xff1a; #ifndef __head_h__ #define __head_h__ #include<stdio.h> #include<stdlib.h> #include<string.h> typedef int datatype; typedef struct Node {da…

React进阶 - 15(React 中 ref 的使用)

本章内容 目录 一、e.target 获取事件对应“元素”的DOM节点二、ref三、ref 和 setState 合用 上一节我们了解了 React中的”虚拟DOM“中的”Diff算法““ &#xff0c;本节我们来说一说 React中 ref的使用 一、e.target 获取事件对应“元素”的DOM节点 打开之前工程中的 To…

摘录笔记——2024年2月5日

美团三年&#xff0c;总结的10条血泪教训在美团的三年多时光&#xff0c;如同一部悠长的交响曲&#xff0c;高高低低&#xff0c;而今离开已有一段时间。闲暇之余&#xff0c;梳理了三年多的收获与感慨&#xff0c;既是对过去一段时光的的一个深情回眸&#xff0c;也是对未来之…