南京观海微电子---Vitis HLS的工作机制——Vitis HLS教程

1. 前言

Vitis HLS(原VivadoHLS)是一个高级综合工具。用户可以通过该工具直接将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的ControlLogic 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状态,完成乘加操作。

相关推荐
幻智星科技4 小时前
树形架构破解FPGA扇出瓶颈
fpga开发·硬件架构
FPGA小迷弟7 小时前
FPGA开发Vivado Block Design/Vitis/SDK/xlinx/开发教程,保姆级别,一看就会!
网络协议·tcp/ip·fpga开发·verilog·fpga
FPGA小迷弟7 小时前
基于FPGA实现智能网卡的概念,什么是智能网卡
网络协议·tcp/ip·fpga开发·verilog·fpga
好焊孙辉9 小时前
螺柱焊机哪家质量好
python·fpga开发
XMAIPC_Robot14 小时前
基于 i.MX95 平台在新一代工业控制器中的应用 — 工业车载平板、半导体设备主控方案解析
arm开发·人工智能·机器学习·fpga开发·rk3588+fpga·i.mx95
szxinmai主板定制专家15 小时前
基于 AM62x + Artix-7 的低功耗 ARM+FPGA 平台在轨道交通车门控制中的应用
arm开发·人工智能·fpga开发·zynq·am62x
幻智星科技15 小时前
我砍掉了FPGA里的ARM核项目反而提前交付了
arm开发·网络协议·fpga开发·硬件架构
逐光者93315 小时前
Verilog 三段式状态机:原理、模板与实战
fpga开发
XMAIPC_Robot16 小时前
NXP i.MX95 + FPGA 异构计算平台 — 工业多域融合 AI 加速嵌入式控制解决方案
人工智能·分布式·fpga开发·能源·rk3576+fpga
FPGA小迷弟1 天前
用 Claude Code 重构遗留系统:从评估到落地的完整指南
fpga开发·dsp开发·fpga·1024程序员节·sdr·无线电