來源:FPGA FAE技術(shù)分享選集
RF Data Converters驅(qū)動(dòng)API是AMD Xilinx為RFSoC提供的一套軟件接口,用于控制Data Converters(RF-ADC和RF-DAC)的硬件功能。它作為用戶應(yīng)用程序與底層硬件寄存器之間的抽象層,封裝了復(fù)雜的配置流程和時(shí)序控制,使開發(fā)者能夠通過函數(shù)調(diào)用直接管理射頻信號(hào)鏈的關(guān)鍵參數(shù)。
RF Data Converters驅(qū)動(dòng)API在絕大多數(shù)實(shí)際應(yīng)用場(chǎng)景中是必須的,尤其是在需要?jiǎng)討B(tài)控制、多設(shè)備同步或復(fù)雜校準(zhǔn)的場(chǎng)景。雖然理論上系統(tǒng)參數(shù)完全靜態(tài)不變(例如僅需一次初始化且無需動(dòng)態(tài)調(diào)整)或者通過直接寄存器操作可以不用API,但缺點(diǎn)是代碼可維護(hù)性差、無法適應(yīng)需求變更、且同步功能難以實(shí)現(xiàn),顯著增加開發(fā)難度、調(diào)試風(fēng)險(xiǎn)和后期維護(hù)成本。對(duì)于基于RFSoC的射頻系統(tǒng)開發(fā),掌握并合理使用驅(qū)動(dòng)API是高效、可靠實(shí)現(xiàn)設(shè)計(jì)目標(biāo)的必要前提。
RFDC API介紹
AMD Xilinx的RFDC驅(qū)動(dòng)API提供了高度靈活的配置能力,涵蓋混頻器、QMC、時(shí)鐘同步等關(guān)鍵功能,支持動(dòng)態(tài)更新與多設(shè)備同步。RFDC驅(qū)動(dòng)基于libmetal構(gòu)建,裸機(jī)和Linux使用相同的驅(qū)動(dòng)程序。兩個(gè)軟件平臺(tái)的驅(qū)動(dòng)程序都在AMD提供的libmetal軟件層上運(yùn)行。這種設(shè)計(jì)選擇帶來了多方面的技術(shù)優(yōu)勢(shì),尤其在異構(gòu)計(jì)算平臺(tái)(如RFSoC的ARM + FPGA架構(gòu))中體現(xiàn)得尤為明顯:可以統(tǒng)一硬件抽象層,適配多操作系統(tǒng)(Linux/RTOS/裸機(jī))及Xilinx異構(gòu)平臺(tái)(如RFSoC、Versal),降低移植成本,簡(jiǎn)化中斷處理,內(nèi)存與緩存的一致性,與OpenAMP深度集成,支持復(fù)雜異構(gòu)系統(tǒng)架構(gòu)等等。

驅(qū)動(dòng)程序由以下文件組成:
?API
xrfdc.c :此文件中實(shí)現(xiàn)了用戶接口API函數(shù)。
xrfdc.h :此文件中提供了用戶接口API原型。該文件提供了驅(qū)動(dòng)程序?qū)嵗Y(jié)構(gòu)的原型,以及API中使用的所有其他結(jié)構(gòu)的原型。該文件實(shí)現(xiàn)了實(shí)用的內(nèi)聯(lián)函數(shù)用于訪問驅(qū)動(dòng)程序和IP中的各種數(shù)據(jù)。
xrfdc_mts.c :該文件實(shí)現(xiàn)了多Tile同步API函數(shù)。
xrfdc_mixer.c :該文件實(shí)現(xiàn)了混頻器API函數(shù)。
xrfdc_clock.c :該文件實(shí)現(xiàn)了與時(shí)鐘相關(guān)的API函數(shù)。
xrfdc_mb.c :該文件實(shí)現(xiàn)了多頻段API函數(shù)。
xrfdc_ap.c :該文件實(shí)現(xiàn)了模擬路徑API函數(shù)。
xrfdc_dp.c :該文件實(shí)現(xiàn)了數(shù)字路徑API函數(shù)。
xrfdc_sinit.c :該文件實(shí)現(xiàn)了初始化API函數(shù)。
?硬件寄存器映射
xrfdc_hw.h :該文件提供了硬件寄存器映射的定義。同時(shí),該文件還
提供了Zynq UltraScale+ RFSoC寄存器接口中各相關(guān)字段的掩碼。
?中斷處理
xrfdc_intr.c :實(shí)現(xiàn)了處理IP核各類中斷和錯(cuò)誤的函數(shù)。
關(guān)于RFDC的API函數(shù)、數(shù)據(jù)結(jié)構(gòu)等詳細(xì)介紹可以參考Xilinx的PG269文檔。
RFDC API使用
在大規(guī)模MIMO通信、相控陣?yán)走_(dá)、多芯片級(jí)聯(lián)擴(kuò)展等應(yīng)用中需要多Tile的ADC、DAC嚴(yán)格對(duì)齊同步。在RF Data Converters啟動(dòng)時(shí),同一Tile內(nèi)的轉(zhuǎn)換器始終是對(duì)齊的,但不能保證確定的延時(shí)。在多Tile系統(tǒng)中,不能保證具有確定的延時(shí),甚至不能保證跨Tile的延時(shí)對(duì)齊。這需要我們必須提供一種機(jī)制來對(duì)齊這些Tile。RFSoC多Tile同步通過硬件時(shí)鐘信號(hào)SYSREF與驅(qū)動(dòng)API共同實(shí)現(xiàn),確保跨Tile/芯片的時(shí)鐘與數(shù)據(jù)嚴(yán)格對(duì)齊。這里我們以實(shí)現(xiàn)多個(gè)Tile之間的同步為例來介紹RFDC API的使用。
1.參照前面RFDC IP設(shè)計(jì)文章,在Vivado里配置好RFDC IP后生成bit文件,然后導(dǎo)出xsa文件;
2.在Vitis里選擇Vivado設(shè)計(jì)生成的xsa新建一個(gè)平臺(tái)項(xiàng)目,選擇standalone,處理器選cortexa53,然后單擊完成;

