
这段时间一直在忙一个平台级的roll out同一颗Tiger Lake处理器同时开发两块板子——一块Thin Mini-ITX规格的单板计算机SBC一块COM Express Type 6的COMe核心模块。很多人问为什么不只做其中一个形态其实这个选择背后有不少产品层面的考量。这篇文章把整个项目从规格定义到设计要点、从调试坑到量产经验的完整链路梳理一遍给正在做类似嵌入式主板或者准备评估Tiger Lake平台的团队一些参考。1. 为什么是Tiger Lake为什么同时做SBC和COMe1.1 两种形态解决两种客户需求先说结论SBC和COMe面向的是完全不同的交付模式。Thin Mini-ITX SBC是一块完整可用的主板客户拿到手接上内存、硬盘、电源适配器就能跑系统外形统一、安装简单非常适合数字标牌、自助终端、边缘网关这类需要快速部署的场景。COMe模块则是一个半成品它把CPU、内存、供电和核心芯片组全部压缩在一块小板上客户拿回去要自己设计载板Carrier Board把模块插到载板的连接器上再根据自己的产品定义引出接口和功能。这两类客户的技术能力差别很大。前者希望厂商把90%的工作做完他们只做应用层开发后者通常是有点硬件研发实力的工控厂商他们需要的是灵活的pin脚定义和可定制的外围电路而不是一块被固定好的主板。把两种形态放到同一个平台周期里做核心IP是复用的——同样的Tiger Lake SKU、同样的BIOS代码基线、同样的供电设计思路只是拼板和接口布局不同。1.2 Tiger Lake在嵌入式市场的位置选Tiger Lake而不是更新的平台不是因为它最先进而是因为它在这个时间节点上匹配了大量存量工控项目的升级需求。Tiger Lake采用10nm SuperFin工艺Willow Cove内核单核性能比上一代Ice Lake有明显提升核显升级到Iris Xe解码能力覆盖到AV1显示输出支持DP 1.4和HDMI 2.0内存支持DDR4-3200和LPDDR4x-4266。这些特性对于一台需要跑Windows/Linux、要输出4K内容、还要做轻度AI推理的工控设备来说完全是够用的。更关键的是Intel嵌入式SKU的长时间供货承诺。我们选的是E后缀处理器比如i5-1145G7E、i7-1185G7E这类产品生命周期比普通消费级CPU长很多。做嵌入式产品的都知道整机厂最怕的不是性能不够而是用了两年的芯片突然停产被迫改板、重新过认证。Tiger Lake在这方面的优势是成熟且还在生命周期内——既不是刚量产时一堆软件兼容问题的状态也不是被Intel宣告EOL的状态。1.3 规格定义阶段就要想清楚的边界条件项目启动的第一周我们把最重要的几个边界条件锁定下来板型Thin Mini-ITX17cm x 17cmCPU散热器限高25mm以内供电输入SBC采用标准19V DC-inCOMe模块按载板12V/5V_SBY供电设计内存SBC用SO-DIMM插槽COMe模块用板载内存简化载板设计显示输出SBC做HDMIDPLVDS三路COMe通过Type 6的DDI引脚引出工作温度0℃到60℃为标准范围不追求虚标的宽温但要求稳定软件交付同一个BIOS基线通过配置项区分SBC和COMe模式这里想特别提醒一点规格书上的每一句话都会转化为设计工作量。支持4K显示和支持三路4K显示是两个量级的任务后者需要核显的DDI分配、主板的layout、BIOS中的display detect逻辑全部配合。所以第一阶段多花几天把需求问清楚比后面返工省太多时间。2. Thin Mini-ITX SBC的设计核心2.1 19V电源输入和多路供电树Thin Mini-ITX标准规定使用19V直流输入通常是那种中间带针的标准笔记本适配器接口。这个限制带来一个设计问题整个系统所有电压都要从19V转换而来。Tiger Lake的CPU核心电压VCCIN大概在1.0V左右但电流峰值能到30A以上这个电压轨必须用多相Buck电路来做不能简单挂一颗LDO。具体到我们的供电树大致分为三路第一路从19V降压到12V和5V给风扇、SATA、USB等外围设备供电第二路从19V直接降压到VCCINCPU核心和VCCSASystem Agent这两路是动态负载需要VR控制器实时响应第三路是待机电源19V输入先经过一级降压产生5V_SBY再降压到3.3V_SBY保证系统在关机状态下USB唤醒、网络唤醒功能可用实际Layout的时候电源部分占了主板差不多四分之一的面积。多相供电的每个相位都要放功率电感、MOSFET和去耦电容这些元件还要靠近CPU插座。这里有个很多新手容易忽略的点VCCIN的去耦电容阵列不是越多越好关键是环面积要小。电容放得太远等效串联电感增大反而会造成高频纹波恶化。2.2 内存、显示与PCIe通道分配Tiger Lake的内存控制器支持DDR4和LPDDR4x但Thin Mini-ITX的板高限制让我们优先选了SO-DIMM插槽。两条SO-DIMM支持双通道最大容量64GB。不过设计上有个取舍SO-DIMM插槽高度大概9.5mm左右加上PCB和底部元件散热器限高25mm的情况下留给CPU散热器的高度就变得非常紧张。所以我们把内存插槽放在了CPU插座的另一侧让散热器直接压在CPU上不跟内存打架。显示输出方面Tiger Lake核显支持多路DDIDigital Display Interface。我们做了三路物理输出HDMI 2.0、DP 1.4、eDP转LVDS这里通过一颗eDP转LVDS的桥接芯片兼容老款LVDS屏。这里有个经验HDMI接口需要额外加电平转换和ESD保护不能直接把SoC引脚拉出来。Tiger Lake的HDMI信号是通过DDI转出来的需要一颗LSPCON芯片做协议转换同时PCB走线要注意差分对的等长控制否则高分辨率下容易出现雪花点。PCIe通道分配上Tiger Lake处理器直出的PCIe Gen4通道给了M.2 NVMe插槽PCH引出的PCIe Gen3通道则分给了Wi-Fi模块、intel网卡和扩展插槽。这里要特别注意PCIe Gen4的走线要求比Gen3严格得多差分对等长要做到5mil以内过孔数量尽量少信号层要参考完整的地平面。我们第一版在M.2连接器附近走线过密结果Gen4 SSD经常训练到Gen1速度后来通过加宽走线间距和调整过孔位置才解决。2.3 散热方案与结构限高Thin Mini-ITX的散热是整板设计里最有挑战的部分。限高25mm意味着不能直接用那种塔式散热器只能采用下压式离心风扇的方案。我们用了一颗纯铜底座、铝鳍片的下压式散热器搭配40mm鼓风机实测i5-1145G7E在28W持续负载下核心温度稳定在78℃左右。如果需要跑到i7-1185G7E的35W以上就得把散热器换成均热板方案成本会明显上涨。还有个细节风扇调速。Intel FSP会通过EC读取CPU温度输出PWM控制风扇转速。但很多工控整机并没有接EC只是把风扇接到主板的四针风扇座。这种情况下需要在BIOS里把风扇策略从EC控制改为SIO控制否则风扇会一直满速转噪音感人。我们的做法是用一颗Super I/O芯片的硬件监控功能直接读CPU温度寄存器按温区线性调整PWM输出这套逻辑在BIOS的Advanced菜单里开放给客户配置。3. COMe模块的关键实现3.1 为什么选COM Express Type 6COMe模块Computer-on-Module遵循PICMG COM Express标准目前主流是Type 6和Type 10两种引脚定义。Type 10引脚数少体积小84mm x 55mm适合HMI这种接口需求简单的场景Type 6引脚数多支持PCIe x16、DDI、VGA、LVDS、SATA、USB3.0等全套信号扩展能力最强。我们的COMe模块最终选了Type 6 Compact规格95mm x 95mm。原因很简单Tiger Lake的PCH引出的接口数量比较多Type 10的pin脚完全不够用Type 6才能把PCIe、USB、SATA、DDI这些高速信号全部引到连接器上。同时Compact尺寸是95mm x 95mm跟Type 6 Basic125mm x 95mm相比载板设计占的面积更小更符合客户定制产品小型化的需求。接口信号分配上我们把Tiger Lake的PCIe Gen4直连通道全部路由到Type 6连接器的PCIe x16针脚位客户在载板上可以灵活配置为单条x16、双条x8或者x8x4x4的组合。DDI接口分配了两组DP信号一组HDMI信号载板通过桥接芯片转换成客户需要的物理接口。这里需要提醒COMe连接器本身是0.5mm间距的板对板连接器高速信号在模块板和载板之间传输时连接器的插入损耗和回波损耗不可忽视。所以Layout时高速信号对在连接器附近要尽量短走线换层处要加回流地过孔。3.2 模块上的供电与信号完整性COMe模块的供电和SBC完全不同。SBC的19V进来以后主板自己搞定一切而COMe模块的输入电源由载板提供标准定义是12V主电源加5V_SBY待机电源。模块上的多相VR直接从12V降压到VCCIN这比19V输入的转换效率略低一点但好处是载板设计简单而且12V在工控系统里本来就很容易由标准ATX电源或工业电源提供。板载内存是COMe模块的常规操作。我们把内存颗粒直接贴在模块上四颗DDR4颗粒组成双通道容量16GB或32GB可选。板载内存的优点是省掉了SO-DIMM插座的体积信号完整性更好也避免了插槽在振动环境下接触不良的问题。代价是内存故障时没法单独更换只能整个模块返修。所以生产测试时要格外重视内存的压力测试MemTest跑48小时不出错才算通过。高速信号是COMe模块设计里最花时间的地方。Tiger Lake的PCIe、USB3.2、DP这些信号频率都很高模块板面积又小要把几十对差分线从BGA扇出到连接器同时还要保证阻抗连续、等长匹配这不是一件容易的事。我们的做法是先在原理图阶段就把高速信号的走线层固定下来比如PCIe走TOP到BOTTOM的特定层对DDR走内层避免信号层交叉串扰。第一次投板后做了一次单端和差分阻抗测试确认控制在100Ω±10%以内才进入后续测试。3.3 从模块到载板的调试节奏COMe项目的调试有个特点模块本身不能独立工作必须插在载板上才能跑。所以板厂回来后我们做的第一件事是设计一块最小载板只引出电源、一个DP显示、一个USB串口用来验证模块能不能POST。这个最小系统很关键它把问题范围限制在模块硬件本身而不是载板的外围电路。验证到模块能稳定进BIOS Setup之后再把全功能载板拿出来跑完整测试。调试顺序一般是电源时序→复位信号→LPC/SPIBIOS启动→显示输出→USB→PCIe→SATA→网卡。这个过程如果遇到问题用逻辑分析仪抓LPC、SPI波形定位是最快的。有个印象很深的案例模块在最小载板上一切正常插到客户的全功能载板上就死活不开机最后抓到是载板的PWRBTN信号没有做上拉导致按钮松开后一直处于低电平系统一直认为电源按钮被按住。4. 从设计到量产BIOS定制与验证流程4.1 BIOS定制同一个基线两种配置SBC和COMe共用一套BIOS代码通过CMOS设置和硬件检测来区分模式。BIOS定制这里有几个常规项目显示输出优先级SBC主板默认优先走HDMICOMe模块走DP检测不到再fallback到eDP/LVDS串口重定向Serial Redirection两个产品都开启方便产线在无显示器环境下烧录和测试上电策略Restore AC Power Loss可配置为Power On / Power Off / Last State工控场景通常默认Power On保证断电恢复后设备能自启动安全启动和TPMTiger Lake平台的TPM 2.0固件默认启用BIOS里开放安全启动选项OEM机型字符串和Logo定制BIOS定制最怕的是改坏了系统启动流程。我们的习惯是每次修改只动一个配置项编译后用U盘刷入测试机验证通过再做下一个改动。千万不要多个修改一次性合入出了问题很难定位是哪一个改动引起的。4.2 信号完整性测试专业设备之外的实用方案信号完整性测试听起来高大上其实很多中小企业没有高端示波器和眼图仪。我们做PCIE Gen4、USB3.2这种高速信号验证时采用的方式是先用Intel的官方工具做训练测试。具体来说在BIOS里开启PCIe Compliance Mode用协议分析仪没有就用单板自己的LSPCON工具检查Link Training是否成功、速率是否稳定在Gen4。这种功能性验证虽然不是严格的SI测试但能覆盖掉大部分设计错误。对于有条件做眼图测试的项目重点测三条链路PCIe Gen4 x4连NVMe SSD、USB3.2 Gen2连USB3.0硬盘盒、DP 1.4连4K显示器。如果眼图裕量不足优先调整发射端的摆幅和预加重参数其次再考虑PCB布线调整。4.3 量产阶段容易翻车的几个点从样板到量产有几个坑是设计团队最常见的一是物料供应的ECN工程变更管理。CPU、电源芯片、连接器这类关键物料在项目周期内可能会出现停产或替代一定要在选型阶段留好第二供应商备选方案硬件设计上尽量兼容两个品牌的同功能芯片。二是生产测试覆盖不完整。有些问题不是设计缺陷而是生产中的工艺缺陷比如SMT假焊、DDR虚焊。我们设计了一套自动测试夹具50个测试点覆盖电源、I2C、SPI、USB枚举、网卡PING、串口回环每块板子烧完BIOS后跑一轮全自动测试产线测试时间控制在5分钟以内。三是老化测试的节奏。量产前每块板子都要进行至少48小时的系统级老化测试跑满负载的同时切换各路接口的数据吞吐。这一步不能省嵌入式产品在客户现场出问题返修成本是产线测试成本的十倍以上。5. 常见问题与调试验收实录5.1 通电不开机的排查路径遇到不上电或者上电不开机最忌讳的是上来就抓CPU和BIOS芯片。先看电源树量19V输入、5V_SBY、3.3V_SBY是否正常PWRBTN信号有没有被正确拉低。如果这些都正常再看PCH的复位信号PLTRST有没有拉高CPU的VRM有没有输出VCCIN。Tiger Lake这个平台VCCIN要是没有其他一切都不用谈直接查VR控制器供电使能引脚和I2C配置。另外一个常见原因是我们称为电源时序不满足的问题。Tiger Lake对各路电源的上下电顺序有严格规定比如VCCIN要先于VCCIO稳定VCCST要早于VCCIN产生。如果时序不对CPU初始化就会失败但示波器不抓时序波形根本看不出来。所以我们每次调试都是先把电源时序逮一遍确认每个电压轨都在规格书要求的延时段内稳定才算过第一关。5.2 内存不识别和显示异常内存不识别在SBC上概率最高的问题是SO-DIMM插槽接触不良或内存参数配置不对。Hynix颗粒和Samsung颗粒在SPD数据上有些差异BIOS里如果开了XMP虽然嵌入式一般不开可能会引导失败。我们的方法是关闭XMP用JEDEC默认参数跑然后在MEMORY_TEST里做三轮全内存测试。显示异常有几类现象HDMI无信号、花屏、分辨率上不去。无信号先查HPDHot Plug Detect电平Tiger Lake的DDI输出如果没有检测到显示器连接默认不输出信号。花屏多半是LSPCON桥接芯片的固件版本问题升级固件即可解决。分辨率上不去一般是EDID读取出错检查HDMI连接器的DDC通道上拉电阻是否匹配。5.3 PCIe设备兼容性的隐藏问题PCIe的兼容性问题最隐蔽表象可能是SSD降速、板卡不被识别、随机掉盘。我们排查过一个真实案例一块PCIe Gen4 NVMe SSD在我们SBC上只能跑到Gen3速度怎么调参数都没用最后发现是M.2连接器的第52脚PERST信号没有加下拉电阻导致SSD复位时序不正确训练阶段掉到Gen3。另一个经验是不要盲目关闭ASPMActive State Power Management来解决问题。很多硬件工程师为了追求稳定性把ASPM整个关掉这确实能减少兼容性问题但代价是功耗和发热明显上升。更好的做法是在BIOS里分别控制PCIe设备的L0s和L1亚状态按设备的实际支持能力来配置。5.4 散热与风扇策略的坑对Thin Mini-ITX来说风扇策略设计不光是安静问题还关系到可靠性。我们的风扇控制逻辑分三段50℃以下保持30%转速50℃到70℃线性升到70%超过70℃直接满速。但在调试过程中发现如果风扇启动温度设置太低风扇会频繁启停设置太高CPU在低负载高环境温度下容易积热。最终把启动阈值定在55℃并且加了3℃的迟滞窗口实测下来比较稳定。这里分享一个特别容易忽略的点Tiger Lake平台有DVFSCPU会在毫秒级调整频率和电压导致温度波动很快。如果风扇策略采样周期太长比如1秒转速会有明显的滞后感出现温度已经降了风扇还在提速的问题。我们按照200ms的采样周期来更新PWM输出体感上好很多。5.5 给后来者的几个建议如果现在重新做一遍这个项目我会在三个地方优化第一原理图评审阶段不要赶进度。Tiger Lake的设计参考手册PRM有几千页但真正需要精读的核心章节是电源时序、功耗参数、PCIe/DDI走线要求和FSP配置。让两名资深工程师分头评审输出评审意见再合并比一个人从头看到尾效率高很多。第二打样阶段一次打两个版本。我们第一次投板只做了SBC发现一个关键信号走线问题后不得不改版一来一回浪费了一个月。如果预算允许建议第一版就把SBC和COMe同时投出去对比设计差异共用同一个BIOS基线后面改版时互相验证。第三客户定制需求要提前定义好扩展接口。工控客户不会只买一台设备他们会在你的标准板上加自己的功能卡。如果SBC上预留的PCIe、GPIO、UART数量不够客户就会以扩展性不足的理由换个供应商。我们的做法是明确承诺至少提供4路USB、2路UART、1路PCIe x4插槽、8个GPIO并把引脚定义写在规格书里。最后再说一个做嵌入式的老心得这类项目没有做完的时候只有交付后继续维护的状态。Tiger Lake平台的BIOS更新、安全补丁、新操作系统兼容性测试是产品上市之后依然要做的事。搭好稳定的软件基线对客户来说比堆硬件功能更重要。根据个人经验把这套流程跑顺畅了后续维护期的压力会少很多。