☰
热成像机芯国产化:CH9251T+FPGA方案设计与实操
2026/9/30 23:29:29 网站建设 项目流程

1. 热成像机芯的国产化拐点:为什么CH9251T加FPGA是一条务实路线

热成像机芯这个品类,过去几年在安防、工业测温、户外夜视、电力巡检这些场景里需求量一直在涨,但核心处理方案长期被几家海外厂商的专用SOC把持。做整机的朋友应该都有体会:进口SOC交期不稳定,价格说涨就涨,而且很多型号对国内客户的技术支持力度有限,遇到问题只能自己啃英文手册。这两年国产替代的呼声越来越高,但真正能落地的方案并不多,要么性能缩水明显,要么开发门槛高得吓人。

CH9251T加FPGA这套组合,是我近期比较关注的一条路线。它的核心思路很清晰:用CH9251T这类国产接口与处理芯片承担图像采集、预处理和部分控制逻辑,用FPGA做实时性要求高的数据搬运、时序对齐和图像算法加速,两者配合完成原本一颗进口SOC干的活。标题里说“性能不减成本直降”,这话不能全信,但方向是对的——关键在于你怎么用FPGA把CH9251T不擅长的部分补上。

这篇文章适合几类人看:正在做热成像机芯方案选型的硬件工程师、想从进口SOC迁移到国产方案但不知道从哪下手的嵌入式开发者、以及做FPGA图像处理项目想找一个真实落地场景练手的朋友。我会把方案选型逻辑、CH9251T和FPGA的分工边界、DDR读写与图像流水线的实操要点、以及调试中容易踩的坑都讲清楚。不是纸上谈兵,都是可以拿去对着做的内容。

先说结论:这套方案不是简单地把进口SOC换成两颗国产芯片就完事,它需要你重新划分系统职责。CH9251T负责它擅长的接口和基础处理,FPGA负责实时流水线和并行计算,两者通过合理的总线或并行接口衔接。做得好,BOM成本能降下来,供应链也稳;做得不好,就是两颗芯片互相拖后腿。下面我把整个设计思路拆开讲。

2. 方案整体设计与核心器件分工拆解

2.1 为什么不是单颗国产SOC直接替代

很多人第一反应是:既然要国产替代,为什么不直接找一颗国产SOC把进口那颗换掉?这个问题我专门花时间调研过。热成像机芯对处理链路有几个硬要求:第一,要能接红外探测器的原始数据接口,常见的有LVDS、MIPI或者并口;第二,要做非均匀性校正、坏点替换、时域降噪这些预处理;第三,要输出标准视频格式给后端显示或编码;第四,整条链路的延迟要低,尤其是户外夜视和工业测温场景,延迟大了体验直接崩。

市面上能同时满足这些要求的国产SOC不是没有,但往往在某几个点上卡脖子。比如有些SOC的LVDS接收通道数不够,接高分辨率探测器就吃力;有些SOC的DDR带宽在跑多路图像处理时成为瓶颈;还有些SOC的NPU或DSP对热成像这类灰度数据处理效率一般。更现实的问题是,很多国产SOC的SDK成熟度不够,你拿来做产品要填的坑比用进口方案还多。

CH9251T加FPGA的思路,本质上是把“通用处理”和“实时加速”分开。CH9251T可以理解为系统的主控和接口中枢,负责启动流程、外设管理、图像基础处理和输出控制;FPGA则像一个可编程的协处理器,专门啃那些对时序和并行度要求高的活。这样你不需要一颗全能SOC,而是用两颗各有所长的芯片拼出一个更灵活的方案。

2.2 CH9251T在链路中到底承担什么角色

CH9251T这颗芯片,从公开资料和实际项目经验来看,它的定位偏向于图像接口处理与系统控制。在热成像机芯里,我通常让它承担这几件事:一是接收红外探测器输出的原始数据,做初步的格式转换和缓存;二是运行非均匀性校正和坏点替换这类相对固定的算法;三是管理整机的启动、配置和外设通信;四是把处理好的图像数据通过并行接口或高速串行接口送给FPGA做进一步处理。

