接口说明
对于顶层函数握手信号ap_ctrl的设置,可是设置成三种:
1、ap_ctrl_hs:包含ap_start,ap_ready,ap_idle,ap_done四个信号。
1.1:该模块在ap_start升高之后开始操作。
1.2:在ap_start拉高之后,输出ap_idle立即变低,表示设计不再空闲。
1.3:ap_start信号必须保持高位,直到ap_ready变为高位。一旦ap_ready拉高:一、如果ap_start仍然很高,设计将启动下一个事务;二、如果ap_start被降低,设计将完成当前事务并停止操作。
1.4:可以从输入端口读取数据,输入端口可以使用独立于block-level I/O协议的端口级 port-leve I/O协议,相应的port-leve I/O协议在文章后面有相应的介绍。
1.5:可以将数据写入输出端口。输出端口可以使用独立于block-level I/O协议的port-leve I/O协议。
1.6:当块完成操作时,输出ap_done变高,如果有ap_return端口,那么当ap_done较高时,该端口上的数据是有效的。因此,ap_done信号还指示输出ap_return上的数据何时有效。
1.7:当设计准备好接收新的输入时,ap_ready信号会升高;ap_ready信号在设计开始操作之前是无效的;在非流水线设计中,ap_ready信号与ap_done同时有效;在流水线设计中,ap_start被高采样后,ap_ready信号在任何周期都可能会升高。这取决于设计是如何流水线的;如果ap_ready高时ap_start信号低,则设计执行到ap_done高时才停止操作; 如果ap_ready高时ap_start信号高,则下一个事务立即启动,设计继续运行。
1.8:ap_idle信号指示什么时候设计是空闲的、不工作的;如果ap_ready高时ap_start信号低,设计停止操作,ap_idle信号在ap_done后一个周期变高;如果ap_ready高时ap_start信号高,设计继续运行,ap_idle信号低。
上面关于时序的介绍很重要,同学们可以细读一下。如果我们只是使用,上面的信号没有那么麻烦,只需要拉高ap_start即可,至于数据什么时候输入、什么时候有效,那受相应数据的port-leve I/O协议决定。
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/zhangningning1996/article/details/107391948
仿真验证学习
设计了一个led闪灯的程序,IP端口如下
对ap_start信号,进行长时间幅值。全程时序
开始时序,可以看到ap_start有效后,ap_idle的确无效了,说明进入了函数运算。
一次跳变的时序。可以看到idle和done同时有效。