文章目录

  • 1. 前言
  • 2. 使用高级综合工具来开发FPGA的优势
  • 3. Vitis HLS工作流程
  • 4. 调度(Scheduling)和 捆绑(Binding)的例子
  • 5. 控制逻辑提取(Control Logic Extraction)的例子
  • 6. 参考文献

1. 前言

Vitis HLS(原Vivado HLS)是一个高级综合工具。用户可以通过该工具直接将C、 C++编写的函数翻译成HDL硬件描述语言,最终再映射成FPGA内部的LUT、DSP资源以及RAM资源等。

用户通过Vitis HLS,使用C/C++代码来开发RTL IP核,可以缩短整个FPGA项目的开发和验证时间。

2. 使用高级综合工具来开发FPGA的优势

 可以提高硬件工程师的开发效率;
 对于软件工程师来说可以提高系统的性能或功能;
 可以直接在C语言层面上开发算法,然后映射成HDL语言;
 可以直接在C语言层面上进行验证工作;
 可以通过优化指令控制C语言综合为HDL的过程;

3. Vitis HLS工作流程

Vitis HLS的工作流程如下图所示:

Vitis HLS工作主要分为两个阶段,第一个阶段为调度和控制逻辑的提取;第二个阶段为捆绑映射。
 调度(Scheduling),调度主要完成的任务是判定每个时钟周期要完成哪些操作、每个操作又需要多少个时期周期来完成、以及调度等工作。
 控制逻辑的提取(Control Logic Extraction),该步骤主要是生成状态机。
 捆绑映射(Binding),判定每个操作需要是什么资源来实验,完成资源的过程。

4. 调度(Scheduling)和 捆绑(Binding)的例子

下面这段为Vitis HLS的示例代码:

根据这段代码,Vitis HLS的Scheduling和Binding方式如下图所示:

由图中可以看到,Scheduling阶段,该运算流程被分为2个时钟周期完成,第一个时钟周期完成乘加操作,第二个时钟周期完成第二次加法操作。
Binding阶段直接将第一个时钟周期的乘加操作映射为DSP资源来处理;第二个时钟周期的操作映射给另一个加法器资源来处理。

5. 控制逻辑提取(Control Logic Extraction)的例子

下面这段为Vitis HLS的示例代码:

根据这段代码,Vitis HLS的Control Logic Extraction方式如下图所示:

此代码示例执行与前一个示例相同的操作。 但是该操作处在for循环中,并且该函数有两个参数是数组形式。

从图中可以看到,Control Logic Extraction阶段根据该代码创建了状态机(FSM)来顺序完成这段代码的操作。char类型的变量被映射成8bit的数据总线,数组in或out一般默认被映射为block RAM。

该状态机总共包含4个阶段,状态机开始于C0,C0状态计算b+c的值。由于该计算流程只需要请求计算一次b+c的值,因此C0状态只执行一次。

C1状态到C3状态会重复执行3次,其中C1状态产生地址、读取数组in的值并存储到x中,同时C1状态会控制一个累加器来判断自己需要迭代重复几次C1~C3的流程。在C2状态,block RAM会返回in数组对应的值给x变量。在C3状态,完成乘加操作。

6. 参考文献

[1]《Vitis High-Level Synthesis User Guide》. UG1399. Xilinx
[2] “跟Xilinx SAE学HLS系列视频讲座-高亚军 ”https://www.bilibili.com/video/av41246874


如果大家对我们的文章感兴趣,可以关注我们的微信公众号:“图灵研究院”,实时关注我们的更新动态。