这里有个关键点:CH9251T的强项是接口丰富和系统集成度高,但它的算力不是无限的。如果你把时域降噪、图像增强、缩放这些也全压给它,它可能就跑不动高帧率了。所以我在设计时会把CH9251T的负载控制在合理范围内,让它做“确定性高、计算量适中”的工作,把“计算密集、实时性苛刻”的部分交给FPGA。

2.3 FPGA的分工边界与选型考量

FPGA在这套方案里主要干三类活。第一类是高速数据搬运和缓存管理,比如把CH9251T送来的图像数据写入DDR,再按显示时序读出来,这中间涉及多端口读写和带宽分配。第二类是实时图像处理,比如双线性插值缩放、时域递归降噪、直方图均衡的流水线实现。第三类是时序生成和接口桥接,比如产生探测器需要的驱动时序,或者把图像数据转换成MIPI、LVDS等标准视频接口输出。

选型上,我建议优先考虑带有足够DDR控制器硬核和高速收发器的FPGA。Xilinx的Zynq-7000系列或者Artix-7系列在这个场景里用得比较多,资源利用率的分析很关键——你要提前算清楚图像流水线需要多少DSP、多少BRAM、多少逻辑单元。如果是成本敏感的产品,国产FPGA如安路、高云的部分型号也可以评估,但要注意IP核的成熟度和开发工具的易用性。我个人的经验是,第一版方案用生态成熟的FPGA把功能跑通,第二版再考虑换国产FPGA降本。

2.4 两颗芯片之间的接口设计要点

CH9251T和FPGA之间的接口是整个方案的咽喉。常见的选择有并行接口和高速串行接口两种。并行接口的优点是时序简单、延迟低,缺点是引脚多、布线麻烦,跑高分辨率高帧率时容易遇到信号完整性问题。高速串行接口如LVDS或MIPI,引脚少、带宽高,但对FPGA的SerDes资源和PCB走线要求高。

我在实际项目中倾向于用LVDS并行接口,数据位宽8到16位,配合像素时钟和几个控制信号。这样FPGA端接收逻辑好写,时序约束也清晰。如果图像分辨率超过1080p或者帧率超过60fps,那就得考虑用高速串行接口了。接口设计时一定要留测试点,方便用逻辑分析仪抓时序,这个后面讲调试时会细说。

3. 核心细节解析与实操要点

3.1 图像数据流的完整路径拆解

从红外探测器到最终显示输出,数据要经过好几道手。我画不出图,但可以用文字把路径说清楚。探测器输出原始模拟或数字信号,经过前端调理后变成数字图像数据,进入CH9251T。CH9251T做第一轮处理——通常是串并转换、帧同步、基础校正——然后通过并行接口把数据推给FPGA。FPGA收到数据后,先写入DDR做帧缓存,同时并行跑图像处理流水线。处理完的数据再从DDR读出,按照输出接口的时序要求打包,送给显示驱动或编码芯片。

这条路径里最容易出问题的是三个地方:一是CH9251T到FPGA的接口时序,二是DDR读写带宽分配,三是图像处理流水线的延迟。接口时序问题后面单独讲,这里先说DDR。热成像常见的分辨率是640x512或者1280x1024,帧率25到60fps。以1280x1024@60fps、16位灰度计算,原始数据率大约是1.2Gbps。写入和读出各一次,DDR的有效带宽至少要2.4Gbps,再加上图像处理中间结果的缓存,实际需要的带宽更高。所以DDR控制器的效率很关键,不能只看理论峰值带宽。

3.2 基于FPGA的多端口DDR读写设计

多端口DDR读写是这套方案的核心技术点之一。FPGA内部通常有多个模块要访问DDR:写入模块要把CH9251T送来的数据存进去,读取模块要按显示时序把数据取出来,图像处理模块可能还要读写中间帧。如果这些访问不做好仲裁,就会出现某个模块饿死或者数据覆盖的问题。

