**
如果你對vivado hls中綜合之後埠的ap_none之類的型別指示摸不著頭腦的話,那就來一起學習一下它們是如何使用的吧。在vivado hls中,我們可以指定埠使用的型別,這樣在對c**進行綜合的時候,就可以指定某個埠所使用的轉換協議了。常見的型別有:
1. ap_none
預設型別,該型別不適用任何i/o轉換協議,它用於表示唯讀的輸入訊號,對應於hdl中的wire型別。
2. ap_stable
只用於輸入訊號,其具體實現方式仍為ap_none。它用於向vivado hls的綜合器表明該訊號在兩次復位之間值是不變的。
3. ap_vld
在資料埠port_name的基礎上建立乙個額外的資料有效訊號指示< port_name >_vld。
4. ap_ack
在資料埠port_name的基礎上建立乙個額外的應答訊號指示< port_name >_ack。
5. ap_hs
使用該型別,則會同時建立額外的資料有效訊號和應答訊號,其效果相當於ap_vld與ap_ack之和。
6. ap_ovld
對於輸入訊號,其效果與ap_none是一樣的。
對於輸出訊號,其效果與ap_vld是一樣的。
對於雙向(inout)型別的訊號,輸入使用ap_none,輸出使用ap_vld進行處理。
7. ap_memory
把對陣列的讀寫等效為對外部ram的引用。
8. ap_fifo
把對陣列、指標和引數引用的讀寫用fifo的方式來實現。
9. ap_bus
把對指標和引數引用的讀寫用匯流排介面的方式來實現。
對上述9種資料埠型別的定義,我們在c**中可以使用下面的預處理指令來宣告:
#pragma hls inte***ce register port=
其中,mode就是這裡提到的資料埠型別,string則指需要指定埠型別的埠名稱,例如:
#pragma hls inte***ce ap_none port=in1
在tcl指令碼中,我們也可以對介面型別進行更改。在圖形化的開發介面中,可以直接在directives.tcl中進行規則的編輯,如圖1所示。
圖1 通過tcl配置改變埠型別
此外,我們還可以通過在vivado hls中的directive檢視中選擇inte***ce來進行更改,如圖1所示。
圖2 介面的型別選擇
接下來以乙個簡單的例子來看看改變介面型別對綜合結果的影響。首先,建立乙個工程,它的源**就是簡單的三個輸入相加:
void adders_io(int in1, int in2, int *in_out1)
這裡我們使用了指標。從其本質上來說,指標是乙個「雙向」的型別,即它即可以做為輸入,同時也可以用來輸出。在預設的情況下,埠的綜合結果如圖3所示。
圖3 預設情況下的埠綜合結果
如果按照圖1中的示例對埠型別進行指定,則c綜合之後的結果如圖4所示。
圖4 自定義埠型別之後的埠綜合結果
在圖1的示例中,我們指定了埠的型別,所以對比圖3與圖4,可以看出,埠in1和in2的型別從預設的ap_none變為自定義的ap_vld,並且分別具有了對應的資料有效指示位in1_ap_vld和in2ap_vld。
關於Quartus II工程綜合時間過長問題的解決
因為我的工程比較大,綜合時間有點長,之後在上面做影象處理演算法的實現,然後發現加上這個模組之後綜合的時間特別就,達到了3個小時,查閱了好多資料也不知道怎麼去解決這個問題,今天聽一位高人指點,終於解決了這個問題,於是就想把這個解決方案記錄下來。首先說明一下我的工程環境,我用的是quartus ii 6...
python 聚合 python中的聚合時間序列
我們如何按小時或精細粒度彙總時間序列?如果我有如下的時間序列,那麼我希望按小時聚合值.大熊貓是否支援它,或者在 python中有一種漂亮的方式嗎?timestamp,value 2012 04 30t22 25 31 00 00,1 2012 04 30t22 25 43 00 00,1 2012 ...
python 聚合 python中的聚合時間序列
如何按小時或分鐘粒度聚合時間序列?如果我有乙個像下面這樣的時間序列,那麼我希望這些值按小時聚合。熊貓支援它還是用python有乙個很好的方法?timestamp,value 2012 04 30t22 25 31 00 00,1 2012 04 30t22 25 43 00 00,1 2012 04...