3. 修改平臺(tái)BSP的設(shè)置,勾選libmetal庫(kù),然后單擊OK;

4. 選擇剛剛創(chuàng)建的平臺(tái)新建一個(gè)空的應(yīng)用程序;

5.將Vitis安裝路徑data/embeddedsw
/XilinxProcessorIPLib/drivers/rfdc_v11_1/examples文件夾下的xrfdc_mts_example.c導(dǎo)入到應(yīng)用程序中;

6.由于是裸機(jī)工程,在剛剛導(dǎo)入的xrfdc_mts_example.c中添加宏定義:#define __BAREMETAL_;
7.Build工程,連接板子加載程序調(diào)試看是否打印了Successfully ran MTS Example,打印了說明多tile同步成功。然后可以去觀察硬件adc、dac的延時(shí)對(duì)齊效果了。
Petalinux操作系統(tǒng)中RFDC API使用跟裸機(jī)步驟差不多,但是要注意的是在進(jìn)行debug時(shí)要是出現(xiàn)SDK hangs when it attempts to run metal_init時(shí),網(wǎng)上有通過加驅(qū)動(dòng)庫(kù)的方式來解決,但是還會(huì)出現(xiàn)如下報(bào)錯(cuò):

其實(shí)只要不勾選Auto-attach Process children就能解決該問題。

-
amd
+關(guān)注
關(guān)注
25文章
5684瀏覽量
139953 -
接口
+關(guān)注
關(guān)注
33文章
9520瀏覽量
157027 -
Xilinx
+關(guān)注
關(guān)注
73文章
2200瀏覽量
131135 -
射頻系統(tǒng)
+關(guān)注
關(guān)注
0文章
137瀏覽量
13834 -
RFSoC
+關(guān)注
關(guān)注
0文章
45瀏覽量
3193
原文標(biāo)題:ZU+RFSoC之RFDC API介紹和使用
文章出處:【微信號(hào):comtech_inc,微信公眾號(hào):Comtech科通】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
Power Optimization SDK介紹之Static API
MLDL之API:關(guān)于各國(guó)內(nèi)外大平臺(tái)API簡(jiǎn)介、使用方法之詳細(xì)攻略
Xilinx ZYNQ UltraScale+RFSoCZU27DR 開源RFSOC算法驗(yàn)證評(píng)估板
python代碼示例之基于Python的日歷api調(diào)用代碼實(shí)例
Zynq USP RFSoC產(chǎn)品選擇指南資料免費(fèi)下載
zu plus RFSoC頻率規(guī)劃器的詳細(xì)資料說明
ZXB-RFSOC-2T2R驗(yàn)證評(píng)估板手冊(cè)
ZU7EV卡設(shè)計(jì)原理圖536篇:基于ZU7EV的FMC 通用PCIe卡
Zynq UltraScale+ RFSoC器件介紹
PyTorch教程19.2之超參數(shù)優(yōu)化API
國(guó)產(chǎn)RFSoC 47DR/28DR/27DR核心板
高性能緊湊型 RFSoC FPGA 開發(fā)平臺(tái) AXW22,重塑射頻開發(fā)體驗(yàn)
璞致電子 UltraScale+ RFSoC 架構(gòu)下的軟件無線電旗艦開發(fā)平臺(tái)
如何使用PetaLinux檢查RFDC IP狀態(tài)
ZU+RFSoC之RFDC API介紹和使用
評(píng)論