简介:这份资源是 NVIDIA 官方发布的 Jetson AGX Xavier 系列 OEM 产品设计指南英文手册,文档编号 DG-09840-001,版本 v2.5(2021 年 12 月),面向从事嵌入式硬件开发的工程师、载板设计者和 OEM 厂商团队,用于解决基于 Jetson AGX Xavier 模块做定制化主板时遇到的电源、接口与连接器设计问题。包内共 1 个 PDF 文件,约 6.11MB,属于纯文档型资料,便于离线查阅与团队内传阅。手册内容相当扎实:电源部分给出 SYS_VIN_HV 输入与按钮上电电路、MCU 与非 MCU 监控方案;接口部分逐项说明 USB Type A、Type C、PCIe 的 Root Port 与 Endpoint 连接,以及 5 路 UART 和新增 UART7、I2S1/DAP1 信号修正;此外还包含主连接器支架与 2.5mm 高度选型、调试 UART 连接、RAM_CODE 拉电阻、GPIO30 端接与 OVERTEMP_N 上拉等检查清单条目。读者可据此对照完成原理图评审、引脚核对与设计自查,降低返工风险。目前已有 558 人学习。
1. 一块载板连着打回来三版,功能全对,最后卡在振动测试——问题不在电源也不在信号,而是模块和载板之间几颗支撑柱的高度差了几毫米。做 Jetson AGX Xavier 系列 OEM 载板的人大概都经历过类似的事:原理图照着参考设计抄,接口一个个点亮,最后栽在机械、时序这些“文档里写过却没人细看”的地方。DG-09840-001 v2.5 这份设计指南,本质就是把这类约束固定下来——699 pin 主连接器怎么装、各接口怎么上电、PCIe 的 C0 和 C4 为什么不能再当 Endpoint、USB Micro AB 的 ID 脚该接哪个 GPIO、MIPI CSI 的 skew 在不同频段下放宽到多少。它面向的读者,是要拿这块模块做整机的 OEM 硬件团队:从零搭载板、跑通 bring-up、还要通过验收的那批人。
2. 载板骨架设计:699 引脚怎么分、支架高度怎么定
拿到 DG-09840 之后,第一件事不是画原理图,而是把附件里那张全引脚描述表打开。正文里的引脚表在 v2.5 中已经删掉了 MPIO Pad Code 和 Power-on Reset 两列,这两列只保留在附件电子表格里。如果只对着 PDF 正文做信号分配,后面每次查默认上下电状态,都得回头翻表,评审时更是对不上号。699 pin 连接器把模块的电源域、高速串行通道、低速控制信号、调试信号全部挤在一起,先把它们按功能域切开,再谈接口数量能不能满足产品定义,这个顺序不能反。
2.1 先把引脚矩阵切成功能域
引脚矩阵表在 v2.5 里做过一次修正,把 GPIO12(引脚 E10)单独标注为 Safety MCU 用途。这种修正看着不起眼,但如果载板的 GPIO12 已经划给了别的功能,改版就是跑不掉的。稳妥的做法是在选型阶段就把每个功能域拆成独立的分配页,电源一组、高速通道一组、低速控制与 GPIO 一组、调试与 strapping 一组,每组只负责人在评审时只看自己那一页。
把附件表格导成 CSV 之后,用一段脚本按命名前缀先做粗分类,比人工翻 699 行靠谱得多:
import csv # 按网络名前缀先把 699 pin 粗分到功能域,人工只需复核归属不明确的行 FUNC_DOMAIN = { "POWER": ("SYS_VIN", "VDDIN", "STANDBY", "PWR_BAD", "VDD_CPU"), "PCIE": ("PEX_", "UPHY_REFCLK", "NVHS"), "USB": ("USB", "UPHY"), "CSI": ("CSI", "SLVS"), "DEBUG": ("UART", "JTAG", "DBG"), } def domain_of(net): for d, keys in FUNC_DOMAIN.items(): if any(k in net for k in keys): return d return "GPIO/OTHER" rows = list(csv.DictReader(open("pin_desc.csv", encoding="utf-8"))) buckets = {} for r in rows: buckets.setdefault(domain_of(r["Pin Name"]), []).append(r["Pin Name"]) for d, nets in buckets.items(): print(f"{d:12s} {len(nets):4d} {', '.join(nets[:6])} ...")脚本里FUNC_DOMAIN的键是功能域,值是用于匹配的网络名前缀元组,遇到新的命名习惯直接往里加就行;domain_of返回第一个命中的域,没命中的落到GPIO/OTHER,这一组往往就是真正需要人工逐条确认的部分。跑完之后通常会发现 GPIO/OTHER 这一组比想象中大,里面既有真正空闲的脚,也有被其他功能复用的脚——复用的那些必须回到正文表格里核对,不能靠命名猜。
2.2 支架高度不是结构工程师一个人的事
第 3 章前后改了三轮:3.2 节讲模块到载板的间距细节,3.3 节给支撑高度的推荐值,配套连接器的间距和容差落在 Table 3-1 和 Table 3-2 里。v2.5 还补充了 2.5 mm 高度连接器这个选项,等于给机械设计留了一层余量。这一章被反复修订不是没有原因的——支撑柱定高了,模块和连接器插合不到位,个别引脚接触电阻偏大,温循或振动之后就是间歇性故障;定矮了,模块底部会压到载板上的元件,或者散热器的压接力传不到支撑柱上,而是全部压在连接器壳体上。
我一般按这个顺序定:先量模块底面元件最高点,再确定散热器的安装方式和压接力路径,最后回过头来在连接器高度选项里挑一档,用 Table 3-1 的容差反算支撑柱公差。顺序颠倒过来,结构那边先出图,后面就只能靠垫片凑,环境试验一上就露馅。
提示:支撑柱高度和连接器高度是一组联动参数,改一个必须重算另一个,别只改单边。
2.3 安装与拆卸的顺序
v2.0 新增了模块安装与拆卸章节,这部分内容看着像操作规范,实际上直接影响返修率。699 pin 连接器的插合力不小,螺丝一次性从一侧拧到底,连接器壳体受力不均,轻则插合深度不一致,重则壳体轻微变形,后面每次拆装都得和接触不良较劲。
通常的做法是对角分两到三次加力,第一遍只拧到贴合,第二遍到规定扭矩的一半,第三遍再到规定值。拆卸前先断电并等放电完成,带电插拔模块带来的问题,查起来往往是黑匣子——现象是随机的,日志里什么都看不到。
2.4 参考设计能复用到什么程度
第 4 章专门讲参考设计的复用边界。参考设计给出的是一组被验证过的连接关系,不是一份最优布局。板框、接口数量、供电来源这三样只要有一个和参考设计不同,电源和高速通道部分就必须重新推一遍,尤其是电源输入路径和 PCIe 通道分配。把参考设计当成起点而不是终点,后面少返工。
3. 电源链路:分配、时序和开机方式的选择
电源部分在整份文档里修订最频繁,从 2018 年初版到 v2.5,电源相关的章节几乎每一版都有改动:电源和系统引脚描述表更新过、SYS_VIN_HV 输入加进来过、简化 DC 插孔图重画过、基于 MCU 和非 MCU 的按键开机电路各自补过描述、掉电放电和 DV/Dt 电路单独成节过。修订密度高,说明这块是实际项目里问题最集中的地方。
3.1 供电分配:先把每路预算固定下来
Table 5-1 把电源、系统、热相关的引脚放在一张表里,Usage 列在早期版本里专门更新过一次。这张表的价值不在于告诉你哪根脚是干什么的,而在于让你在画原理图第一页之前,就把每一路电源的预算固定下来。
我一般会在原理图首页做一张分配表,列这么几项:电源域名称、额定电压、最大持续电流、峰值电流、上电顺序编号、对应对端器件。峰值电流这一列最容易被空着,而它恰恰是决定走线宽度和去耦电容数量的关键。等载板回来发现某一路在负载瞬变时电压跌落过大,再回头看这张表,通常会发现峰值那一栏当初填的是“参考设计同款”。
SYS_VIN_HV 输入的引入值得单独说一句:主供电不一定非要经过低电压路径绕一圈,高压输入直接进模块在某些产品形态下能省掉一级转换。简化过的 DC 插孔图跟着这次改动一起更新,配套的输入保护器件选型也要相应调整。
3.2 上电时序与掉电放电
5.2 节的上电时序和 5.5 节的掉电放电路是两条必须一起看的线。v2.5 在上电时序图前面补充了更多电源握手信号的细节,STANDBY_ACK_N 的描述也在 v2.4 更新过——握手信号的含义变了,时序验证的判断依据就得跟着变,拿着旧版时序图去测波形,很容易把正常状态判成异常。
DV/Dt 电路从 v2.1 起独立成节(5.5.1),允许禁用或调节,并且给出了一个可选的附加二极管,作用是让电压在触发 VDDIN_PWR_BAD_N 之前多掉一点。这个二极管的意义在于给系统争取有序关机的时间窗口,代价是掉电检测的触发点被推后。参数怎么取,可以先粗算一遍:
# 掉电保持时间粗算:恒流近似下,电容从 V0 放到阈值 V_th 能撑多久 def hold_time(C, I, V0, V_th): dV = V0 - V_th # 允许的电压跌落 t = C * dV / I # 近似恒流放电时间 return dV, t for C in (220e-6, 470e-6, 1000e-6): dV, t = hold_time(C=C, I=1.2, V0=12.0, V_th=9.5) print(f"C={C*1e6:6.0f} uF 可跌落 {dV:.2f} V 保持约 {t*1000:.1f} ms")代码里C是掉电保持电容容量,I是放电期间负载电流,V0是标称输入电压,V_th是 VDDIN_PWR_BAD_N 触发对应的阈值。算出来的保持时间要和系统关机所需时间对照,不够就加容量或者加那颗可选二极管把阈值压低;富余太多则可以考虑减小容量,毕竟大电容的浪涌电流会反过来影响输入保护器件选型。这只是恒流近似,实际负载是变化的,最终还是要靠示波器抓波形确认。
3.3 开机方式:无 MCU、自动上电、按键监督 MCU
5.4 节把开机方式分成了几类,每一类的行为定义都不一样。5.4.1 是无 MCU 方案,其中 5.4.1.1 是自动上电选项——上电即启动,不需要按键。5.4.2 是基于电源按键监督 MCU 的方案,5.4.2.1 定义了行为,后面三小节分别对应三种典型场景:关机状态下按键开机、关机状态下自动上电开机、开机状态下按键保持低电平超过 10 秒强制关机。
选型依据其实就三条:产品有没有自己的主控 MCU、需不需要远程开关机、掉电后希望自动恢复还是等人按。无 MCU 方案器件少、成本低,但行为固定,改不了;MCU 方案灵活,代价是多一颗器件和一段固件,而这段固件的行为必须严格对齐 5.4.2.1 的定义,否则现场会出现“按一下开机、按两下关机、长按没反应”这类说不清的问题。
注意:强制关机的低电平持续时间是 10 秒量级,不是随手定的经验值,固件里的计时逻辑要按定义实现,别自己改。
3.4 掉电检测、电源监控与 Deep Sleep
5.6 节把掉电检测(5.6.1)和电源监控(5.6.2)分成两件事。掉电检测是告诉系统“电要没了,赶紧收拾”,电源监控是持续看电压电流是否在范围内。两者的采样点、阈值和响应时间都不一样,混在一起设计,结果往往是掉电时来不及保存,或者正常波动时误触发。
5.7 节的 Deep Sleep / SC7 是另一个容易被忽略的状态。系统进 SC7 之后,载板上哪些电路还带电、哪些信号需要保持,得在原理图阶段就标清楚,而不是等软件那边发现唤醒失败再回头查。
4. 高速接口实现:PCIe 通道、USB 形态与 CSI 链路
高速接口部分从 v2.0 之后改动最多,PCIe 的通道角色、USB 的连接形态、CSI 的 skew 规则、SLVS 的接法,几乎每一版都动了。这些改动大多是约束收紧或者角色调整,照老版本画的图很可能在新版规则下不成立,所以接口部分一定要对着 v2.5 重新过一遍。
4.1 PCIe 通道分配与 RP/EP 约束
v2.1 对 PCIe 做了一次比较大的调整:C5 只支持 Endpoint,同时 C0 和 C4 从 Endpoint 支持列表里被移除。配套的动作是 Table 7-14 里加入了 UPHY_REFCLK1/2_N/P 引脚但标注为在 C0 和 C4 上作为 EP 时不使用,Table 7-15 里移除了 C0 和 C4 这两行。
| 控制器 | 可作为 Root Port | 可作为 Endpoint | 相关说明 |
|---|---|---|---|
| C0 | 按参考设计配置 | 从 v2.1 起不再支持 | UPHY_REFCLK1 在 EP 模式下不可用 |
| C4 | 按参考设计配置 | 从 v2.1 起不再支持 | UPHY_REFCLK2 同上 |
| C5 | 不作为 RP 使用 | 仅支持 EP | 时钟与控制引脚按 EP 用法连接 |
通道规划我一般写成一份配置文件,画图之前先过一遍,避免画到一半发现角色不对:
# 载板 PCIe 通道规划,按 DG-09840 v2.5 的 RP/EP 约束填写 pcie: - ctrl: C0 role: root_port # v2.1 起不支持 endpoint lanes: 1 device: 板载千兆网卡 - ctrl: C4 role: root_port lanes: 4 device: M.2 Key M 插槽 - ctrl: C5 role: endpoint # 仅支持 EP,不能当 RP lanes: 4 device: 背板上行连接器这份配置里role字段是必须明确的,lanes要和参考设计里的通道宽度对得上,device只是备注用途。评审时只看这份文件就能判断通道分配有没有踩到角色限制,比翻原理图快得多。
除了角色,PCIe 还有几处细节在 v2.5 里被单独提过:PEX_L5 控制加进了 Root Port 的图表,PEX_WAKE_N 在引脚描述表里的用法更新过,RST 的上拉值在图表和检查清单里都修正过,Gen3 的 AC 耦合电容给出了范围而不是单个值,对内 skew 长度做了调整,还补了一张插入损耗的 S 参数曲线(Figure 7-6)用来判断链路裕量。这些数字分散在各处,最稳妥的做法是照着设计检查清单逐条打钩,而不是凭记忆。
4.2 USB:三种连接形态各自改了什么
USB 部分按连接器形态分了三类,每一类的注意事项都不一样。
Type A 的简单连接示例图在 v2.4 又更新过一次,说明这部分的细节一直在打磨。Micro AB 的变化更值得注意:v2.5 把 ID 引脚上的电平转换器拿掉了,改成直接接通用 GPIO,并加上了相关说明,同时推荐使用带电流保护的负载开关给连接器供电。这个改动意味着 ID 检测逻辑从硬件判断变成了软件读取,固件那边如果还按老的固定电平判断,就会出现识别不到设备的问题。Type C 的示例图下面有一条关于固件的注释,v2.5 还更新了相关测试点——Type C 的行为很大程度上由固件决定,硬件设计要和固件版本绑定验证。
布线上,USB 2.0 和 USB 3.1 各有各的规则,最后还要过一遍共用规则。三类接口共用同一套 UPHY 资源,通道分配要在引脚矩阵那一层就定下来,不能等到布线阶段再调。
4.3 显示与视频输入链路
显示侧的改动集中在供电上:Figure 9-1 给 eDP/DP 连接器加了 3.3V 负载开关,Figure 9-3 改成用负载开关给连接器提供 5V 并配了说明。连接器直接挂在常电上,热插拔时的浪涌和短路都没有保护,这类改动看着是加了一颗器件,实际是给现场故障留了条后路。HDMI 部分同样要注意连接器供电和 ESD 器件的摆放顺序。
视频输入侧,MIPI CSI 的 D-PHY 规则在 v2.0 做过一次调整,skew 改成按频率放宽到 0.4*UI,不再是固定值。这条改动对布线是实质性放宽,但如果还按老版本的固定数值要求布线,会白白浪费层数和等长空间。C-PHY 模式在 v2.5 增加了 3-Trio 选项,选型时多了一种通道组合方式。SLVS 接口在 v2.0 补上了 XCE 和 SCLR 信号,连接图里把原来的具体器件名改成了通用名,并新增了 SLVS 连接表——图上的名字变了,但信号含义没变,照图连线的时候别被名字误导。
| 接口 | 关键控制信号 | 版本里改了什么 |
|---|---|---|
| MIPI CSI | XCE、XCLR | v2.0 按 SLVS 的用法校正了连接和方向 |
| SLVS | XCE、SCLR | 补充了 SLVS 连接表,图内器件改为通用名 |
| DP / eDP | 连接器供电使能 | 3.3V 与 5V 均改走负载开关 |
摄像头侧的 I2C 控制链路也别忽略:v2.x 在 I2C 相关章节加了一条关于 M.2 插槽上 I2C 串联电阻的说明,串联电阻的取值直接影响总线上升沿和通信稳定性,尤其是挂了多个从设备的时候。
5. 常见翻车点排查:五个打板后才暴露的问题
这份文档修订了三年多,每一条修订背后大概率都有一个真实项目踩过的坑。下面这几条是载板项目里出现频率最高的,共同点是原理图阶段看不出来,打板之后才暴露。
5.1 PCIe 通道按老版本选型
现象:板子能识别到上游设备,但对端怎么都枚举不到,换线换卡都没用。
原因:v2.1 把 C0 和 C4 从 Endpoint 支持列表里移除了,同时 C5 限定只做 Endpoint。如果通道规划是在旧版本基础上做的,很可能把一个本该做 EP 的通道放在了 C0 或 C4 上,而 UPHY_REFCLK1/2 在这些通道作为 EP 时本来就不输出。
解决:回到 Table 2-1 和 PCIe 章节重新核对每个通道的角色,EP 一律安排在 C5 上。通道规划写进配置文件,评审时逐条对。
5.2 无 MCU 方案上电后松手就掉
现象:按住按键能起来,一松手系统就断电。
原因:只看了 5.4.1 的自动上电选项,没做电源保持逻辑,按键松开后使能信号跟着掉了。
解决:要么按 5.4.1.1 走自动上电,上电即启动不需要按键;要么按 5.4.2 的定义实现按键监督,把开机保持和长按 10 秒强制关机这两段逻辑分开写清楚。
5.3 strapping 引脚少了一颗上拉
现象:批次之间启动行为不一致,同一版板子有的能起来有的起不来。
原因:RAM_CODE 相关的 strapping 引脚对拉电阻有明确要求,v2.x 专门加了注释说明。少了上拉,启动时读到的配置就是浮空状态,受温度和个体差异影响。
解决:把 strapping 部分单独拉一张表,列出每个引脚、要求的上拉或下拉、对应配置值,打板前逐条核对。
5.4 JAXi 上音频接口配了没反应
现象:I2S 通道配置完成,示波器上看不到时钟和数据。
原因:v2.4 在音频引脚描述表里明确标注了 I2S6(SoC 侧 DAP6)在 JAXi 上不支持。如果产品用的是工业级型号,这条限制直接生效。
解决:换到受支持的 I2S 通道,或者在选型阶段就确认目标型号的音频通道支持情况。同一个道理也适用于 UART——UART7 是通过复用 SPI2 引脚实现的,要用 UART7 就得先把 SPI2 让出来。
5.5 进不去 USB 恢复模式
现象:烧录工具扫不到设备,换线换主机都没用。
原因:v2.5 补充了进入恢复模式的最低要求,之前的版本只有流程描述没有门槛条件,少做一步就进不去。
解决:按最小要求逐条对照,包括供电状态、按键时序和 USB 端口位置。恢复模式是最后的保底手段,进不去意味着板子变砖之后没有任何补救途径,这一条必须在 bring-up 第一天就验证通过。
提示:OVERTEMP_N 的上拉电阻在检查清单里被单独列出来过,悬空会让温度监控一直报异常,风扇满转。
6. 验收与 bring-up:从设计检查清单到第一次上电
设计检查清单是这份文档里最容易被跳过的部分,也是打板之后最省时间的部分。v2.5 的附件里还额外挂了一份 bring-up 检查清单,两份东西合起来正好覆盖从画完图到第一次上电的整个过程。
我习惯把它拆成三个阶段来用:
| 阶段 | 检查对象 | 通过标准 |
|---|---|---|
| 原理图评审 | 电源时序编号 | 每一路都有编号,上下游关系与 5.2 节一致 |
| 原理图评审 | PCIe 通道角色 | 只使用 RP/EP 允许的通道组合 |
| 原理图评审 | 上拉下拉 | RAM_CODE、OVERTEMP_N 等清单列出的全部到位 |
| 打板后上电前 | 各电源域对地阻抗 | 无异常低阻,无短路 |
| 首次上电 | 上电顺序波形 | 与 5.2 节时序一致,握手信号状态正确 |
| 首次上电 | 掉电放电 | 断电后电压在预期时间内降到安全值 |
| 接口 bring-up | USB 恢复模式 | 满足最低要求,工具能识别到设备 |
第一次上电的流程值得单独说。我一般先不装散热器,输入用限流电源从比较小的电流起,上电前先量各电源域对地阻抗,确认没有明显短路再通电。通电后第一件事不是看系统起没起来,而是抓上电顺序波形,和 5.2 节的时序图逐段比对。顺序对了再看掉电:断开输入,看电压是不是按 DV/Dt 电路的预期降下去,VDDIN_PWR_BAD_N 有没有在正确的位置触发。
接口 bring-up 的顺序建议从调试串口开始。v2.x 把调试 UART 的接法单独写了一节,UART3 的示例图也更新过,先把串口打通,后面所有问题都有日志可看。串口通了之后验证 USB 恢复模式,再往下才是 PCIe 枚举、显示输出、CSI 出图这些。
从那以后我每次画完载板,都会把检查清单打印出来逐条打钩、签上日期,上电第一步永远是用限流电源从 1 A 起,测完时序再挂外设。这套流程不新鲜,但确实能挡掉大部分需要飞线才能救回来的问题。希望帮到你。
本文还有配套的精品资源,点击获取