Vivado HLS学习笔记(四)利用FPGA进行简单的图像处理

参考资料:xilinx大学计划
实验平台:ZYBO开发板

本次实验要做的是一个基于FPGA的简单图像处理程序, 共实现两个功能:
1.输出一个灰度图像的直方图。
2.将一个曝光不足的图像进行处理,使其对比度更大。

一、Vivado HLS 部分

首先我们用Vivado HLS来编写FPGA图像处理所用的IP核。

1.绘制直方图

1.首先编写相应的C/C++语言程序,加入到Vivado HLS工程中,再编写相应的testbench代码进行编译测试。


代码很简单大家看一下就明白了。

注意到右侧Directive窗口中的优化部分,分别表示doHist的输出接口使用AXI4-lite传输协议,inStream图像输入接口采用AXI4协议,输入数组histo存入bram中,loop_init循环进行展开。

2.点击Run C Simulation进行对C/C++源文件进行编译测试。


输出的部分直方图文本文件

3.将testbench输出的直方图文本与MATLAB中的直方图文件进行对比验证算法无误后,点击Run C/RTL Cosimulation来进行协同验证。
4.验证通过后点击Export RTL生成ip核。
如上步骤所示,绘制直方图的IP核已经生成成功。

2.调节对比度

步骤如上所示,接口部分也同样使用AXI4协议,效果如下。

处理前

处理前

处理后

处理后

二、Vivado 综合部分

1.将IP核部署到FPGA

打开Vivado界面,并建立工程,随后创建Block Design。

在Block Design界面首先需要添加zynq7 processing system,点击ADD IP查找ZYNQ添加IP核。该IP核是系统所提供的连接ARM与FPGA的IP核,详情见: https://www.xilinx.com/products/intellectual-property/processing_system7...

随后点击Run Block Automation进行自动配置。

将之前HLS所生成的两个IP核导入工程中,同样的步骤将doHist、doHistStrech和AXI DMA添加到diagram中。

双击AXI DMA进行对IP核的配置,配置情况如图所示。

可以使用Run Connection Automation 来自动连接。完成后的效果图如下,缺少的ip核可以按照下图来添加。

完成后点击Validate Design进行验证。

随后就可以生成bitstream,下载到FPGA。

2.使用逻辑分析仪进行Debug

三、利用ARM来测试FPGA的加速效果

1.下载完成后点击File->Export->Export Hardware,弹出对话框

勾选include bitstream然后点击OK。

2.点击File->Launch SDK启动SDK
3.SDK开发环境如下,主要用于对ARM的开发,在之前生成ip核的时候会生成对应的驱动函数。

4.实验结果如下图所示

文章转载自:知易行难的博客