接口综合有两种,分别是 block-level interface protocol 和 port-level interface protocol。
接口综合只对顶层函数及其参数有用。
三小类:
- 控制整个顶层函数的握手信号接口
- 参数和指针接口
- 返回值接口
(2)默认情况下,函数的值传递参数和指针参数会用没有 handshaking 信号的简单 wire
ports 来实现。如果函数有返回值,输出端口的 ap_return 就会传递这个返回值,返回值的端
口协议是 ap_ctrl_hls。
1 block-level interface protocol
(1)默认情况下,block-level interface protocol 会被自动添加到设计中,这些接口控
制着整个块(即顶层函数),独立于任何 port-level I/O protocol。
block-level interface protocol 只作用于顶层函数或者顶层函数的返回值(不作用于顶层
函数的参数),该协议只有三种,分别是:ap_ctrl_hs、ap_ctrl_none、ap_ctrl_chain
。
ap_ctrl_hs (hand shaking )作用于函数时会产生额外几个输入输出接口,如黄色方框所示:
ap_start 为高表示代码块可以开始处理数据,这时
ap_idle 就为低,表明模块处于非空闲状态。
ap_ready 如果为高,表明这个模块可以接收新的数据,
ap_done 为高则表明已经处理完结果了。
2 port-level interface protocol
port-level interface protocol 数量较多,只作用于顶层函数的参数。
ap_none 是 scalar 的默认类型,表示没有接口协议。作为数据传递。
ap_stable,若要设置在芯片复位时输入才能改变则使用该模式。
另一个指针分别作为输入输出被实现,类型为 ap_ovld
,该模式用于双向参数。当一个双向参数分别作为输入输出实现时,输入默认是 ap_none,输出默认是 ap_vld。
ap_hs 模式包括两种:ap_vld 和 ap_ack。ap_vld 表示输入或者输出是有效的,ap_ack 会给出一个应答信号。
常用默认模式
接口设置的不同
1 默认
in1 int2 默认为ap_none
inout 指针为双向,ap_ovld 并增加一个ap_vld
2 设置ap_vld ap_ack ap_hs