FPGA图像处理的开发流程

一、描述问题以及分析需求

        不论最后的系统是基于硬件还是基于软件,对问题的详细描述都是最重要的阶段。为了使系统描述更清楚,至少需要考虑三个方面。

        第一是系统的功能,即系统需要做什么,详细描述图像处理后的详细结果。第二个是系统的性能,即完成这些图像处理的功能指标是什么,第三个是系统要运行的环境。

二、软件算法仿真及应用

        在实际的工程中,软件开发以及验证会在硬件设计之前进行,因为软件的复杂性会对系统硬件的架构、硬件选型以及资源消耗产生影响,并且FPGA在图像处理算法的调试过程中,耗时也比较长,所以将算法开发与FPGA实现分离开来的好处之一就是算法在映射到FPGA之前得到完整的测试。

        在软件的设计过程中,需要关注的一个重点问题是算法的精度,需要我们小心的处理浮点数运算。浮点数运算需要占用大量的资源和时间,为了解决这个问题,将浮点数转为定点数计算是一个有效的方法。定点数会影响计算的精度,而且精度的变化会间接影响最后图像处理的效果,所以在进行软件测试的时候要仔细评估计算精度带来的影响。

三、硬件平台设计

        硬件平台设计往往和软件开发同时进行。

        硬件平台的第一步往往是合理的划分硬件和软件部分,硬件部分一般指的是FPGA逻辑部分,软件部分一般指的是DSP、单片机或者ARM编程实现的部分。底层图像处理操作(如形态学操作、Sobel算子以及均值滤波等)具有计算量大,结构规则并行,适合FPGA处理。不规则的底层操作处理和串行顶层图像处理使用FPGA实现会出现繁琐且效率低。

        软件中常用的两类操作或任务是高级图像处理操作和结构复杂的通信协议。高级图像操作的特点是数据量小但是控制模式比较复杂。如通信协议中的USB和TCP,需要一个复杂的协议栈来支持上层协议。这些任务FPGA可以完成,但是从资源消耗上来时软件中实现更为简单有效。

四、FPGA的映射(算法的移植) 

        FPGA映射不是简单的把操作级算法移植到FPGA中(除非这些算法是硬件开发的),而是把软件的功能通过修改映射到硬件层面上。

        关于时序约束的问题分为两类:吞吐量和延迟。流操作有吞吐量约束,通常每个时钟周期处理一个像素。由于处理每个像素作用的时间远远超过一个时钟周期,因此,有必要采用流水线结构来保持吞吐量。另外一个时序约束是延迟,指的是从采集图像到输出结果或者是完成一个大动作的最大容许空间。延迟对于使用图像处理结果反馈以控制状态的实时控制应用来说尤为重要。

        与时序约束紧密相关的是存储器带宽约束,每个时钟仅能访问一个存储器接口。片上存储器遇到的问题会小一点,因为这些存储器包括很多很小的模块,每个模块都能独立访问,但是片外存储器的访问一般都是在较大模块上进行的,对于计算顺序和操作顺序不相关的操作,通常需要缓存整帧图像。

五、仿真与测试

        在编写完FPGA的代码时对其进行功能测试是十分有必要的。

参考资料:基于FPGA的图像处理原理及应用

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值