PEX88000 GEN4系列大甩卖了,是时候山寨一点PEX88给小黄鱼搅屎棍了
开源连接地址:oshwhub.com/malong/pex88048gen4evm
一:前言,请仔细阅读。(如果你不阅读,我也不会回答你此类的留言和私信)

请先看上图的型号,一共六个型号,本质其实只有2种封装,封装一样,PIN脚一样,只是少了LANE数。PEX88024-48,它们是0.8MM BGA点距。PEX88024-96它们是1.0MM BGA点距。PEX88000全系列,设计都是一样的(芯片内置的弱上拉下拉电阻可能有所差异,请按照规格书为准)。
PEX88000系列可能有A0版本的,我不清楚A0 B0有啥差异,我就知道博通现在只卖B0,所以此项目中的为B0版本。
PEX88048是博通推出的PCIE GEN4的交换机(前身就是PLX,安华高收购PLX后,又收购博通,并改名叫博通)。
因为PEX88系列目前博通还没解禁,属于NDA状态,网上并没有相关资料。本项目只有芯片规格书(PEX88 89系统有多个规格书,硬件规格书里面只有最基础的说明)。你不要留言跟我要其它的,我也没有。如果你有,请私聊发我,并好人一生平安。
和上代PEX87XX相比(如果感兴趣请移步我PEX87XX系列的开源帖子)。PEX88多了内部的管理部分,多了用于管理端口的2条X1。本项目只作为基础模式作为设计,因为没有相关资料,所以无法用上内部管理部分,我也不会用。如果你想用,请自行发挥。
PEX88048依旧是2个核心电压。依旧分为0.9V数字和模式,1.8V数字和模拟。相对上代PEX8748,PEX88048采用了0.8MM的BGA,而非PEX8748的1.0MM。但是优化了BGA布局。这样优势就是6层板也可以电源数字模拟分路供电了。缺点也很明显,对过孔和内层电流要求更高了。带宽的提升,必然伴随着功耗的提升,这是不可避免的。(新制程工艺对IO这类产品并不能显著带来功耗降低。)
PEX88000系列没有PORT数量限制,也就是说PEX88048配置成48个X1也是可行的。 PEX88系列完全去掉了引脚配置的方式,必须采用SBR配置(就是外置SPI FLASH,里面单纯配置寄存器的部分就是SBR,没有SBR不能正常运行!)。所以PEX88系列需要搭配博通的SDK软件配置好SBR才能使用。(SDK软件官网就可以下载,但是需要授权许可,并且必须有PEX88000系列的授权码,才能配置)。此项目我会提供基础固件。如果你需求更改或者变更端口,请自行找其他方式获取PLX的SDK授权。
二:本卡实物和功能详解.




