一、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 参考时钟架构
接着上图的架构,我们来简单看下PCIE时钟的三种架构:
1. Common Clock Architecture (即常说的CC架构);
2. Separate Clock Architecture;
3. Data Clock Architecture;
开聊之前先梳理几个概念:
- 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收发装备共用一个时钟源,PCIe链路的RC和EP都使用同一个参考时钟源发出的时钟,是如今是使用最为广泛的方案,也是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链路的RC和EP使用独立的参考时钟。
两个独立时钟须要满足PCIe协议中规定的精度要求。
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。
关于SSC,SSC是一种迟钝调制时钟频率的技能,以便低落中央频率处的EMI发射,有了SSC,PCIe时钟的辐射能量就不会产生2.5GHz或5GHz的噪声尖峰信号,由于辐射被分散到中央频率附近的小频率范围上。SSC在淘汰电磁干扰峰化方面起着非常紧张的作用,因此可以简化符合体系电磁辐射限定的工作。
展频的根本原理是通过将窄带信号转换为宽带信号,将能量分散在肯定的宽频范围内,从而低落EMI的影响,如下图所示。
扩频时钟可以克制电磁干扰(EMI)。随着PCIe的速率不停上升,对SSC的需求由不显着渐渐变得迫切,但陪伴PCIe速率的增长对时钟精度的要求也在增长。通过背板或线缆长间隔传输一个高精度时钟是很困难的。为了低落 PCIe 时钟及数据线的电磁辐射、增强高速数据传输可靠性,PCIe 时钟可以接纳 SSC 对参考举行时钟扩频。
如果是接纳独立的参考时钟,如果只有一端接纳展频,或两个时钟同时展频,两个时钟的精度就很难控制。以是在PCIe Gen1,Gen2上,都限定了只有在共同时钟模式下才华使用SSC。这种环境实际限定了SSC的使用。
于是Separate Refclk Independent SSC(SRIS):独立参考时钟的PCIe展频技能在Gen3中被提出。但一样平常以为这个功能在Gen3不成熟,实际不可用,正式实行要比及Gen4或Gen5。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抖动测试
|