基于FPGA的硬件加速器设计的研究与应用

时间:2022-09-29 06:13:10

基于FPGA的硬件加速器设计的研究与应用

摘 要:通过对硬件加速器的目的和原理作详细介绍,以sobel硬件加速器的设计为研究内容,设计硬件加速器由计算单元、地址产生器、从机接口和控制状态机等构成,将各模块连接验证进行测试。系统连接通过对图像进行边缘检测处理,使系统总处理时间降低,从而优化复杂系统设计。

关键词:sobel硬件加速器;研究;验证;优化

中图分类号:TP332.2

1 硬件加速器的目的

随着待处理信息量和算法复杂度的日益剧增,单核处理器已经不能胜任某些实时系统的需求。例如处理高清视频是需要采用DSP+FPGA的系统策略,将视频压缩标准H.264压缩算法中耗时大的部分交给FPGA处理,以达到硬件加速的目的。不仅视频图像,在许多其它系统中,对处理器要求高的,需编写专用的嵌入式软件,采用高档的处理器芯片有时无法达到系统对算法运算速度的要求,即使能达到,性能比较差,因此需要设计专用硬件。

2 硬件加速器器的基本原理

硬件加速的实质是通过增加运算并行性达到加速目的。常采用硬件复制和流水线的方法。将设计的处理流程分为若干步骤,整个数据处理是“单流向”的,前一个步骤的输出是下一个步骤的输入,采用流水线设计方法来提高系统的工作频率,如图1所示。流水线各步骤的处理由各单元完成,当数据沿流水线方向依次通过所有功能单元时,即完成了所有数据处理并输出到寄存器。由于流水线上各功能单元能够并行工作,因此只要保证下一功能单元的输入是上一功能单元的输出,则所有功能单元并行工作可以保证整个流水线正常工作,而无须等到整个流水线处理结束后才开始下一份数据的处理,从而保证数据充满所有功能单元,提高处理速率。

图1 流水线处理步骤

在应用中,选取硬件加速对象时,应该对耗时大的算法进行加速,从而降低其它处理器的负担。

假设执行算法核心所占的时间比例为 f,则执行非算法核心的时间为(1- f ),因此有: (1)

加速器能把算法核心的处理速度提高到原来的s倍,则算法核心的处理时间就缩短到原来的1/s,总的运行时间为: (2)

总体性能的提高比例是原来的处理时间除以加速后的处理时间:

(3)

这个公式表明,加速处理核心算法所带来的整体性能的提高,在很大程度上依赖于算法核心在整个算法执行时间中所占的比例。

3 基于FPGA的Sobel硬件加速器设计

当系统引入硬件加速器之后,需要对内存等共享资源进行访问。由I/O控制器完成外部设备和系统之间的高速传输数据,数据从外部设备读入内存,通过加速器处理,处理后的数据被写到内存。由此可见:处理器、加速器和I/O控制器都可能访问内存,这样数据传输速度会很慢,如果让I/O控制器和加速器直接对内存访问而不通过处理器,作为主设备给出读写内存的地址和控制信号,可大大加快访问内存的速度。

在共同访问内存时,须避免由于多个主设备同时访问内存而引起的冲突。在系统中引入仲裁器,系统中的主设备在访问内存之前,须给仲裁器发出请求信号,仲裁器根据预先确定的仲裁策略,决定发出访问内存的准许信号。当该设备完成对内存的访问后,便撤消请求信号,仲裁器进入新一轮的仲裁。

基于这一设计思想设计出图像边缘检测系统:CPU初始化加速器和硬件加速器存取RAM均需占用数据线、地址线和控制线。这三总线作为共享资源被 CPU 和硬件加速器竞争访问,故引入仲裁器进行仲裁。

Sobel硬件加速器功能模块可划分为:计算单元、地址产生器、从机接口和控制状态机。其总体框图如图2所示。

图2 加速器总体结构设计图