我的做法是在DDR控制器外面包一层仲裁逻辑,用时分复用的方式分配带宽。具体来说,给写入通道和读取通道分别设置优先级和突发长度。写入通道的优先级通常设高一些,因为探测器数据是实时的,丢了就补不回来。读取通道按显示时序走,只要保证在行消隐期内把下一行数据准备好就行。图像处理模块的访问放在空闲周期里做。

这里有个实操技巧:DDR的突发长度不要设得太短,否则命令开销会吃掉大量带宽。我一般用8或16的突发长度,配合Bank交错访问,实测下来带宽利用率能到70%以上。另外,地址映射方式也很重要,把图像的行地址映射到不同的Bank,可以减少行切换带来的延迟。

3.3 图像处理流水线的FPGA实现要点

热成像的图像处理流水线通常包括非均匀性校正、坏点替换、时域降噪、图像增强和缩放。CH9251T可以承担前两项,FPGA重点做后三项。时域降噪的经典做法是递归滤波,把当前帧和上一帧按一定比例混合。这个算法在FPGA里实现时,关键是要处理好帧缓存的读写冲突——上一帧的数据要从DDR读出来,当前帧处理完要写回去,同时还要输出给显示通道。

我的经验是用乒乓缓存结构,两块帧缓存交替读写,避免同一块内存同时被读和写。递归系数用定点数表示,通常取0.25到0.5之间,具体值要根据场景调。系数太大降噪效果弱,太小会有拖影。图像增强可以用直方图均衡或者自适应伽马校正,直方图统计需要遍历整帧,可以在写入DDR的同时顺便统计,不额外占带宽。缩放用双线性插值,FPGA实现时把权重计算做成查找表,能省不少DSP资源。

3.4 时钟域管理与时序约束

这套方案里至少有三个时钟域:探测器像素时钟、CH9251T的系统时钟、FPGA内部处理时钟,可能还有DDR控制器时钟和输出接口时钟。跨时钟域的数据传递必须做同步处理,否则亚稳态问题会让你调到头秃。

我的做法是:在CH9251T到FPGA的接口上用异步FIFO做缓冲,FIFO的写时钟用像素时钟,读时钟用FPGA处理时钟。FIFO深度要算够,至少能缓冲两行图像数据,防止时钟抖动导致溢出。DDR控制器和图像处理模块之间也用FIFO隔离,因为DDR的访问延迟是不确定的。时序约束方面,输入接口的建立保持时间要按芯片手册严格约束,输出接口的时序也要根据后端器件的需求来设。我见过太多项目因为时序约束没做好,功能仿真全过,上板就花屏。

注意:跨时钟域信号一定要用两级触发器同步,多比特信号要用格雷码或者握手协议,不要直接打拍。

4. 实操过程与核心环节实现

4.1 硬件平台搭建与上电检查

第一版硬件回来之后,不要急着上电跑图像。先做电源检查,确认各路电压正常,特别是FPGA的内核电压和DDR的参考电压。然后用JTAG连接FPGA,看能不能识别到器件。CH9251T那边先不跑程序,确认晶振起振、复位信号正常。

接下来是时钟检查。用示波器量像素时钟、系统时钟和DDR时钟的频率和抖动。我遇到过晶振负载电容选错导致频率偏了几百ppm的情况,虽然能跑但长时间会出问题。DDR的时钟尤其要注意,差分时钟的交叉点要落在合理范围,否则读写会随机出错。

电源和时钟都正常后,先烧一个最简单的LED闪烁程序到FPGA,确认配置电路没问题。然后再烧DDR测试程序,跑MemTest确认DDR读写正常。这一步不能省,DDR有问题后面所有图像处理都是白搭。

4.2 CH9251T的配置与数据输出调试

CH9251T的配置通常通过I2C或SPI接口完成,上电后需要加载一组寄存器配置。这些配置值一般由厂家提供,但你要理解每个关键寄存器的含义,不然出了问题不知道怎么改。我重点关注的寄存器包括:输入接口模式、数据位宽、帧同步极性、输出接口时序参数。

