不管是 mipi camera,还是 dvp camera,都可以通过 fpga 芯片,或者是 soc 芯片对它们进行数据处理。实际处理过程当中,两者有很多的相似点,也有很多的不同点。
1、支持 camera 数量不同
对于 fpga 而言,支持的 camera 数量取决于内部资源的数量。最典型的 fpga 开发板,就是几个 camera sensor 接口,一个 ddr,一个 hdmi 输出接口。如果本身 fpga 内部资源比较多,那么支持的 camera 数量就会多一点,反之则少一点。而 soc 支持的 camera 数量是固定的,少则一个都没有,多则 3、4 个,7、8 个都是有可能的。
2、isp 支持不同
fpga 内部没有 isp。一般 fpga 通过 i2c ip 和 csi2 & mipi dphy ip 接入 camera 获取数据之后,就可以开始处理 camera 数据了。但是 fpga 内部是没有固化 isp ip 的,一般需要自己写,或者使用开源 ip 解决。大部分 soc,除了低端的 soc,大部分都有自带 isp 的,至少有一个入门的 isp。这也是 fpga 和 soc 很大的一个区别。
因此,如果不想使用 isp,fpga 在选择 camera sensor 的时候,可以优先挑选一些带 isp 的 sensor。不过这样做有利有弊,有利的一点就是 fpga 不再需要 isp 处理了,不好的一点就是 sensor 的选择面少了很多。
3、实时性不同
大多数使用 fpga 的场合,都是看中了 fpga 实时性高、低延时的特点。信号从 camera 拿到之后,经过电路的实时处理之后,投射到 hdmi,这中间的过程是非常高效的。但是一般的 soc,从 camera 到 isp、video out,这中间除非厂家提供了完善的硬件加速机制,如果只是靠纯软件来处理 camera 数据,一般来说,处理流程都是很慢的,至少都是几百 ms 级别。所以,哪怕是 soc,我们在处理 camera 数据的时候都要尽可能复用硬件加速机制,尽可能减少软件的参与。
4、功能不同
如果只是采样、显示、保存图片,那么 fpga 有很大的优势。这中间,如果还有一些自定义算法,需要硬件加速完成,那更是 fpga 的强项所在。但是,实际应用中我们除了图片采样之外,还需要对视频进行 h264 编解码处理、进行 npu 处理,这些都是 fpga 本身所不具备的。不仅如此,现在很多设备都需要 tcp/ip 联网处理,这对 soc 来说很容易实现。但是 fpga 要想联网,做起来就没有那么方便了。
5、成本不同
一般的 soc+ddr 成本不是很高,少则几十元,多则几百元。而 fpga 处理,一般都不便宜。好一点的 fpga,都要数百元起步。不仅如此,fpga 开发人员少,一般不太好招聘,而 soc 的软件开发,相比较而言,这方面的人才要好找的多。
6、两者复用的方式
鉴于 fpga 和 soc 的特点,对于特殊的一些场合,我们都是习惯于 fpga、soc、fpga+soc 这样分开来使用。如果客户对延时要求很高,同时对成本不敏感,可以直接用 fpga 实现。反之,客户希望实现的功能比较多,对延时、自定义算法有一定容忍度,这个时候使用 soc 是最好的。最后,如果客户是那种既要、又要、还要的类型,对成本不是特别敏感的话,这种场合可以 camera sensor 先接入 fpga 开发板,再接入 soc,这也是可以的。至于 fpga 和 soc 通信的接口,可以是 csi2 tx/rx,也可以是 pcie,这个根据不同的 soc 灵活做出选择。
**对于成本要求特别严格的场合,这种情况下只能用 mcu+dvp 接口的形式来解决了。**选择的 camera sensor 只能是一些低价的、带 isp 的 sensor,只有这样才能满足低成本的要求。


