默認(rèn)情況下,VitisHLS會(huì)對(duì)待綜合的C函數(shù)使用ap_ctrl_hs接口,這其實(shí)是一種握手方式。在這個(gè)接口中,我們會(huì)看到ap_start、ap_idle、ap_ready和ap_done等信號(hào)(這些信號(hào)被稱(chēng)為Block-level輸入/輸出信號(hào))。其中ap_start是輸入信號(hào),而其余三個(gè)信號(hào)是輸出信號(hào)。那么我們?nèi)绾胃鶕?jù)這些信號(hào)管理輸入數(shù)據(jù)呢?這就要理解這些信號(hào)之間的時(shí)序關(guān)系。為便于說(shuō)明,我們以一個(gè)簡(jiǎn)單的算法為例。
如下圖所示代碼片段。函數(shù)array_mult有3個(gè)形參。其中a1和a2是長(zhǎng)度為N的一維數(shù)組,兩者對(duì)應(yīng)元素相減再平方即為另一形參prod。顯然,prod也是長(zhǎng)度為N的一維數(shù)組。
為了觀察這些Block-level信號(hào)之間的時(shí)序關(guān)系,我們?cè)?a target="_blank">仿真時(shí)將多次調(diào)用函數(shù)array_mult。為此,在描述測(cè)試激勵(lì)時(shí),輸入激勵(lì)以?xún)蓚€(gè)二維數(shù)組形式給出,這兩個(gè)二維數(shù)組對(duì)應(yīng)的每一列作為array_mult的輸入。假定這兩個(gè)二維數(shù)組是8行4列的數(shù)組,C/RTLco-sim仿真結(jié)果波形如下圖所示。
標(biāo)記1為數(shù)組a2對(duì)應(yīng)存儲(chǔ)單元的讀地址a2_address,共8個(gè)數(shù)據(jù);標(biāo)記2顯示了讀書(shū)的數(shù)據(jù)數(shù)值a2_q0,可以看到兩者相差一個(gè)時(shí)鐘周期。那么什么時(shí)候a2_address可以發(fā)生變化呢?我們從標(biāo)記A可以看到,在標(biāo)記A左邊,ap_idle為高電平,表明該模塊處于空閑狀態(tài),標(biāo)記A之后,ap_start為高電平,同時(shí)ap_idle變?yōu)榈碗娖?。一旦ap_start為高,a2_ce0即為高,表明可以開(kāi)始讀取a2對(duì)應(yīng)的數(shù)據(jù)。當(dāng)?shù)谝粠?個(gè)數(shù)據(jù)讀取完畢,即讀取到第一幀最后一個(gè)數(shù)據(jù)時(shí),ap_ready為由低電平變?yōu)楦唠娖角页掷m(xù)一個(gè)時(shí)鐘周期,表明第一幀輸入數(shù)據(jù)已讀取完畢,如圖中標(biāo)記B。緊接著ap_start也由高電平變?yōu)榈碗娖?。?dāng)?shù)谝粠?jì)算完畢,輸出對(duì)應(yīng)的8個(gè)數(shù)據(jù)后,ap_done由低電平變?yōu)楦唠娖讲⒊掷m(xù)一個(gè)時(shí)鐘周期,如圖中標(biāo)記C。當(dāng)ap_done由高變低時(shí),ap_idle則由低變高,表明可以再次啟動(dòng)該模塊。因此,我們可以看到標(biāo)記D處ap_start為高,之后a2_ce0由低變高開(kāi)始讀取第二幀輸入數(shù)據(jù)。讀取到第二幀輸入數(shù)據(jù)的最后一個(gè)數(shù)據(jù)后,ap_ready由低電平變?yōu)楦唠娖健?/p>
由此我們可以得出如下結(jié)論:
ap_start受ap_idle影響,只有當(dāng)ap_idle為高時(shí),才可以啟動(dòng)ap_start,將其由低電平變?yōu)楦唠娖?
ap_ready為高電平時(shí),表明已完成一幀的輸入數(shù)據(jù)讀取任務(wù);
ap_done為高電平時(shí),表明已完成一幀的輸出數(shù)據(jù)寫(xiě)入任務(wù);
ap_done持續(xù)一個(gè)時(shí)鐘周期由高變低后,ap_idle會(huì)由低變高。
審核編輯:湯梓紅
-
函數(shù)
+關(guān)注
關(guān)注
3文章
4284瀏覽量
62325 -
HLS
+關(guān)注
關(guān)注
1文章
128瀏覽量
23993
原文標(biāo)題:如何理解HLS Block-level輸入輸出信號(hào)之間的時(shí)序關(guān)系
文章出處:【微信號(hào):Lauren_FPGA,微信公眾號(hào):FPGA技術(shù)驛站】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論