從2020.2開始,XRT提供了新的Native API,以區(qū)別行業(yè)標(biāo)準(zhǔn)OpenCL API的,在FPGA加速應(yīng)用上,兩者都是可以使用的。XRT Native API的優(yōu)勢是更加契合FPGA加速應(yīng)用,而OpenCL的優(yōu)勢則是平臺通用性比較好。
XRT Native API里面有兩個(gè)API比較有意思,可能會產(chǎn)生混淆,一個(gè)是xrt_kernel,另一個(gè)是xrt_ip。IP這個(gè)概念,在FPGA中還是比較常用的,典型的就是IP catalog里面的IP,當(dāng)然這次講到的IP更傾向于custom IP,即用戶自定義IP(以下略作IP)。無論使用Vitis_hls, V++,Package_xo中哪種生成方法,最后生成的kernel的端口類型都是固定的,另外控制端口AXI_LITE的寄存器配置也是保持固定的(當(dāng)然會因參數(shù)數(shù)量不同而變化)。
截取以下網(wǎng)址-page 274 S_AXILITE Control Register Map作參考:
(https://www.xilinx.com/support/documentation/sw_manuals/xilinx2021_2/ug1399-vitis-hls.pdf )
這些寄存器設(shè)置都是工具自動生成的,用戶不需要進(jìn)行修改。具體這些信號是如何讓控制這些模塊的,以后有機(jī)會可以再講。那么如果有些需求是,我是一名RTL設(shè)計(jì)者,設(shè)計(jì)里面有Xilinx IP需要配置功能,我想用更多一點(diǎn)的寄存器空間作額外配置,現(xiàn)有的寄存器空間不夠,不能滿足我的要求:假設(shè),一個(gè)IP中內(nèi)嵌了一個(gè)axi_timer IP(截圖取自:https://www.xilinx.com/support/documentation/ip_documentation/axi_timer/v2_0/pg079-axi-timer.pdf page 12)
那么我該如何配置它呢?
這時(shí),之前提到xrt_ip就可以派上用場了,用戶可以自己定制控制寄存器而不用受限于規(guī)定的control register map,當(dāng)然端口類型還是需要按照kernel的要求來設(shè)計(jì)。沿用上述的寄存器配置,我們可以額外地添加寄存器:
所以我們可以看到,kernel應(yīng)該算IP中的一個(gè)子集,只是IP的話更加的靈活些。但是由于IP控制寄存器配置的不固定,導(dǎo)致xrt無法自動管理IP(不知道哪個(gè)寄存器代表的含義),所以只能提供了寄存器接口讓用戶自己訪問控制。從這方面來說,使用的便利性會降低,無論是IP的啟動停止,還是寄存器配置都需要用戶來控制。相對來說,xrt_kernel匹配的set_arg,run,wait等操作,它能夠代替用戶做一些底層操作,更加地省時(shí)省力。
原文標(biāo)題:開發(fā)者分享|XRT Native API: XRT_Kernel & XRT_IP 介紹
文章出處:【微信公眾號:XILINX開發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
審核編輯:湯梓紅
-
FPGA
+關(guān)注
關(guān)注
1626文章
21678瀏覽量
602023 -
寄存器
+關(guān)注
關(guān)注
31文章
5325瀏覽量
120052 -
IP
+關(guān)注
關(guān)注
5文章
1664瀏覽量
149342 -
API
+關(guān)注
關(guān)注
2文章
1487瀏覽量
61831 -
Kernel
+關(guān)注
關(guān)注
0文章
48瀏覽量
11140
原文標(biāo)題:開發(fā)者分享|XRT Native API: XRT_Kernel & XRT_IP 介紹
文章出處:【微信號:gh_2d1c7e2d540e,微信公眾號:XILINX開發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論