跟Xilinx SAE 学HLS系列视频讲座笔记(3)—— 接口综合(上)

本文涉及的产品
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介: 目录第一讲 接口综合的基本介绍第二讲 接口综合—对数组的处理第三讲 接口综合—其他案例演示

第一讲 接口综合的基本介绍

1. Interface synthesis Overview

从图中的蓝色部分我们可以了解到,一共要4个参数,in1,in2,in3和return。这些被称为port-level interface protocol。而列表中还包含了几个我们在代码中看不见的接口参数(vivado根据接口类型自动生成的),分别是ap_start、ap_done、ap_idle、ap_ready(下面会讲分别是什么),这些参数被称为block-level interface protocol。(interface protocol表示接口协议)

2. Block-level Interface Protocol

block-level interface protocol只能作用于函数或者函数的返回值。


三种可用的协议


ap_ctrl_hs。ap_start, ap_ready, ap_idle, ap_done这四个信号将产生。

ap_ctrl_none。没有任何块级I / O协议

ap_ctr_chain。与ap_ctrl_hs类似,但具有一个附加的输入端口ap_continue,该端口提供来自消耗该块数据提供back pressure。

ap_ctrl hs vs. ap_ctrl_none

ap_ctrl_hs会生成相应的block-level 的接口信号,而ap_ctrl_none则不会生成。3


Block-level Signals之间的关系

  • ap_start为高,表示该块可以开始处理数据。
  • ap_idle:高电位表示该模块当前为空闲状态。
  • ap_ready为高,表示该模块可以接受新数据。
  • ap_done为高,表示该模块操作已完成(与ap_ready同步)。


3. Port-level Interface Protocol


  • ap_none。是标量输入的默认设置。指定不应将任何I / O协议添加到端口。此端口的参数被实现为没有其他关联信号的数据端口。
  • ap_stable模式用于配置输入,仅当设备处于复位模式时才会更改。

对于指针来说,是有输入和输出的。ap_ovld就是一个双向的接口。


对应参数 说明
输入信号 其效果与ap_none是一样的
输出信号 其效果与ap_vld是一样的
双向(in-out)信号 输入使用ap_none处理,输出使用ap_vld处理

其他接口信号

接口信号 说明
ap_vld 在数据端口port_name的基础上创建一个额外的数据有效信号指示< port_name >_vld
ap_ack 在数据端口port_name的基础上创建一个额外的应答信号指示< port_name >_ack
ap_hs 使用该类型,则会同时创建额外的数据有效信号和应答信号,其效果相当于ap_vld与ap_ack之和

4. 信号类型以及对应的接口支持

5.总结

6. DEMO

视频

第二讲 接口综合—对数组的处理

如何将数组映射为相应的RTL接口。这里所说的数组为顶层函数的形参,不是子函数的形参。

在默认情况下,数组参数将综合到RAM端口,HLS可以将RAM接口指定为单端口或双端口。

如果没有选择单端口或者双端口,Vivado HLS会自动分析设计并选择端口数量以最大化数据率。

如果指定了双端口RAM,但Vivado HLS可以确定仅需要一个端口,则它将使用一个单端口来代替你设置的双端口规则。

我们也可以通过指令,采用其他的选择。


使用单端口或双端口RAM接口

使用FIFO接口

分解为离散接口

案例分析:默认情况下的内存接口


默认情况下,只要数组在顶层函数上,就使用的是ap_memory。

无论数组是哪种类型(输入,输出,输入/输出),ap_memory都是默认值

  • 无论数组是哪种类型(输入,输出,输入/输出),ap_memory都是默认值

    Memory接口说明
接口类型 输入/输出 说明
d_i_address0 out 读地址,外部的memory需要这个模块读取地址信号,获取数据
d_i_ce0 out 片选信号
d_i_q0 out 输入信号,其输入数据来自外部的memory
d_o_address0 out 写地址,要将数据往某个地址上去写,外部的memory需要有相应的写地址信号
d_o_ce0 out 片选信号
d_o_q0 out 写使能
d_o_d0 out 输出数据,输出到外部的memory

案例分析:连接到memory接口


案例分析:ap_fifo

ap_fifo: 把对数组、指针和参数引用的读写用FIFO的方式来实现。