总线数据在Sobel加速器作为主从设备时均可访问,CPU通过从机接口先对地址发生器进行设置,再启动控制状态机跳出空闲状态,控制计算单元和地址发生器,依次从存储器中读取原图像素、sobel边缘检测和导数图像存储。

构建完Sobel加速器硬件后,要对其进行验证。为简化验证,采用逐个验证Sobel加速器各子功能:从机总线操作、主机总线操作、地址产生和像素计算等。下面是验证步骤:(1)验证从机总线所有操作正常;(2)在步骤(1)验证通过的基础上,利用从机接口启动计算过程,检查计算单元能否按正确的时序完成计算、主机总线能否配合无误地产生读写存储器时序、地址发生器能否生成正确的地址、最后检查像素值的计算是否正确等。

构建一个测试平台,该平台用以模拟外挂加速器的嵌入式系统。该测试平台包括:处理器CPU、存储器和总线仲裁器。

处理器CPU完成的功能包括:(1)设置加速器原始图像和导数图像的起始存储地址。本设计将这两个起始地址分别选为0x008000和0x060000;(2)设置加速器中断使能寄存器。(3)写加速器启动寄存器,启动加速器开始边缘检测;(4)每10μs读一次状态寄存器,直到完成标志位被设置为止,系统时钟默认为100Mhz。

存储器模快,在初始化阶段将一幅原始图像的像素值导入到存储器中,以模拟摄像头图像采集功能;当原始图像完成边缘检测后,将导数像素值存入存储器中,将其直接存为文件。当外部电路产生读写时序时,将正确数据送往数据总线或完成数据总线上数据的存储。如前所述,存储器读写时序与Sobel从机接口读写时序一致。

总线仲裁器是防止共享总线的冲突访问,在CPU利用总线访问Sobel从机接口寄存器和sobel加速器利用总线访问存储器之间仲裁。设计中把Sobel加速器和CPU的片选输出分别用作Sobel加速器和处理器的请求信号,仲裁器根据当前总线使用情况分别产生批准信号。

4 硬件加速器的验证

完成所有sobel加速器和测试模型的建立,将这些模块连接起来,进行测试。主要连线是CPU与Sobel从机接口间的连接以及sobel主机接口与存储器间的连接。由于这两组接口一致,可让这两个接口共享一组总线,在设计共享总线的多路选通逻辑时,根据仲裁器仲裁,完成共享总线驱动源和被驱动源的选通。被驱动源为sobel从机接口和存储器对应的输入端口,直接将其连接到sobel加速器和存储器输入接口即可。

将测试平台下生成的导数文件转换为bmp图像的C程序,测试原始数据通过C程序读取bmp图像得到sobel边缘检测后的图像。

5 小结

通过sobel硬件加速器的研究表明,加速器和高速I/O控制器采用DMA方式向存储器写入/读出数据,不需要处理器干预。当多个设备竞争同一资源时,将该资源共享,通过仲裁器授予。加速器适用于处理存储器中的数据块,许多视频和静止图像的处理应用都是面向块处理的。通过块处理掌握硬件加速器设计原理使系统总处理时间降低,从而优化复杂系统设计。

参考文献:

[1]王啸林,李玉惠.基于FPGA的图像处理系统研究[J].仪器仪表用户,2006(13).

[2]王大千,费建军,董雪.基于FPGA的视频监控系统的设计及研究[J].数控技术,2012(9).

[3]徐飞,肖铁军等.基于FPGA的视频图像旋转硬件加速器的设计与实现[J].传感器与微系统,2010(10).

[4]叶淑群,陈鸿鹏.实现基于FPGA的硬件算法加速器[J].宝鸡文理学院学报,2006(6).

[5]薛明星.基于FPGA器件的Sobel算法实现[J].电子元器件应用,2008(11).

基金项目:吉林省教育厅“十二五”科学技术研究项目“基于FPGA的GPRS图像处理系统设计”项目合同号:2011453。

上一篇:浅析计算机技术在微课程开发中的实践 下一篇:璧山县妇幼保健服务体系现状