本篇主要是笔者个人对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.csdn.net/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.csdn.net/weixin_39290638/article/details/80228806


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

Vivado HLS介绍及IP核的设计流程相关推荐

  1. 如何在zynq中调用并驱动vivado HLS生成的ip core

    vivado HLS 为赛灵思开发的高层次综合工具,可实现直接使用 C,C++ 以及 System C 语言对Xilinx的FPGA器件进行编程.赛灵思官方给出了ug902文档,很详细的介绍了官方提供 ...

  2. Vivado 实现逆序ip核,AXI4-Lite Interface(vcu118,HLS级开发)

    实验环境 1.软件:Vivado HLS 2017.04,Vivado 2017.04,Vivado SDK2017.04 2.硬件:Xilinx Virtex UltraScale+ FPGA VC ...

  3. (59)简单介绍RAM IP核类型和接口信号?

    1.1 简单介绍RAM IP核类型和接口信号? 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)简单介绍RAM IP核类型和接口信号?: 5)结束语. 1.1.2 本节引 ...

  4. 基于Montgomery算法的高速、可配置 RSA密码IP核硬件设计系列(五)——模幂模块(抵抗侧信道攻击)模块的设计实现方案

    基于Montgomery算法的高速.可配置RSA密码IP核硬件设计系列(五) 2.2 模幂模块设计(抵抗测信道攻击模块) 2.2.1 模幂模块及内部模块的功能 2.2.3 模幂各模块的实现方案 2.2 ...

  5. vivado中复数乘法器IP核使用小结

    vivado中复数乘法器IP核使用小结 添加ip核 进入工程,点击IP Catalog,在弹出的窗口中点击数学功能–math functions,选择multipliers–complex multi ...

  6. 11,基于JESD204 IP核的设计实现方法

    本篇博主参考了xilinx官方JESD204 IP核的数据手册PG066,具体介绍基于该IP核的JESD204B数据传输实现方法~ 第一次设计 在vivado开发软件中例化JESD204 IP核时,x ...

  7. 基于xilinx vivado的GTX/GTP ip核设置与例程代码使用详解

    本文目录 1 概述 2 参考文档 3 GTX的IP设置 3.1 本例程使用环境 3.2 GTX IP界面的设置情况 3.2.1 GTX IP设置第1页 3.2.2 GTX IP设置第2页 3.2.3 ...

  8. Vivado中的FFT IP核使用(含代码)

    本文介绍了Vidado中FFT IP核的使用,具体内容为:调用IP核>>配置界面介绍>>IP核端口介绍>>MATLAB生成测试数据>>测试verilog ...

  9. Vivado 自定义VHDL的IP核

    自定义VHDL的IP核 本文介绍基于VHDL语言的IP核的创建. 说明:使用软件版本为Vivado 2019.2 文章目录 自定义VHDL的IP核 一.创建IP核 1.1 创建IP核管理工程 1.2 ...

  10. vivado使用自带IP核和创建自己定义的IP核

    任务:使用vivado自带IP和创建IP 目的:学会使用Vivadao相关的IP组件 步骤: 1.使用自带IP 工程创建好之后,选择IP Catalog.软件就会列出自带的,自带的IP核有很多种,选择 ...

最新文章

  1. 原始ajax方式调用asp.net后台方法
  2. bootstrap轮播图自动播放响应式箭头居中
  3. 电脑的基础知识_电脑入门基础知识
  4. android记账软件开发源代码_如何开发直播软件?直播软件开发的具体流程有哪些?...
  5. 引入用于 Azure IoT Edge 的 Visual Studio 工具
  6. jquery对文本赋值和取值_jQuery对表单元素的取值和赋值操作代码
  7. :nth-child和:nth-of-type之间的差异
  8. RestExpress response中addHeader 导致stackOverflow
  9. 寻找两个正序数组中的中位数 数组
  10. 计算机软件性能测试的过程,软件性能测试过程研究与应用
  11. java 打印字间距 行距_[图片问答]LODOP打印的行间距字间距
  12. 勒索病毒解密SQL数据库修复文档文件服务器中毒远程处理数据恢
  13. 流体力学基础——流体静力学
  14. 北京时间与UTC时间转换
  15. 深入浅出的解释什么是tensor
  16. VB.net版机房收费系统——结账功能实现(代码部分)
  17. Android App开发实战项目之购物车(附源码 超详细必看)
  18. Chrome插件开发、脚本开发笔记
  19. 金山毒霸极速版用着不错
  20. 晶体管的热阻,Rjc( Junction−to−Case)、Rja(Junction−to−Ambient )

热门文章

  1. Hive Privilege 分析
  2. 考研英语(四)——名词性从句
  3. 两部门:禁止从蒙古国输入猪、野猪及其产品
  4. 制作分页工具类,实现分页操作JSP+Servlet+数据库
  5. 安全密码的c语言程序,C语言经典代码“安全的密码”
  6. Android画正N边形战力图
  7. 链表Dummy Node
  8. Web前端大作业——城旅游景点介绍(HTML+CSS+JavaScript) html旅游网站设计与实现
  9. Asp.net教师管理系统
  10. +initialize方法的调用时机