【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
现实生活中,有很多的算法是soc isp没有实现的。而图像处理的时候,又需要有这些算法,并且客户也愿意承担额外的成本开支,这个时候应该怎么办呢?比较好的办法,就是在soc开发板前面加一个fpga开发板,fpga开发板的作用就是添加自己的算法,这样就可以同时兼顾fpga和soc的优点了。

1、fpga vs 软件处理
很多算法可以用fpga实现,也可以用软件实现。但是如果用软件实现的话,实时性没有办法得到保证。这种情况下,就需要把算法用fpga固化下来,这样就可以达到高实时性处理的效果。
2、fpga是否可以放在soc的后面
理论上fpga也可以放在soc的后面。但是很多的soc,它的mipi接口,只支持mipi csi rx,并不支持mipi csi tx。这样一来,如果soc后面接fpga,soc的选择面会小很多。而且相对而言,把fpga放在soc的前面有很多的好处,比如fpga可以实现sensor的透传,把自己模拟成一个成熟的sensor。这样从soc的角度来看,fpga就和一颗正常的sensor没有任何区别。
3、soc为啥一般不支持mipi csi tx
主要还是需求太少了。对于大部分场景来说,mipi输出这一部分,有dsi就已经足够了。**mipi tx的作用就是显示,mipi rx的作用就是camera sensor输入。实在找不到mipi csi tx应用的场景。**像fpga添加算法,做特定场景的加速,本质上还是非常小众的需求,因此mipi csi tx只能是fpga自己实现了。不过好在fpga公司,一般都体哦那个mipi csi tx/rx的ip,我们会使用就可以了。
4、fpga是否可以单独处理图像
如果只是显示和拍照,对图像质量要求不高,那么用fpga处理图像也是可以的,sensor挑一个ov5640这种。最坏的情况就是fpga处理完成之后,找一个小的mcu,处理一下bmp、jpeg和fs文件系统。但是一旦涉及到isp、涉及到编解码、以及网络协议处理,那么用fpga是远远不够的。这也不是fpga擅长的地方。所以,很多时候,都是默认fpga后面接一个soc,专门处理图像之外的工作。
**还有一点,现在很多的soc都默认带有npu,这也是fpga不具备的优势。**所以,很多时候,我们都是用fpga做一些算法加速,后端还是靠soc来完成。
5、i2c信号
除了上面说的mipi之外,fpga连接camera sensor、fpga连接soc,这些都需要i2c信号。因此配置的时候,sensor的id和fpga的id需要做一下区分,这样才知道配置属性的时候是怎么配置的。此外,因为涉及到fpga的配置,之前的sensor驱动代码也要稍作调整。
6、透传的fpga模块
通过前面的分析,我们就知道fpga一般位于sensor和soc之间。如果是对sensor进行配置,都是通过i2c透传到sensor里面;如果是fpga本身进行处理,那么就处理一下对应的设置。输出部分也是一样,拿到bayer图像之后,可以直接处理bayer图像,再送给soc。对于soc来讲,一切就像是接一个普通的sensor一样,没有任何区别。