Linux环境下Vivado和HLS功能测试

一. 简介

针对已经完成的Vivado在Linux下的安装与运行,本文主要通过一个LED灯闪烁的案例对Vivado和HLS在Linux操作系统下的运行流程进行介绍,并对已安装软件功能进行一个简单的测试。
HLS将C代码的编译综合为Verilog或VHDL代码,本文对HLS生成的代码进行简单的分析,同时也对编译过程中可能出现的报错 “Failed to generate IP”进行解决。

二. Vivado_HLS生成IP核

  1. 运行Vivado_HLS:
    Vivado_HLS的运行过程在Vivado在Linux下的安装与运行中已做介绍,运行以下命令shell脚本即可打开HLS:
	source /opt/Xilinx/Vivado/2017.4/settings64.sh  ##Vivado在Linux下的安装路径
	vivado_hls

请添加图片描述

打开界面如下图所示:

请添加图片描述

  1. 创建新工程 Create New Project,将工程建立在Documents下的workplace工作文件夹内以便查找:

请添加图片描述

  1. 顶层模块命名 Top Function:

请添加图片描述

  1. 选择FPGA型号 Part Selection,与选用的型号保持一致即可:

请添加图片描述

  1. 新建.cpp文件,代码内容很简单,即每隔50M个时钟周期LED灯闪烁一次,编译生成IP核:

请添加图片描述

IP核如图所示:

在这里插入图片描述

三. Vivado工程调用IP核

  1. 运行Vivado:
    Vivado的运行过程在Vivado在Linux下的安装与运行中已做介绍,运行以下命令shell脚本即可打开Vivado:
	source /opt/Xilinx/Vivado/2017.4/settings64.sh  ##Vivado在Linux下的安装路径
	vivado
  1. 新建工程后,在IP Catalog中增加HLS工程所在路径,可以看到HLS生成的IP核成功导入:

请添加图片描述

  1. 新建bd(Block Design)工程,导入IP核,ap_rst始终拉低,ap_clk和led_V接口外接:

请添加图片描述

  1. ap_clk和led_V分别约束到晶振时钟输出和LED接口:

请添加图片描述

  1. 综合成功后生成bit流文件:

请添加图片描述

  1. 由于采用时钟为50MHz,因此program device后可以看到LED每秒闪烁一次:

在这里插入图片描述

请添加图片描述

四. HLS生成Verilog代码分析

将HLS生成的IP核打开可以看到编译后的Verilog代码如下图:

请添加图片描述
其中命名较为复杂混乱,但由LED灯的工作原理,可以从输入输出接口入手简单分析:

计数器i_reg_39与i_1_fu_56_p2基本等价,相互赋值完成依赖于输入时钟的计数器功能,通过与25M比较完成led_V输出接口的翻转,实现每50M个时钟周期完成一次闪烁的功能;

五. HLS运行过程出现的问题与解决

出现问题:

HLS在编译综合工程生成IP核的过程中可能会出现“Failed to generate IP”的报错,如下图所示:

在这里插入图片描述

解决方法:

这一问题通常是由于HLS版本较早导致,例如本工程使用的是2017.4版本的HLS,因此需要将系统时间改到2018年之前即可成功生成IP核:

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: vivado_hls是一种高级综合工具,用于将C/C++代码转换为硬件描述语言,如VHDL或Verilog。高斯图像处理是一种经典的图像滤波算法,用于平滑和降噪图像。 在vivado_hls中实现高斯图像处理可以通过以下步骤完成: 1. 读取输入图像:将输入图像加载到HLS工程中。可以使用vivado_hls提供的图像处理库或自定义的图像读取函数来实现。 2. 图像预处理:首先对输入图像进行预处理,通常包括图像的剪裁、缩放或调整亮度等操作。这些步骤可以使用C/C++代码在vivado_hls中实现。 3. 高斯滤波算法:使用高斯滤波算法对图像进行平滑处理。高斯滤波算法是基于像素周围的邻域进行计算的,可以通过卷积操作来实现。在vivado_hls中,可以使用C/C++代码来实现高斯滤波算法,并将其转换为硬件描述语言。 4. 图像后处理:在滤波完成后,可以对输出图像进行后处理,如亮度调整、对比度增加等操作。这些步骤也可以使用C/C++代码在vivado_hls中实现。 5. 输出图像:将处理后的图像保存到指定的文件中。可以使用vivado_hls提供的图像处理库或自定义的图像保存函数来实现。 通过以上步骤,就可以在vivado_hls中实现高斯图像处理。在进行设计时,需要考虑硬件资源的限制和性能要求,以确保设计能够在给定的约束下运行。 ### 回答2: vivado_hls是一种高级综合工具,可以将C/C++代码转换为FPGA(现场可编程门阵列)的硬件描述语言。高斯图像处理是一种常见的图像处理技术,用于平滑和模糊图像。以下是用vivado_hls实现高斯图像处理的基本步骤: 首先,需要编写一个C/C++函数来实现高斯图像处理算法。该函数应接受一个输入图像作为参数,并返回一个平滑后的输出图像。可以使用卷积运算来实现高斯模糊,其中对每个像素的值进行加权平均,以降低图像中噪声的影响。 接下来,使用vivado_hls工具加载编写好的C/C++函数,并进行综合和优化。vivado_hls会将输入函数转换为硬件描述语言(如VHDL或Verilog),然后进行优化以提高性能和效率。根据FPGA的资源限制和性能要求,可以调整优化参数,如时钟频率和资源利用率。 一旦综合和优化完成,就可以将生成的硬件描述文件加载到FPGA进行实际的高斯图像处理。将输入图像加载到FPGA的存储器中,然后通过配置FPGA来执行高斯模糊算法。算法处理完毕后,从FPGA的输出端口获取平滑后的图像。 最后,可以将平滑后的图像保存到磁盘或进行进一步的图像处理。在保存图像之前,可以将输出图像转换为所需的格式(如JPEG或PNG),以便后续使用。 综上所述,使用vivado_hls实现高斯图像处理需要编写高斯模糊算法的C/C++函数,加载到vivado_hls进行优化和综合,然后在FPGA上执行实际的图像处理,并获取结果。这种方法可以确保在FPGA上高效地处理图像,并获得平滑后的图像。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cascatrix

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值