FPGA图像处理的开发流程
Posted 阿妹有点甜
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FPGA图像处理的开发流程相关的知识,希望对你有一定的参考价值。
1.需求分析及问题描述:从三个方面来考虑,第一是系统功能,在一个图像处理应用中,需要详细说明图像处理后的预期结果;第二是系统的性能,需要详细说明系统完成这些功能的指标,例如对于实时图像处理来说,允许的最大延时和每秒需要处理的帧数是两个很重要的指标,第三是系统将要运行的环境。
2.软件算法设计及验证:由于在FPGA上调试算法周期过长,即使做仿真工作所消耗的时间也远比软件多,因此大多数情况下,FPGA仅仅作为一个映射工具。将算法开发与FPGA映射分离的好处就是在算法映射到目标硬件之前可以完全测试应用层算法,测试的流程在基于软件的图像处理环境中更容易实现,通常情况下,Windows的图像处理开发平台是Matlab或者Visual Studio。在软件设计的过程中,另一个需要重点关注的问题是算法的精度,在图像处理算法中,大部分算法涉及到浮点数运算,而在FPGA中,浮点数运算会存在精度损失的问题,而定点运算则必然会带来计算精度的下降,最终导致算法失效,因此中间存在精度考量的问题。
3.硬件平台设计:第一步就是合理划分硬件和软件,此处硬件指的是算法由FPGA逻辑实现,软件是指算法由DSP\\ARM或单片机软件编程实现。举个例子,规则的底层图像处理操作(如形态学滤波、Sobel算子、均值滤波等)具有计算数据量大、结构规则并行等特点,非常适合用FPGA硬件实现。不规则的底层图像处理操作(如具有动态可变长度循环的算法)和串行顶层图像处理操作(如弹道计算、任务判决融合等)用FPGA实现会非常繁琐且效率校次,相反,此类操作用软件实现效率较高,开发难度较低。
4.FPGA映射:意在将软件的功能通过修改算法映射到硬件上面,在映射的过程中,不仅考虑到操作本身,有时候也需要将它们作为一个序列来考虑,往往一个操作可以被分解成一系列简单的操作集合有可能简化处理过程。在开发实时处理图像的应用中会存在时序约束问题,约束分为两类:吞吐量和延迟,流操作有吞吐量约束,通常每个时钟周期处理一个像素,如果不能维持这个速度,那么从相机流出的数据就可能丢失,或者错过,因此需要采用流水线来保持吞吐量,延迟是指从采集图像到输出结果或者完成一个动作的最大可容许空间。与时序约束紧密相关的是存储器带宽约束。
5.仿真及验证:最简单的方法就是将主信号布线到不同的IO口上,使得它们从FPGA外部是可观测的,使用一个示波器或者逻辑分析仪来监控信号。或者采用厂商提供的虚拟的逻辑分析仪来辅助调试,此方法会占用片内的存储器资源。
参考文献:牟新钢、周晓、郑晓亮《基于FPGA的数字图像处理及应用》
以上是关于FPGA图像处理的开发流程的主要内容,如果未能解决你的问题,请参考以下文章