Vivado HLS介绍及IP核的设计流程

HLS入门实践 本次实验使用HLS工具来设计一个简单的数字电路,该电路可以控制FPGA板上的LED灯的点亮和熄灭。我们使用C语言来编写设计,然后将其转换为VHDL或Verilog硬件描述语言,以便在FPGA上实现。在本次实验中,我们使用Xilinx Vivado HLS工具来进行设计和仿真。首先,我们创建了一个新的工程,并在其中编写了一个简单的C语言程序来控制LED灯的点亮和熄灭。我们使用HLS工具来将C代码转换为硬件描述语言,并对其进行优化和调试。 阅读详情
AI摘要

本篇详细介绍了使用Vivado HLS软件从C/C++代码生成IP核的全流程,包括工程创建、代码验证、高层次综合、RTL验证及IP创建。通过实例演示如何将自定义功能转化为可复用的IP核。

本篇主要是笔者个人对Vivado HLS软件的一些理解与介绍,及该软件的设计流程创建IP核。


目录

前言

正文

一、创建工程

二、C源代码的验证(Validate)

三、高层次综合

四、RTL验证(Verify)

五、IP创建

结语


前言

Vivado HLS全称是Vivado High Level Synthesis,一般在安装Vivado的时候会默认附带安装。一般我们在用Vivado开发时,可以使用其自带的IP核,实现基本的数学运算(乘法器、除法器、浮点运算器等)、信号处理(FFT、DFT、DDS等),IP核类似编程中的函数库,可以直接调用,非常方便。而Vivado中的IP核毕竟种类有限,而且并不总是能实现我们需要的功能,所以Vivado HLS的作用就凸显出来了!

简单的说,我们可以将需要实现的功能使用C/C++写成子函数,然后通过Vivado HLS综合生成HDL级的IP核。然后将此IP核添加到Vivado中的IP核库中备用。当然,在从C/C++到IP核的过程中,要进行测试,仿真,优化等步骤确保IP核可用并且性能得到提升。下面两张图说明了具体设计流程,以Xilinx官方提供资料为例,进行讲解。

Vivado HLS入门视频教程:https://forums.xilinx.com/t5/Vivado/%E8%B7%9F-Xilinx-SAE-%E5%AD%A6-HLS-%E6%8C%81%E7%BB%AD%E6%9B%B4%E6%96%B0-%E4%B8%AD%E6%96%87%E8%AE%B2%E8%A7%A3/td-p/708179

官方手册与例程资料:链接:https://pan.baidu.com/s/17F8JKuEV2XQq1dkHR6_DBw 
提取码:y4ba

链接失效请点这个:https://download.youkuaiyun.com/download/CSD_N_csdn/12657321

正文

一、创建工程

以官方例程中的lab1文件夹提供的源文件与测试文件为例。

首先,打开Vivado HLS,点击Create New Project,在弹出窗口中填写工程名,设置工程本地存放路径,然后点击Next。

 

点击Add Files,选择fir.c文件进行添加(如果源代码是C++编写,应该是.cpp文件),然后点击Browse,添加Top Function,完成后,.h头文件会自动添加,点击Next,至此源文件添加完成。

在这个页面上,上面有提示,Add/remove C-based testbench files即添加测试文件和测试数据文件,点击Add Files,选择文件夹中的fir_test.c和.dat文件,它们一个是测试的程序文件,一个是测试的数据文件,完成后点击Next。

在Solution Configuration窗口,Solution Name可以修改或者默认,后续如果进行优化,就要新建Solution,代表不同的解决方案。Part Selection要进行芯片选型,这个可以默认或者根据你具体应用的芯片型号进行选择。完成后,点击Finish。

第一部分创建工程至此结束,可以看出,在创建工程的过程中,就已经把源文件和测试文件等添加到了工程中,接下来进行验证。

二、C源代码的验证(Validate)

进入工程后,可以打开源文件和测试文件查看,不难发现,源文件的代码主要是一个子函数,而测试文件的代码就是一个主程序,在主程序中调用该子函数,以达到测试子函数的目的。

