第一章 为什么90%的Camera项目,都死在第一步?

第一章 为什么90%的Camera项目,都死在第一步?

第一节 一块返工300万元的PCB,让整个项目延期三个月


提问:

如果现在让你设计一块智能驾驶域控制器,你会先做什么?

大多数新人都会回答:

“先选SoC。”

有的人说:

“先选Camera。”

还有的人会说:

“先画原理图。”

这些答案都不算错。

但是在真正的Tier1公司,首席架构师通常先做一件完全不同的事情——算带宽。


📖 精讲(第一部分)

很多年轻工程师第一次接触智能驾驶项目时,总觉得摄像头只是一个普通外设。无非就是一颗CMOS、一个镜头,再通过GMSL或者FPD-Link把图像送到SoC,最后算法识别一下车道线和车辆,看起来整个流程并不复杂。

但是,当你真正参与一辆L2+甚至L3级智能汽车开发时,就会发现现实完全不是这样。

举个真实的工程例子。

某款城市NOA车型采用了3颗前视8MP摄像头、4颗环视2MP摄像头、4颗周视2MP摄像头以及1颗驾驶员监控摄像头。项目初期,大家认为每一路链路都满足芯片规格,实验室点亮测试也十分顺利,于是PCB很快进入试产。

然而进入整车联调后,问题开始出现。

高温暴晒两个小时以后,前视图像偶尔丢帧;连续跑高速时,环视画面会出现短暂卡顿;夜间HDR模式开启后,个别摄像头偶发重新建立链路。软件团队检查驱动没有发现异常,算法团队也确认模型正常,最终所有问题都指向硬件。

经过重新分析,真正的问题并不是Serializer,也不是Deserializer,更不是SoC性能不足,而是项目最开始计算Camera带宽时,只计算了图像有效数据,没有计算协议开销、同步信息、Blanking、ECC、CRC以及系统设计余量。

也就是说,第一步就算错了。

这个错误在实验室很难暴露,因为实验室环境稳定、线束较短、温度较低;但到了真实车辆环境,高温、振动、电磁干扰叠加以后,链路余量被迅速吃光,系统便开始暴露问题。

很多项目最后返工,并不是因为芯片选错,而是因为最开始没有把数据流量真正算明白。


🚗 工程案例:为什么实验室正常,上车却开始掉帧?

假设有一条高速公路,设计通行能力是每小时6000辆汽车

平时你统计车流时,只计算了真正载货的大货车,却没有把公交车、小汽车、应急车辆以及收费站排队时间算进去。

于是你得出结论:

“6000辆肯定够跑。”

结果国庆节一到,高速立刻堵成停车场。

为什么?

因为真正占用道路资源的不只是货车。

Camera带宽也是一样。

很多工程师计算时,只算了:

图像像素 × 位宽 × 帧率

却忽略了:

  • 视频同步包;
  • MIPI CSI-2包头;
  • ECC校验;
  • CRC校验;
  • Embedded Metadata;
  • Line Blanking;
  • Frame Blanking;
  • Virtual Channel信息;
  • Serializer编码开销;
  • Link Margin。

这些内容平时看不见,却一直在占用带宽。

所以实验室刚点亮时,链路利用率可能只有70%;到了整车环境,HDR、多摄同步、算法同时工作,链路利用率一下冲到95%以上,偶发错误自然开始出现。

真正成熟的硬件工程师,从来不会把链路设计到100%。

他们通常会预留20%~30%的带宽余量,因为汽车不是实验室,它需要在炎热、寒冷、颠簸、电磁干扰等各种环境下连续工作很多年。


🎓 总结

今天请大家先记住一句话:

Camera系统最大的敌人,从来不是分辨率,而是低估了数据量。

很多工程师工作几年以后,仍然认为:

Camera越高清,只是图片越大。

事实上,Camera送往域控制器的不是一张照片,而是一条持续不断、永不停歇的高速数据河流

如果这条河流的流量一开始就计算错了,那么后面的Serializer、Deserializer、CSI-2、DDR、ISP、NPU都会像多米诺骨牌一样受到影响。

所以,Camera设计真正的起点不是画原理图,而是计算数据。


第二节 为什么1080P叫2MP,而4K却叫8MP?

提问:

你每天都在说:

1080P。

2MP。

4K。

8MP。

但是有没有认真想过:

这些数字到底是怎么来的?

下一节,我们不急着写任何公式,而是先把**“像素”**这块最基础、也是最容易被忽略的积木彻底讲透。


下一节开始,我们会进入一步一步推导

为什么1080P叫2MP?为什么8MP不是8MB?为什么RAW12不是12Byte?