在上一章,介绍了Block Level Interface。
本章里着重介绍下Port Level Interface的2中子类别:No I/O Protocol和Wire handshakes
下面先介绍下No I/OProtocol
ap_none:
ap_none是HLS最简单的一种接口协议类型,不论是input还是output端口,综合后都不附带额外的控制信号,在rtl里面所呈现的唯一端口就是在rtl代码里所写的。
因为ap_none非常简单,所以它不会带来额外的硬件资源效率开销。但是使用的时候,也有一些注意事项:
1、 对输入端口,数据需要在合适的时间及时准备好,并且保持一定的时间不能改变。
2、对输出端口,下级需要及时的在合适的时间读取输出的数据。
Note:ap_none不能被用来约束数组Array
ap_stable:
同ap_none类似,ap_stable也是HLS最简单的一种接口协议类型,不同的是:
1、 ap_stable只能用来约束输入端口
2、输入端口的数据必须要在整个 *** 作过程中保持恒定
3、 除此之外,ap_stable还暗示HLS综合工具,输入端口的扇出(fanout)可以不用寄存(registered)
因为上述的特性,ap_stable通常用来约束模块的配置参数输入。
接下来介绍下Wirehandshakes Protocol
ap_hs:
ap_hs中的hs是handshake的意思,顾名思义,它可以为输入输出提供额外的控制信号。除了数据端口外,它提供的控制信号有:
1、Valid signal用来指示数据何时有效
2、Acknowledge signal用来指示数据何时被取走
下面是一个例子,提供了一个输入端口in和输出端口out:
ap_ack
它是ap_hs的简化版本,它不提供vld信号。
ap_vld
它也是ap_hs的简化版本,它不提供ack信号
1、 对于input,只有in_ack输出
2、对于output,只有out_ack输入
ap_ovld
它也是ap_hs的简化版本
1、对于输入,它等效ap_none
2、对于输出,它等效ap_vld
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)