PEX8796设计总结3_硬件配置篇
专注誉霸20年
2022年05月09日 22:24
收录于文集
共3篇

1.1.1 SPI eeprom芯片配置管脚

 

图1 原理图演示

引脚定义表

EEPPROM与内部控制器示意图

    通过EEPROM可以实现的典型功能:

    每个port端口的DE、EQ、VOD参数设置;

    port端口的组合方式;

    其他功能待尝试……。

    硬件设计:

    注意eeprom供电、上下拉电压为1.8V,与PEX8796在同一电源域。

    EE_DO需要上拉至1.8V。

    排故相关:

    当无法判断pex8796芯片是否损坏的时候,可以通过用示波器捕捉EE_SK的时钟输出信号有无来判断芯片是否正常启动,注意时钟信号需要使用上升沿触发来捕捉信号。

1.1.2  I²C配置引脚

    I2C_ADDR

    用于7位地址配置,配置关系如下表

                 表 4

输入电平             地址

0                         1011_101b(默认) 

Z                         1011_110b

1                         1011_111b

    剩下的以后再补。。。

1.1.3  模式设置相关引脚

1.1.3.1  SHPC _INT#

    热插拔中断控制引脚,在热插拔时连接下行外设,需要外部连接4.7kΩ上拉至1.8V。

如果不使用热插拔功能的话,芯片内部有上拉电阻,可以直接NC。

1.1.3.2  VS*_PEX_INTA#

    VS模式热插拔中断控制引脚,因为不使用VS模式所以不会用到该引脚

    硬件设计:芯片内部有上拉电阻,可以直接NC。

1.1.3.3  STRAP_GEN1_COMPLIANCE#

    该引脚主要用于适配只有PCIeGen1速率的主控。

    该引脚拉低时,在建链-高速率训练失败后,后续建链时只进行Gen1速率连接训练。

    该引脚拉高时,建链自动从高向低速率自适应连接(就是先从Gen3建链,连不上再降速到Gne2,Gen2连不上再降速到Gen1).

    硬件设计:一般通过4.7kΩ上拉至1.8V或直接NC(芯片内部上拉)。非特殊情况不要拉低。

1.1.3.4  STRAP_GEN1_GEN2

    该引脚需要尤其注意,用于硬件配置PCIe速率,配置如下表所示

                              表 5

电平               速率                               备注

1                    Gen3(8GT/s)

Z(悬空)     Gen2(5GT/s)            默认

0                   Gen1(2.5GT/s)

     速率设置需要根据项目带宽需求设置速率,一般速率设置为PCIeGen2。除非设备对带宽要求较高Gen2无法满足,则将速率设置为Gen3,由于Gen3对于信号质量要求很高,需要尤其注意PCIe差分信号的PCB布局和走线,具体会在章3.2.6.3中说明。

    该引脚在硬件排故中使用较多,如遇到无法建链问题,可以通过该引脚降速尝试连接。以下列出一些Linux系统下基本命令:

    查看pcie连接设备:lspci

    查看PCI总线树:lspci -t

    查看PCIe设备详细信息:lspci -s PCI总线号 -vvv

    筛选查看详细信息速率设置和连接状态:

    lspci -s PCI总线号 -vvv |grep Width

    其中LnkCap为该设备速率设置,LnkSta为该设备当前连接状态

1.1.3.5  STRAP_HP_POLARITY_CTRL

    热插拔电源使能脚极性反转控制脚,此处不讨论热插拔应用。

    硬件设计:芯片内部上拉,可以NC或上拉至1.8V。

1.1.3.6 STRAP_I2C_SMBUS_CFG_EN# 

I    2C总线配置使能,仅对I2C_SDA0、I2C_SCL0两个引脚生效,此处不讨论I2C总线使用方式。

          表 6

电平            介绍

0                 开启I2C falsh配置功能

1                禁用I2C

    硬件设计:必须通过4.7kΩ上拉至1.8V或1kΩ下拉至GND。

    因为我们不使用I2C配置功能,所以直接上拉至1.8V。

1.1.3.7  STRAP_I2C_SMBUS_SEL

    I2C/SMBUS协议选择脚,仅对I2C_SDA0、I2C_SCL0两个引脚生效,此处不讨论。

表 7

电平                    介绍

0                        开启I2C从模式

 Z(悬空)        开启带有ARP功能的SMBUS总线模式

1                       开启不带ARP功能的SMBUS总线模式

    ARP:Address Resolution Protocol地址解析协议

   硬件设计:因为我们不使用I2C配置功能,所以这里可以NC,因为STRAP_I2C_SMBUS_CFG_EN#引脚已经将I2C/SMBUS功能禁用,不论这里什么电平都不会生效。