课时1:Vitis HLS的工作机制——Vitis HLS教程相关推荐

  1. 第 20 课时:GPU 管理和 Device Plugin 工作机制(车漾)

    本文将主要分享以下几个方面的内容: 需求来源 GPU 的容器化 Kubernetes 的 GPU 管理 工作原理 课后思考与实践 需求来源 2016 年,随着 AlphaGo 的走红和 TensorF ...

  2. 第八篇:深入 React-Hooks 工作机制:“原则”的背后,是“原理”

    React 团队面向开发者给出了两条 React-Hooks 的使用原则,原则的内容如下: 1. 只在 React 函数中调用 Hook: 2. 不要在循环.条件或嵌套函数中调用 Hook. 原则 1 ...

  3. 前端React教程第五课 深入React-Hook工作机制

    08 深入 React-Hook 工作机制:"原则"的背后,是"原理" React 团队面向开发者给出了两条 React-Hooks 的使用原则,原则的内容如下 ...

  4. 2021年大数据HBase(十四):HBase的原理及其相关的工作机制

    全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 HBase的原理及其相关的工作机制 一.HBase的flus ...

  5. java语言的实现机制_JAVA语言之Java NIO的工作机制和实现原理介绍

    本文主要向大家介绍了JAVA语言之Java NIO的工作机制和实现原理介绍,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 前言 本文只简单介绍NIO的原理实现和基本工作流程 I/O和 ...

  6. docker用gpu的参数_从零开始入门 K8s | GPU 管理和 Device Plugin 工作机制

    导读:2016 年,随着 AlphaGo 的走红和 TensorFlow 项目的异军突起,一场名为 AI 的技术革命迅速从学术圈蔓延到了工业界,所谓 AI 革命从此拉开了帷幕.该热潮的背后推手正是云计 ...

  7. MapReduce1和Yarn的工作机制

    Hadoop中的MapReduce的工作机制分为两种: MapReduce 1 也就是Hadoop 2.0之前的工作机制 YARN MapReduce 1 构成 MapReduce 1最主要的其实就是 ...

  8. 从源码分析Hystrix工作机制

    作者:vivo互联网服务器团队-Pu Shuai 一.Hystrix解决了什么问题? 在复杂的分布式应用中有着许多的依赖,各个依赖都难免会在某个时刻失败,如果应用不隔离各个依赖,降低外部的风险,那容易 ...

  9. mysql的proxy机制_MySQL Proxy工作机制浅析

    MySQL Proxy处于客户端应用程序和MySQL服务器之间,通过截断.改变并转发客户端和后端数据库之间的通信来实现其功能,这和WinGate之类的网络代理服务器的基本思想是一样的.代理服务器是和T ...

  10. 第6章-MapReduce的工作机制-笔记

    为什么80%的码农都做不了架构师?>>>    作业的提交 可以只用一行代码来运行一个MapReduce作业: JobClient.runJob(conf). 作业的调度 Hadoo ...

最新文章

  1. 使用Xcode External Build System实现Rust 项目 Capture GPU Frame 在线调试 Metal 2018.12.18
  2. python struct笔记
  3. 调试的时候step into,step out,step over有什么区别?各有什么作用?分别在什么情况下使用?
  4. TortoiseGit上传代码报错error:1407742E
  5. undefined reference to `clock_gettime'
  6. hive case when语法_SQL中CASE表达式的妙用
  7. python的实例属性_python 实例属性和类属性
  8. 实战分享声卡效果调试都用那些效果器插件
  9. H5打开APP技术总结
  10. 当当笔试java_20170921 当当和今日头条笔试题
  11. 对《致加西亚的信》的异议
  12. ​防火墙国标正式实施|美创科技解读数据库防火墙关键能力
  13. 笔记本计算机在桌面显示器,解决办法:笔记本电脑如何关闭屏幕,但仍可以使用?...
  14. 2014九月十月百度,迅雷,华为,阿里巴巴,最新校招笔试面试题
  15. 用Python中的hashlib实现md5和sha加密
  16. 【并行计算】OpenMP编程和MPI编程简单教程
  17. Kotlin 中的 appy和with方法
  18. VSCode中ESLint插件修复+配置教程
  19. 心理测评软件php mysql_中小学心理测评软件系统
  20. 领扣(leetcode) 179 上升的温度

热门文章

  1. Android源码目录结构
  2. m苹果放n篮子_m个苹果放入n个篮子
  3. (数据结构)线性表(总结)——链式存储结构与顺序储存结构的优缺点
  4. (二)mybatisPlus实现ActiveRecord(AR)操作
  5. Ubuntu删除U盘分区,并格式化U盘
  6. java火星坐标转百度坐标_各种地理坐标系的转换,火星坐标,百度坐标,wsg84等...
  7. web端实现视频播放,视频地址切换,清晰度切换,断点续播
  8. uniapp 微信分享
  9. NX/UG二次开发孔特征查找
  10. Xcode8去除控制台多余打印