点击Run C Simuation,进行验证,在弹出窗口点击OK。

完成之后,会弹出fir_csim.log窗口,包含验证的信息,出现0 errors代表验证成功。

三、高层次综合

本步骤是将C代码综合成RTL逻辑,点击Run C Synthesis,综合完成后,可以查看资源使用情况。

四、RTL验证(Verify)

本步骤是对RTL的逻辑验证,使用测试文件提供测试数据,与标准输出数据进行对比。点击Run C/RTL Cosimulation,在弹出窗口点击OK即可。完成后会弹出Cosimulation的报告。

五、IP创建

本步骤就是将上述的RTL逻辑打包成HDL的IP核,在左侧工程文件目录窗口,右键点击solution,选择Export RTL,弹出对话框,可在对话框中对该IP核信息进行配置,也可默认点击OK。

完成后,可以在左侧的文件夹solution->impl->ip下找到压缩完成的IP核。

完成后的IP核就可以添加到Vivado的仓库中,便于以后的使用了。

结语

这篇博客侧重于对设计流程的描述,而对每个部分可能遇到的问题及解决方法并没有说明。在后续的更新中会对每个部分进行详细的分析说明,例如关于测试文件和测试数据的编写方法,关于端口的问题,关于优化的方法等,当然大家也可以参考官方的文档学习。

对于此软件的学习算是准备工作吧,接下来笔者准备使用该工具制作神经网络模型的卷积核等部分,最终实现在FPGA上部署神经网络模型的目标!欢迎有兴趣的朋友一起学习、探讨!

参考前辈博文:https://blog.youkuaiyun.com/weixin_39290638/article/details/80228806


如果本文对您有用,欢迎点赞、关注!

 

 

vivado 卷积编码ip核学习笔记和matlab仿真对照 coe置入rom ,rom ip核读数据会有一个周期的延迟?也就是说深度设置为100的话addr为1到100时才是正常所存储的数据。不管复位信号多早拉高 这一段固有,启动时间?那这一段握手成功的话会有一个数据的传输吗?卷积核ip核复位后 ready信号会拉高一个周期再拉低一个周期再拉高一个周期?注意matlab里仿真需要转至8进制且code1在前 分别为155 117。采用1/2编码效率 (2,1,7) 生成多项式ip核默认设置。设置里面有个输出寄存器,勾选的话会有两个周期的延迟。top程序和tb如下。 阅读详情

相关推荐

vitis HLS 创建IP核步骤

vitis HLS 封装IP核

weixin_44820962的博客 1613

一文了解Vivado HLS

以下内容摘自正点原子的:《领航者 ZYNQ 之 HLS 开发指南》 为了尽快把新产品推向市场,数字系统的设计者需要考虑如何加速设计开发的周期。设计加速主要可以从“设计的重用”和“抽象层级的提升”这两个方面来考虑。Xilinx 推出的 Vivado HLS 工具可以直接使用C、C++或 System C 来对 Xilinx 系列的 FPGA 进行编程,从而提高抽象的层级,大大减少了使用传统 RTL描述进行 FPGA 开发所需的时间。 一、高层综合简介 如图 1.1.1 所示,FPGA 设计中从底层向上一共存

耐心的小黑的博客 2万+

Vivado HLS 2023.1 脉冲压缩 IP 核设计:从 MATLAB 到 FPGA 的 5 步流程

本文详细介绍了使用Vivado HLS 2023.1工具链将MATLAB算法转化为FPGA IP核的5步流程,重点解决雷达信号处理中的脉冲压缩技术问题。通过MATLAB算法验证、C++模型转换、IP核集成与性能优化,实现高效的FPGA部署,提升雷达信号处理性能。

weixin_30036289的博客 294

FPGA开发之Vivado安装及HLS环境配置,并实现流水灯实例

FPGA学习之HLS

qq_54347584的博客 7247

Vitis2024 HLS项目生成IP核,Vivado验证IP核

