3986.net
小网站 大容量 大智慧
当前位置:首页 >> 信息与通信 >>

基于FPGA的图像加速器的设计


基于 FPGA 的图像加速器的设计

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

1、

引言

在实际应用中,为了完成信息的处理通 常选取 DSP 或者 ARM 作为处理器.但随着图 像越来越清晰所以对处理能力的要求很严 格,单个处理器不能解决个别实时系统对图 像的处理,因此需要改变处理的方 式,DSP+FPGA 就是很好的解决策略,将压缩 算法中比较难处理的部分交给 FPGA 来处理, 通过这种方式来达到硬件加速的目的。 不仅仅是视频压缩,在许多其他嵌入式 系统 , 对硬件配置的要求很高 , 有时为了达 到算法运算速度的要求,安装专用的嵌入式 软件,使用性能高的处理器芯片有时也无法 达到性能要求,能达到,但是经费太高,均不 得不设计专用硬件。

与目标(Target)读入加速器,执行 64 位的 运算,之后将 64 位的运算结果通过 8 位的 数据总线写回目标(Target)存储器,该总 体架构设计如图 1 所示。

2、总体架构设计
该架构既支持 cpu 读写 memory, 也支持 cpu 读写 acc,acc 读写 memory,其中 CPU 为 8 位,地址总线 16 位,虚拟 CPU(内部不 写指令,仅做一次长整加速器的运算)唯一 的加速器设备:长整加速器,在获得 CPU 授 权 (访问它的内部寄存器) 后, 通过对 Memory 资源的直接访问,完成 64 位无符号长整的 加减乘除算术运算加速器运算结束后, 系统 中的处理器和 DMA 设备访问内存时共用访问 通道,当发生多个主设备一起访问内存时, 就会不可避免的发生冲突。 由仲裁器实施仲 裁策略就必须被引入,通过中断信号通知 CPU 仲裁器,将访问权限交给唯一的访问者, 因此有别的主设备向处理器发出访问内存 的信号时,由该处理器决定哪个设备可以访 问内存,进行长整型运算时,将源(Source)
图 1 总体架构设计

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 是 以 Gene Amdahl 的名字命名的, Amdahl 是并 行计算的先驱之一。 该式表明算法核心在整 个算法执行时间中所占的比例很大程度影 响核心算法通过加速处理所带来的整体性 能的提高。 假设把该算法在嵌入式处理器上 运行的时间分成两个不同的部分, 并且执行 两部分所花费的时间可以估算出来 ,也就是 分成两个核心(kernel)算法,一个占总时 间的 80%,而另一个只占总时间的 20%。若 用一个硬件加速器来加速算法核心, 我们将 第一个算法核心的运行速度提高到原来的 10 倍, 对第一个算法核心进行加速处理所带 来的总体性能提升为:

图 2 算法模块设计

4、图像边缘检测模块的设计
图像边缘检测法的原理是中心像素点 和它周围的八个像素点都同时乘以一个系 数(通常是一个 卷积表 (convolution mask) ) 后相加的一个卷积过程, 通过该过程来把每 个像素点在每个方向上的导数值估计出来。 该 Sobel 卷积表的 Gx 和 Gy 可以分别用于计 算 x 和 y 方向的导数值。 Dx 和 Dy 是中心像 素点和它周围的八个像素点都同时乘以一 个系数 ( 通常是一个卷积表( convolution mask))后相加,这样就把 x 和 y 方向的偏 导数值分别求了出来。最后,利用(6)式将 中心像素点的导数求出来。 计算公式如下式 所示: |D| (6)

1/((0.8/10 ) + (1 - 0.8)) = 3.57

(4)

对第二个算法核心进行加速处理带来 的总体性能提升为:

1/((0.2/10 ) + (1 - 0.2)) (5) = 1.25
3.2 结果分析 从结果对比可以看到, 虽然第二个算法 核心提高的运算速度是第一个的 10 倍,但 是由于它在原来总运行时间里所占的比例 较低, 对其进行加速处理也只能带来较小的 性能改善。 而对第一个算法核心进行加速处 理会对总体性能产生更显著的效果。 所以我 们在开始正式设计硬件时必须找到主要矛 盾,即占总运行时间比例较高的部分,针对 这部分算法程序进行硬件加速器的设计 , 以期望取得显著效果, 该算法设计模块如图 2 所示。

为了得到导数幅值的最大值和最小值, 对上式作如下简化: |D| | |+| | (7)

图 3 展示了每个操作步骤中的具体数 据, 通过并行操作将原始图像从上层像素开 始到底部像素的导数计算出来。 对于系数值 是 0 的部分积我们已经省略, 因为该操作没 有任何意义。

图 3 sobel 数据操作

