基于FPGA的图像加速器的设计_第1页
基于FPGA的图像加速器的设计_第2页
基于FPGA的图像加速器的设计_第3页
基于FPGA的图像加速器的设计_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于FPGA的图像加速器的设计摘要介绍了一种基于FPGA的图像加速器的设计。本文硬件加速器的实质是通过流水线设计来减少多余的操作达到加速的目的的,内存是由DMA控制器访问,之后DMA输出地址和控制信号,在实际应用中由于多个主设备可能同时访问内存而引起冲突,因此需引入仲裁器,控制内存的总线控制权由哪个主设备来控制,之后经由边缘检测加速器来处理图像,实验结果表明它可以实时、高效地完成图像处理,这样可以在图像视频处理上发挥很好的作用。关键字FPGA;硬件加速;图像边缘检测1、引言在实际应用中,为了完成信息的处理通常选取DSP或者ARM作为处理器.但随着图像越来越清晰所以对处理能力的要求很严格,单个处

2、理器不能解决个别实时系统对图像的处理,因此需要改变处理的方式,DSP+FPGA就是很好的解决策略,将压缩算法中比较难处理的部分交给FPGA来处理,通过这种方式来达到硬件加速的目的。不仅仅是视频压缩,在许多其他嵌入式系统,对硬件配置的要求很高,有时为了达到算法运算速度的要求,安装专用的嵌入式软件,使用性能高的处理器芯片有时也无法达到性能要求,能达到,但是经费太高,均不得不设计专用硬件。2、总体架构设计该架构既支持cpu读写memory,也支持cpu读写acc,acc读写memory,其中CPU为8位,地址总线16位,虚拟CPU(内部不写指令,仅做一次长整加速器的运算)唯一的加速器设备:长整加速器

3、,在获得CPU授权(访问它的内部寄存器)后,通过对Memory资源的直接访问,完成64位无符号长整的加减乘除算术运算加速器运算结束后,系统中的处理器和DMA设备访问内存时共用访问通道,当发生多个主设备一起访问内存时,就会不可避免的发生冲突。由仲裁器实施仲裁策略就必须被引入,通过中断信号通知CPU仲裁器,将访问权限交给唯一的访问者,因此有别的主设备向处理器发出访问内存的信号时,由该处理器决定哪个设备可以访问内存,进行长整型运算时,将源(Source)与目标(Target)读入加速器,执行64位的运算,之后将64位的运算结果通过8位的数据总线写回目标(Target)存储器,该总体架构设计如图1所示