Vitis2024.2使用HLS组件,利用C++编写代码,创建IP核,将IP核导入到Vivado中的Block Design,进行后续开发,最后进行综合和实现,在开发板上进行验证。

qq_52033578的博客 3646

vivado-HLS创建工程基础

vivado-HLS入门 本文主要描述了如何使用vivado HLS的基本功能。文章内容主要来自于Xilinx官方文档:ug871-vivado-high-level-synthesis-tutorial,所用代码来自于Xilinx官方例程:ug871-design-files\2016.1\Introduction\lab1 添加链接描述 vivado-HLS可以实现直接使用 C,C++ 以及 System C 语言对Xilinx的FPGA器件进行编程。用户无需手动创建 RTL,通过高层次综合生成HDL

Hold人民币的博客 1402

vivado的HLS设计流程

vivado的HLS设计流程 简单介绍一下vivado的HLS的设计流程,从建工程开始到生成IP核的整个过程 一般需要先准备建立工程的文件,c/c++(cpp)函数文件,c/c++(cpp)testbench测试文件,h头文件以及一些需要用到的其他如.dat,文件。 从左到右依次是:VectorAdd.h头文件、VectorAdd_tb.cpp测试文件、VectorAdd.cpp函数文件 1、...

weixin_43950612的博客 1790

使用Vivado HLS块实现Vivado HLS调用C/C++代码进行DSP开发

在FPGA(Field-Programmable Gate Array)开发中,Vivado HLS(High-Level Synthesis)是一种高级综合工具,它允许开发人员使用C/C++代码来描述硬件功能,并将其转换为可在FPGA上实现的逻辑。在左侧的"Project"面板中,右键单击"Sources"并选择"Add New",然后选择"IP"。在左侧的"Project"面板中,展开新建的IP并打开"synth"文件夹,然后编辑"interface.h"文件。在该文件中,实现所需的C/C++功能。

IfllUnity的博客 618

Vivado开发套件设计笔记(3)——加法器设计——指针(上)

本博文讲述了如何在HLS中构建含有数组和float型变量的IP核,并在Vivado中将IP核与ZYNQ核连接,最后在SDK软件中调用IP核。

GHU 3605

Vivado设计指南:从基础到高级应用

Vivado是Xilinx公司推出的用于其7系列及更新FPGA的集成设计环境。它提供了从设计输入到生成比特流的完整工作流程,并且提供了高度的可定制化和自动化设计优化功能。高层次综合(HLS)技术是一种从高级语言如C/C++/SystemC等描述的算法直接生成硬件描述语言(HDL)的过程。它与传统的硬件设计方法不同,传统的设计方法依赖于硬件描述语言,如VHDL或Verilog来实现硬件逻辑。

weixin_31938351的博客 1627

【论文学习】《Fully-Convolutional Siamese Networks for Object Tracking》2016年SiamFC 全卷积孪生网络用于目标跟踪

在这项工作中,我们脱离了跟踪中采用的传统在线学习方法,并展示了一种专注于在离线阶段学习强嵌入的替代方法。与在分类设置中的使用不同,我们证明,对于跟踪应用,孪生全卷积深度网络能够更有效地使用可用数据。这不仅反映在测试时,通过执行有效的空间搜索,也反映在训练时,其中每个子窗口都有效地代表一个有用的样本,而几乎没有额外的成本。实验表明,深度嵌入为在线跟踪器提供了自然丰富的特征来源,并使简单的测试时策略表现良好。我们相信这种方法是对更复杂的在线跟踪方法的补充,并期望未来的工作能够更彻底地探索这种关系。

SkyLeopard的博客 2419

HLS环境搭建及Vivado基本开发流程

高层次综合(High-level Synthesis)简称 HLS,指的是将高层次语言描述的逻辑结构,自动转换成低抽象级语言描述的电路模型的过程。所谓的高层次语言,包括 C、C++、SystemC 等,通常有着较高的抽象度,并且往往不具有时钟或时序的概念。相比之下,诸如 Verilog、VHDL、SystemVerilog 等低层次语言,通常用来描述时钟周期精确(cycle-accurate)的寄存器传输级电路模型,这也是当前 ASIC 或 FPGA 设计最为普遍使用的电路建模和描述方法。

