跳转到主要内容
国际橡塑展报名
国际橡塑展报名
国际橡塑展报名

Vivado HLS

Vivado HLS 接口综合

judy /

Vivado HLS中常见的接口类型有:

1. ap_none

         默认类型,该类型不适用任何I/O转换协议,它用于表示只读的输入信号,对应于HDL中的wire类型。

2. ap_stable

         只用于输入信号,其具体实现方式仍为ap_none。它用于向Vivado HLS的综合器表明该信号在两次复位之间值是不变的。

3. ap_vld

在数据端口port_name的基础上创建一个额外的数据有效信号指示< port_name >_vld。

4. ap_ack

         在数据端口port_name的基础上创建一个额外的应答信号指示< port_name >_ack。

5. ap_hs

         使用该类型,则会同时创建额外的数据有效信号和应答信号,其效果相当于ap_vld与ap_ack之和。

6. ap_ovld

         对于输入信号,其效果与ap_none是一样的。

         对于输出信号,其效果与ap_vld是一样的。

基于Vivado HLS的Canny算法实时加速设计

judy /

<font color="#FF8000">作者:谭检成1,2,吴定祥2,3,李明鑫1,2,唐立军1,2;2018年电子技术应用第9期</font>

<font color="#0000C6"><strong>摘要: 针对Canny边缘检测算法在实时图像处理过程中运算耗时长、数据运算量大的缺点,研究了利用Vivado HLS实现Canny边缘检测算法的硬件加速方法。该方法由FPGA的逻辑资源生成算法对应的RTL级硬件电路,实现算法硬件加速。实验结果表明,该方法能快速实时检测图像边缘,有效降低FPGA设计图像算法的难度,可以应用到实时视频图像处理中。</font></strong>

<strong>0 引言</strong>

Vivado HLS 入门实验

judy /

当我们安装好Vivado 的时候,也同时装好了Vivado HLS.。 这是个什么东西?我就有一种想一探究的感觉。网上一查,Vivado High-Level Synthesis。学习了一段时间的Zynq 7000, 找了一个HLS的教程,就开始了如下入门实验,体验高级语言综合设计IP。Vivado HLS是Xilinx 推出的高层次综合工具,采用C/C++语言进行FPGA设计。HLS提供了一些样例方便大家熟悉其开发流程。另外关于HLS的使用介绍,Xilinx官方提供了2个重要开发文档ug871 和 ug902。里面详细介绍了包括怎么建立HLS 工程,怎么编写Testbench,怎么进行优化等问题。在HLS软件界面,在右侧有个directive, 里面列出了程序中所有用到的变量,函数和循环结构,点右键可以给其配置。

对循环结构, 一般选择 unroll( 即展开循环) , 可以自己设定展开因子 factor。 为提高程序的并行化处理, 可以给函数选择 PIPELINE。 对应数组, 可以设置为 ARRAY_PARTITION,数组维数可以自己设定。 HLS 软件其实很智能的, 简单的结构, 一般软件自己会优化好。 每一个优化方案都保存在一个 Solution 里, HLS 可以创建多个 Solution, 用于比较不用的优化效果。

基于Vivado HLS的帧差图像实现

judy /

<font color="#FF8000"> 作者:晨,来源:FPGA开源工作室</font>

1. 帧差法原理

帧差法的实现非常简单:
<center><img src="http://xilinx.eetrend.com/files-eetrend-xilinx/article/201809/13352-392…; width="670"></center>

如图可见,由目标运动引起的运动变化区域包括运动目标在前后两帧中的共同位置(图中黑色区域)、在当前帧中新显露出的背景区域和新覆盖的背景区域三部分。

学会System Generator(13)——Vivado HLS调用C/C++代码

judy /

本文是该系列的第13篇。Vivado HLS是Xilinx FPGA开发套件中的一款软件,可以使用C/C++语言进行设计,并转换为RTL级模型。System Generator中的Vivado HLS block可以将HLS开发软件设计的C/C++代码整合到Simulink环境中,利用Simulink强大的仿真特性对设计进行仿真测试。

ug948中提供的官方例程为图像的中值滤波,该设计将一副256*256大小的RGB图像,添加噪声后提取出其中的Y通道,使用C++语言完成中值滤波。该设计将在Simulink环境下进行仿真。本文将完成改该设计,借此介绍上述功能。

<strong>Vivado HLS完成中值滤波设计</strong>
中值滤波是一种常见的图像滤波方法,选取一个核(本设计为3*3)在图像上滑动,取核的中间值作为核中心像素点的值。中值滤波在滤除椒盐噪声的同时模糊效应会明显低于线性平滑滤波。Xilinx提供的C++设计源文件代码清单如下:
#include "MedianFilter.h"
#define WINDOW_SIZE 3
typedef unsigned char PixelType;

Vivado HLS 入门(二)

judy /

<font color="#FF8000">作者:OpenS_Lee</font>

<strong>1 概述</strong>

Vivado HLS 是 Xilinx 提供的一个工具,是 Vivado Design Suite 的一部分,能把基于 C 的设计 (C、C++ 或 SystemC)转换成在 Xilinx 全可编程芯片上实现用的 RTL 设计文件 (VHDL/Verilog 或 SystemC)。

基于Vivado HLS的一维离散卷积的高层次综合

judy /

<strong> 前言</strong>
利用vivado高层次综合工具可将C代码综合成HDL语言。本文将详细解析一维有限长离散卷积的例子,并分析综合结果。另外,vivado HLS的使用方法见笔者另一篇博文: http://xilinx.eetrend.com/blog/13178 本文不再赘述。

<strong> 维离散卷积原理</strong>
一维离散卷积就是卷积核与输入序列值两两相乘再求和,公式为:
<center><img src="http://xilinx.eetrend.com/files-eetrend-xilinx/article/201808/13251-385…; width="670"></center>