4、。3、算法分析3.1算法对比假设该算法核心在整个执行周期所占用的时间比例为k。那么非核心算法的时间比例为(1-k),所以可以得到以下公式:t=kt+(1-k)t(1)假如该算法核心通过所设计的加速器把处理速度较原来的速度相比提高s倍,那么算法核心的处理时间就减少到原来的1/s,在整个执行周期中非算法核心的处理时间不变。可以得到该算法总的运行时间为:t=kt/s+(1-k)t(2)算法核心没有通过加速处理的时间除以加速后的处理时间可以得到该整体性能所提高的比例:S=(kt+(1-k)t)/(kt/s+(1-k)t)=1/(k/s+(1-k)(3)最后得到的公式叫Amdahl法则,Amdahl是以

5、GeneAmdahl的名字命名的,Amdahl是并行计算的先驱之一。该式表明算法核心在整个算法执行时间中所占的比例很大程度影响核心算法通过加速处理所带来的整体性能的提高。假设把该算法在嵌入式处理器上运行的时间分成两个不同的部分,并且执行两部分所花费的时间可以估算出来,也就是分成两个核心(kernel)算法,一个占总时间的80%,而另一个只占总时间的20%。若用一个硬件加速器来加速算法核心,我们将第一个算法核心的运行速度提高到原来的10倍,对第一个算法核心进行加速处理所带来的总体性能提升为:图2算法模块设计4、图像边缘检测模块的设计图像边缘检测法的原理是中心像素点和它周围的八个像素点都同时乘以一

6、个系数(通常是一个卷积表(convolutionmask)1/(0.8/10)+(1-0.8)=3.57(4)后相加的一个卷积过程,通过该过程来把每个像素点在每个方向上的导数值估计出来。该Sobel卷积表的Gx和Gy可以分别用于计(5)对第二个算法核心进行加速处理带来的总体性能提升为:1/(0.2/10)+(1-0.2)=1.253.2结果分析从结果对比可以看到,虽然第二个算法核心提高的运算速度是第一个的10倍,但是由于它在原来总运行时间里所占的比例较低,对其进行加速处理也只能带来较小的性能改善。而对第一个算法核心进行加速处理会对总体性能产生更显著的效果。所以我们在开始正式设计硬件时必须找到主

7、要矛盾,即占总运行时间比例较高的部分,针对这部分算法程序进行硬件加速器的设计,以期望取得显著效果,该算法设计模块如图2所示。算x和y方向的导数值。Dx和Dy是中心像素点和它周围的八个像素点都同时乘以一个系数(通常是一个卷积表(convolutionmask)后相加,这样就把x和y方向的偏导数值分别求了出来。最后,利用(6)式将中心像素点的导数求出来。计算公式如下式所示:IDI二.二-二为了得到导数幅值的最大值和最小值,对上式作如下简化:IDI=I二:I+I二I(7)图3展示了每个操作步骤中的具体数据,通过并行操作将原始图像从上层像素开始到底部像素的导数计算出来。对于系数值是0的部分积我们已经省

8、略,因为该操作没有任何意义。图3sobel数据操作该架构是独立的图像边缘检测硬件,原始图像(亮度),储存在memory中,忽略摄像头与memory的写显存操作,用偏导数的绝对值计算,仍然采用水平偏导Dx和垂直偏导Dy绝对值之和,全速流水作业,加速作业时,无任何空闲周期.5、系统仿真及结果测试使用Verilog语言编写,利用Altera公司quartusll开发软件进行设计调试,首先通过PhotoshopCS3对图片的灰度进行处理得到图4,为方便处理将格式修改为bmp格式,在bmp格式选项中将位深度改为8位,之后通过Matlab软件将图4读取并转换成Verilog的存储器初始化txt格式,在qu

9、artus的Sobel_Filter模块输出亮度倒数图像txt文件,再通过Matlab转换用阈值切换得到的边缘图像。在quartus中RTLView中可以清晰的看到各模块的层次结构,如图4。图5波形仿真图将mem_data波形的十六进制数据与亮度导数图像txt文件进行对比数据没有发生6错、误结。论每计算一个像素的导数需要周围8个像素的数值,计算全部像素必须与视频播放同步,即计算一帧像素的时间必须小于等于视频播放时一帧的时间(帧周期),即计算一个像素的平均时间必须小于等于视频播放时一个像素的传输时间,“带宽”的概念即是在一个像素的平均传输时间内(100ns)完成导数计算所需要的时间比例。或者说,

10、是在一帧视频播放周期内,完成导数计算诸操作所需要的时间比例如果每次单独读取全部9个像素,需要9X20ns=180ns视频播放时每像素的平均传输时间只有100ns这样,导数的计算就跟不上视频的播放了,此时,仅读像素的操作就占据180/100=180%现在的做法是:首先分别读入相邻三行的一个字(32bit=4byte)这用去了三个读周期,即3ng,X20ns=60ns,然后将行寄存器中的最左列的三个像素放入计算阵列中,然后流水线计算)出导数将行寄存器中左移动一次将行寄存7“叱器最左端移入计算阵列,计算阵列同样左移-一次,使用流水线计算出该导数将行寄存器中的第3列移入计算阵列,使用流水线计算出该导数

11、将行寄存器中的第4列移入计算阵图4RTL级视图最后开始分析波形仿真图,如图5所示列,使用流水线计算出该导数,到目前为止,完成4个像素的导数计算,使用了三个字的读周期即60ns随后继续读入三个字,重复上述过程,计算4个像素这样平均400ns周期内,读内存+读视频+写导数=100ns,占100/400=25%剩余的75%可以用于其他操作。参考文献崔屹数字图像处理技术与应用M.北京:电子工业出版社,1997刘真芳,王运琼,朱敏.数字图像处理与分析M.北京:清华大学出版社,2006刘建清.从零开始学CPLD和VerilogHDL编程技术M.北京:国防工业出版社,2006任晓东,文博.CPLD/FPGA高级应用开发指南M.北京:电子工业出版社,2003刘韬,楼兴华.FPGA数字电子系统设计与开发实例导航M.北京:人名邮电出版社,2005王伟.Verilog程序设计

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论