ap_ctrl_hs是默认的端口类型,它综合出来的端口会有额外的4个系统控制信号,如下所示: 图片居中使用: 其端口行为时序如下: 在ap_rst释放后,ap_start高电平启动模块的运行,然后ap_idle立即拉低表明模块不再空闲。 ap_ready拉高表明本模块已经准备好接收新的输入,不过它的行为会稍微有些复杂,在non-pipelined实现中,...
ap_ctrl_chain:这个协议是用于顶层函数间的数据传输,它允许将多个顶层函数连接在一起,形成一个计算链。每个顶层函数的输出可以直接连接到下一个顶层函数的输入。ap_ctrl_chain接口包括数据信号、数据有效信号以及完成信号,这些信号用于在顶层函数之间传输数据并同步计算链的执行。 ap_ctrl_hs:这个协议用于实现顶层函数之...
"module_reset":"ap_rst", "module_clock_enable":"ap_ce", "ap_ctrl_chain_protocol_idle":"ap_idle", "ap_ctrl_chain_protocol_start":"ap_start", "ap_ctrl_chain_protocol_ready":"ap_ready", "ap_ctrl_chain_protocol_done":"ap_done", "ap_ctrl_chain_protocol_continue":"ap_continue" }...
scalar_input默认为ap_none接口,支持的协议接口有ap_none,ap_stable,ap_ack,ap_vld,ap_hs;不支持ap_ctrl_none,ap_ctrl_hs,ap_ctrl_chain,ap_ovld; scalar_return默认协议为ap_ctrl_hs,支持ap_ctrl_none,ap_ctrl_hs,ap_ctrl_chain;不支持ap_none,ap_stable,ap_ack,ap_vld,ap_ovld,ap_hs; 2.point...
默认情况下,Vitis HLS会对待综合的C函数使用ap_ctrl_hs接口,这其实是一种握手方式。在这个接口中,我们会看到ap_start、ap_idle、ap_ready和ap_done等信号(这些信号被称为Block-level输入/输出信号)。其中ap_start是输入信号,而其余三个信号是输出信号。那么我们如何根据这些信号管理输入数据呢?这就要理解这些信号之...
port=:指定 INTERFACE pragma 应用的函数参数、函数返回或全局变量的名称。块级 I/O 协议(ap_ctrl_none、ap_ctrl_hs 或 ap_ctrl_chain)可以分配给函数返回值的端口。 bundle=:将函数参数分组到 AXI 接口端口中。 默认情况下,Vivado HLS 将所有指定为 AXI4-Lite (s_axilite) 接口的函数参数分组到单个 AXI4...
将插入两个黑盒函数 - 第一个在流水线区域(线路接口,ap_none),第二个在数据流区域(FIFO 接口,ap_ctrl_chain)。 步骤 1. 创建C/C++源文件(基于C的HLS模型+Testbench) 创建模块的 C/C++ 模型,其中包括函数源代码(模块预期行为)和测试平台(io 刺激和结果检查)。
Vivado HLS 使用接口类型 ap_ctrl_none、ap_ctrl_hs 和 ap_ctrl_chain 来指定是否使用块级握手信号实现 RTL 块级握手信号的作用: 表明设计何时开始执行操作 表明设计操作何时终止 表明设计何时处于空闲状态,并且何时准备好处理新输入 其中块级 I/O 协议有 ap_start、ap_ready、ap_idle、ap_done 端口,这些端口...
ap_ready:用于指示是否已经准备好开始接受输入; ap_idle:用于指示设计是否是处于空闲状态; ap_done:是否已完成操作; 以ap_ctrl_hs的接口类型为例,来讲解: 复位后,该IP将会执行以下操作逻辑: 首先会等待ap_start 信号变为高,然后才开始操作; 当ap_start 变为高时,ap_idle 立即变为低,表明设计此时不再处于空...
ap_ctrl_chain:类似于ap_ctrl_hs,但有一个额外的输入端口ap_continue,它提供从块消费这个块的数据的背压。 ap_ctrl_hs 与 ap_ctrl_none比较 ap_ctrl_hs 中的hs表示handshake(握手信号),被综合的函数为上相同的函数。如果选择ap_ctrl_hs 接口协议,则会综合出来start、done、idle、ready等接口信号。