ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

国产FPGA上车实战:从汽车电子架构到量产避坑指南

国产FPGA上车实战:从汽车电子架构到量产避坑指南 从2021年那波全球汽车芯片荒开始我发现一个特别有意思的现象身边干嵌入式、干硬件的老同事朋友圈里晒得最多的不再是某款海外大厂的主控芯片到货了而是国产FPGA的样片到了、开发板点亮了。以前聊FPGA大家默认是Xilinx和Altera现在叫AMD和Intel的天下通信、工业、数据中心才是主场汽车电子里能用上一颗FPGA那基本是高端车型里的“隐形大佬”。但这三五年风向变了汽车芯片这片江湖里本土FPGA玩家不再只是“陪跑”而是开始认真卡位了。这篇文章我想结合自己这几年做汽车电子硬件设计的经验聊聊FPGA在汽车上到底在干什么活本土FPGA厂商到底行不行以及如果你也想在车载项目里导入国产FPGA从选型、开发到量产哪些坑是必须要提前知道的。不管你是做域控制器、激光雷达、车载摄像头还是只想了解汽车芯片国产化走到哪一步了这篇文章都能给你一个比较实在的参考。1. 汽车电子架构变了FPGA的机会窗口突然打开1.1 从分布式ECU到域控制器算力需求变得非常“不均匀”传统汽车的电子架构是分布式的一个功能一个ECU车窗、门锁、雨刮都有自己的小单片机算力需求很低也很均匀。但智能电动汽车时代不一样了座舱要管多块屏幕智驾要接十几个摄像头和激光雷达车身域要把过去几十个ECU的功能合并到几个域控制器里。这时候算力需求就出现了一个很尴尬的中间地带用MCU性能不够直接上大SoC成本、功耗、开发复杂度又都扛不住。FPGA恰好能填这个空子。它的逻辑资源是可编程的你可以把它当成一个“想要什么外设就能现场捏一个什么外设”的芯片延时低、并行度高、接口灵活。而且现在车规级FPGA在功耗和价格上都到了一个可以商用的区间这就让Tier1和主机厂在架构设计时多了一个非常关键的可选项。1.2 车载FPGA都在干什么活一张图看清它的“岗位分布”我接触过的车载FPGA项目按应用场景大致可以分成这么几类这也是平时面试工程师时最容易考的题目高速信号桥接与转接车载摄像头输出的MIPI CSI-2信号屏幕要用的LVDS或eDP信号以及传感器和主控之间的各种自定义协议FPGA做协议转换和信号中继非常拿手。很多车型里的360环视系统就是FPGA接收四路甚至六路摄像头原始数据做完去马赛克、色彩校正后再合成为一路高速信号送到座舱SoC。激光雷达信号处理激光雷达的测距原理本质上是精密的时间测量。FPGA里可以做TDC时间数字转换器把光脉冲往返的时间差测出来再统计成点云直方图。这个功能用MCU很难做到皮秒级的时间分辨但FPGA的并行触发和高速计数器天生就是干这个的。实时电机控制与电源管理汽车上很多小电机比如水泵、油泵、风门执行器需要多路PWM输出频率、死区时间要求各不相同。FPGA可以精确控制每一路PWM的上升沿和下降沿还能和ADC联动做闭环控制响应速度比软件轮询快好几个数量级。I/O扩展与逻辑胶合这是FPGA最传统的老本行。域控制器的主SoC引脚不够用、电平不匹配、协议种类太杂塞一颗FPGA把所有 I/O 整理得明明白白,比用一堆缓冲器、电平转换芯片要省事得多。1.3 和MCU、ASIC、SoC相比FPGA赢在“可重新配置”有人在选型时会问为什么不用MCU非要上FPGA我的习惯回答是MCU是“软件定义功能”但它的指令是一条一条顺序执行的FPGA是“硬件定义功能”所有逻辑电路是并行工作的。做图像处理或者高速数据采集时FPGA的延迟稳定性和吞吐量是普通MCU没法比的。那为什么不干脆流片一颗ASIC答案是贵、慢、险。ASIC动辄几千万的NRE费用开发周期以年为单位一旦算法改版或者协议升级芯片就直接废了。FPGA可以在硬件板上直接改逻辑相当于用自己的灵活性和一点点性能换掉了ASIC的高成本和不可变性。至于和SoC配合那更是家常便饭FPGA当SoC的“前级预处理单元”和“后级接口扩展器”分工明确我做的项目里十有八九都是这种组合拳。2. 本土FPGA厂商手里到底有什么牌2.1 国内FPGA产业坐标谁在做车规、谁在做高性能这几年国内FPGA厂商的格局基本清晰了我按自己的使用体验和行业交流整理了一个简表方便你有个整体印象厂商主流系列制程/逻辑规模车规进展我的印象紫光同创Logos/Compa系列28nm最高约200K LUT有车规级产品在导入国内规模头部软件生态覆盖全安路科技SAL/ELF系列28nm几十到百K级关注度高车规认证推进中消费/工业量大工具链上手快高云半导体GW1N/GW2A/GW5AT从55nm到22nmGW5AT等面向车规/高可靠性产品线很丰富小封装芯片用得多易灵思Ti60/Q93等22nm嵌入式Flash/SRAM在汽车电子有实际案例架构很新颖性能和功耗表现亮眼京微齐力CME系列成熟制程中小规模早期布局车规相关以前大家叫他“京微雅格”底蕴还在当然还有紫光国微、智多晶、中微亿芯等玩家篇幅有限不一一展开了。整体来看本土FPGA已经覆盖了从几千LUT的小芯片到几十万LUT的中大芯片车规级的AEC-Q100认证、功能安全ISO 26262认证也在陆续补齐不再是只能做玩具板卡的状态了。2.2 和Xilinx/AMD、Altera/Intel的差距卡在哪几个地方做技术不能光说优点本土FPGA和海外巨头相比差距是真实存在的主要在四个方面制程和规模Xilinx/AMD的Versal系列已经做到7nm单芯片上集成CPU、GPU、AI引擎逻辑规模更不用说了。本土厂商主力还在28nm最大逻辑规模也就对标人家中端产品大容量、高带宽的FPGA还是空白。高速接口和SerDesFPGA经常要处理PCIe、10G/25G以太网、JESD204B这类高速串行接口。这些SerDes IP不仅硬核难度高还需要长期的IP验证积累。本土FPGA在千兆以太网、USB、PCIe Gen2/Gen3上有突破但更高速度的接口还在追赶中。软件工具链实话实说这是国产FPGA最大的短板比芯片本身更难补。Vivado、Quartus是几十年迭代出来的时序收敛、布局布线、功耗分析、调试工具都已经很成熟。国产开发软件界面看着还行但用起来会遇到约束不生效、时序报告看不懂、编译时间长、某些IP核仿真模型缺失等各种小问题。生态与IP资源Xilinx有庞大的IP商店和开发者社区你可能遇到的问题老外早就回答过了。国产FPGA的IP库相对单薄遇到冷门功能只能自己写RTL指望官方文档有时候不太现实。但这里我要说一句公道话车规应用恰恰能绕开一部分短板因为车辆上的高速接口没有数据中心那么极端多数项目用到的SerDes速率并不高逻辑规模需求也比较有限这给了国产FPGA很好的生存空间。2.3 “车规认证”这四个字没那么简单做消费电子和工业电子的朋友可能觉得芯片能跑起来不就行了。但进车规这扇门是一整套体系的考验。芯片本身要过AEC-Q100证明它在高温、低温、湿度、振动、ESD下面都能保证寿命和可靠性封装产线得过IATF 16949认证交付的时候还得按APQP流程交PPAP文件让客户清楚你从设计到测试每一步都做了什么。这不是财大气粗就能速成的TI、NXP、Infineon在这里有几十年的数据积累国产FPGA厂商要补齐车规级失效分析、可靠性实验、量产一致性监控这些底层数据。我了解到的情况是目前真正拿到完整车规认证、能进前装量产项目的国产FPGA还不算多多数还停留在“车规级设计和可靠性测试通过”的阶段但这已经是很大进步了。至少现在谈国产FPGA上车不再是一句空话。3. 车载项目里FPGA到底怎么从选型落地到量产3.1 选型评估我会盯着这五个参数不松手如果你也准备在自己的车载项目里评估一颗FPGA我建议不要被宣传材料上的“逻辑单元数”带偏重点看下面这几个维度器件结温范围车规芯片至少要支持-40℃到105℃甚至125℃的结温而且你要重点关注民用级、工业级、车规级三档之间价格和供货的差异。很多国产芯片标称“工业级”放进乘员舱还行放到发动机舱或刹车系统附近就悬了。可用I/O和Bank电压你的摄像头、屏幕、传感器需要几种电压域FPGA的Bank是否支持多种电平标准并独立供电这两个问题直接决定了你的PCB布线难度和外接电平转换芯片的数量。内置硬核资源包括DSPDSP Slice、BRAM、PLL/MMCM、高速收发器数量。做图像处理的话DSP数量比逻辑单元数更关键做激光雷达的话TDC需要的高频时钟资源和进位链特性更重要。封装与引脚兼容性同一系列里有没有引脚兼容的小封装和大封装方便前期用大封装调试后期按成本替换小封装。很多国产厂商在这一块做得比海外大厂还灵活。开发工具的成熟度下载安装IDE、创建工程、加约束、跑仿真、看波形全流程走一遍你的体感往往比参数表重要。如果遇到问题连技术支持都找不到人那再好的芯片也不敢量产用。3.2 国产FPGA的软件开发流程有哪些和Vivado不一样的地方以我实际用过的高云和紫光同创开发软件为例整体流程还是“写代码→综合→布局布线→生成比特流→下载调试”那一套但细节上磨合成本比想象中高。首先是工程创建的坑部分国产工具对中文路径和特殊字符支持不好编译到一半报错你根本不知道是怎么死的。我的建议是工程名、模块名、文件路径全部用英文小写加下划线从一开始就“装乖”。其次是IP核的使用方式国产工具的做法往往是把IP核生成器独立出来生成之后会给你一个网表文件和例化模板和Vivado的做法类似但又不少细节有差异。比如要生成一个PLL你得手动指定输入时钟频率、输出频率、相位和占空比确认后工具才会把它打包进来这个过程容易漏掉“输入缓冲区”和“全局时钟网络”的分配。然后是约束文件Vivado主要用XDCQuartus用SDC和QSF国产FPGA工具大多兼容SDC语法但对时序约束的支持深度参差不齐。我踩过最典型的坑是时序约束里写了set_false_path结果布局布线后时序报告里完全没体现后来发现这个工具不支持跨时钟域的某些约束只能改成在其他地方手动处理。再说仿真国产工具内置的仿真器能力偏弱复杂的Testbench跑起来特别慢还偶尔会卡死。我现在项目里的习惯是RTL写好后先用Vivado或ModelSim独立仿真验证完功能后再导入到国产FPGA工具里做综合和时序分析。这样能规避很多工具链自身的问题。3.3 三个高频场景的实操细节MIPI接入、图像处理、电机PWM车载项目里FPGA里的三大活我来展开说说实操层面的细节。MIPI接入摄像头的MIPI CSI-2信号进来先经过FPGA的LVDS/Sub-LVDS IO或者专用的MIPI IP接收然后做字节对齐、通道对齐和包头解析。很多国产FPGA没有现成的MIPI IP核需要你自己写一个D-PHY接收逻辑这时候要格外注意差分信号的极性、终端电阻匹配以及字节对齐时的滑动窗口设计。我遇到过的一个问题是MIPI突发传输时数据偶发丢包排查了几天发现是复位信号时序有问题数据通道复位早了半个字节周期。图像处理从Sensor出来的Raw图要先做去马赛克ISP里的Demosaic才能给屏幕和算法用。FPGA做去马赛克最常用的是双线性插值对每个像素点取周围同颜色的通道均值或加权值逻辑简单、消耗DSP少、效果也能接受。想做更好一点可以用边缘方向自适应算法但那样帧缓存的消耗会明显上升画质提升和逻辑资源占用的平衡点要自己拿捏。电机PWMFPGA控制无刷电机核心是产生六路互补的PWM波形带死区时间控制。如果你用FSM状态机控制换相时序要注意计数器比较值、死区时间、换相时刻三者的同步别让同一相的上下桥臂同时导通或者关断否则就是炸MOS管的惨案。我用国产FPGA的时候额外留意过PWM输出的初始状态上电瞬间所有IO默认是输入高阻还是下拉一定要和外部电路匹配好否则电机一上电就会抖动一下。3.4 从FPGA到SoC之间最容易忽视的电源和时序问题很多人第一次把FPGA和SoC放一块设计时总以为把各路电源接上、信号线连好就完事了。实际上FPGA对电源时序要求极其严格。比如核心电压VCCINT、辅助电压VCCAUX、IO电压VCCIO必须按照芯片手册规定的上电顺序依次来典型要求是VCCINT先于VCCIO。如果顺序反了轻则IO漏电重则芯片闩锁损坏。另外FPGA配置时的上电瞬间电流尖峰非常大我测过一颗中等规模FPGA配置瞬间电流可以达到正常工作电流的三四倍如果电源设计裕量不足就可能触发电源芯片的过流保护FPGA反复重启整个系统就“抽风”了。解决办法是电源选型时留够1.5到2倍电流裕量并在靠近FPGA电源引脚增加足够容量的去耦电容同时检查配置管脚拉高/拉低的时序逻辑。4. 国产FPGA上车那些只有踩过坑才会懂的事4.1 问题排查实录五位“老朋友”和它们的解法我在导入国产FPGA到车载项目的过程中积攒了不少典型的故障案例很多第一次接触国产工具链的老工程师都会遇到这里整理成一个收藏级速查表问题现象根本原因处理办法同样的RTL代码同一颗芯片在Vivado上时序收敛在国产工具上报时序违规工具的综合和布线策略不同优化目标不一样用国产工具重写/优化关键路径增加流水线级数不要盲目相信“代码兼容”上电瞬间FPGA的IO输出一个短暂的毛刺导致继电器误动作配置前IO状态未约束默认被识别为输入高阻或内部上拉在约束文件里显式指定所有IO在配置期间为三态或固定电平并加外部下拉/上拉电阻MIPI或者LVDS接收灵敏度很差图像偶发撕裂PCB走线阻抗不连续或端接电阻偏差过大检查差分线阻抗通常MIPI要求100Ω±10%在接收端增加共模端接或AC耦合电容DDR4初始化时反复cal fail电源噪声偏大、参考电压不稳或PCB走线等长没做好优先检查DDR电源纹波再用示波器量Vref最后用工具自带眼图扫描功能确认信号质量芯片发烫静态功耗异常偏高可能有未使用的IO被配置成输出且对外短路或灌电流把不用的IO全部设为三态输入并禁止内部上拉重新综合对比静态功耗电子开发最烦的就是问题“偶尔出现一次”这类间歇性问题往往不是逻辑错而是时序裕量不足或者抗干扰设计不够。FPGA项目里尤其如此——很多“玄学bug”最后查出来都是时序约束没写全、跨时钟域没做同步或者电源纹波太大。4.2 国产FPGA工具链的“脾气”摸清了就会顺手很多如果你决定在项目里用国产FPGA最好先花几天时间专门“驯服”它的开发工具而不是直接拿老项目的代码跑。我的亲身体验是国产FPGA工具链当前已经过了“完全不能用”的阶段但很多交互逻辑、错误提示、IP配置方式都还需要看手册才能搞明白。比如某些工具生成比特流后没有自动计算CRC校验你需要手动打开某个选项才能对自己的配置数据做校验这在量产出货时是个致命问题。还有一点国产FPGA厂商的技术支持人员水平和态度天差地别。有的厂商会让你签NDA后提供全套设计参考、设计检查清单甚至派FAE到现场帮你调板子有的则是发邮件两三天不回。所以我的建议是选型的时候就把“支持能力”作为一项考核指标直接发一个小项目过去看他们的反馈速度和答案质量这比看100页PPT都管用。另外资料和社区也在快速变好。B站、公众号、CSDN上现在有很多做国产FPGA开发的博主在分享教程、踩坑日记和源码甚至有人在GitHub上开源了自己的国产FPGA开发板工程。对于我们这些不是第一批吃螃蟹的人来说现在的学习生态已经比2019年好太多了。4.3 量产和供应链注意事项别在最后一步栽跟头很多人在实验室里跑通了就开始兴奋但离真正的汽车前装量产还差着十万八千里。这里有几个供应链层面的问题一定要提前和原厂确认清楚供货周期和产能承诺FPGA是不是他们的主推料会不会因为消费电子或通信客户订单太满而把你的汽车订单挤到后面车规物料一般要求长期供货保障通常10年以上芯片原厂有没有签供货协议温度等级和批次一致性同一型号不同批次之间的芯片时序参数可能会偏移高温下尤其明显。你要不要做每批次的来料抽测有没有和原厂约定好关键参数规格书的范围第二供应商策略做FPGA不像做MCU那样容易管脚兼容替换很多国产FPGA和海外FPGA并不pin-to-pin兼容。我指的是在原理图设计之初就留出国产、国际双芯片的替代位置PCB上做两套封装焊盘或者兼容设计这在当前供应链环境下非常重要。这些内容听起来像是采购关心的事但我负责任地告诉你硬件工程师如果在项目启动时不参与等量产出问题再“救火”那代价就太大了。曾经有个朋友的项目因为原厂临时停了一颗工业级FPGA的产线结果整个控制器换方案重新布板验证一折腾就是半年。这在汽车行业里是致命的。5. 写在工具链学习和职业发展边上的一点杂谈最后聊点务虚但和每个从业者相关的事。FPGA工程师在汽车芯片行业里的价值这几年被重新评估了。以前做FPGA被认为是“传统硬件里的硬核活”薪资却不温不火。现在智驾、座舱、激光雷达公司满地找能做FPGA高速接口、图像处理、TDC直方图算法的人因为这些算法用GPU和MCU跑都太浪费或者太慢只有FPGA能在功耗和时延之间找到最佳平衡点。我自己的体会是做FPGA这个行当最重要的是构建“硬件思维”。CPU、MCU、SoC是“指令流驱动”你要想清楚每条指令怎么排队执行FPGA是“数据流驱动”你要想清楚每个数据从进来到出去经过了哪些寄存器、哪些组合逻辑、怎么并行。很多从软件转FPGA的朋友一开始不适应就是因为老想着用一个for循环解决问题而不是把循环展开成并行的硬件电路。进入汽车芯片这个领域之后我还特别建议学一点功能安全相关的知识。ISO 26262里对硬件随机失效和系统性失效的要求会直接影响你的FPGA设计——比如关键信号是否需要冗余看门狗和错误管理应该做到什么程度这些都是增量价值很高的技能。等哪天你做的FPGA逻辑通过了功能安全评审那种成就感真的是写一百个LED流水灯都替代不了的。这个行业正处在从“能用”向“好用”过渡的关键期。和我一样亲自踩过坑、补过板、熬夜看过信号完整性的工程师都知道每一次难堪的调试都是在帮本土FPGA往成熟的方向推一把。如果你正在犹豫要不要在自己的项目里尝试国产FPGA我的建议是挑一个非核心、低风险的模块先试起来同时准备好回退方案。等你在实际项目中摸过一轮脾性很多参数之外的门道你自然就通了。
返回列表