qq_53088119的博客 6843

惯性导航原理(九)-INS的初始对准-初始姿态确定+双矢量定姿

文章目录INS的初始对准INS初始化静基座/静态粗对准静态粗对准—加速度计调平原理加速度计调平静态粗对准—陀螺罗盘思考初始对准的影响因素双矢量定姿原理静态解析粗对准—双矢量定姿静态解析粗对准(续)其它初始对准方法精对准动对准 INS的初始对准 INS的初始对准为初始化的一部分 INS初始化 初始位置: 给定(INS没有初始位置确定的能力,例如从GPS ) 初始速度: 零(静止状态)或给定 初始姿态: 初始对准(INS有能力自己测资态) 粗对准vs. 精对准 静止状态vs. 运动状态 重要性: 失之毫厘,谬

十八与她的博客 1万+

ZYNQ7100部署VIT算子的IP核过程记录

接下来我们将在IP集成器中完成ZYNQ嵌入式系统的搭建。然后把这个生成的IP核导入block design。“xc7z100ffg900-2”型号。需要打补丁,教程见该链接。导出IP核时由于时间戳溢出报错。

m0_72684048的博客 978

流媒体学习之路(mediasoup)——simulcast 与 svc 简介(7)

流媒体学习之路(mediasoup)——simulcast 与 svc(7) 文章目录流媒体学习之路(mediasoup)——simulcast 与 svc(7)

qw225967的博客 7339

主流仿真软件Sigrity/HFSS/Siwave/Hyperlynx/ADS差异

在电子设计自动化(EDA)领域,各种仿真软件如Cadence Sigrity、Mentor Graphics的HyperLynx、Keysight的ADS以及ANSYS的SIwave等,都广泛应用于不同的应用场景中。综上所述,这些EDA仿真软件在各自的应用场景中发挥着重要作用,帮助工程师在设计阶段就能够评估和优化电子产品的性能,提高设计的可靠性和效率。:Sigrity由全球最大的EDA公司Cadence推出,Cadence还推出了Orcad和Allegro等著名软件。:由安捷伦(现是德科技)公司开发。

Geektec的专栏 9404

HLS入门实验

高层次综合(High-level Synthesis)简称HLS,指的是将高层次语言描述的逻辑结构,自动转换成低抽象级语言描述的电路模型的过程。所谓的高层次语言,包括C、C++、SystemC等,通常有着较高的抽象度,并且往往不具有时钟或时序的概念。

qq_62848601的博客 1308

基于YOLOv8与UI界面的校园垃圾分类督导系统

YOLO(You Only Look Once)是目前最为广泛使用的目标检测算法之一。它通过一次前向传递即完成目标检测,具有极高的速度与效率。YOLOv8是YOLO系列的最新版本,相比于之前的YOLO版本,YOLOv8在速度、精度、检测能力等方面都有了显著的提升。本项目通过结合YOLOv8模型与UI界面,成功实现了校园垃圾分类督导系统。该系统能够自动识别不同类型的垃圾,并通过UI界面实时展示垃圾分类的结果。

YOLO 337

Xilinx Zynq-7010 Vivado HLS实战:从C代码到硬件IP核的完整开发流程

