來源:FPGA FAE技術分享選集
RF Data Converters驅動API是AMD Xilinx為RFSoC提供的一套軟件接口,用于控制Data Converters(RF-ADC和RF-DAC)的硬件功能。它作為用戶應用程序與底層硬件寄存器之間的抽象層,封裝了復雜的配置流程和時序控制,使開發者能夠通過函數調用直接管理射頻信號鏈的關鍵參數。
RF Data Converters驅動API在絕大多數實際應用場景中是必須的,尤其是在需要動態控制、多設備同步或復雜校準的場景。雖然理論上系統參數完全靜態不變(例如僅需一次初始化且無需動態調整)或者通過直接寄存器操作可以不用API,但缺點是代碼可維護性差、無法適應需求變更、且同步功能難以實現,顯著增加開發難度、調試風險和后期維護成本。對于基于RFSoC的射頻系統開發,掌握并合理使用驅動API是高效、可靠實現設計目標的必要前提。
RFDC API介紹
AMD Xilinx的RFDC驅動API提供了高度靈活的配置能力,涵蓋混頻器、QMC、時鐘同步等關鍵功能,支持動態更新與多設備同步。RFDC驅動基于libmetal構建,裸機和Linux使用相同的驅動程序。兩個軟件平臺的驅動程序都在AMD提供的libmetal軟件層上運行。這種設計選擇帶來了多方面的技術優勢,尤其在異構計算平臺(如RFSoC的ARM + FPGA架構)中體現得尤為明顯:可以統一硬件抽象層,適配多操作系統(Linux/RTOS/裸機)及Xilinx異構平臺(如RFSoC、Versal),降低移植成本,簡化中斷處理,內存與緩存的一致性,與OpenAMP深度集成,支持復雜異構系統架構等等。
驅動程序由以下文件組成:
?API
xrfdc.c :此文件中實現了用戶接口API函數。
xrfdc.h :此文件中提供了用戶接口API原型。該文件提供了驅動程序實例結構的原型,以及API中使用的所有其他結構的原型。該文件實現了實用的內聯函數用于訪問驅動程序和IP中的各種數據。
xrfdc_mts.c :該文件實現了多Tile同步API函數。
xrfdc_mixer.c :該文件實現了混頻器API函數。
xrfdc_clock.c :該文件實現了與時鐘相關的API函數。
xrfdc_mb.c :該文件實現了多頻段API函數。
xrfdc_ap.c :該文件實現了模擬路徑API函數。
xrfdc_dp.c :該文件實現了數字路徑API函數。
xrfdc_sinit.c :該文件實現了初始化API函數。
?硬件寄存器映射
xrfdc_hw.h :該文件提供了硬件寄存器映射的定義。同時,該文件還
提供了Zynq UltraScale+ RFSoC寄存器接口中各相關字段的掩碼。
?中斷處理
xrfdc_intr.c :實現了處理IP核各類中斷和錯誤的函數。
關于RFDC的API函數、數據結構等詳細介紹可以參考Xilinx的PG269文檔。
RFDC API使用
在大規模MIMO通信、相控陣雷達、多芯片級聯擴展等應用中需要多Tile的ADC、DAC嚴格對齊同步。在RF Data Converters啟動時,同一Tile內的轉換器始終是對齊的,但不能保證確定的延時。在多Tile系統中,不能保證具有確定的延時,甚至不能保證跨Tile的延時對齊。這需要我們必須提供一種機制來對齊這些Tile。RFSoC多Tile同步通過硬件時鐘信號SYSREF與驅動API共同實現,確保跨Tile/芯片的時鐘與數據嚴格對齊。這里我們以實現多個Tile之間的同步為例來介紹RFDC API的使用。
1.參照前面RFDC IP設計文章,在Vivado里配置好RFDC IP后生成bit文件,然后導出xsa文件;
2.在Vitis里選擇Vivado設計生成的xsa新建一個平臺項目,選擇standalone,處理器選cortexa53,然后單擊完成;
3. 修改平臺BSP的設置,勾選libmetal庫,然后單擊OK;
4. 選擇剛剛創建的平臺新建一個空的應用程序;
5.將Vitis安裝路徑data/embeddedsw
/XilinxProcessorIPLib/drivers/rfdc_v11_1/examples文件夾下的xrfdc_mts_example.c導入到應用程序中;
6.由于是裸機工程,在剛剛導入的xrfdc_mts_example.c中添加宏定義:#define __BAREMETAL_;
7.Build工程,連接板子加載程序調試看是否打印了Successfully ran MTS Example,打印了說明多tile同步成功。然后可以去觀察硬件adc、dac的延時對齊效果了。
Petalinux操作系統中RFDC API使用跟裸機步驟差不多,但是要注意的是在進行debug時要是出現SDK hangs when it attempts to run metal_init時,網上有通過加驅動庫的方式來解決,但是還會出現如下報錯:
其實只要不勾選Auto-attach Process children就能解決該問題。
-
amd
+關注
關注
25文章
5535瀏覽量
135454 -
接口
+關注
關注
33文章
8861瀏覽量
152840 -
Xilinx
+關注
關注
73文章
2177瀏覽量
123737 -
射頻系統
+關注
關注
0文章
121瀏覽量
13468 -
RFSoC
+關注
關注
0文章
33瀏覽量
2836
原文標題:ZU+RFSoC之RFDC API介紹和使用
文章出處:【微信號:comtech_inc,微信公眾號:Comtech科通】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
Stream API原理介紹
Power Optimization SDK介紹之Static API
ZU7EV板卡設計資料第526篇:基于ZU7EV的FMC 通用PCIe卡
Xilinx ZYNQ UltraScale+RFSoCZU27DR 開源RFSOC算法驗證評估板
python代碼示例之基于Python的日歷api調用代碼實例

ZXB-RFSOC-2T2R驗證評估板手冊
ZU7EV卡設計原理圖536篇:基于ZU7EV的FMC 通用PCIe卡

國產RFSoC 47DR/28DR/27DR核心板

評論