EDN China > 设计实例 > 可编程器件 > FPGA > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

(多图) 用FPGA来加速采用OpenCL的多功能打印机图像处理

Timothy M. Hunter?? EEE成员;Dmitry Denisenko?? EEE成员;Sarnath Kannan?? Jared M. Bold?? IEEE学生成员;Prasanthi Thippabathini?? Peter Dusel博士?? 2015年03月10日 ?? 收藏1

V. OPENCL系统级接口

一旦OpenCL内核代码被写入并进行了编译,它必须加以打包、加载并在参考板上执行。Altera提供了完整的SW架构来实现FPGA的汇编构建、加载和利用[8][9]。Altera OpenCL编译器采用OpenCL内核,并创建了一个优化的Verilog RTL映射。然后,采用Altera的AOC设计流程来处理Verilog代码,从而得到FPGA二进制编程文件,名为.sof。与创建FPGA.sof文件并行,一个标准C编译器(如gcc)用来编译与OpenCL内核通信的C主机代码。通信机制是通过一组链接到主机可执行文件的Altera OpenCL运行程序库实现的。图16示出了创建.sof和.exe文件的Altera OpenCL工具流程[9][10]

图16:Altera OpenCL工具流程
图16:Altera OpenCL工具流程

图字:

LLVM前端;系统描述;C编译器;AC运行程序库

未优化LLVM IR

优化程序

优化的LLVM IR

RTL发生器;Verilog

A. Altera参考板

Altera提供与OpenCL兼容的多种解决方案:可作为PCIe子卡的FPGA板和独立的SoC/FPGA板。我们选择了Altera Cyclone V SoC FPGA作为开发平台[11]。OpenCL Cyclone V SoC参考平台包含以下内容:

● 双核ARM Cortex A9 - 800MHz

● 1GB的DDR3 HPS,硬处理器系统,内存采用Linux,也可以直接访问FPGA。它是OpenCL全局内存的首选地点。

● 1GB的DDR31GB只可访问FPGA。它可用作OpenCL内核的“暂存(scratch pad)”全局内存。

● 千兆以太网与外部PC的通信

● Cyclone V FPGA5CSXFC6D6F31C8N FPGA

图17是我们的设计和测试中所使用的Altera参考板的框图[12]

图17:Cyclone V SoC参考板框图
图17:Cyclone V SoC参考板框图

B. Altera OpenCL接口

OpenCL定义了4个一组的模型:平台;执行;内存和编程[13]。在平台模型级别,主机是Cyclone V SoC ARM内核,器件是FPGA架构。在器件内,我们采用了多个计算单元(CU)。

Altera OpenCL将内核模拟为通过其工作项目流动的深度流水线硬件架构。它定义了作为1个计算单元的内核流水线实例。程序员可以选择指定计算单元内核实例化的数量,以实现空间与吞吐量的权衡。指定较大数量的计算单元可消耗更多的FPGA架构,并在提高有效吞吐量的同时带来了全局内存争用和恒定缓存争用。在CCP例子中,我们采用了5个OpenCL内核,即7×7滤波器、缩放、CST、调整和误差扩散,每个都同时作为1个计算单元运行。

执行模型采用Altera的OpenCL上下文、命令队列和内存对象。CCP流水线是在一个ARM内核上运行的基于C语言的程序。它管理FPGA加速器架构中的主机程序和CU之间的所有切换。图18是一个简化系统软件接口图,示出了哪些单元是由用户提供的,Altera公司又提供了什么。

图18:OpenCL系统软件接口
图18:OpenCL系统软件接口

图字:

应用SW MFP复印流水线

程序;OpenCL上下文;OpenCL命令队列;内存对象

内核;内核

OpenCL HAL

OpenCL用户空间驱动程序

FPGA非OpenCL部分Linux内核空间驱动程序;OpenCLLinux内核空间驱动程序

器件——FPGA

内核;本地内存;内核;本地内存;内核;本地内存

【分页导航】

《电子技术设计》网站版权所有,谢绝转载


?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

图像处理流水线?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