1. ap_none
默認(rèn)類型,該類型不適用任何I/O轉(zhuǎn)換協(xié)議,它用于表示只讀的輸入信號(hào),對(duì)應(yīng)于HDL中的wire類型。
2. ap_stable
只用于輸入信號(hào),其具體實(shí)現(xiàn)方式仍為ap_none。它用于向Vivado HLS的綜合器表明該信號(hào)在兩次復(fù)位之間值是不變的。
3. ap_vld
在數(shù)據(jù)端口port_name的基礎(chǔ)上創(chuàng)建一個(gè)額外的數(shù)據(jù)有效信號(hào)指示_vld。
4. ap_ack
在數(shù)據(jù)端口port_name的基礎(chǔ)上創(chuàng)建一個(gè)額外的應(yīng)答信號(hào)指示_ack。
5. ap_hs
使用該類型,則會(huì)同時(shí)創(chuàng)建額外的數(shù)據(jù)有效信號(hào)和應(yīng)答信號(hào),其效果相當(dāng)于ap_vld與ap_ack之和。
6. ap_ovld
對(duì)于輸入信號(hào),其效果與ap_none是一樣的。
對(duì)于輸出信號(hào),其效果與ap_vld是一樣的。
對(duì)于雙向(inout)類型的信號(hào),輸入使用ap_none,輸出使用ap_vld進(jìn)行處理。
7. ap_memory
把對(duì)數(shù)組的讀寫(xiě)等效為對(duì)外部RAM的引用。
8. ap_fifo
把對(duì)數(shù)組、指針和參數(shù)引用的讀寫(xiě)用FIFO的方式來(lái)實(shí)現(xiàn)。
9. ap_bus
把對(duì)指針和參數(shù)引用的讀寫(xiě)用總線接口的方式來(lái)實(shí)現(xiàn)。
在TCL腳本中,我們也可以對(duì)接口類型進(jìn)行更改。在圖形化的開(kāi)發(fā)界面中,可以直接在directives.tcl中進(jìn)行規(guī)則的編輯,如圖1所示。

圖1 通過(guò)TCL配置改變端口類型
此外,我們還可以通過(guò)在Vivado HLS中的Directive視圖中選擇INTERFACE來(lái)進(jìn)行更改,如圖2所示。
圖2 接口的類型選擇
例如:
void adders_io(intin1,intin2,int*in_out1)
{
*in_out1 = in1 + in2 + *in_out1;
}
這里我們使用了指針。從其本質(zhì)上來(lái)說(shuō),指針是一個(gè)“雙向”的類型,即它即可以做為輸入,同時(shí)也可以用來(lái)輸出。在默認(rèn)的情況下,端口的綜合結(jié)果如圖3所示。

圖3 默認(rèn)情況下的端口綜合結(jié)果
如果按照?qǐng)D1中的示例對(duì)端口類型進(jìn)行指定,則C綜合之后的結(jié)果如圖4所示。

圖4 自定義端口類型之后的端口綜合結(jié)果
在圖1的示例中,我們指定了端口的類型,所以對(duì)比圖3與圖4,可以看出,端口in1和in2的類型從默認(rèn)的ap_none變?yōu)樽远x的ap_vld,并且分別具有了對(duì)應(yīng)的數(shù)據(jù)有效指示位in1_ap_vld和in2ap_vld。
一、Block-level接口協(xié)議(塊級(jí)接口協(xié)議,與函數(shù)本身相關(guān)聯(lián),不與任何數(shù)據(jù)端口相關(guān)聯(lián))
Block-Level Interface端口:
顧名思義,Block端口的作用就是用來(lái)控制Block的操作。它在c參數(shù)中沒(méi)有直接的對(duì)應(yīng),但是它對(duì)應(yīng)了c函數(shù)的調(diào)用/返回過(guò)程。默認(rèn)Block端口都會(huì)加上,如果不需要,可以對(duì)函數(shù)頂層設(shè)置ap_none。
ap_ctrl_none:沒(méi)有塊級(jí)I/O控制協(xié)議
ap_ctrl_chain:它同ap_ctrl_hs幾乎一樣,除了多出一個(gè)輸入信號(hào)ap_continue,它可以使得下游模塊控制上游模塊的運(yùn)行/終止。不過(guò)這種模式比較不常用,所以有興趣的讀者,可以自己去研究相關(guān)的文檔。
ap_ctrl_hs:塊級(jí)I/O控制握手協(xié)議,我們已經(jīng)采用的(ap_start,ap_ready,ap_idle,ap_done)
ap_ctrl_hs是默認(rèn)的端口類型,它綜合出來(lái)的端口會(huì)有額外的4個(gè)系統(tǒng)控制信號(hào),如下所示:
圖片居中使用:

其端口行為時(shí)序如下:

在ap_rst釋放后,ap_start高電平啟動(dòng)模塊的運(yùn)行,然后ap_idle立即拉低表明模塊不再空閑。
ap_ready拉高表明本模塊已經(jīng)準(zhǔn)備好接收新的輸入,不過(guò)它的行為會(huì)稍微有些復(fù)雜,在non-pipelined實(shí)現(xiàn)中,ap_ready和ap_done會(huì)同時(shí)拉高;在pipelined實(shí)現(xiàn)中,它可能會(huì)隨時(shí)拉高。

二、Port-level接口協(xié)議
Port端口會(huì)跟c的參數(shù)有直接的對(duì)應(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是我們需要重點(diǎn)關(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é)議:無(wú)端口協(xié)議
C. Wire Handshakes:握手協(xié)議
D. Memory Interface:內(nèi)存訪問(wèn)型的端口協(xié)議
各種rtl端口協(xié)議和c參數(shù)類型的對(duì)應(yīng)關(guān)系如下:


2.可以對(duì)設(shè)計(jì)添加全局使能端口。

編輯:hfy
-
Vivado
+關(guān)注
關(guān)注
19文章
852瀏覽量
70758 -
HLS
+關(guān)注
關(guān)注
1文章
133瀏覽量
25714
發(fā)布評(píng)論請(qǐng)先 登錄
通過(guò)vivado HLS設(shè)計(jì)一個(gè)FIR低通濾波器
工業(yè)網(wǎng)關(guān)的IO接口有哪些類型
一文認(rèn)全常見(jiàn)光纖接口
如何在vivadoHLS中使用.TLite模型
超詳細(xì)的工業(yè)相機(jī)常見(jiàn)的數(shù)據(jù)接口類型分析
如何在Unified IDE中創(chuàng)建視覺(jué)庫(kù)HLS組件
使用AMD Vitis Unified IDE創(chuàng)建HLS組件
如何使用AMD Vitis HLS創(chuàng)建HLS IP
同惠TH2832精密LCR數(shù)字電橋傳輸接口類型
Vivado HLS設(shè)計(jì)流程
全面解析德索 M12 航空插座型號(hào):從接口類型到應(yīng)用場(chǎng)景
LCR測(cè)試儀數(shù)據(jù)傳輸接口類型選型指南
監(jiān)控?cái)z像頭的接口類型
Vivado HLS中常見(jiàn)的接口類型
評(píng)論