1.1.3.8  STRAP_VS_MODE[1:0]

    VS模式使能引脚,控制如下表所示,因为不使用VS模式,此处不做讨论。

    下图为VSmode不同配置时,每个VS被分配的上/下行Port端口。

    硬件设计:STRAP_VS_MODE[1:0]两个引脚都通过1kΩ下拉至GND。

    排故相关:

    若STRAP_VS_MODE[1:0]设置的不是00,比如设置的为01,CPU把port0作为上行口。那么lspci命令仅可以看到如上表所示的一半端口,DeviceID仍然识别为PEX8796。测试打印如下图所示:

    以此类推,如果CPU接在VS1所在Port口,那么lspci就仅可看到另一半端口。如果VSmode设置为10、11,会有同样现象。

1.1.3.9  STRAP_MGMT_CFG_EN

    此引脚仅在VS模式中控制Managerment Port使能,受STRAP_VS_MODE[1:0]控制引脚影响。在多VS口模式下,如果开启使能Managerment Port,那么管理端口将由    VS0_UPSTRM_PORTSEL[2:0]设置,该管理端口同时也是上行端口,CPU可以通过管理端口使用PLXtool对PEX8796的EEPROM进行配置。如果不使能,则是默认为VS0的Port0。

    若STRAP_VS_MODE[1:0]设置为00,则该引脚不管什么输入都不会生效。

    我们不使用VS模式,此处不做讨论

    硬件设计:直接NC。

1.1.3.10  STRAP_NT[1/0]_UPSTRM_PORTSEL[2:0]

    六个引脚三个为一组,用来配置NT模式中的上行口,因为不用NT模式,直接选择Disable模式即可。

    其中100和11Z两种配置作为预留,选择这两个电平配置不会生效。

    因为我们仅使用Base Mode模式,所以要禁用NT模式相关配置。

    硬件设计:全部引脚通过4.7kΩ上拉至1.8V,即选择[2:0]=111,禁用NT模式。

    排故相关:

    如果在原理图设计时没有注意此处设计,并没有禁用NT模式,那么在输入lspci命令后可以看到额外的pci总线号和打印信息,并且NT上行口将占用对应的那个port口。

    故障问题举例:

    a)Base模式上行口设置为Port0,但是NT0或NT1其中一个UPSTRM_PORTSEL[2:0]=000,那么NT上行口将占用Port0,此时CPU通过lspci命令无法识别到PEX8796设备,但是通过示波器查看信号可以看到PCIe物理层已经建链。

    b)NT*_ UPSTRM_PORTSEL[2:0]将NT上行口设置为了Base模式并没有使用到的Port口,那么可以通过lspci命令看到额外的一个PEX芯片,但是实际板卡上并没有这个芯片,如下图所示:

    c)NT0和NT1选择了同一个Port口作为上行口。

    问题现象与(b)相同。

    d)Base模式、NT0和NT1选择了同一个Port口作为上行口。

    还未验证过

1.1.3.11  STRAP_VS0_UPSTRM_PORTSEL[2:0]

在Base Mode模式中用来配置连接CPU的上行口,上行口设置根据下表设置:

    排故相关:

    如果上行Port口设置与实际硬件设计不对应,将会导致CPU输入lspci命令无法识别到PEX8796芯片,用示波器测试波形将会看到CPU与桥片之间物理层在不断建链、偶现可以完成建链并传输信号的混乱连接状态。由于现象与信号质量差问题类似,所以在将STRAP_GEN1_GEN2引脚拉低后,如果仍然保持该混乱现象,优先怀疑VS0_UPSTRM_PORTSEL[2:0]上行口设置错误。

1.1.3.12  STRAP_STN0~5_PORTCFG[1:0]

用来配置每个Station的四个Port口组合形式。如下表所示:

    详细内容查看附录C

1.1.4  调试引脚

1.1.4.1  STRAP_PLL_BYPASS#

    功能测试脚,不做讨论

    硬件设计:必须通过4.7kΩ上拉至1.8V。

1.1.4.2  STRAP_PROBE_MODE#

    功能测试脚,不做讨论

    硬件设计:必须通过4.7kΩ上拉至1.8V。

1.1.4.3  STRAP_SERDES_MODE_EN#

    功能测试脚,不做讨论

    硬件设计:必须通过4.7kΩ上拉至1.8V。

1.1.4.4  STRAP_TESTMODE

    测试模式控制脚,主要控制热插拔功能引脚定义。

具体定义控制见下表

    此处先不讨论热插拔功能,仅使用Port_GOOD*#功能,Port_GOOD*#​功能具体使用见章***。

    硬件设计:通过1kΩ下拉至GND。

