《HLS系列 – High Level Synthesis(HLS) 的端口综合7.docx》由会员分享,可在线阅读,更多相关《HLS系列 – High Level Synthesis(HLS) 的端口综合7.docx(3页珍藏版)》请在第一文库网上搜索。
1、H1S系列-High1eve1Synthesis(H1S)的端口综合7在前几章里,已经分别介绍了B1ock1eve1Interface,Port1eve1Interface中的NoI/OProtoco1和AXI40本章里着重介绍下Port1eve1Interface的另一个子类别:MemoryInterface:B1ock1eve1InterfaceH1SPortSynthesisPort1eve1Interfaceap_ctr1_noneap_ctr1_hs(Defau1t)-ap_ctr1_chain-NoI/OProtoco1:ap-none,ap_stab1ewirehandshake
2、s:ap_hs,ap_v1d,ap_ack,ap_ov1dMemoryInterfaces:ap_memory,bram,ap_fifoAXI4Interfaces:axijite1axi_stream,axi_fu11-ap_bus;2iJMemoryInterfaCe中分为3个子类别,分别是:apmemroy,bram和apfifoap_memory和bram:数组通常都被综合成ap_memory端口,它用来同外部的RAM或者ROM进行数据交互,并且带有地址信号,意味着对数据的存取顺序可以随机/任意。如果对外部存储资源的访问是顺序的,那么可以考虑apfifo端口,它用来同FIFO进行通信,
3、不带有地址信号,并且综合后所用的资源开销会减小。ap_memory和bram约束的含义是完全一样的。使用时唯一的区别是,当把H1S综合后的IP用VivadoIPIntegrator互联时:1. ap_memory呈现的是离散的端口。2. bram呈现的是一组总线。Note:使用apjnemory时,最好同时使用set_directive_resource命令,明确指定array使向什么类型的RAM资源去实现。如果没有指定,那么H1S会自己决定在sing1e/dua1-portRAM中二选一。下面是一个名字为d的array,被综合成SingIeportb1ockram时的端口时序图:g1F1F1
4、F1F1F1F1F1F1F1F1F1F1F1J1apfifo:假如对memory的访问时顺序的,那么可以考虑把端口综合成apfifo型,它没有地址端口,资源上会更节约。被ap_fifo约束的端口,其访问顺序必须得是顺序的,如果H1S工具检查出违例,那么就会提示错误;如果H1S工具不确定是否一定是顺序访问的,那么会提示警告!下面是一个违例的例子,对指针in的访问并没有按照顺序进行:voidfoo(int*ini,.)intdata1zdata2,data3;data1=*in1;data2=*(in1+2);data3=*(in1-1);./)”二?方,假如上述函数的ini被约束为用ap_fifo实现,那么H1S工具就会报错!Note:apfifo不能约束inout型端口。如果一个变量即被read,又被write,那用apfifo实现就会报错!下面是ap_fifo端口读写的时序图:1 .读操作是F1FT模式,当fifo不空时,才能发起读操作。2 .写操作要观察Irvfu11信号,当fifo满时,不能写入。c1ockin_empty.nOUtreaen-douinIUi1noui*vteoutAn