摘要: 本文详细介绍了使用Vivado HLS将C语言实现的矩阵乘法算法转换为可在Zynq-7010 FPGA上部署的硬件IP核的全流程。内容涵盖开发环境配置(Vivado安装、环境验证)、算法优化(流水线指令、循环展开)、RTL生成(工程创建、性能对比)及硬件验证(AXI总线连接、板级测试)。通过优化指令(如#pragma HLS PIPELINE)将吞吐量从5.3 MOps/s提升至75.2 MOps/s,并提供常见错误解决方案(时序违例、AXI握手失败)和完整代码示例(矩阵乘法C实现、SDK测试代码)

嵌入式毕设/课设资料清单(速查手册·文档模板·题库,持续更新)→ 见最新文章 912

Coze智能体开发:搭建一个解析 PDF 文件的工作流

大模型本身并不具备文件读取和解析的能力,无法直接处理文件字节流。对于支持工具调用(Function calling)的模型,扣子提供插件功能来帮助大模型调用外部工具 API,拓展大模型的能力边界。扣子插件商店提供海量官方插件和第三方插件,例如链接读取插件可以将链接对应的文件内容解析为纯文本传递给大模型。

王国平的博客 2813

手把手教你学Simulink--基础微电网场景实例:基于Simulink的混合交直流微电网架构仿真

本文基于Simulink构建混合交直流微电网仿真模型,通过交流子网(风电+交流负荷)和直流子网(光伏+储能+直流负荷)的协同控制,实现系统效率提升8.5%。重点介绍了混合架构原理、下垂控制策略及Simulink建模方法,包括核心模块实现、协调控制器代码和仿真参数设置。通过三种工况测试验证了系统性能:功率转移响应时间<0.5s,电压波动<5%,显著优于传统独立子网架构。文章还提供了进阶优化方向和完整代码清单,为微电网仿真研究提供实用参考。

MHD0815的博客 129

HLS设计步骤

HLS设计步骤 1) HLS介绍 1. 什么是HLS High level synthesis, 能够将高级语言(C/C++)综合为HDL。 2. 为什么使用HLS 在算法层面,高级语言通常比HDL开发效率更高, 因此使用HLS可以大大加速原型验证。高级语言进行程序设计可以脱离硬件, HLS可以将项目的软件, 硬件开发分离, 更加灵活, 利于项目的管理。 2) 了解Vivado HLS的设计流程 ...

qq_34134731的博客 3858

使用蒙特卡洛模拟方法在MATLAB中估算居里温度: 一个详细而通俗的指南

居里温度是磁性材料失去磁性的温度。但是,计算机模拟为我们提供了一个在理论和实验之间的桥梁,使我们能够在不进行实际测量的情况下估计这一重要参数。在下一部分,我们将详细介绍蒙特卡洛迭代的核心代码,以及如何使用它来模拟磁性材料中原子的行为。在估算居里温度的上下文中,我们将使用蒙特卡洛方法来模拟磁性材料中的原子或分子的行为。通过使用蒙特卡洛方法,我们可以在MATLAB中估算居里温度,从而为理论研究和实验设计提供有价值的信息。:我们使用的是一个有限的尺寸的网格模型,这可能导致一些大小效应,特别是在接近居里温度时。

qq_38334677的博客 978

Vivado开发套件设计笔记(2)——加法器设计——变量(上)

本博文从最简单的加法器入手,指明了从HLS到Vivado再到SDK的设计过程。

GHU 5383

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

ov5640中文手册_【正点原子FPGA连载】第八章基于OV5640的视频图像叠加实验--领航者ZYNQ之HLS 开发指南...

1)摘自【正点原子】领航者ZYNQ之HLS 开发指南2)平台购买地址:https://item.taobao.com/item.htm?&id=6061601087613)全套实验源码+手册+视频下载:http://www.openedv.com/docs/boards/fpga/zdyz_linhanz.html4)对正点原子FPGA感兴趣的同学可以加群讨论:8767449005)正点原...

weixin_39616348的博客 1598

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

HLS:跑马灯实验

跑马灯实验的第一部分记录: 1. vivado 2018.2的HLS在跑C/RTL co-simulation的时候,一直报错,不论是用modelsim 还是vivado自带的similator。使用vivado 2015.4的HLS没有问题。 2. modelsim 我用的是10.1c版本,vivado 2018.2对modelsim支持至少是10.5以上。 3. 在vivado hls跑...

weixin_33774308的博客 609

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上一篇: PYNQ-Z2调试笔记:在Microblaze软核中编程运行C程序
下一篇: Vivado HLS 2018.2 Command Prompt输入cd指令无法执行跳转到具体文件夹的问题解决
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值