1.1.4.5  JTAG引脚

    目前无法找到PLX公司的JTAG调试工具以及调试软件,所以无法使用JTAG口调试芯片。

    硬件设计:TRST#引脚通过1.5k电阻下拉至GND,其余引脚全部NC。

    排故相关:

    如果TRST#引脚不下拉的话,芯片会一直处于JTAG调试模式,在该模式中CPU无法识别到PEX8796芯片。

    物理层是否可以建链还待测试。

1.1.5  PCIE复位引脚

    PEX_ PERST#:为整个PEX8796桥片物理层复位,即桥片所有port。在此处用作Base Mode模式芯片pcie物理层复位引脚。

    硬件设计:

    a)连接单板pcie复位时序控制芯片(如南桥、ARM、CPLD等);

    b)接4.7k电阻上拉至1.8V,以固定芯片复位初态为高。在pcie复位控制芯片没有接管该引脚前,芯片pcie物理层始终为复位状态;

    c)通过0.1uf小电容接地,避免外部干扰造成复位误触发。

    PEX_NT*_PERST#、VS*_PERST#​:因为目前没有使用过NT和VS模式,所以此处不再讨论这两种模式的复位设计。

    硬件设计:复位引脚在芯片内部已上拉,全部NC处理,所以无需额外连接上拉电阻。

1.1.6  PCIe Station引脚

    PCIe station是芯片中用来实现PCIe功能的逻辑块,PEX8796一共有6块station,每块station对外有16条PCIe收发差分信号(4组Port)、4组SSC扩频时钟输入、4组+1个Serdes外部偏置电阻。这些外部信号经过转换之后接入芯片内数据交换总线来实现桥片功能。

    以下按Station0来讲解信号

1.1.6.1  REXT

    REXT_A[3:0]+REXT_B[3:0]:

    A+B为一组偏置电阻,这4组电阻为Station_serdes块的四个边提供偏置。

    硬件设计:每个引脚必须通过一个3kΩ(0.1%)的高精度电阻连接至GND。

    REXT_CMU*:

    为Station_serdes块时钟管理单元提供偏置。

    硬件设计:每个引脚必须通过一个3kΩ(0.1%)的高精度电阻连接至GND。

    如果一个station的pcie不使用,那这些REXT引脚可以NC。

    同时也要注意,如果用到了这个Station但是没有连接偏置电阻,这个Station上的所有PCIe信号都是无法使用的,反应出来的现象就是PCIe无法建链。

1.1.6.2  REFCLK

    参考时钟包括了100Mhz(恒频)参考时钟和扩频参考时钟(以下简称SSC)。注意PCIe时钟为差分时钟,电平为HCSL电平,如果输入时钟不是HCSL电平需要注意提前检查电平标准是否适用。

    REFCLK_P/N:

    这组时钟输入引脚只有Station0上有,它为整个芯片的所有Station提供100Mhz(恒频)参考时钟。

    硬件设计:芯片内部包含耦合电容,可以将时钟发生器产生的100Mhz时钟信号直接连接至该引脚。

    芯片对PCIe时钟信号质量要求较高,选型时尽量选用进口晶振和时钟buffer。国产时钟延迟和jitter值较大,如果板卡带宽需求必须为PCIe Gen3,那么不能选用国产芯片。使用多个时钟芯片扩展通道时,需注意PEX8796与CPU一定要放置在同一个时钟芯片上。如果不在同一个芯片上可能会由于时延和抖动不统一导致误码甚至无法建链。

    可以但不建议在外部连接0Ω或耦合电容,目前项目中使用的IDT和深圳国微的时钟发生器目前都可以直连使用,但是需要注意设计测试点方便调试和排故中测试时钟信号。

    REFCLK_SSC*_P/N + REFCLK_SSC*_EN:

    每个Station有四组SSC输入引脚,用于连接外部SSC,每组SSC还包含了一个EN使能引脚。

    REFCLK_SSC*_EN:拉高时开启SSC输入,拉低时禁用对应数字的SSC输入。

    芯片内部下拉,默认关闭SSC功能,可以NC或通过1kΩ电阻下拉至GND

    REFCLK_SSC*_P/N:SSC的使用此处不做讨论,所有SSC引脚直接NC即可。

    原理图设计如下图所示:

    当REFCLK_SSC[0:23]时钟都被禁用时,REFCLK_P/N引脚输入既可以是100Mhz(恒频)参考时钟,也可以是扩频时钟。

1.1.6.3  PCIe信号

    桥片PCIe发送端差分对:PEX_PETP*+ PEX_PETN*

    桥片PCIe接收端差分对:PEX_PERP*+ PEX_PERN*

    PORT端口组合:

    注意1个port为桥片最小组合单元,即1个Port的4条lane只可以进行1组PCIe x4或x2或x1连接,无法再拆分成2个PCIe x2或4个PCIe x1。

    PEX8796的PCIE端口具体配置组成以及对应的PortID如附件所示。

    硬件设计:

    a)在发送端差分对靠近芯片端需放置0.22μF的AC耦合电容;

    b)PCIe走线有过孔时尽量从顶层到靠近底层的平面,如果无法靠近底层需背钻;

    c)如果板卡上存在8G及以上信号(PCIeGen3)时,PCB印制板投板时尽量选用高速板材;

    d)如果PCIeGen3信号进行跨板传输时(如:从主控板过无源底板连接至其他板卡),需要在接收端设计PCIe repeater芯片,后续调整均衡参数。

    PCIe repeater芯片设计与配置敬请期待……