配置完成后,用逻辑分析仪抓CH9251T的输出接口。先看有没有像素时钟,再看帧同步和行同步信号是否正常,最后看数据线上的数据有没有在变化。如果数据线一直是固定值,可能是探测器没接好或者CH9251T的输入配置不对。如果数据在变但图像不对,可能是时序极性搞反了。

这里有个实用技巧:让CH9251T输出一个测试图案,比如渐变灰度或者棋盘格,这样你在FPGA端接收时就能直观判断数据对不对。很多厂家支持这个功能,调试阶段一定要用起来。

4.3 FPGA端图像接收与DDR缓存的联调

FPGA端的图像接收模块,核心是一个状态机加一个异步FIFO。状态机根据帧同步和行同步信号判断当前处于哪一行哪一列,把有效数据写进FIFO。FIFO读出的数据再写入DDR。写入DDR时要注意地址生成,每写完一行地址要跳转到下一行的起始地址,每写完一帧要切换帧缓存的Bank。

联调时我习惯先用一个简单的计数器代替真实图像数据,往DDR里写固定图案,然后读出来验证。确认读写通路没问题后,再接入CH9251T的真实数据。这时候用FPGA的在线逻辑分析仪(比如Xilinx的ILA)抓几个关键信号:FIFO的写使能、写数据、DDR的写地址、读地址、读数据。对比写入和读出的数据是否一致,如果不一致,检查FIFO是否溢出、DDR地址是否算错、时序是否满足。

4.4 图像处理流水线的逐步验证

图像处理流水线不要一次性全加上,要一个模块一个模块验证。先做直通,数据从DDR读出后直接送显示接口,确认显示正常。然后加缩放,用测试图案验证缩放后的图像比例和边缘是否正确。再加时域降噪,观察静态场景下噪声是否降低、运动场景下是否有拖影。最后加图像增强,看对比度和亮度是否合适。

每个模块验证时都要用真实的红外图像,不要只用测试图案。红外图像的动态范围和人眼习惯的可见光图像差别很大,用测试图案调好的参数换到真实图像上可能完全不能用。我一般会准备几段不同场景的红外视频数据,存在SD卡里,调试时循环播放。

4.5 系统联调与性能测试

所有模块单独验证通过后,做整机联调。联调的重点是看端到端延迟和长时间稳定性。端到端延迟的测量方法:在探测器前面放一个快速变化的红外源(比如用手快速划过),用高速相机拍显示屏幕,数一下从动作发生到屏幕变化之间的帧数。热成像机芯的延迟一般要求控制在3帧以内,也就是50到100毫秒。

长时间稳定性测试至少跑24小时,观察有没有花屏、死机、图像漂移。我遇到过DDR温度升高后读写出错的案例,后来在DDR控制器里加了温度补偿刷新才解决。还有一次是FPGA的电源纹波太大,导致高速接口误码,换了LDO就好了。这些坑只有实际跑过才会遇到。

5. 常见问题与排查技巧实录

5.1 图像花屏与数据错位的排查思路

花屏是这套方案最常见的故障。排查时按数据流方向从后往前查。先看显示接口的输出时序对不对,用示波器量行同步、场同步和像素时钟的相位关系。如果输出时序没问题,再往上看DDR读出的数据对不对,用ILA抓DDR读数据,和写入的数据对比。如果DDR读写不一致,检查DDR控制器的配置和时序约束。如果DDR没问题,再看CH9251T到FPGA的接口,重点查FIFO有没有溢出、跨时钟域同步有没有做好。

我整理了一个速查表,按现象分类:

现象可能原因排查方法
整屏花DDR读写错误或时钟失锁跑MemTest,查DDR时钟
规律性条纹行地址计算错误或FIFO溢出查地址生成逻辑,看FIFO满标志
图像偏移帧同步极性反了或消隐期没对齐用逻辑分析仪抓同步信号
随机噪点跨时钟域亚稳态或电源纹波查同步逻辑,量电源纹波
图像卡顿DDR带宽不足或仲裁不合理统计DDR带宽利用率,调优先级

5.2 DDR带宽不足的优化手段

