ap_ctrl_hs是默认的端口类型,它综合出来的端口会有额外的4个系统控制信号,如下所示: 图片居中使用: 其端口行为时序如下: 在ap_rst释放后,ap_start高电平启动模块的运行,然后ap_idle立即拉低表明模块不再空闲。 ap_ready拉高表明本模块已经准备好接收新的输入,不过它的行为会稍微有些复杂,在non-pipelined实现中,...
由一个 ap_start 控制输入来通知这个包要开始操作了,然后这个包会产生三个输出控制信号 (ap_ready、ap_idle 和 ap_done)来表明它的操作阶段。具体来说,ap_ready 信号表明包已经就绪来读新的输入,ap_idle 表明包正在处理数据,而 ap_done 会在输出数据已经可读的时候发出。一个实用的例子是,ap_ctrl_hs 协议...
由值ap_ctrl_none、ap_ctrl_hs 或 ap_ctrl_chain 指定。 ap_ctrl_hs 块级 I/O 协议是默认的。 与函数名称相关联。 每个函数参数都可以指定为具有自己的端口级 (I/O) 接口协议,例如有效握手 (ap_vld) 或确认握手 (ap_ack)。 为顶级函数中的每个参数创建端口级接口协议,如果函数返回一个值,则函数返回。
ap_fifo:用于实现FIFO(先进先出)存储器的端级协议。ap_fifo接口具有读写使能信号、数据信号、为空/满信号等,适用于顶层函数内部各个模块之间的数据传输。 ap_hs:用于实现握手信号的端级协议。ap_hs接口包括有效信号(valid)和就绪信号(ready),可以实现顶层函数内部各个模块之间的同步和流控。
4. ap_ack 在数据端口port_name的基础上创建一个额外的应答信号指示< port_name >_ack。 5. ap_hs 使用该类型,则会同时创建额外的数据有效信号和应答信号,其效果相当于ap_vld与ap_ack之和。 6. ap_ovld 对于输入信号,其效果与ap_none是一样的。
ap_start:用于控制块开始处理数据的时间 ap_ready:用于指示是否已经准备好开始接受输入 ap_idle:用于指示设计是否是处于空闲状态 ap_done:是否已完成操作 以ap_ctrl_hs 的接口类型为例,来讲解: 复位后,该IP将会执行以下操作逻辑: 首先会等待 ap_start 信号变为高,然后才开始操作 ...
默认情况下,Vitis HLS会对待综合的C函数使用ap_ctrl_hs接口,这其实是一种握手方式。在这个接口中,我们会看到ap_start、ap_idle、ap_ready和ap_done等信号(这些信号被称为Block-level输入/输出信号)。其中ap_start是输入信号,而其余三个信号是输出信号。那么我们如何根据这些信号管理输入数据呢?这就要理解这些信号之...
添加输入有效vld信号: Directive-> Interface -> mode: ap_vld. 当port_vld为高,模块内才会读port. 添加输出应答ack信号: Directive-> Interface -> mode: ap_ack. 当模块读port,port_ack才会拉高. 添加握手(以上两个) : Directive-> Interface -> mode: ap_hs. ...
ap_hs,hs(handshaking)握手协议,是以上三个协议的超集,同时包括验证和确认,需要两个额外端口,不过是可靠的数据传输方法. ap_memory,只能传递数组类型,因为数组类型对应存储器的结构,需要时钟和写使能信号和一个地址端口.随机访问. bram,ap_memory使用IP生成时绑定的端口,把用到的端口集合成一个而不是单独列出来. ...
Per this document, ap_hs is supported with hls::stream, however we fail to get ack and vld signals on the input and output ports and end up with the following warning: WARNING: [HLS 207-5530] Unsupported interface port data type in '#pra...