1. ap_none
默認(rèn)類型,該類型不適用任何I/O轉(zhuǎn)換協(xié)議,它用于表示只讀的輸入信號,對應(yīng)于HDL中的wire類型。
2. ap_stable
只用于輸入信號,其具體實現(xiàn)方式仍為ap_none。它用于向Vivado HLS的綜合器表明該信號在兩次復(fù)位之間值是不變的。
3. ap_vld
在數(shù)據(jù)端口port_name的基礎(chǔ)上創(chuàng)建一個額外的數(shù)據(jù)有效信號指示_vld。
4. ap_ack
在數(shù)據(jù)端口port_name的基礎(chǔ)上創(chuàng)建一個額外的應(yīng)答信號指示_ack。
5. ap_hs
使用該類型,則會同時創(chuàng)建額外的數(shù)據(jù)有效信號和應(yīng)答信號,其效果相當(dāng)于ap_vld與ap_ack之和。
6. ap_ovld
對于輸入信號,其效果與ap_none是一樣的。
對于輸出信號,其效果與ap_vld是一樣的。
對于雙向(inout)類型的信號,輸入使用ap_none,輸出使用ap_vld進行處理。
7. ap_memory
把對數(shù)組的讀寫等效為對外部RAM的引用。
8. ap_fifo
把對數(shù)組、指針和參數(shù)引用的讀寫用FIFO的方式來實現(xiàn)。
9. ap_bus
把對指針和參數(shù)引用的讀寫用總線接口的方式來實現(xiàn)。
在TCL腳本中,我們也可以對接口類型進行更改。在圖形化的開發(fā)界面中,可以直接在directives.tcl中進行規(guī)則的編輯,如圖1所示。
圖1 通過TCL配置改變端口類型
此外,我們還可以通過在Vivado HLS中的Directive視圖中選擇INTERFACE來進行更改,如圖2所示。
圖2 接口的類型選擇
例如:
void adders_io(intin1,intin2,int*in_out1)
{
*in_out1 = in1 + in2 + *in_out1;
}
這里我們使用了指針。從其本質(zhì)上來說,指針是一個“雙向”的類型,即它即可以做為輸入,同時也可以用來輸出。在默認(rèn)的情況下,端口的綜合結(jié)果如圖3所示。
圖3 默認(rèn)情況下的端口綜合結(jié)果
如果按照圖1中的示例對端口類型進行指定,則C綜合之后的結(jié)果如圖4所示。
圖4 自定義端口類型之后的端口綜合結(jié)果
在圖1的示例中,我們指定了端口的類型,所以對比圖3與圖4,可以看出,端口in1和in2的類型從默認(rèn)的ap_none變?yōu)樽远x的ap_vld,并且分別具有了對應(yīng)的數(shù)據(jù)有效指示位in1_ap_vld和in2ap_vld。
一、Block-level接口協(xié)議(塊級接口協(xié)議,與函數(shù)本身相關(guān)聯(lián),不與任何數(shù)據(jù)端口相關(guān)聯(lián))
Block-Level Interface端口:
顧名思義,Block端口的作用就是用來控制Block的操作。它在c參數(shù)中沒有直接的對應(yīng),但是它對應(yīng)了c函數(shù)的調(diào)用/返回過程。默認(rèn)Block端口都會加上,如果不需要,可以對函數(shù)頂層設(shè)置ap_none。
ap_ctrl_none:沒有塊級I/O控制協(xié)議
ap_ctrl_chain:它同ap_ctrl_hs幾乎一樣,除了多出一個輸入信號ap_continue,它可以使得下游模塊控制上游模塊的運行/終止。不過這種模式比較不常用,所以有興趣的讀者,可以自己去研究相關(guān)的文檔。
ap_ctrl_hs:塊級I/O控制握手協(xié)議,我們已經(jīng)采用的(ap_start,ap_ready,ap_idle,ap_done)
ap_ctrl_hs是默認(rèn)的端口類型,它綜合出來的端口會有額外的4個系統(tǒng)控制信號,如下所示:
圖片居中使用:
其端口行為時序如下:
在ap_rst釋放后,ap_start高電平啟動模塊的運行,然后ap_idle立即拉低表明模塊不再空閑。
ap_ready拉高表明本模塊已經(jīng)準(zhǔn)備好接收新的輸入,不過它的行為會稍微有些復(fù)雜,在non-pipelined實現(xiàn)中,ap_ready和ap_done會同時拉高;在pipelined實現(xiàn)中,它可能會隨時拉高。
二、Port-level接口協(xié)議
Port端口會跟c的參數(shù)有直接的對應(yīng)關(guān)系。按照c參數(shù)的不同,標(biāo)量,數(shù)組,指針,HLS綜合后的rtl端口也有很多中不同的類型可供選
a) ap_ovid :一般用于in-out指針
b) ap_none
c) ap_hs:包括ap_vld(使能)ap_sck(應(yīng)答)
其中Port level是我們需要重點關(guān)注的,它又可以細(xì)分為4中類型:(出處:http://xilinx.eetrend.com/blog/9935 )
A. AXI4-Interface:支持Stream,Lite,F(xiàn)ull共3中類型
B. NO I/O協(xié)議:無端口協(xié)議
C. Wire Handshakes:握手協(xié)議
D. Memory Interface:內(nèi)存訪問型的端口協(xié)議
各種rtl端口協(xié)議和c參數(shù)類型的對應(yīng)關(guān)系如下:
2.可以對設(shè)計添加全局使能端口。
編輯:hfy
-
Vivado
+關(guān)注
關(guān)注
19文章
812瀏覽量
66547 -
HLS
+關(guān)注
關(guān)注
1文章
129瀏覽量
24119
發(fā)布評論請先 登錄
相關(guān)推薦
評論