1.本卡的外接供电是GPU 6+2P,并且有插入检测功能(你未插满6+2或者只插了6P,本卡是不工作的。)这个6+2P母座是显卡的那种母座,不是CPU那种,嘉立创商城没有任何GPU的6+2P母座,请去淘宝自行购买。
2.本卡的8个M.2都支持22110长度,每个硬盘都是独立的供电(OCP 3.3V 8A)。且不插入硬盘,对应的DCDC降压不会工作。(每个供电都有独立的红色LED,未插硬盘或者过压过流短路都会亮红色,并且保护关断供电)(每个硬盘都有ACT LED绿色,读写数据闪烁)
本卡已经更新到了V1.1,和实物卡并没有什么本质改动,主要是把默认时钟改成了CC模式。嘉立创商城发我的2颗时钟都是坏的,(也有可能是我焊坏的)。我样品的卡,最后没办法,是从NVIDIA测试卡上面拆下来的同型号,直接打样或者量产此板请注意。参考的用户请直接更换其它常用的时钟型号。
三:引脚定义解析(PEX88048系列所有电平引脚都是1.8V电平,项目中提到的拉高都是上拉1.8V,拉低都是下拉GND)
1.PCIE信号部分PETXp0-49,PETXn0-49,PERXp0-49,PERXn0-49。这点和PEX8700系列是一样。只是多了48,49两个端口,这两个端口是管理用的专用端口,至于能不能利用这2个X1接个网卡什么的,你们可以试试,我没试过。
2.DFT_TN,DFT_IDDT,DFT_SHIFT_CLK,DFT_SCAN_ENABLE,PAD_TRI_L,SPARE0,SPARE1,SPARE2,SPARE3,SPARE4,SPARE5 工厂测试引脚。你要问是干嘛的,只有博通知道。但是不管你那种设计方式这几个引脚必须:
【DFT_TN】 拉高或者悬空(因为内部弱上拉)
【DFT_IDDT】 拉低或者悬空(因为内部弱下拉)
【DFT_SHIFT_CLK】 必须拉低(内部弱上拉)
【DFT_SCAN_ENABLE】拉低或者悬空(因为内部弱下拉)
【PAD_TRI_L】 必须拉高或者悬空(因为内部弱上拉)
【SPARE0-5】 拉低或者悬空(因为内部弱下拉)
3.诊断调试JTAG信号:TCK,TDI,TDO,TMS,TRST_L。和PEX87系列一样的,我没有JTAG工具,本项目也未使用。
【TRST_L】 拉低或者悬空(因为内部弱下拉)
【TCK,TDI,TMS】 拉高或者悬空(因为内部弱上拉)
【TDO】 必须悬空
4.ADCTEMP0_VINP2,ADCTEMP0_VINP3. 内部ADC的模拟电压输入,不太清楚干嘛用的,本项目未使用,悬空。
5.SGPIO信号:SGPIO0_CLK,SGPIO0_DIN,SGPIO0_DOUT,SGPIO0_LOAD,SIO_BLINK。我不知道如何使用,也没工具,悬空。
6.用于管理的以太网接口:ENET_125M_IN,ETH_PHY_CLK_OUT,RGMII_MDC,RGMII_MIO,RGMII_RX_CTL,RGMII_RXC,RGMII_RD0-3,RGMII_TX_CTL,RGMII_TXC,RGMII_TD0-3. 是的,和服务器的BMC的管理网口是一样的,用的RGMII,我没有管理的开发资料,请悬空.
7.SYS_ERROR#,报错引脚,当你PEX88048出现问题(具体那几种错误情况请看规格书),或者SBR有问题,不能正常运行时,它会拉低,默认开漏输出,你需要上拉1.8V(芯片内部推挽),如果接LED指示灯,请通过双NMOS NPN或者其它方式转换电平。
8.串口信号:SDB_RX,SDB_TX,UART_RX,UART_TX。SDB是调试串口,UART是数据串口,使用需要2K电阻上拉1.8V,如果你接的不是1.8V电平的串口工具,需要电平转换。(本项目未使用,我也没有相关资料)
9.I2C信号:I2C_SCL0-5,I2C_SDA0-5. PEX88048提供了五组I2C,开漏输出,如果使用需2K电阻上拉1.8V,连接3.3V电平的I2C需电平转换。I2C_SCL2和I2C_SDA2是配合SHPC_INT#热插拔专用端口。(本项目未使用任何I2C,可悬空)
10.SHPC_INT#热插拔中断引脚。拉高或者悬空(内部弱上拉),本项目中未使用。如果你不知道怎么使用,那就不要问,因为我也没用过,和87系列的使用方法一样,搭配单片机连接I2C_SCL2和I2C_SDA2扩展IO口,用单片机输出控制串口热插拔相关信号,实现对下游设备的热插拔。
11.GPIOA0-GPIOA31:GIPIOA 32个端口需要在SBR自行定义,默认的定义功能未知,没有相关具体资料,不用可悬空(内部弱上拉,可以在SBR里面定义上下拉和功能)
12.SPI_FLASH信号:SPI_CLK,SPI_CS0-3#,SPI_FLASH_CS#,SPI_SDIO0-3,SPI_RST#。(基础模式SBR功能4K容易以上的25系列FLASH即可,只支持1.8V的电压型号,3.3V的型号需要转换电平不可直接使用)
【SPI_FLASH_CS#】主片选引脚,需要10K上拉1.8V电平
【SPI_CS0-3#】次片选引脚,多个副FLASH的片选,不用悬空,使用10K上拉1.8V
【SPI_RST#】SPI复位,如果是FLASH复位引脚被IO复用的FLASH,悬空即可。如果使用,需要10K上拉1.8V。
【SPI_SDIO0-3】连接四线速25系FLASH IO0-3.如果是单速FLASH或者双速FLASH,IO2和IO3悬空。
13.DBG_SEL0-1
设置外部调试DBG工具,内部弱下拉,为博通的JTAG调试端口信号,不用请悬空.
14.DBG_MODE0-4(内部弱上拉)
【DBG_MODE3-4】都设置为低电平,禁用DBG模式,【DBG_MODE0-2】就处于无效状态。本项目未使用,所以【DBG_MODE3-4】下拉,其它悬空。
15.MODE_SEL0-8.模式选择,每个引脚只有高低2个状态输入。(内部都是弱下来,为低电平状态)
MODE_SEL0:低电平从SPI_FLASH_CS#片选FLASH加载SBR配置,高电平从SPI_CS0#片选FLASH加载SBR配置。
MODE_SEL1:低电平开启SBR加载。高电平关闭SBR加载。
MODE_SEL2:设置串口SDB和UART速率,低电平115,200 b/s,高电平19,200 b/s
MODE_SEL3:当SBR未加载成功时候,默认PCIE采用的时钟模式:低电平SRIS,高电平SSC隔离模式。
MODE_SEL4-8:当SBR未加载成功时候,默认哪个端口作为UPS,6-8定义STATION,4-5定义PORT(无正确SBR时候,PEX88048处于12X4基本PORT,无相关资料,本项目中S2P0作为SBR失效时候基础UPS)
16.EXT_GPIO_LATCH# 保存GPIOA状态,本项目未使用,悬空
17:SYS_PWR_ON_RST#,全局复位,请在PEX的VDD供电OK后延迟100MS以后拉高.
18.SYS_REFCLK是PEX88000系列的必须时钟,负责整个芯片的基础工作。(也可让PCIE参考此时钟,本项默认设置).
19.Sx_PCE_PERST#,Sx_PCE_REFCLK。这些可选PERST#和PCIE参考时钟,是配对的(多个HOST的话,每个HOST接一个复位和一组时钟).本项目使用可选时钟和复位,但是保留设计电路(未贴)。
四:关于PCIE参考时钟问题。
1.PCIE参考时钟有共用的时钟,有独立的时钟。PCIE参考时钟也分无展频模式,有展频(SSC)模式。这两两搭配就引出四种构架。(也有叫扩频的,都是一个意思)
【通用时钟】缩写【CC】
【带展频通用时钟】缩写【CCS】
【独立基准无展频】缩写【SRNS】
【带基准无展频】缩写【SRIS】
展频就是为了降低 EMI,而把时钟频率降低0%-0.5%(PCIE时钟展频只有向下展频。至于你需要哪种时钟结构方案,是要经过多方面考虑的,并不是说什么什么时钟结构就好。通用时钟它方案便宜,因为一般的普通时钟缓冲器就能解决。但是它的缺点就是拉的太远(通常你用8654线什么的拉出去),它时钟信号就会衰减变差。独立基准的时钟,成本更高(因为支持SRIS并且达到PCIE4.0要求的通常不便宜,5.0的更贵的,最主要的是很难买。)
2.并不是所有的PCIE时钟发生器(独立基准时钟用的发生器)和时钟缓冲器(一分多路)都是一样的。PCIE参考时钟都信号都是HCSL 100MHZ信号,HCSL又分LP-HCSL和普通的HCSL。LP-HCSL顾名思义就是低功耗的(通常这种信号的时钟没有外接串联电阻和下拉电阻,且一个时钟又分85和100差分阻抗2种小型号)。普通的HCSL时钟芯片(一般需要外接串联或者下拉电阻,也有部分不加的,以规格书为准。PCIE时钟芯片不一定都是100OHM阻抗差分的,也有85的。因为它是电流型信号,所以它的阻抗是和输出电流挂钩的,有的HCSL输出时钟芯片,是支持切换电流改变阻抗的。有的则是固定死的,这时候你设计的阻抗和它不匹配,会导致一些些反射(并不是就不能用了。)
3.选购的时钟芯片需要满足PCIE GEN4的抖动需求 MAX 0.5ps RMS
五:芯片供电
PEX88048 VDD09达到了18.12A 基本比PEX8748翻了2.5倍,请做好DCDC的散热。规格书强制要求了VDDA通过磁珠隔离,我不清楚合并会造成什么不良原因。如果你要尝试,请自便(PEX88048也优化了引脚,6层也可以分割数字和模拟电源)
五:关于PCIE阻抗。
1.老生常谈了,信号的好坏,并不是你阻抗匹配对了它就非常好了。有的人在那算阻抗,精确到小数点,没有意义。信号的好坏取决阻抗的均匀性,而不是具体阻抗值本身。阻抗的均匀性就是你的板材均匀性,还有生产出来的精度问题。(就是生产出来的板子的铜箔和你画板的并不是一一模一样的,他放大了看边缘也是坑坑洼洼的锯齿)。
2.一样的PCB走线信号损耗会随着带宽增大而急巨陡增变大,并不是固定值(打比方在PCIE1.0下损耗只有0.5% 到了PCIE4.0下损耗可能有15%了,能差几个量级。)
3.差分线过孔不要贴的太近,差分线过孔请设置覆铜禁用区域,缓解阻抗突变(就是其它软件得KEEPOUT)。差分线耦合电容和母座的差分引脚焊盘参考层尽量挖空,去让它参考在下面一层,来缓解阻抗突变。PCIE金手指下面参考层尽量挖空,来缓解阻抗突变。
4.上面说的这些都是锦上添花的作用,并不会有什么太大的信号增强,如果你要信号好请记住就三个字:短,短,短! 真理从来不是什么高级板材,什么鬼斧神工的走线优化。{只要距离短,吊毛跑万兆!}
六:关于SDK配置SBR固件。
1.如果你有博通PEX88000 SDK的授权,用SDK打开我的基础固件,然后请按照下面的配置(直接输入,我已经给你们进制算好了),其它都不需要动

2.如果你没有博通SDK的PEX88000系列授权,那你就自己去找什么XXOO版(你懂的~~~~),或者刷我给的配置好的固件(不授权也可以在系统下刷固件)