基于FPGA的简单图像处理程序,可实现两个功能

基于FPGA的简单图像处理程序,可实现两个功能,第1张

参考资料:xilinx大学计划

实验平台:ZYBO开发板

本次实验要做的是一个基于FPGA的简单图像处理程序, 共实现两个功能:

1.输出一个灰度图像的直方图。

2.将一个曝光不足的图像进行处理,使其对比度更大。

一、Vivado HLS 部分

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

1.绘制直方图

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

基于FPGA的简单图像处理程序,可实现两个功能,基于FPGA的简单图像处理程序,可实现两个功能,第2张

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

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

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

基于FPGA的简单图像处理程序,可实现两个功能,基于FPGA的简单图像处理程序,可实现两个功能,第3张

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

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.。.

基于FPGA的简单图像处理程序,可实现两个功能,基于FPGA的简单图像处理程序,可实现两个功能,第4张

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

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

基于FPGA的简单图像处理程序,可实现两个功能,基于FPGA的简单图像处理程序,可实现两个功能,第5张

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

基于FPGA的简单图像处理程序,可实现两个功能,基于FPGA的简单图像处理程序,可实现两个功能,第6张

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

基于FPGA的简单图像处理程序,可实现两个功能,基于FPGA的简单图像处理程序,可实现两个功能,第7张

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

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

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

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

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

基于FPGA的简单图像处理程序,可实现两个功能,基于FPGA的简单图像处理程序,可实现两个功能,第8张

勾选include bitstream然后点击OK。

2.点击File-》Launch SDK启动SDK

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

基于FPGA的简单图像处理程序,可实现两个功能,基于FPGA的简单图像处理程序,可实现两个功能,第9张

4.实验结果如下图所示

基于FPGA的简单图像处理程序,可实现两个功能,基于FPGA的简单图像处理程序,可实现两个功能,第10张

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2640548.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-12
下一篇 2022-08-12

发表评论

登录后才能评论

评论列表(0条)

保存