基于Xilinx FPGA的硬件协处理器设计
2017-06-02张强王华苏宏锋闫晓茹
张强 王华 苏宏锋 闫晓茹
摘要:DSP+FPGA模式具有结构复杂、成本高以及资源浪费比较严重的缺点,基于FPGA的软硬件协同设计已成为DSP+FPGA的理想替代方案。FPGA软硬件协同系统中,硬件协处理器的高效设计尤其重要。Xilinx 提供了三种硬件协处理器设计方法:HDL语言+IP核,System Generator和HLS(High-Level Synthesis)。鉴于HDL语言描述算法能力有限,重点研究了后两种硬件设计方式。在实验环节选取Sobel边缘提取算法,并用System Generator和HLS加以实现。最终结果说明,这两种新颖的设计方式具有设计效率高、能够实现较复杂算法以及加速仿真和验证的优越特性。
关键词:FPGA;硬件协处理;System Generator;HLS
中图分类号:TP332 文献标识码:A 文章编号:1007-9416(2017)04-0173-02
1 引言
DSP+FPGA的结构具备一定的灵活性和通用性,能够满足实时性要求。但也具有结构复杂、成本较高以及资源浪费严重的缺点[1]。基于FPGA的软硬件协同设计具有结构紧凑、设计灵活、硬件资源利用率高以及成本较低的优势。
FPGA利用任务内部的并行机制和自定义大小的存储器,能够为每一个计算任务优化数据路径,从而获得很高的计算能力[2]。除此之外,FPGA能提供一种机制保证任务的确定执行,具有很好的实时处理能力[3]。由此可见,硬件实现算法具有计算能力强和实时性高的两大优势。软硬件协同系统中,硬件协处理器的高效设计对系统性能指标影响巨大。
由于HDL语言只是针对硬件描述的,对于算法表达、仿真和验证并不方便,与C语言等高级语言相比,可靠性也较差[4]。这些不足严重妨碍了软硬件协同系统的实现与性能。本文針对System Generator和HLS两种高层次综合设计方法,设计了Sobel算法硬件协处理器。实验结果表明:System Generator和HLS能够更高效完成硬件协处理器的设计,加速复杂算法的硬件实现、仿真和验证。
2 Sobel边缘提取算法
Sobel算子是用于水平和垂直边缘检测的简单检测子,能够很好的处理灰度渐变和噪声多的图像。具体实现是两个模板gx和gy与图像中的每一个像素进行卷积。Sobel算子3*3模板如下:
S(x,y)=[gi(x-1,y-1)+2gi(x-1,y)+gi(x-1,y+1)]
-[gi(x+1,y-1)+2gi(x+1,y)+gi(x+1,y+1)]
+[gi(x-1,y-1)+2gi(x,y-1)+gi(x+1,y-1)]
-[gi(x-1,y+1)+2gi(x,y+1)+gi(x+1,y+1)] (2)
由于算法需对每一个像素进行处理,且本身较简单以及计算重复性高,适合采用流水线并行的方式进行硬件实现。Sobel算法流程图如图1。
3 System Generator与HLS实现
硬件协处理器设计所需模块[5]:From Workspace、To Workspace、Gateway in、Gateway out、System Generator模块、共享存储器、Subsystem模块、MCode、EDK Processor以及Resource Estimator模块等。
由图2所示,在Simulink中搭建软硬件协同设计的最终模型,其中深色模块是Sobel算法子系统,里面封装了具体的实现。Sobel子系统分为4个模块,采用全流水线方式:分别是3行缓冲模块、X/Y方向梯度运算模块、绝对值相加和二值化模块。最后,选择HDL Netlist编译类型,生成HDL文件。
基于HLS的设计主要分为:语言选择、接口设计、算法设计以及程序优化设计等内容。本文选择C++语言实现Sobel算法,硬件接口采用ap_fifo方式,对应总线AXI4-Stream。
算法分为:3行缓冲器、窗口缓冲器、滤波函数等模块。在本例中,采用了循环优化Pipelining和Dependence指令,消除行缓存器的数据依赖性,使循环结构实现流水线处理。运用Inlining优化指令,解除了函数的不同层次问题,减少延迟和增加吞吐量。最后选择EDK Pcore导出方式。除了生成硬件接口模块以外,还会自动生成驱动模板。
4 实验与测试结果分析
实验选择Zynq XC7Z020-1CLG484器件进行仿真。器件内嵌双ARM Cortex A9硬核,主频高达667MHz,主要用于软硬件协同领域。仿真测试的图像大小1080*1920,BMP格式。
系统的仿真结果如图3所示。其中图3(a)为原图,图3(b)为处理参照图,图3(c)为System Generator仿真结果图,图3(d)为HLS仿真结果图。
时序仿真波形如图4、5所示。两种设计工具都提供了TestBench的自动生成,其中System Generator采用ISim仿真,HLS采用Modelsim进行仿真。
由仿真时序图和表1可知,System Generator流水线的初始化间隔小于HLS,这是因为数据路径规划不同造成的。
由表2可知,综合后HLS逻辑资源消耗虽然多一些,但算法执行速度得到提升。
由上可知,System Generator能够对数据路径进行直观的规划,方便并行处理和流水线实现,但其接口设计能力明显较弱,只提供基于系统总线的接口;HLS通过接口优化和算法优化指令隐藏了综合的具体实现,流水线实现简单,且支持AXI-Stream和DMA接口,但数据路径规划不直观。实际中,System Generator可以通过优化数据路径、添加输入输出寄存器和改变运算模块的实现方式(如采用DSP48硬核)改善协处理器性能。HLS可以通过改变程序结构、优化高层次综合指令的组合方式实现。
5 结语
软硬件协同系统中,硬件协处理器的高效设计是提升系统性能的关键。本文通过Sobel算法实例,对基于System Generator和HLS的硬件协处理器设计进行详细的介绍。仿真结果表明:两种设计方式各有优劣,共同的优点是:易于进行系统级设计、仿真和验证,克服了采用HDL语言描述算法的不方便性,都能够实现较复杂的算法;缺点为:System Generator的接口设计能力不足;HLS的数据路径的规划不直观。
参考文献
[1]沈淦松,叶玉堂,刘霖,刘娟秀. FPGA软硬件协同处理实时图像处理系统[J].光电工程,2012,39(10):143-150.
[2]Carlos González,Daniel Mozos, Javier Resano,et al. FPGA Implementation of the N-FINDR Algorithm for Remotely Sensed Hyperspectral Image Analysis[J]. IEEE Transaction On Geoscience And Remote Sensing, 2012,50(2):374-388.
[3]Sebastian Lopez,Tanya Vladimirova,Carlos Gonza′lez,Javier Resano,et al. The Promise of Reconfigurable Computing for Hyperspectral Imaging Onboard Systems:A Review and Trends[J]. Proceedings of the IEEE, 2013, 101(3):698-722.
[4]夏宇闻.Verilog 数字系统设计教程[M].北京:北京航空航天大学出版社,2008.
[5]罗婷婷,王厚军,曾浩.基于System Generator的插值滤波器的FPGA实现[J].电子质量,2009(10):21-23.