本文主要是介绍COM载板设计之七:PCIe,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
2.2 PCIe一般介绍
PCIe提供了一种可裁减高速串行I/O点到点的总线连接。PCIe的LAN是一个全双工的通道,由一对接收差分对和一对发送差分对构成。PCIe的带宽可以通过增减LANE数来调整。PCIe规范定义了x1,x4,x8,x16和x32的连接宽度。每个LAN的原始数据传输速率是2.5Gbps @ 1.25GHz。
PCIe易于使用,但必须满足设计规则。最重要的规则是PCIe LAN必须以差分对形式布线。PCIe设计规则在PCB设计一节中有详细讨论。显然PCIe的布线要比PCI容易的多,因为线少多了。
2.2.1 COM Express A-B连接器和C-D连接器的PCIe组
COM Express类型2模块有两组PCIe LANE,一组PCIe由6个LANE构成,用于通用目的。另一组由16个LANE组成,用于图形显示接口,我们称之为PEG接口。某些PEG接口在不用作外部图形接口时可以作为通用PCIe接口使用,但是这样看COM模块的芯片集是否支持这种用法。
2.3 通用目的的PCIe通道
2.3.1 通用目的的PCIe信号定义
通用目的的PCIe接口由6个LANE组成,如表4:
信号 | 脚 | 描述 | I/O | 注释 |
PCIE_RX0+ PCIE_RX0- | B68 B69 | PCIe通道0,接收输入差分对 | I PCIE |
|
PCIE_TX0+ PCIE_TX0- | A68 A69 | PCIe通道0,发送输出差分对 | O PCIE |
|
PCIE_RX1+ PCIE_RX1- | B64 B65 | PCIe通道1,接收输入差分对 | I PCIE |
|
PCIE_TX1+ PCIE_TX1- | A64 A65 | PCIe通道1,发送输出差分对 | O PCIE |
|
PCIE_RX2+ PCIE_RX2- | B61 B62 | PCIe通道2,接收输入差分对 | I PCIE |
|
PCIE_TX2+ PCIE_TX2- | A61 A62 | PCIe通道2,发送输出差分对 | O PCIE |
|
PCIE_RX3+ PCIE_RX3- | B58 B59 | PCIe通道3,接收输入差分对 | I PCIE |
|
PCIE_TX3+ PCIE_TX3- | A58 A59 | PCIe通道3,发送输出差分对 | O PCIE |
|
PCIE_RX4+ PCIE_RX4- | B55 B56 | PCIe通道4,接收输入差分对 | I PCIE |
|
PCIE_TX4+ PCIE_TX4- | A55 A56 | PCIe通道4,发送输出差分对 | O PCIE |
|
PCIE_RX5+ PCIE_RX5- | B52 B53 | PCIe通道5,接收输入差分对 | I PCIE |
|
PCIE_TX5+ PCIE_TX5- | A52 A53 | PCIe通道5,发送输出差分对 | O PCIE |
|
PCIE_CLK_REF+ PCIE_CLK_REF- | A88 A89 | PCIe参考时钟,所有的LAN包括PEG | O PCIE | COM模块仅这一个参考时钟 |
EXCD0_CPPE# | A49 | PCIe卡0能力请求,低有效 | I CMOS |
|
EXCD0_PERST# | A48 | PCIe卡0复位,低有效 | O CMOS |
|
EXCD1_CPPE# | B48 | PCIe卡1能力请求,低有效 | I CMOS |
|
EXCD1_PERST# | B47 | PCIe卡1复位,低有效 | O CMOS |
|
CB_RESET# | B50 | 模板对载板的复位输出。低有效,由模板芯片集发出。可能是由于SYS_RESET#事件、PWR_OK事件、VCC_12V降到规定值以下事件、看门狗超时事件,软件发布的复位载板命令事件 | O CMOS |
|
PCI_RESET# | C23 | PCI复位输出,低有效 | O CMOS Suspend |
|
WAKE0# | B66 | PCIe唤醒信号 | I CMOS |
|
2.3.2 PCIe LANE配置-按照COM Express规格
按照COM Express规范,PCIe LANE可以配置成6个x1的PCIe连接,或者是x1,x2,x4连接的组合。这些配置依赖于COM Express模块的芯片组性能。
COM Express规范定义了一个“fill order”规则,例如L规则要求x4的PCI连接必须映射到LAN0、1、2、3。
注:所有PCIe设备除了能工作在全速模式外,都要求能工作在x1模式,例如:一个x4的PCIe卡,可以使用在x4或x1模式,这种情况下的中间模式(x2)是可选的。
2.3.3 PCIe LANE配置-模块和芯片组间的依赖
PCIe接口的LANE配置方案取决于COM Express模块所用的芯片组。某些模块和芯片组允许软件配置连接宽度(x1,x4)。某些需要硬件来进行x4选项的配置。COM Express对此并没有规定,具体应该见厂家提供的模块用户手册
2.3.4 Device Up/Device Down及PCIe Rx/Tx耦合电容
图3:PCIe Rx耦合电容
“Device Down”指PCIe目标设备实现在载板上;“Device Up”指目标设备实现在插座上(或mini-PCIe卡、ExpressCard、AMC Card)。在“Device Down”和“Device up”实现上,有一些区别:
Device Down:
l 目标设备PCIe的TX线的耦合电容在载板上,尽可能距离设备的TX近。
l 在载板上允许的PCIe的线长度比Device Up长。见PCB布线规则。
Device Up:
l 目标设备PCIe的TX线的耦合电容在插卡上。
l 在载板上允许的PCIe的线长度比Device Down短,因为卡上还有一段PCIe线。见PCB布线规则。
耦合电容的大小应该符合COM Express规范。
2.3.5 参考设计
2.3.5.1 参考时钟缓冲
COM Express规范仅定义了一个PCIe的参考时钟,这个100MHz的差分时钟是的目标PCIe设备能够更快速地锁定到PCIe位流内嵌的时钟上。
如果载板上只有一个PCIe设备,那么直接把这个脚连过去就可以了,如果有多个PCIe设备,则需要通过“0延迟”缓冲来获得多个时钟。这样fed1芯片有IDT、Cypress等。
图4 PCIe参考时钟缓冲器
每个时钟对点到点地连接到插座上或中断设备上,布线规则按照差分信号布线规则。
推荐在ICS9DB102缓冲器的时钟输出脚最近处串联一个33欧姆电阻和一个49.9欧姆对地的终端电阻。
SMBUS软件能够使能和禁止时钟缓冲输出,以减少EMI。
CLKREQ0和CLKREQ1应该下拉以便允许时钟缓冲输出,对于功耗要求不严格的应用,时钟可以永久接到低电平,永久是能时钟输出。
2.3.5.2 复位
PCI接口和PCIe接口,共享PCI_RESET#信号。CB_RESET#信号也可以代替PCI_RESET#。对于类型1、4、5的COM Express模块,由于没有PCI_RESET#信号,所以只能用CB_RESET#。
2.3.5.3 x1插座例子
图5,PCIe x1插座例子:
上面的例子显示PCIe的LANE0连接到这个插座,别的LANE是否可以被使用取决于模板。
没有耦合电容,因为PCIe TX的耦合电容在COM模块上,PCIe的耦合电容在卡上。
插座的REFCLK+和REFCLK-由时钟缓冲驱动,见图4,如果仅这一个PCIe设备,则只需把COM Express模块的REFCLOCK接过来就可以。
插座的PWRGD信号有COM Express的PCI_RESET#信号驱动,CB_RESET#也能使用。如果载板仅一个或两个目标设备,PCI_RESET#或CB_RESET#可以直接使用。
PRSNT1#和PRSNT2#是热插拔机制的一部分,然而大部分系统并不支持完整的热插拔功能,如果使用,方案如下:PRSNT1#(A1)下拉,在卡上,被路由到PRSNT2#(B17),B17的状态由BIOS读回。如果有卡插入,B17为0,无卡,则为1。软件使用这个信息给卡加电。但是COM Express并没有做什么规范性的规定,也没有任何硬件上的支持。系统如果试着实现这个热插拔功能,也没有必要读回PRSNT2#的状态。因此,这在图5上仅仅是作为一个测试点。
SMB_CK和SMB_DAT源自COM Express模块的B13和B14。SMBUS支持卡的管理功能,SMBUS软件能保存卡进入Suspend状态前的上下文,报告错误,接收控制参数,返回状态信息和卡信息(如卡的序列号)。卡对SMBUS的支持是可选的。
JTAG一般不用。
2.3.5.4 x4插座的例子
图6 PCIe x4插座的例子
2.3.5.5 PCIe x1通用Device Down例子
图7 PCIe x1 通用 Device Down例子:
图5仅显示在全电源ON状态(S0)的信号。如果载板器件支持电源管理特征,那么还有一些信号要起作用,如:为了支持唤醒功能,载板器件必须可以断言WAKE0#。
某些具备电源管理能力的器件还有CLKREQ#信号,见图4。
载板PCIe设备还可能要求支持SMBUS,如果载板器件使用Suspend电源,那么器件的SMBUS脚可以直接路由到COM Express的SMBUS脚(SMB_CK, SMB_DAT, SMB)ALERT#),如果载板SMBUS脚不是由Suspend电源供电,那么必须使用FET或总线开关隔离。见SMBUS总线的介绍。
2.3.5.6 PCIe x4通用Device Down例子
图8 PCIe x4通用Device Down例子
图6仅显示在全电源ON状态(S0)的信号。如果载板器件支持电源管理特征,那么还有一些信号要起作用,如:为了支持唤醒功能,载板器件必须可以断言WAKE0#。
某些具备电源管理能力的器件还有CLKREQ#信号,见图4。
载板PCIe设备还可能要求支持SMBUS,如果载板器件使用Suspend电源,那么器件的SMBUS脚可以直接路由到COM Express的SMBUS脚(SMB_CK, SMB_DAT, SMB)ALERT#),如果载板SMBUS脚不是由Suspend电源供电,那么必须使用FET或总线开关隔离。见SMBUS总线的介绍。
2.3.5.7 PCIe Mini Card
PCIe Mini Card是一个小型的卡,用于移动计算或嵌入式平台,它不支持热交换能力。
PCIe Mini Card接口包括一个x1的PCIe连接和一个USB2.0通道,Host两个接口都应该支持。
图9 PCI Mini Card尺寸:
图10 PCIe Mini Card 连接器
表5 PCIe Mini Card连接器管脚
脚 | 信号 | 描述 | 脚 | 信号 | 描述 |
1 | WAKE# | 唤醒信号 | 2 | +3.3V | 主电源3.3V |
3 | RSVD | 保留 | 4 | GND | 地 |
5 | RSVD | 保留 | 6 | +1.5V | 第二电源1.5V |
7 | CLKREQ# | 时钟请求 | 8 | UIM_PWR | UIM用的电源 |
9 | GND | 地 | 10 | UIM_DATA | UIM用的数据信号 |
11 | REFCLK- | 参考时钟- | 12 | UIM_CLK | UIM用的时钟 |
13 | REFCLK+ | 参考时钟+ | 14 | UIM_RESET | UIM用的复位 |
15 | GND | 地 | 16 | UIM_VPP | UIM用的可变电压 |
定位KEY | |||||
17 | RSVD | 保留 | 18 | GND | 地 |
19 | RSVD | 保留 | 20 | W_DISABLE | 系统使用的禁止无线操作 |
21 | GND | 地 | 22 | PERST# | PCIe复位 |
23 | PERn0 | LANE0接收差分对的- | 24 | 3.3VVaux | 辅助电源3.3V |
25 | PERp0 | LANE0接收差分对的+ | 26 | GND | 地 |
27 | GND | 地 | 28 | +1.5V | 第二电源1.5V |
29 | GND | 地 | 30 | SMB_CLK | 系统管理总线时钟 |
31 | PETn0 | LANE0发送差分对的- | 32 | SMB_DATA | 系统管理总线数据 |
33 | PETp0 | LANE0发送差分对的+ | 34 | GND | 地 |
35 | GND | 地 | 36 | USB_D- | USB数据- |
37 | RSVD | 保留 | 38 | USB_D+ | USB数据+ |
39 | RSVD | 保留 | 40 | GND | 地 |
41 | RSVD | 保留 | 42 | LED_WWAN# | 系统提供的状态指示灯 |
43 | RSVD | 保留 | 44 | LED_WLAN# | 系统提供的状态指示灯 |
45 | RSVD | 保留 | 46 | LED_WPAN# | 系统提供的状态指示灯 |
47 | RSVD | 保留 | 48 | +1.5V | 第二电源1.5V |
49 | RSVD | 保留 | 50 | GND | 地 |
51 | RSVD | 保留 | 52 | +3.3V | 主电源3.3V |
图11 PCIe Mini Card参考设计电路
图中使用了PCIe的LANE1和USB0。也可以使用别的端口,但是这要看模板。
如果不需要支持Suspend模式,那么3.3VAUX可以直接接到VCC_3V3,这种情况下,WAKE#脚应该悬空。
PERST#可以使用CB_RESET#或PCI_RESET#,或者是这些信号缓冲后的信号。
2.3.5.8 ExpressCard
ExpressCard支持热插拔,体积也很小巧。可以通过x1的PCIe或者USB2.0接口。按照ExpressCard规范,作为HOST应该提供PCIe和USB连接。可以支持一个或者多个ExpressCard设备。COM Express有4个信号专用于支持2个ExpressCard插座
表6 ExpressCard支持的信号
信号 | 脚 | 描述 | I/O |
EXCD0_CPPE# | A49 | ExpressCard0请求 | I 3.3V CMOS |
EXCD1_CPPE# | B48 | ExpressCard1请求 | I 3.3V CMOS |
EXCD0_PERST# | A48 | ExpressCard0复位 | O 3.3V CMOS |
EXCD1_PERST# | B47 | ExpressCard1复位 | O 3.3V CMOS |
图12 ExpressCard尺寸
图13 ExpressCard插座
图14 PCe:ExpressCard例子
图中使用了PCIe的LANE2和USB1,也可以使用其它通道,但要看模板情况。
PCIE_TX2+和PCIE_TX2-源自COM Express模块,这些线驱动ExpressCard上的PCIe接收器。载板上没有耦合电容,耦合电容在COM Express模块上。
PCIE_RX2+和PCIE_RX2-源自ExpressCard,载板上没有耦合电容,耦合电容在ExpressCard上。
PCIE_REF_CLK1+和PCIE_REF_CLK-源自PCIe的参考时钟缓冲器。
CPPE#在ExpressCard上被下拉,以表示卡存在并有一个PCIe接口。CPUSB#在ExpressCard上被下拉,以表示卡存在并有一个USB2.0接口。CPPE#或CPUSB#为低会引起TPS2231 ExpressCard电源控制芯片给ExpressCard供电。
TPS2231集成了一定数目的上拉电阻,其他解决方案可能需要外部上拉电阻。
CLKREQ#用作动态时钟管理,当这个信号为低的时候,表示不支持时钟动态管理功能。
ExpressCard PCIe复位信号,PERST#由TPS2231驱动,PERST#在电源超出规定范围的时候断言,或者如果COM Express 的EXCD0_PERST#为低的时候。
WAKE#由ExpressCard断言,会引起COM Express模块唤醒。WAKE0#在模块中是上拉的,其他WAKE0#源是“线或”关系。
SMBUS支持客户报警、无线RF管理、边带信号管理。这个功能在EXpressCard上是可选的。
2.3.6 PCIe布线考虑
PCIe信号是高速差分对,差分阻抗是100欧姆。布线时一定要以差分对形式走线,最好参考一个连续的地平面,做到过孔最少。
PCIe差分对的正负两个线长度的匹配要满足规定,但是差分对之间的长度并不需要匹配。
PCB设计请参考PCB设计指南。
2.3.6.1 极性反转
每个LANE都支持极性的反转,这就意味着布线的时候,不必去考虑两点之间的极性关系,意味着你可以将模块的PCIE_TX0+连接到插座的-脚,把PCIE_TX0-连接到插座的+脚。这样避免线的交叉,降低了按照规则布线的难度。
2.3.6.2 LANE反转
PCIe并不支持LANE的翻转。
这篇关于COM载板设计之七:PCIe的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!