1.1.7  功能预留引脚

1.1.7.1  SPARE[2:0]

    SPARE[2:0]为功能预留引脚,芯片内部已上拉,可以NC或通过4.7kΩ上拉至1.8V。

1.1.7.2  RESERVED[0:17]

    RESERVED引脚为功能预留引脚,为了后续在同封装不同型号芯片之间做不同功能替换(目前一致的有PEX8764、PEX8796、PEX8797),目前里面的部分RESERVED引脚会影响到芯片的Device ID识别,PEX8796配置如下图所示:

    a)Reserved[0:13]:芯片内部下拉,可以直接NC或通过1kΩ下拉至GND。

    Reserved0、Reserved2为PEX8797预留功能引脚,若使用PEX8797时这两个引脚必须上拉。

    Reserved12为PEX8796预留功能引脚,在PEX8764手册中此引脚必须上拉或直接连至1.8V。如果PEX8796的该引脚被上拉,则CPU会将该芯片的DeviceID识别为PEX8764!!!!!!经常会有人在复制原理图时将该处电路上拉,导致识别错误。

    Reserved14:必须直连到GND。

    Reserved15:必须下拉或直连到GND。

    Reserved17:Fan-Out使能引脚,芯片内部下拉,可以直接NC或通过1kΩ下拉至GND。只有在使用peer-to-peer功能时才需上拉,此处不讨论该功能。

1.1.7.3  NC引脚

    以下引脚号全部NC:        A2\A30\A33\B32\D2\F17\G19\G20\J16\J25\K20\K24\K29\M8\N27\N30\N31\N33\N34\P6\P27\P29\R29\T27\U7\U27\W7\Y6\Y27\AA6\AB1\AB2\AB4\AB5\AC6\AC27\AD29\AF14\AF17\AF20\AG26\AH26\AJ14\AL32\AM32

1.1.8  其他引脚

1.1.8.1  VDD18A_THERMAL_SENSE

    温度传感器引脚,可以将温度传感器通过PCIe Port发送结温检测数据。

    在Base Mode中发给Port0;在VS Mode中发给Port0,可以通过Management Port访问。

    硬件设计:直接连接至1.8V_VDDA,注意是连到1.8V模拟电源域。建议增加22μF电容滤波。

1.1.8.2  VS*_FATAL_ERR#

    致命错误输出信号,当Base、VS模式中出现flash严重错误且无法纠正时,该引脚将向CPU发出低电平。

    发生以下事项时会判断为知名错误:

    a)不可纠正错误严重性寄存器(FC0h)中写入值定义为致命错误;

    b)不可纠正错误掩码寄存器(FBCh)中屏蔽了Interrupt标志位;

    c)设备控制寄存器的知名错误报告使能位(70h[2])或PCI命令寄存器SERR#使能位(04h[8])被设置。

    在Base模式中,只有VS0_FATAL_ERR#引脚生效;在VS模式中,每个FATAL_ERR#​信号对应各自的VS Port。

    硬件设计:

    如果使用该引脚功能,需要将VS0_FATAL_ERR#引脚连到CPU的GPIO或IPMB功能芯片的GPIO。建议靠近接收端通过4.7kΩ上拉至1.8V,并且通过0.1μF小电容连接至GND。

    如果不使用该引脚,可以直接NC。

1.1.8.3  Port*_GOOD#

Port*_GOOD#引脚一般连接LED灯,用来指示PCIe Port口连接状态,之后简称Port灯。

在上电时所有Port灯会亮起1s然后熄灭,之后根据连接状态会有不同的点灯方式,如下表所示:

    注意:使用Port_GOOD#引脚功能,前提是STRAP_TESTMODE拉低。

    硬件设计:根据如下图所示:

    此处LED正常工作电压压降VF=2V左右,所以引脚端最大电势小于1.3V,芯片输入引脚最大电压VOH=2.75V,所以满足电压要求不用担心损坏芯片。

    LED正常工作电流为IF=10mA,最大电流IFmax=25mA,芯片引脚输入电流最大值为IOL=17.6mA,所以串联限流电阻选值理论上需要满足R>(3.3V-VF)/17.6条件即可,约74Ω。经过实物设计,串联限流电阻470Ω得到的灯亮度可以正常识别闪烁又不会过亮。