AIE Kernel有時(shí)需要由外部提供參數(shù)更新kernel行為,此時(shí)就要用到RTP(Run-Time Parameter)。AIE支持兩種類型的RTP,一種是異步(Asynchronous),通常由PS或其他AIE Kernel控制。“異步”意味著RTP可以隨時(shí)被更改。在每次Kernel被調(diào)用時(shí),RTP都會(huì)被讀取,而不會(huì)進(jìn)行任何同步處理。這種機(jī)制適合于參數(shù)不經(jīng)常更新的場(chǎng)合,例如濾波器系數(shù)。另一種為同步RTP(Synchronous)。“同步”意味著只有當(dāng)處理器將RTP傳遞給AIE Kernel后,該Kernel才能被觸發(fā)執(zhí)行。無(wú)論是哪種類型,RTL都可以是標(biāo)量(Scalar)或數(shù)組(Array)。我們先看一個(gè)同步RTP。系統(tǒng)框圖如下圖所示。圖中sine為AIE Kernel,其中trigger為RTP,此處為標(biāo)量。s2mm為HLS Kernel,最終通過(guò)HLS在PL側(cè)實(shí)現(xiàn)。
在描述AIE Kernel sine時(shí),phase_increment為輸入?yún)?shù),這里的名字是形參名,本質(zhì)上就是RTP,只是RTP在graph.h中會(huì)另起名字。
在描述graph時(shí),將RTP定義為input_port,并起名字為trigger,如下圖第26行所示。同時(shí)確定RTP與AIE Kernel的連接關(guān)系,如下圖第33行所示。
在graph.cpp中,使用update更新RTP。如下圖所示,可以看到update的次數(shù)與run的次數(shù)是一致的。代碼第28行至第31行,依次將trigger值寫入ping/pong/ping/pong buffer。
對(duì)于異步RTP,需要在graph.h中指定其與AIE Kernel之間的關(guān)系為異步關(guān)系,如下圖代碼第33行所示,使用了async。
在graph.cpp中要使用wait()。這是和同步RTP的最大區(qū)別。在同步模式下,graph的run是受RTP的update控制的。在異步模式下,需要通過(guò)wait等待graph的run完成。異步模式下,當(dāng)graph在執(zhí)行時(shí)是無(wú)法保證RTP生效的。
原文標(biāo)題:AIE(17)—更新RTP(1)
文章出處:【微信公眾號(hào):TeacherGaoFPGAHub】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
處理器
+關(guān)注
關(guān)注
68文章
19286瀏覽量
229865 -
濾波器
+關(guān)注
關(guān)注
161文章
7817瀏覽量
178148 -
RTP
+關(guān)注
關(guān)注
0文章
28瀏覽量
11883
原文標(biāo)題:AIE(17)—更新RTP(1)
文章出處:【微信號(hào):Lauren_FPGA,微信公眾號(hào):FPGA技術(shù)驛站】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論