最近一直有这个想法,用FPGA来做数字图像处理。当然这里的数字图像处理,应该是基于高速的、实时的数字图像处理。虽然我自己也接触了六七年的FPGA,可一直是在做逻辑与时序,没有做过算法与信号处理方面的项目。现在越来越觉得技术进步太迅速,自己所学太肤浅,FPGA本身又太博大精深。我思考了几个关于用FPGA来做数字图像处理的问题,以及我自己的理解,希望各位专家能指导。
1、用FPGA来做数字图像处理是否可行?
2、该想法是否比现今的FPGA+DSP的架构更好?
3、开发环境是否更有优势?
4、技术难点在哪里?
5、有没有应用前景?
对于以上几点,我自己的看法是这样的:
1、我觉得是可行的。毕竟FPGA的架构决定了我们的设计是要直接面对底层的硬件,对于一些高速信号的实时采集与处理,包括对外围内存的读写访问,以及接口芯片的驱动,基本都已经是比较完善的了,而FPGA所提供的更强大的资源,如DSP48内核等等,更是为我们对数字信号处理做了更简化的设计,以至于对信号处理本身并不太精通的人也能较快速地上手。因此用FPGA来做数字图像处理,适合软硬件协同开发。
2、我觉得各有优缺点,在较长时间内两者并存,并且短时间内FPGA+DSP还占主导。第一,DSP是专门做这个事情的,而FPGA就算写出来这个代码,也未必是最优的,可能占用了过多的资源,或者花费了过长的开发周期,而且还得优化;第二,DSP48内核是不是就比DSP更快,我没有特别研究过,值得怀疑;第三,数字图像处理可能占用较多的资源,这样就会用到高端的FPGA,成本就成了主要问题,而FPGA+DSP可能反而更便宜。
3、开发环境上,原来用的verilog语言似乎不太适合于做数字图像处理的算法,有很多对于C来说很简单的事,如除法计算,对于verilog来说很难。而现在基本上是用Sys Gen和Matlab Simulink来做数字信号处理,这样就大大简化了设计难度,以及利用EDK来做控制,尽量少用verilog语言,应该能达到接近C语言的效果。
4、技术难点上,我觉得还是算法以及优化。毕竟算法种类太多,每种算法都需要优化,如果不优化,资源浪费太多,而且效果并不好。而如果在更高的速度上来实时处理,可能就是这个问题的核心了,当然我觉得这也正是FPGA相对于DSP的优势之处。
5、应用前景方面,我所知甚少,还望各位专家补充。
总之,在FPGA做数字图像处理方面,我是新人,请大家对我以上的看法多多指点。 |