DDR带宽不够的表现是图像卡顿、掉帧,或者处理延迟变大。优化手段有几个方向。第一,提高突发长度,减少命令开销。第二,优化地址映射,让连续访问落在同一个Bank的不同行,减少行切换。第三,压缩数据位宽,比如把16位灰度压缩成12位存储,读出后再扩展。第四,降低帧率或分辨率,这是最后的手段。

我实测过一个案例:1280x1024@60fps的16位图像,原始DDR带宽需求约2.4Gbps,用8突发长度和Bank交错后,实际带宽利用率从50%提升到75%,卡顿就消失了。如果还不够,可以考虑用两块DDR做乒乓,但成本会增加。

5.3 跨时钟域导致的随机故障

跨时钟域问题最恶心的地方是它随机出现,可能跑几个小时才出一次。表现可能是偶尔一行数据错、偶尔一帧图像闪、或者DDR写入地址跳变。排查方法是把所有跨时钟域的信号列出来,逐个检查同步逻辑。单比特信号用两级触发器,多比特信号用格雷码或者异步FIFO。异步FIFO的深度要算够,读写指针的同步也要做对。

提示:跨时钟域信号在综合后要做时序约束,用set_false_path或者set_clock_groups告诉工具这些路径不需要时序分析,否则工具会报一堆无法满足的时序违例。

5.4 国产替代过程中的供应链与技术支持问题

国产替代不只是技术问题,还有供应链和技术支持。CH9251T的供货稳定性比进口芯片好很多,但你要提前和厂家确认长期供货计划。技术支持方面,国产芯片的原厂FAE响应速度通常更快,但文档和参考设计可能不如进口芯片完善。我的建议是:在项目初期就和原厂建立联系,拿到最新的数据手册和参考设计,遇到问题直接找FAE,不要自己硬扛。

另外,FPGA的选型也要考虑供应链。Xilinx和Intel的FPGA交期在过去几年波动很大,如果产品量大,可以考虑国产FPGA做备份方案。但国产FPGA的IP核和开发工具还需要时间成熟,第一版产品用成熟平台,第二版再评估切换。

5.5 成本核算与BOM优化经验

标题说“成本直降”,到底能降多少?我算过一笔账:进口SOC方案里,那颗SOC加上配套的DDR和电源芯片,BOM成本大概在某个数。CH9251T加FPGA方案里,CH9251T价格有优势,但FPGA和额外的DDR会增加成本。最终能不能降,取决于你的FPGA选型和DDR容量。如果FPGA选得太大、DDR配得太足,成本可能反而上去。

我的经验是:FPGA选刚好够用的型号,DDR容量按最大分辨率和帧率算,留20%余量就行。另外,CH9251T和FPGA可以共用一路DDR,省掉一颗内存芯片。电源设计也可以简化,用多路输出的PMIC代替多颗LDO。这些细节加起来,BOM成本能比进口方案低不少,具体数字要看你的采购量和谈判能力。

6. 方案扩展与个人实操体会

这套CH9251T加FPGA的架构,跑通之后可以扩展的方向不少。比如加一路MIPI输出,直接驱动手机屏或者HDMI转换芯片;比如在FPGA里加一个简单的目标检测算法,做热点追踪;比如把图像数据通过以太网或者USB传出去,做远程测温。FPGA的灵活性就在这里,你想加什么功能,只要资源够,改改逻辑就行。

我个人在实际操作中的体会是:这套方案的门槛不在单颗芯片,而在系统联调。CH9251T和FPGA各自都能跑,但把它们拼在一起,接口时序、时钟域、DDR仲裁、图像流水线延迟,每一个环节都可能出问题。我的建议是分阶段验证,不要想着一次投板就成功。第一版硬件把接口和DDR跑通,第二版再加图像处理,第三版优化成本和功耗。这样虽然慢一点,但每一步都踏实。

最后分享一个小技巧:调试图像系统时,在FPGA里做一个“图像冻结”功能,按一个按键就把当前帧锁住,方便你用逻辑分析仪慢慢抓数据。这个功能花不了多少资源,但能省你大量调试时间。另外,ILA的采样深度要设够,至少能抓一整行图像数据,不然看不到完整的问题现场。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询