该架构是独立的图像边缘检测硬件, 原始图 像(亮度) ,储存在 memory 中,忽略摄像 头与 memory 的写显存操作,用偏导数的绝 对值计算,仍然采用水平偏导 Dx 和垂直偏 导 Dy 绝对值之和,全速流水作业,加速作 业时,无任何空闲周期.

图 5 波形仿真图

将 mem_data 波形的十六进制数据与亮 度导数图像 txt 文件进行对比数据没有发生 错误。

6、结论
每计算一个像素的导数需要周围 8 个 像素的数值, 计算全部像素必须与视频播放 同步, 即计算一帧像素的时间必须小于等于 视频播放时一帧的时间(帧周期), 即计算 一个像素的平均时间必须小于等于视频播 放时一个像素的传输时间, “带宽” 的概念即 是在一个像素的平均传输时间内( 100ns) 完成导数计算所需要的时间比例。或者说, 是在一帧视频播放周期内, 完成导数计算诸 操作所需要的时间比例如果每次单独读取 全部 9 个像素,需要 9×20ns=180ns 视频播 放时每像素的平均传输时间只有 100ns 这 样,导数的计算就跟不上视频的播放了,此 时,仅读像素的操作就占据 180/100=180% 现在的做法是: 首先分别读入相邻三行的一个字 (32bit=4byte)这用去了三个读周期,即 3 ×20ns=60ns,然后将行寄存器中的最左列的 三个像素放入计算阵列中,然后流水线计算 出导数将行寄存器中左移动一次将行寄存 器最左端移入计算阵列,计算阵列同样左移 一次,使用流水线计算出该导数将行寄存器 中的第 3 列移入计算阵列,使用流水线计算 出该导数将行寄存器中的第 4 列移入计算阵 列,使用流水线计算出该导数,到目前为止, 完成 4 个像素的导数计算, 使用了三个字的 读周期即 60ns 随后继续读入三个字,重复 上述过程,计算 4 个像素这样平均 400ns 周 期内,读内存 + 读视频 + 写导数 =100ns ,占 100/400=25% 剩余的 75% 可以用于其他操 作。 参考文献

5、系统仿真及结果测试
使用 Verilog 语言编写,利用 Altera 公司 quartusⅡ开发软件进行设计调试,首 先通过 Photoshop CS3 对图片的灰度进行处 理得到图 4,为方便处理将格式修改为 bmp 格式,在 bmp 格式选项中将位深度改为 8 位, 之后通过 Matlab 软件将图 4 读取并转换成 Verilog 的 存 储 器 初 始 化 txt 格 式 , 在 quartus 的 Sobel_Filter 模块输出亮度倒 数图像 txt 文件,再通过 Matlab 转换用阈值 切换得到的边缘图像。 在 quartus 中 RTL View 中可以清晰的 看到各模块的层次结构,如图 4。

图4

RTL 级视图

最后开始分析波形仿真图, 如图 5 所示。

[1] 崔屹.数字图像处理技术与应用[M].北 京:电子工业出版社,1997 [2] 刘真芳,王运琼,朱敏.数字图像处理与 分析[M].北京:清华大学出版社, 2006 [3] 刘建清.从零开始学 CPLD 和 Verilog HDL 编程技术 [M]. 北京 : 国防工业出版社 , 2006 [4] 任晓东,文博.CPLD/FPGA 高级应用开发 指南[M].北京:电子工业出版社, 2003 [5] 刘韬,楼兴华.FPGA 数字电子系统设计 与开发实例导航[M].北京:人名邮电出版社, 2005 [6] 王伟.Verilog 程序设计与应用[M].北 京:人名邮电出版社, 2005 [7] 高成,赖志国,陈继云.MATLAB 图像处 理 与 应 用 [M]. 北 京 : 国 防 工 业 出 版 社 , 2007 [8] 夏宇闻. Verilog 数字系统设计教程 第三版[M].北京: 北京航空航天大学出版社, 2013 [9] 姚敏 . 数字图像处理 [M]. 武汉 : 武汉大 学出版社, 2003 [10] 吴继华,崔诚.Altera FPGA/CPLD 设计 ( 基 础 篇 )[M]. 北 京 : 人 名 邮 电 出 版 社 , 2005


推荐相关:

基于FPGA 的集成电路形式化验证加速

基于FPGA 的集成电路形式化验证加速_法律资料_人文...是一个通过可达性分析及计算对集成电路设计进行形式...FPGA DOIDOI:10.11907/rjdk.151218 中图分类号:...


基于循环神经网络的语言模型的FPGA加速实现

网页 新闻 贴吧 知道 音乐 图片 视频 地图 文库 |...基于循环神经网络的语言模型的 FPGA 加速实现摘要 ...本方法是将设计分割成多个相同的组,以后可将优 化...

网站首页 | 网站地图
3986 3986.net
文档资料库内容来自网络,如有侵犯请联系客服。zhit325@qq.com