1. 从核心板到产品板:AGX Orin外围电路到底在解决什么问题
拿到一块Jetson AGX Orin模组的时候,很多人第一反应是把它当成一块"大号开发板"来用——插上电源、接上显示器、烧个系统就完事了。但真正做过量产项目的人都知道,模组本身只是一个裸的核心计算单元,它没有标准的对外接口,没有电源管理,没有时钟源,没有调试通道,甚至连最基本的启动介质都需要你在载板上自己安排。外围电路设计要做的,就是把这些"缺失的部分"补齐,让模组从一个裸核心变成一个能跑起来、能接外设、能稳定工作的完整系统。
我接触AGX Orin的载板设计是从一个边缘计算盒子项目开始的。当时团队里有人觉得"不就是照着参考设计抄一遍嘛",结果第一版板子回来,上电之后串口毫无输出,排查了整整两天才发现是电源时序的问题——模组要求的多路供电上电顺序和我们的PMIC配置对不上,导致核心电压还没稳定,IO电压就已经拉高了,模组直接进入保护状态。这个教训让我意识到,AGX Orin的外围电路设计远不是"连线"那么简单,它涉及电源树规划、时序控制、高速信号完整性、启动介质选型、调试接口预留等一系列需要通盘考虑的问题。
这篇文章主要面向正在做或准备做AGX Orin载板设计的硬件工程师,以及需要理解硬件底层的嵌入式软件开发者。我会从电源架构、启动与存储、调试与恢复通道、高速接口与时钟这几个维度,把外围电路设计中最容易出问题、也最需要提前规划的部分拆开来讲。不会照搬官方设计指南的条目,而是结合我在实际项目中踩过的坑和验证过的方案,把"为什么这么设计"和"不这么设计会怎样"讲清楚。
需要提前说明的是,AGX Orin的模组引脚定义和电气规范在官方文档里有详细说明,我这里不会逐条罗列引脚,而是聚焦在那些文档里写了但容易忽略、或者文档没写但实际会遇到的工程问题上。如果你手上还没有官方设计指南和模组数据手册,建议先去下载,后面的内容需要对照着看。
2. 电源树规划:多路供电的时序与余量才是真正的难点
2.1 AGX Orin的供电需求拆解
AGX Orin模组对电源的需求可以粗略分成几大类:核心计算域的CPU/GPU/DLA供电、内存供电、IO域供电、以及各种辅助电源。官方给出的典型供电方案是多路PMIC配合外部DC-DC,输入通常是5V或12V的宽压范围。但这里有个容易被忽略的点:模组内部虽然有PMIC,但它需要外部提供的是"预调节"后的电压,而不是直接把电池或适配器电压灌进去。
具体来说,模组通常需要外部提供以下几路关键电源:VDD_IN主输入(一般是5V或12V)、VDD_CPU_GPU_CV核心供电(由外部DC-DC提供,电压在0.8V左右但电流极大)、VDD_SOC、VDD_DDR、以及1.8V/3.3V的IO电源。每一路的电流需求和纹波要求都不一样,核心供电那一路在满载时电流可以到几十安培,这对DC-DC的选型和PCB布局都是很大的考验。
我在第一个项目里犯的错误是:按照模组标称的TDP来选DC-DC的电流等级,结果实际跑满载推理的时候,核心供电的瞬态响应跟不上,导致模组频繁触发欠压保护。后来用示波器抓了核心电压的纹波和负载瞬态波形,发现峰值电流远超标称值,而且负载跳变时的电压跌落超过了模组的容忍范围。解决办法是换用更大电流等级、更低ESR输出电容的DC-DC方案,同时在布局上把输出电容尽量靠近模组的供电引脚。
2.2 上电时序:为什么你的板子第一次上电没反应
电源时序是AGX Orin外围电路设计里最容易被低估的部分。模组对多路电源的上电顺序有明确要求:通常是核心供电先建立,然后是SOC和DDR,最后才是IO电源。如果顺序反了,比如IO电源先于核心供电建立,模组内部的ESD保护二极管可能会形成意外通路,导致漏电流过大甚至损坏。
更隐蔽的问题是掉电时序。很多设计只关注上电顺序,忽略了掉电时各路电源的放电速度不一致。如果核心供电掉得比IO电源快,同样可能触发模组内部的保护机制。我在一个项目里遇到过偶发性的"上电不启动"问题,排查了很久才发现是某一路电源的使能信号释放时间不一致,导致掉电时序混乱。后来在使能信号上加了RC延时和放电二极管,确保掉电时IO电源先于核心供电下降,问题才彻底解决。
实际设计中,我建议用一颗专门的电源时序控制器(比如带PG信号级联的PMIC或者独立的sequencer芯片)来管理各路电源的使能和PG信号。不要试图用简单的RC延时来凑合,因为温度和批次差异会让RC延时变得不可靠。另外,每一路电源的PG信号都要接到模组的对应引脚上,让模组知道电源是否已经稳定,否则模组可能会在电源还没准备好的时候就开始启动流程。
2.3 电源余量与热设计
电源余量这件事,我的经验是:标称值至少留30%的余量,瞬态响应要按峰值电流的1.5倍来设计。AGX Orin在跑深度学习推理的时候,GPU和DLA的负载是脉冲式的,电流变化率很高,如果DC-DC的环路响应不够快,电压就会出现明显的跌落和过冲。
热设计也是电源部分必须考虑的问题。核心供电的DC-DC在满载时效率通常在85%到90%之间,剩下的10%到15%都变成了热量。如果载板空间有限,散热措施不到位,DC-DC的温度会很快升上去,轻则效率下降,重则触发过热保护。我在一个紧凑型盒子里做设计的时候,给核心供电的DC-DC加了导热垫直接贴到金属外壳上,同时把电感选用了低DCR的型号,温升控制在了可接受范围内。
注意:电源部分的PCB布局比选型更重要。核心供电的输入电容和输出电容必须尽量靠近DC-DC芯片和模组引脚,功率回路的面积要尽可能小,反馈走线要远离电感和开关节点。这些细节如果没做好,再好的选型也白搭。
3. 启动介质与存储:QSPI、eMMC和NVMe到底怎么选
3.1 启动流程与QSPI的角色
AGX Orin的启动流程和普通的ARM开发板不太一样。模组内部有BootROM,上电后会先从QSPI Flash里读取引导程序,然后根据引导程序的配置去加载操作系统。QSPI Flash在AGX Orin载板上通常是必须的,因为它存放的是最底层的引导固件,包括MB1、MB2、UEFI等组件。
QSPI Flash的选型要注意几点:容量通常需要32MB或64MB,具体取决于你用的JetPack版本和引导配置;接口速率要支持模组要求的Quad SPI模式;最重要的是,QSPI Flash的供电要和模组的QSPI IO电压匹配,通常是1.8V。我在一个项目里用了3.3V的QSPI Flash,结果模组的QSPI控制器识别不到,后来加了电平转换才解决。
QSPI Flash的布局也有讲究。它离模组的QSPI引脚越近越好,走线要等长,阻抗要控制好。如果走线太长或者有分支,高速读写的时候容易出现误码,导致启动失败或者系统不稳定。我一般会把QSPI Flash放在模组背面,走线长度控制在2厘米以内,并且避免在QSPI走线附近走其他高速信号。
3.2 eMMC与NVMe的分工
AGX Orin模组本身通常不带eMMC,存储需要载板提供。常见的选择有两种:一是板载eMMC芯片,二是通过M.2接口接NVMe SSD。这两种方案各有适用场景。
板载eMMC的优点是成本低、占用空间小、不需要额外的接口电路,适合对存储容量要求不高、成本敏感的产品。缺点是容量固定,后期无法升级,而且eMMC的读写速度相比NVMe有明显差距。如果你的应用需要频繁读写大量数据,比如多路视频录制或者大型模型加载,eMMC可能会成为瓶颈。
NVMe方案通过M.2 M-Key接口连接SSD,优点是容量灵活、速度快、可更换。缺点是增加了接口电路的设计复杂度,需要处理PCIe信号完整性、供电和散热问题。M.2接口的PCIe Gen4信号对PCB走线要求很高,差分对的阻抗要控制在85欧姆,走线长度要尽量短,过孔要尽量少。我在设计第一版NVMe载板的时候,因为PCIe走线没有做阻抗控制,导致SSD识别不稳定,后来重新调整了叠层和走线参数才解决。
实际项目中,我通常建议客户采用"QSPI + NVMe"的组合:QSPI放引导固件,NVMe放操作系统和用户数据。这样既保证了启动的可靠性,又提供了足够的存储性能和容量。如果成本压力大,可以用"QSPI + eMMC"的方案,但要做好容量规划,避免后期存储不够用。
3.3 存储介质的启动配置
AGX Orin的启动介质选择是通过模组上的配置引脚或者QSPI里的引导配置来决定的。如果载板上同时有eMMC和NVMe,需要确保引导配置正确指向你想要的启动设备。我在一个项目里遇到过这样的问题:板子上同时装了eMMC和NVMe,但引导配置默认从eMMC启动,而系统实际装在NVMe上,结果每次启动都进入恢复模式。后来通过修改QSPI里的引导配置,把启动顺序改成NVMe优先,问题才解决。
另外,NVMe SSD的供电也要注意。M.2接口通常需要3.3V供电,电流需求根据SSD的功耗不同,一般在2A到3A左右。如果载板的3.3V电源余量不够,SSD在满载读写的时候可能会掉电,导致系统崩溃。我一般会为NVMe单独配一路DC-DC或者LDO,确保供电稳定。
4. 调试与恢复通道:串口、USB和按键一个都不能少
4.1 调试串口:最可靠的救命通道
不管你的产品最终是否保留调试接口,在开发阶段和量产测试阶段,调试串口都是必不可少的。AGX Orin的调试串口通常是UART,波特率115200,通过模组的特定引脚引出。这个串口在系统启动的最早期就会输出信息,包括BootROM的日志、引导程序的日志、以及内核启动日志。当系统起不来的时候,串口输出是唯一能告诉你"卡在哪一步"的信息来源。
我在设计载板的时候,一定会把调试串口引到一个标准的排针或者USB转串口芯片上,并且确保这个接口在板子装配完成后仍然可以访问。有些紧凑型设计为了省空间把串口省略了,结果出了问题只能拆机飞线,非常痛苦。调试串口的电平通常是1.8V,如果直接接3.3V的USB转串口模块,需要加电平转换,否则可能损坏模组的UART引脚。
4.2 USB恢复模式:变砖之后的最后手段
AGX Orin支持通过USB进入恢复模式(Recovery Mode),用于重新烧录引导固件和系统镜像。进入恢复模式通常需要在上电时按住特定的按键或者短接特定的引脚。这个功能在系统引导损坏、QSPI固件出错、或者需要批量烧录的时候非常有用。
载板设计时,我建议把恢复模式的按键或者跳线引出来,并且标注清楚。有些设计把恢复按键放在板子背面或者需要拆壳才能按到的地方,量产烧录的时候非常不方便。另外,USB恢复接口通常是USB 2.0的Micro-B或者Type-C接口,这个接口在系统正常启动后也可以作为普通的USB设备接口使用,所以不算浪费。
提示:恢复模式的USB接口和调试串口最好放在同一侧,并且用不同的丝印标注清楚。我在量产测试的时候,经常需要同时接串口看日志和接USB烧录,如果两个接口离得太远,操作起来很别扭。
4.3 电源按键与复位电路
AGX Orin模组有专门的电源按键和复位引脚。电源按键用于触发系统的开关机流程,复位引脚用于强制复位模组。这两个信号在载板上需要正确处理:电源按键通常需要接一个上拉电阻和去抖电容,复位引脚需要确保在上电时保持有效直到电源稳定。
我在一个项目里遇到过复位电路设计不当导致的问题:复位引脚的RC延时太短,电源还没完全稳定复位就已经释放了,模组偶尔会启动失败。后来把复位延时的RC参数调整了一下,确保复位信号在电源稳定后至少保持100ms,问题就消失了。电源按键的去抖也很重要,如果去抖没做好,按一次键可能会被识别成多次,导致系统反复开关机。
5. 高速接口与时钟:PCIe、USB和MIPI的布局要点
5.1 PCIe接口的阻抗与走线
AGX Orin提供了多路PCIe控制器,可以配置成不同的通道数和速率。载板上如果需要接NVMe SSD、Wi-Fi模组或者其他的PCIe设备,就需要设计PCIe接口电路。PCIe Gen4的差分信号速率是16GT/s,对PCB走线的阻抗控制、损耗和串扰都有严格要求。
差分对的阻抗通常要求85欧姆(有些设计用90欧姆),走线要尽量短,过孔要尽量少。如果走线必须换层,要在过孔附近加回流地过孔。差分对之间的间距要足够大,避免串扰。我在设计PCIe走线的时候,一般会要求PCB厂提供阻抗测试报告,确保实际阻抗在公差范围内。
AC耦合电容也是PCIe接口必须的,通常放在发送端,容值在100nF左右。这些电容要选用高频特性好的型号,封装尽量小,减少寄生参数。我有一次用了0402封装的普通电容,结果PCIe链路训练不稳定,后来换成0201的高频电容才解决。
5.2 USB接口的差分走线与保护
AGX Orin的USB接口包括USB 2.0和USB 3.2,载板上通常需要引出至少一路USB用于调试和外设连接。USB 2.0的差分信号速率是480Mbps,USB 3.2的速率更高,对走线的要求也不同。
USB 2.0的差分对阻抗要求是90欧姆,走线要等长,长度差控制在5mil以内。USB 3.2的差分对要求更严格,除了阻抗和等长,还要注意插入损耗和回波损耗。我在设计USB 3.2接口的时候,会在差分对上串联共模电感,抑制共模噪声,同时在接口处加ESD保护器件,防止静电损坏模组的USB控制器。
ESD保护器件的选型要注意结电容,USB 3.2的速率很高,结电容太大的保护器件会影响信号质量。我一般选用结电容在0.5pF以下的TVS二极管,并且尽量靠近接口放置。
5.3 MIPI CSI接口的时钟与数据线
如果载板需要接摄像头模组,就会用到MIPI CSI接口。AGX Orin支持多路MIPI CSI,每路包括一对时钟差分线和若干对数据差分线。MIPI CSI的速率根据摄像头模组的不同,可以从几百Mbps到几Gbps不等。
MIPI CSI的差分对阻抗通常要求100欧姆,走线要等长,时钟线和数据线之间的长度差也要控制。我在设计MIPI接口的时候,会把差分对走在同一层,避免换层带来的阻抗不连续。如果必须换层,会在过孔附近加地过孔,并且确保换层后的参考平面一致。
MIPI CSI的供电也要注意,摄像头模组通常需要多路电源(比如1.8V、2.8V、1.2V等),这些电源的噪声会直接影响图像质量。我一般会为摄像头模组的模拟电源单独加LC滤波,并且把电源走线和MIPI信号线隔离开。
5.4 时钟源的选择与布局
AGX Orin模组需要外部提供参考时钟,通常是24MHz或者38.4MHz的晶振。这个时钟的精度和抖动直接影响模组内部PLL的性能,进而影响PCIe、USB等高速接口的稳定性。
晶振的选型要注意频率精度(通常要求±20ppm以内)和相位抖动(对于高速接口,抖动要求更严格)。晶振的布局要尽量靠近模组的时钟输入引脚,走线要短且远离干扰源。我在一个项目里把晶振放在了板子边缘,靠近DC-DC电感,结果时钟抖动超标,PCIe链路不稳定。后来把晶振移到模组附近,并且加了屏蔽罩,问题才解决。
6. 那些参考设计里不会写的工程细节
6.1 去耦电容的摆放比数量更重要
AGX Orin模组的电源引脚很多,每个引脚都需要去耦电容。官方参考设计里会给出每个电源域需要的电容数量和容值,但不会告诉你这些电容该怎么摆。我的经验是:小容值的电容(比如0.1uF、0.01uF)要尽量靠近引脚,大容值的电容(比如10uF、22uF)可以稍微远一点。如果空间允许,每个电源引脚旁边都放一个0.1uF的电容,然后再在电源域附近放几个大容值的储能电容。
去耦电容的接地回路也很重要。电容的接地端要尽量短,最好直接打到地平面,不要通过长走线连接到地。我见过一些设计把去耦电容放在板子背面,通过过孔连接到正面的电源引脚,这种做法的效果取决于过孔的质量和数量,如果过孔太少或者太长,去耦效果会大打折扣。
6.2 连接器的选型和可靠性
载板上的连接器包括电源输入连接器、调试接口连接器、高速接口连接器等。这些连接器的选型不仅要考虑电气性能,还要考虑机械可靠性和插拔寿命。我在一个项目里用了便宜的排针做调试串口,结果在量产测试的时候,排针被反复插拔后接触不良,导致测试数据时好时坏。后来换成了带锁扣的连接器,问题才解决。
高速接口的连接器更要慎重。PCIe和USB 3.2的连接器要支持相应的速率,阻抗要匹配,否则会影响信号完整性。M.2连接器要选择质量好的品牌,因为SSD的插拔力比较大,劣质连接器容易损坏。
6.3 PCB叠层与阻抗控制
AGX Orin载板的PCB叠层设计直接影响高速信号的性能。我通常会用至少6层板,信号层和地平面交替排列,确保每条高速信号都有完整的参考平面。电源平面和地平面要尽量靠近,形成平板电容,有助于电源完整性。
阻抗控制方面,PCIe差分对通常要求85欧姆,USB 2.0要求90欧姆,MIPI CSI要求100欧姆。这些阻抗要求需要和PCB厂沟通,在叠层设计的时候就确定好走线宽度和间距。我一般会要求PCB厂提供阻抗计算报告,并且在首件的时候做TDR测试,确保实际阻抗符合要求。
6.4 散热与结构配合
AGX Orin模组的功耗不低,满载的时候可能需要主动散热。载板设计的时候要考虑散热器的安装方式,以及模组和散热器之间的导热界面材料。如果载板上有其他发热器件(比如DC-DC、NVMe SSD),也要考虑它们和模组之间的热干扰。
我在一个紧凑型设计里,把NVMe SSD放在了模组旁边,结果SSD的发热让模组附近的温度升高了十几度,导致模组降频。后来调整了布局,把SSD移到了板子另一侧,并且加了导热垫把热量导到外壳上,问题才解决。结构配合方面,载板的安装孔位置要和外壳匹配,连接器的开口位置也要和外壳对齐,这些看起来是小事,但如果在设计后期才发现对不上,改起来就很麻烦。
7. 从原理图到量产:我的检查清单和踩坑记录
7.1 原理图评审时重点看什么
原理图评审是发现问题的第一道关卡。我在评审AGX Orin载板原理图的时候,会重点检查以下几项:电源时序控制逻辑是否正确,每一路电源的PG信号是否都接到了模组;QSPI Flash的供电和IO电压是否匹配;调试串口的电平是否匹配;恢复模式的按键或跳线是否可用;PCIe和USB的AC耦合电容是否放在了正确的位置;晶振的频率和精度是否符合要求。
还有一个容易忽略的点是模组的配置引脚。AGX Orin有一些配置引脚用于设置启动模式、PCIe通道配置等,这些引脚在上电时会被采样,所以必须确保它们在正确的时间处于正确的电平。我一般会在这些引脚上加测试点,方便调试的时候测量。
7.2 首板调试的排查顺序
首板回来之后,不要急着上电。先做目视检查,确认没有明显的焊接问题,然后用万用表测量各路电源的对地阻抗,排除短路。确认没有短路之后,再上电测量各路电源的电压,确保在模组允许的范围内。
如果串口没有输出,按照以下顺序排查:先确认电源电压和时序是否正确;再确认QSPI Flash是否焊接良好、供电是否正常;然后确认模组的配置引脚电平是否正确;最后检查晶振是否起振。我在一次调试中遇到串口无输出的问题,排查了一圈才发现是QSPI Flash的片选信号没有正确连接,导致模组读不到引导程序。
7.3 量产前的验证项目
量产前需要做的验证包括:高低温测试,确认电源和时钟在温度范围内的稳定性;长时间满载测试,确认散热和电源余量足够;反复开关机测试,确认电源时序和复位电路可靠;高速接口的兼容性测试,确认不同品牌的NVMe SSD和USB设备都能正常工作。
我还会做一项"暴力测试":在系统满载运行的时候,反复插拔USB设备和NVMe SSD,看系统是否会崩溃或者识别异常。这个测试能暴露一些在正常使用中不容易发现的问题,比如ESD保护不足、电源瞬态响应不够等。
7.4 几个让我印象深刻的坑
第一个坑是电源时序。前面已经讲过,这里不再重复,但我想强调的是:电源时序的问题往往不是必现的,可能十次上电只有一次失败,这种偶发问题最难排查。所以设计阶段就要把时序控制做扎实,不要抱有侥幸心理。
第二个坑是QSPI Flash的兼容性。不同品牌的QSPI Flash在时序参数上可能有差异,有些模组对QSPI的时序要求比较严格,换了Flash品牌之后可能就无法启动。我一般会选用官方推荐列表里的Flash型号,如果必须用其他型号,会先做小批量验证。
第三个坑是PCIe的参考时钟。AGX Orin的PCIe控制器需要参考时钟,这个时钟可以来自模组内部,也可以来自外部。如果使用外部时钟,要确保时钟的精度和抖动满足PCIe的要求。我在一个项目里用了普通的晶振做PCIe参考时钟,结果链路只能跑到Gen2,后来换了低抖动的时钟源才跑到Gen4。
第四个坑是连接器的机械干涉。载板上的连接器和外壳之间的配合很容易出问题,特别是Type-C和M.2这类有明确外形标准的连接器。我在一个项目里因为外壳的开口位置偏了1毫米,导致Type-C线插不进去,只能重新做外壳。所以结构设计和PCB设计一定要同步进行,不要等板子回来了才发现装不上。
这些经验都是我在实际项目中一点一点积累起来的,有些是花了时间和成本才换来的教训。AGX Orin的外围电路设计涉及的知识面很广,从电源到高速信号,从原理图到PCB布局,每一个环节都有需要注意的细节。希望这些内容能帮你在设计中少走一些弯路。如果你正在做相关的项目,建议在原理图评审和PCB布局阶段就多花时间检查,因为这两个阶段发现问题的成本远低于板子回来之后。