方寸知识篇 - 数字图像处理(五)- FPGA开发流程
首先要做的是需求分析以及问题描述。没有恰当的问题描述和需求分析,就不能做到正确衡量问题是否解决。描述问题主要在于描述,清晰的描述而不是讲述解决办法,这里面应该包含系统需要做什么、为什么要做,而不是讲怎么做的事情。描述问题需要从三个维度来讲:
1,系统功能,也就是你需要系统做什么,想让系统做图像处理后达到什么预期效果;
2,讨论系统的性能,系统完成这些功能的指标是什么,快还是慢、延迟多少、误差多少等等;
3,考虑系统的运行环境,温度、光学、硬件和接口,这个系统与整个工程其他系统之间的融合也需要认真考虑。
问题说明一定要全面,不仅要考虑正常运作,还要考虑在特殊极端环境下系统如何正常运作。如果系统是交互式的,那么用户和系统之间的接口就要定义清楚,可靠性和超出系统设计使用寿命之后的维修。
基于问题描述的系统必须是可达成的,因此需求定量禁止使用一些模糊概念的词比如“大部分”、“快速的”、“耐久的”...约束条件也非常重要,对于嵌入式实时系统,包括帧频、系统延迟、尺寸、功耗以及成本约束。不同的约束可能有冲突,尤其是实时操作系统,一个常见的冲突是速度和准确之间,这些冲突都必须在开发之前解决掉。
第二步来到软件算法及验证,一般很少在FPGA上开发图像处理算法,这主要是由于在FPGA上调试算法周期过长,即使仅仅做仿真工作所消耗的时间也远远比软件要多。大部分情况,FPGA仅仅作为一个映射工具来使用。将算法和FPGA实现分离出来的好处就是将算法映射到目标硬件之前可以完全测试应用层算法。在软件设计的过程中,另一个需要重点关注的问题是算法的精度,这就需要我们小心的处理浮点运算。在图像处理算法中,大部分的算法都涉及浮点运算,而在FPGA中,浮点运算是非常昂贵的,这时将浮点运算转换为定点运算是十分有必要的。定点转换带来的首要问题就是计算精度的下降,精度的丢失很有可能造成算法失效,在软件测试的时候要仔细评估计算精度的丢失对整个系统带来的影响,并以此评估FPGA中定点转换的位数。
硬件平台设计往往会与软件开发同时进行。硬件平台的设计需要依赖于软件的复杂度,通常一个算法的测试以及改进是一个周期很长的任务,如果硬件平台的设计等步骤到软件完全成熟时再进行,那么时间成本是非常高的。硬件平台的设计在算法开发基本功能验证之后就可以对其进行整体评估。
1,软件与硬件要合理的划分,硬件是由FPGA逻辑实现,软件是指算法由DSP ARM或单片机软件编程实现。例如不规则的底层图像处理操作和穿行顶层图像处理操作用于FPGA实现会非常繁琐且效率低下,此类操作用软件实现效率较高,开发难度较低。通信协议如USB,TCP/IP,需要一个复杂的协议栈来支持上层协议。虽然这些任务能够在FPGA上实现,但是就资源利用率上来说,用软件实现可以做到简单高效。
2,资源评估和FPGA选型,在硬件方案确定之后,选定FPGA型号之前,对整个系统所消耗的资源进行预估是十分必要的。对于图像处理系统来讲,比较敏感的资源是存储器,无论是处理算法的行缓存、帧缓存还是显示缓存,都不可避免的要用到片上存储器。此外,系统需预留一定的资源作为调试资源。通常情况下,资源比较多的FPGA成本很高,将图像缓存放在片外也是常用的解决方案之一。
接下来是FPGA映射。映射就是软件算法转换为FPGA设计的过程。这个过程并不是直接简单地把操作级算法移植到FPGA,而是把软件地功能通过修改算法映射到硬件上面。映射在不同抽象层上需要进行不同的考虑,在较高级上,应用级算法在映射到硬件之前应该全部在基于软件的平台上进行测试。在一些情况下,也需要修改不同的图像处理操作来获得统一的计算结构。通常情况下,应用级算法在映射过程中不应该改变很多。
在映射过程中,不仅要考虑操作本身,有时候也需要将它们作为一个序列来考虑。通过合成邻近的操作并且开发一个算法来实现这个合成操作有可能简化处理过程。在其他实例中通过将一个操作分离成一系列简单的操作有可能简化处理过程。任何实时应用都有时序约束问题。这个约束分为两类:吞吐量和延迟。流操作有吞吐量约束,通常每个时钟周期处理一个像素。如果不能维持这个速度,sensor过来的数据很可能会丢失。或者流向host的数据会丢失。由于处理的一个像素的时间要远远大于一个时钟周期,因此需要采用流水线结构保持吞吐量。另外一个时序约束是延迟,这是指从采集图像到输出结果或者完成一个动作的最大容许空间。延迟对于使用图像处理结果反馈以控制状态的实时控制应用来讲尤为重要。控制系统反馈的延迟会影响闭环系统的响应时间,过长的延迟会影响系统的稳定性。
与时序约束紧密相关的是存储器带宽约束,每个时钟周期仅能访问一个存储器端口。片外存储器的访问一般都在较大颗粒上直接进行,对于计算顺序和操作窗口顺序不相关的操作通常需要缓存整帧图像。大尺寸的图像缓存通常放在片外,每个时钟要读取多于一个像素是比较困难的。使用较少的资源的算法,由于较窄的逻辑深度因为常常有较短的延迟,采用规律的设计以便在FPGA上获得更短的布线延迟。
最后是仿真和验证,在代码写完之后完成功能测试,硬件的在线调试,用逻辑分析仪来监控信号,很多厂商提供的IDE中也提供了虚拟的逻辑分析仪来辅助调试
方寸知识篇 - 数字图像处理(五)- FPGA开发流程相关推荐
- 方寸知识篇 - 数字图像处理(四)- FPGA与图像处理
随着图像分辨率大幅提升,和图像算法复杂度的推动,传统的串行处理器已经无法满足实时处理的需求了.因此多核处理器.GPU以及FPGA很快在实时图像处理领域得到了迅速的发展.FPGA通过每个功能建立单独的硬 ...
- 方寸知识篇 - 数字图像处理(一)- 图像压缩
图像处理完毕后,根据不同的设计需求,图像处理流水线可能会分为两条不同的分支.首先,经过处理后的图像将会输出到显示器上.其次,图像被存储到本地的存储介质之前,先用工业标准的压缩技术进行压缩处理. 图像压 ...
- 方寸知识篇 - 数字集成电路(三)- 存储器
现代数字集成电路大部分面积用来做存储数据和程序指令,CPU一半以上的晶体管用于cache,高性能服务器和PC甚至有T字节级别的半导体存储器. 存储器有很多种类,选型与所要求的存储容量.读写时间.读写方 ...
- FPGA基础知识----第二章 FPGA 开发流程
第二章 FPGA 开发流程 FPGA 的设计流程就是利用 EDA 开发软件和编程工具对 FPGA 芯片进行开发的过程.原理图和HDL(Hardware description language,硬件描 ...
- FPGA之道——FPGA开发流程之项目方案与FPGA设计方案
文章目录 前言 FPGA开发流程 背景知识的分析与研究 项目方案的设计与制定 写清楚项目背景 写清楚项目需求 写清楚方案框架 写清楚算法细节 确保逻辑完备性 确保实现无关性 确保书面易懂性 算法可行性 ...
- FPGA开发流程(详述每一环节的物理含义和实现目标)
<div class="htmledit_views"> 需求说明:Verilog设计 内容 :FPGA开发基本流程及注意事项 来自 :时间的诗 ...
- (78)FPGA内部资源与FPGA开发流程-面试必问(二)(第16天)
(78)FPGA内部资源与FPGA开发流程-面试必问(二)(第16天) 1 文章目录 1)文章目录 2)FPGA初级课程介绍 3)FPGA初级课程架构 4)FPGA内部资源与FPGA开发流程-面试必问 ...
- (2)FPGA开发流程介绍(第1天)
(2)FPGA开发流程介绍(第1天) 1 文章目录 1)文章目录 2)FPGA初级课程介绍 3)FPGA初级课程架构 4)FPGA开发流程介绍(第1天) 5)技术交流 6)参考资料 2 FPGA初级课 ...
- FPGA的设计艺术(2)FPGA开发流程
前言 注:本文首发易百纳技术社区,文章链接:FPGA的设计艺术(2)FPGA开发流程 本文介绍整个FPGA设计流程以及设计FPGA所需的各个步骤-从一开始到可以将设计下载到FPGA的阶段.但是在此之前 ...
最新文章
- 【转载】学习嵌入式系统需要具备的条件、方法及步骤
- 苹果正式推iOS 4.2可使iPad支持多任务
- 构建多域名Exchange 2010邮件系统
- Math.ceil(),Math.floor()与Math.round()三个函数的定义。
- Codeforces Round #403 (Div. 1, based on Technocup 2017 Finals)
- oracle查询第二个字为a,Oracle多表查询 - osc_yqnlq679的个人空间 - OSCHINA - 中文开源技术交流社区...
- d3.js 制作简单的贪吃蛇
- 微结构设计能力看国产CPU发展
- select样式的重写
- html给背景架渐变,JS和CSS实现渐变背景特效的代码
- mysql备份恢复出错,MySQL-记一次备份失败的排查过程
- C++教程:C++开发的四重境界是什么?
- StackOverflow热帖:Java整数相加溢出怎么办?Java8一步搞定~
- python做音频格式转换
- 自用电脑/物理机安装ESXI6.8集成网卡版详细教程
- 汉字转语音 android 软件,文字转语音助手
- PT_常见的连续型分布/均匀分布/指数分布/柯西分布/正态分布
- cpu排行计算机专业,cpu排行,教您电脑cpu性能排行榜
- Weakly Superised video anomaly detection弱监督视频异常检测
- 【编译原理·总复习】第二章||文法语言||语法树||最左最右推导归约||句柄直接短语||例题+知识点