总结

  • 默认情况下,顶层函数上的数组将映射到Vivado HLS确定的单端口或双端口RAM。
  • 可以根据数据速率要求对数组进行分解(后续数组的优化将会讲到)
  • ap_fifo也是一个用于数组接口方法,但要求数据流先进先出。
相关实践学习
1分钟部署经典小游戏
本场景介绍如何使用Serverless应用引擎SAE 1分钟快速部署经典小游戏。
SAE的功能与使用入门
欢迎来到《SAE的功能与使用入门》,本课程是“云原生Serverless Clouder认证“系列中的第三阶段。课程将向您介绍阿里云Serverless应用引擎(SAE)服务相关的概念、特性与使用方式。通过课程将带您逐步深入探索Serverless世界,借助SAE服务,即使没有丰富的云计算和IT经验,也能够让开发人员在实际业务场景中便捷的掌握如何构建和部署应用程序,快速拥抱Serverless架构,将精力聚焦在应用代码和业务逻辑的实现上。 学习完本课程后,您将能够: 掌握Serverless应用引擎(SAE)的基本概念与核心优势 了解Serverless应用引擎(SAE)的核心功能 掌握使用Serverless应用引擎(SAE)的开发和部署流程 了解Serverless应用引擎(SAE)的适用场景和最佳实践 &nbsp;
相关文章
跟Xilinx SAE 学HLS系列视频讲座笔记(6)—— 函数优化
1. 函数层面的优化 从函数这个角度来说代码风格,主要是看参数的数据类型,C++中的数据类型是以8为边界的,而实际硬件中我们可能会遇到任意精度的数据类型,因此我们一定在C++中定义为任意精度的数据类型;
110 0
跟Xilinx SAE 学HLS系列视频讲座笔记(6)—— 函数优化
跟Xilinx SAE 学HLS系列视频讲座笔记(5)—— 数组优化(下)
第一讲 数组分割 第二讲 数组映射与重组 第三讲 其他优化方法
104 0
跟Xilinx SAE 学HLS系列视频讲座笔记(5)—— 数组优化(下)
跟Xilinx SAE 学HLS系列视频讲座笔记(5)—— 数组优化(上)
第一讲 数组分割 第二讲 数组映射与重组 第三讲 其他优化方法
180 0
跟Xilinx SAE 学HLS系列视频讲座笔记(5)—— 数组优化(上)
跟Xilinx SAE 学HLS系列视频讲座笔记(4)——For循环优化(下)
目录 第一讲 For循环优化的性能指标 第二讲 for循环优化-循环合并 第三讲 for循环优化-数据流 第四讲 嵌套for循环优化 第五讲 for循环优化其他方法
125 0
跟Xilinx SAE 学HLS系列视频讲座笔记(4)——For循环优化(下)
|
存储 调度
跟Xilinx SAE 学HLS系列视频讲座笔记(4)——For循环优化(中)
目录 第一讲 For循环优化的性能指标 第二讲 for循环优化-循环合并 第三讲 for循环优化-数据流 第四讲 嵌套for循环优化 第五讲 for循环优化其他方法
218 0
跟Xilinx SAE 学HLS系列视频讲座笔记(4)——For循环优化(中)
|
5月前
|
运维 Serverless 应用服务中间件
Serverless 应用引擎产品使用合集之关于OSS映射目录的大小限制,如何可以跳过
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
Serverless 应用引擎产品使用合集之关于OSS映射目录的大小限制,如何可以跳过
|
5月前
|
运维 Serverless API
Serverless 应用引擎产品使用合集之通过 API 调用 /tagger/v1/interrogate 时,出现unsupported protocol scheme "" 错误,如何处理
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
5月前
|
缓存 运维 监控
Serverless 应用引擎产品使用合集之在使用函数计算 FC 部署 stable-diffusion 应用时,选了 tagger 扩展插件却拿不到提示词,还报错“Error”,是什么原因
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
5月前
|
运维 Kubernetes Java
Serverless 应用引擎产品使用合集之如何设置能让应用定时启停
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
5月前
|
运维 监控 Serverless
Serverless 应用引擎产品使用合集之需要上传多个文件,该如何处理
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。

热门文章

最新文章