简介这份资源是Marvell CoverLink Street 88E6321交换机的官方参考设计资料面向从事千兆以太网交换机硬件设计、嵌入式网络开发及音视频传输系统集成的工程师。88E6321为7端口千兆AVB交换机集成2个PHY并支持Energy Efficient Ethernet节能以太网资料围绕其功能特性、技术参数与典型应用场景展开可帮助读者理解芯片选型依据、端口配置方式及AVB协议在音视频同步传输中的作用。资源包共1个文件为PDF格式大小约1003KB内容涵盖产品概述、电气与温度参数、应用场景说明及Marvell公司背景介绍适合作为方案评估与设计参考。目前已有614人学习下载读者可从中获取交换机参考设计的核心参数与设计思路用于网络中心、服务器、视频监控及音视频传输等场景的硬件方案论证。1. 88E6321交换机图参考设计从一颗芯片到一块能跑起来的板子手里拿到一颗 88E6321第一反应往往不是查手册而是找参考设计。这颗芯片在工业控制和嵌入式网络设备里出镜率很高7 端口千兆以太网交换集成 MAC 和 PHY支持 VLAN、QoS、端口镜像这些常规能力封装不大外围也不算夸张。但真到自己画板子的时候问题就来了MDIO 怎么接、SERDES 要不要用、时钟从哪来、EEPROM 到底要不要焊、复位时序怎么保证。参考设计图不是让你照抄的是让你看懂每一块电路存在的理由然后根据自己的场景做取舍。这篇笔记面向的是准备用 88E6321 做一块自研交换板或者把交换机功能集成到现有主板上的硬件和嵌入式工程师从电源、时钟、接口、配置存储到调试排错把一张参考设计图拆成能落地的步骤。新手可以照着最小系统跑通熟手可以对照边界条件检查自己的设计有没有埋雷。2. 88E6321 最小系统电源、时钟与复位的三根支柱2.1 先搞清楚芯片的供电域和上电顺序88E6321 的电源引脚分了好几组常见的是核心电压、I/O 电压和模拟电压。核心电压通常 1.0V 或 1.2VI/O 是 3.3V 或 2.5V模拟部分对噪声敏感需要单独处理。参考设计里一般会用两颗 LDO 或者一颗 DC-DC 加一颗 LDO 的组合核心和 I/O 用 DC-DC 提效率模拟部分用 LDO 压噪声。上电顺序这件事手册里会写一个推荐时序但很多参考设计图不会把时序控制芯片画出来因为 88E6321 内部有上电复位电路只要各路电压在合理时间内建立一般不会出问题。但如果你用的是多路独立电源核心电压先到、I/O 后到或者反过来都有可能让芯片进入一个不确定的状态。稳妥的做法是用一颗带 PGPower Good信号的电源芯片把 PG 接到 88E6321 的复位引脚上等所有电压都稳了再释放复位。我一般会在原理图里加一个 RC 延时网络在复位引脚上比如 10k 上拉加 100nF 到地时间常数大概 1ms确保电源完全建立后再让芯片启动。这个 RC 不是随便选的太小了复位释放太快太大了影响启动时间。如果板子上还有别的芯片需要更晚启动可以用一颗复位延时芯片但大多数场景下 RC 就够了。注意模拟电源引脚旁边的去耦电容不要省0.1uF 和 1uF 并联是常见做法位置尽量靠近引脚地回路要短。2.2 时钟方案晶振还是时钟芯片88E6321 需要一个参考时钟常见的是 25MHz 或者 40MHz。参考设计里通常画的是无源晶振加两个负载电容但实际选型的时候要考虑精度和温漂。无源晶振便宜但精度一般在 ±20ppm 到 ±50ppm如果板子要过工业级温度范围温漂可能会让时钟偏出以太网要求的范围。另一种做法是用一颗有源晶振或者时钟发生器直接输出 LVCMOS 或者差分时钟给芯片。有源晶振的精度可以做到 ±10ppm 以内温漂也小但成本高一些。如果板子上已经有别的时钟源比如从主控或者 FPGA 分出来的 25MHz也可以直接拿来用但要注意抖动指标以太网对时钟抖动有要求抖动太大会导致链路不稳定。晶振的负载电容怎么算公式是 CL (C1 * C2) / (C1 C2) CstrayCstray 是 PCB 走线的寄生电容一般 3pF 到 5pF。假设晶振规格书要求 CL12pFCstray 取 4pF那 C1 和 C2 大概各 16pF。实际选的时候用 15pF 或者 18pF 都行但最好用频率计测一下实际频偏偏太多就换电容值。2.3 复位电路和配置引脚的上下拉复位引脚前面说了RC 延时加 PG 信号是标配。但 88E6321 还有一堆配置引脚比如 PHY 地址、接口模式、启动模式这些引脚在复位释放的瞬间会被采样。参考设计图里会把这些引脚画成上拉或者下拉但不会告诉你为什么。常见做法是PHY 地址引脚用 4.7k 上拉或下拉根据你需要的地址值来定。接口模式引脚决定每个端口是走内部 PHY 还是 SERDES如果你只用内部 PHY那对应的 SERDES 引脚要按手册要求接地或者悬空。启动模式引脚决定芯片是从 EEPROM 加载配置还是用默认配置如果你不需要 VLAN 之类的复杂功能可以不用 EEPROM让芯片跑默认配置。这里有个血泪经验配置引脚的上下拉电阻不要用太大的值比如 100k因为复位释放瞬间引脚上可能有寄生电容太大的电阻会让采样电平不稳定。4.7k 到 10k 是比较稳妥的范围。另外这些引脚在复位之后可能会被复用成其他功能所以上下拉电阻不能影响正常功能选的时候要看手册的引脚复用表。3. 接口电路设计MDIO、SERDES 和 EEPROM 怎么接3.1 MDIO 总线的上拉和地址分配MDIO 是管理接口用来配置芯片内部的寄存器。88E6321 支持 MDIO 主模式或者从模式取决于你的系统架构。如果板子上有一颗主控 CPU一般让 CPU 做 MDIO 主88E6321 做从CPU 通过 MDIO 读写寄存器来配置 VLAN、QoS 这些功能。MDIO 总线需要一颗上拉电阻典型值 1.5k 到 4.7k接到 3.3V 或者 2.5V取决于 I/O 电压。上拉电阻太小功耗大太大上升沿变缓MDIO 时钟一般不超过 2.5MHz所以 4.7k 通常够用。如果总线上挂了多个 PHY 或者交换芯片每个设备要有独立的 PHY 地址通过配置引脚或者寄存器设置。MDC 是 MDIO 的时钟线由主设备驱动不需要上拉。走线的时候 MDC 和 MDIO 尽量平行走减少 skew长度不要差太多。如果板子上有多个 MDIO 从设备地址分配不要冲突常见做法是用配置引脚给每个设备分配不同的地址。/* 典型的 MDIO 读写操作伪代码展示地址和寄存器操作逻辑 */ #define PHY_ADDR 0x10 /* 88E6321 的 PHY 地址由配置引脚决定 */ #define REG_PORT0 0x00 /* 端口 0 的控制寄存器 */ /* 读寄存器 */ uint16_t mdio_read(uint8_t phy_addr, uint8_t reg_addr) { /* 发送前导码、起始码、读写位、PHY地址、寄存器地址 */ /* 然后读取 16 位数据 */ return data; } /* 写寄存器 */ void mdio_write(uint8_t phy_addr, uint8_t reg_addr, uint16_t data) { /* 发送前导码、起始码、读写位、PHY地址、寄存器地址 */ /* 然后写入 16 位数据 */ } /* 初始化时读取芯片 ID确认通信正常 */ void check_chip_id(void) { uint16_t id_high mdio_read(PHY_ADDR, 0x02); uint16_t id_low mdio_read(PHY_ADDR, 0x03); /* 对比手册中的 ID 值确认 MDIO 通信正常 */ }上面这段代码展示的是 MDIO 通信的基本逻辑实际写驱动的时候要注意时序MDIO 的建立时间和保持时间要满足手册要求。如果读回来的芯片 ID 不对先检查 PHY 地址对不对再检查上拉电阻和走线。3.2 SERDES 接口的 AC 耦合和阻抗控制如果你要用 88E6321 的 SERDES 接口接光模块或者背板那这部分电路比内部 PHY 要复杂得多。SERDES 是差分信号速率 1.25Gbps 或者更高PCB 走线要按差分阻抗 100 欧姆来控制线宽和间距根据叠层来算。AC 耦合电容是必须的典型值 0.1uF放在发送端或者接收端都可以但参考设计里一般放在靠近连接器的那一侧。电容的封装选 0402 或者 0201减小寄生电感。差分对之间的 skew 要控制在 5mil 以内长度匹配很重要。SERDES 的参考时钟如果和内部 PHY 共用要注意时钟分配网络的抖动。如果 SERDES 单独用一颗晶振那晶振的精度要求比内部 PHY 更高一般要求 ±50ppm 以内抖动小于 1ps RMS。提示SERDES 走线不要跨分割地平面参考平面要完整过孔尽量少如果必须换层旁边要加回流地过孔。3.3 EEPROM 配置存储要不要焊怎么烧88E6321 支持从 EEPROM 加载配置EEPROM 通过 I2C 接口连接。参考设计图里通常会画一颗 24C02 或者 24C16容量不大存一些寄存器配置就够了。要不要焊这颗 EEPROM取决于你的应用场景。如果你只需要一个简单的多端口交换机不需要 VLAN 或者端口镜像那可以不焊芯片跑默认配置就行。但如果你需要自定义配置比如划分 VLAN、设置端口优先级、配置镜像口那就需要 EEPROM 或者通过 MDIO 在启动后由 CPU 来配置。EEPROM 的烧录一般有两种方式一种是用编程器离线烧另一种是通过 CPU 的 I2C 总线在线烧。离线烧需要把 EEPROM 焊下来或者用夹子在线烧需要 CPU 的 I2C 驱动支持。我一般会在板子上留一个 I2C 排针方便调试的时候用外部工具读写 EEPROM。# 用 i2c-tools 在线读写 EEPROM 的示例 # 扫描 I2C 总线上的设备 i2cdetect -y 1 # 读取 EEPROM 前 16 个字节 i2cdump -y 1 0x50 # 写入一个字节到指定地址 i2cset -y 1 0x50 0x00 0x01 # 从指定地址读取一个字节 i2cget -y 1 0x50 0x00上面这些命令是在 Linux 环境下用 i2c-tools 操作 EEPROM 的常见做法。i2cdetect 用来确认 EEPROM 的地址24C02 的地址一般是 0x50 到 0x57取决于 A0/A1/A2 引脚的电平。i2cdump 可以看整个 EEPROM 的内容i2cset 和 i2cget 用来读写单个字节。烧录之前最好先备份原始内容万一写错了还能恢复。4. PCB 布局与信号完整性参考设计图不会告诉你的细节4.1 差分对走线和地平面处理88E6321 的内部 PHY 输出是差分信号走线要按 100 欧姆差分阻抗控制。如果是四层板叠层一般是信号-地-电源-信号差分对走在顶层或者底层参考平面是地平面。如果是六层板可以给差分对单独一层参考平面更完整。差分对的线宽和间距根据叠层算比如四层板介质厚度 0.2mm介电常数 4.3差分阻抗 100 欧姆对应的线宽大概是 0.15mm间距 0.2mm。这个值不是固定的要根据板厂的工艺能力调整。走线的时候差分对要等长误差控制在 5mil 以内如果做不到等长就在短的那根上绕蛇形线。地平面处理是另一个容易翻车的地方。差分对下面的地平面要完整不要被其他信号线割裂。如果差分对要换层换层过孔旁边要加回流地过孔给返回电流提供低阻抗路径。电源平面和地平面之间的去耦电容要靠近芯片引脚减小电源噪声。4.2 晶振和模拟电源的隔离晶振是敏感器件走线要短负载电容靠近晶振引脚。晶振下面不要走其他信号线尤其是高速信号避免耦合噪声。如果板子上有多个晶振间距要拉开防止互相干扰。模拟电源的隔离也很重要。88E6321 的模拟电源引脚要单独走线从 LDO 输出直接拉到引脚中间不要经过其他负载。模拟地和数字地一般在芯片下面单点连接或者用磁珠连接具体看手册推荐。如果板子上有 ADC 或者别的模拟器件模拟电源和模拟地要单独规划不要和数字部分混在一起。我一般会在模拟电源引脚旁边放一个 10uF 的钽电容加一个 0.1uF 的陶瓷电容钽电容提供低频储能陶瓷电容滤高频噪声。这两个电容的位置要尽量靠近引脚地回路要短。4.3 散热和过孔设计88E6321 的功耗不算大但满负载的时候也会发热尤其是夏天或者密闭机箱里。芯片底部一般有一个散热焊盘要焊到 PCB 的地平面上通过过孔阵列把热量传到内层或者背面。过孔阵列的设计有讲究过孔不要太大0.3mm 孔径加 0.6mm 焊盘是常见值过孔间距 1mm 左右。过孔太多会影响焊接太少散热不够。我一般会在散热焊盘下面打 9 到 16 个过孔均匀分布。如果板子背面有空间可以在背面铺一块铜皮增加散热面积。注意散热焊盘焊接的时候容易有气泡回流焊曲线要调好保温区时间够长让焊膏充分润湿。5. 调试与排查上电不亮、链路不通、寄存器读不到怎么办5.1 上电后芯片不启动先查电源和复位现象板子上电后MDIO 读不到芯片 ID或者链路一直不 up。原因最常见的是电源没起来或者复位时序不对。用万用表量各路电压看是不是在规格范围内。如果电压正常用示波器看复位引脚的波形确认复位释放的时间是不是在电源稳定之后。如果复位释放太早芯片可能没完成初始化。解决调整 RC 延时网络的参数或者换一颗带 PG 信号的电源芯片。如果电源纹波太大检查去耦电容是不是漏焊或者容值不对。5.2 MDIO 通信失败检查上拉和地址现象MDIO 读写返回全 0 或者全 1芯片 ID 读不对。原因上拉电阻没焊或者阻值太大导致 MDIO 数据线拉不高。或者 PHY 地址配置引脚的电平不对芯片响应的地址和软件里设的不一致。解决量 MDIO 数据线的静态电平应该是高电平。如果低检查上拉电阻。如果上拉正常用示波器看 MDIO 和 MDC 的波形确认时序满足手册要求。地址不对的话查配置引脚的上下拉对照手册的地址表。5.3 链路不稳定查时钟和差分走线现象链路能 up但丢包严重或者跑一段时间就断。原因时钟抖动太大或者差分走线阻抗不连续。晶振的负载电容不对导致频偏超出以太网要求的范围。差分对走线不等长skew 太大。解决用频率计量晶振的实际频率偏太多就换负载电容。用 TDR 测差分走线的阻抗看是不是在 100 欧姆附近。如果走线换层检查回流地过孔是不是够。5.4 EEPROM 配置不生效查 I2C 地址和内容现象EEPROM 焊了但芯片还是跑默认配置。原因EEPROM 的 I2C 地址不对或者内容格式不对。88E6321 从 EEPROM 加载配置的时候对数据的格式有要求不是随便写几个字节就行。解决用 i2cdetect 确认 EEPROM 地址用 i2cdump 看内容是不是符合手册要求的格式。如果格式不对用厂商提供的工具生成配置文件再烧录。5.5 散热问题导致偶发故障现象板子跑一段时间后链路断或者芯片不响应。原因芯片温度过高触发了内部保护或者导致时序漂移。解决用手摸或者热像仪看芯片温度如果超过 70 度检查散热过孔和铜皮面积。机箱里加风扇或者导热垫把热量导到外壳。6. 从参考设计到量产几个能省时间的验证习惯参考设计图给的是一个起点不是终点。从画原理图到板子跑起来中间有很多细节需要自己验证。我一般会在投板之前做几件事先用仿真工具看一下差分走线的阻抗和眼图虽然仿真不能完全代替实测但能提前发现明显的阻抗不连续。然后检查电源的直流压降尤其是核心电压走线太细或者太长会导致压降超标。最后把配置引脚的上下拉再对一遍手册确认没有遗漏。板子回来之后不要急着焊所有的件。先焊电源和芯片量各路电压和复位波形确认电源正常。然后用 MDIO 读芯片 ID确认通信正常。再焊晶振和网络变压器测链路能不能 up。最后焊 EEPROM 和连接器测完整功能。这个顺序能帮你快速定位问题不用一上来就面对一堆不确定。有个习惯我一直在用在板子上留几个测试点MDC、MDIO、复位、各路电源都留一个调试的时候不用飞线。测试点不用太大1mm 的焊盘就够了但能省很多时间。还有原理图和 PCB 的版本号要对应改了一版就更新一版不要混着用不然调试的时候会怀疑人生。提示量产之前一定要做高低温测试和长时间老化很多问题在常温下看不出来温度一上去就暴露了。希望帮到你。本文还有配套的精品资源点击获取