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的翻转。