無線通信將在多種新興技術中扮演重要角色,例如自動駕駛汽車車隊,以及連接數百萬工業傳感器的異構網絡。此類應用環境需要用到即時調整調制方案、頻帶和系統協議的可重配置軟件無線電 (SDR)。通過在全面驗證的系統級模塊 (SOM) 中緊密集成關鍵 RF 信號路徑和高速可編程邏輯,安富利的 PicoZed SDR 能夠在一副撲克牌大小的設備中提供靈活的軟件無線電技術,實現 70MHz-6.0GHz 頻率范圍內的捷變頻、寬頻帶 2x2 接收和發送路徑,以滿足不同固定和移動 SDR 應用的需求。
PicoZed SDR 將 Analog Devices AD9361 集成式 RF Agile TransceiverTM 與賽靈思 Z-7035 Zynq?-7000 All Programmable SoC 相結合。[1]這種架構理想適用于復雜應用的軟硬件混合實施方案,例如數字接收器,其中的數字前端(物理層)在可編程邏輯中實現,而上面的協議層則運行于雙 ARM? CortexTM-A9 處理器的軟件中。讓我們看一看整個開發過程中 PicoZedSDR 的軟件相關特性。
利用PICOZED SDR 環內無線
快速進行概念驗證
要想充分發揮 PicoZed SDR 的潛力,需要采用穩健可靠的多域仿真環境來對從 RF 模擬電子到基帶數字算法的整個信號鏈進行建模。這是 MathWorks 公司基于模型的設計方法所固有的價值,系統模型居于開發流程的中間環節,整個過程涵蓋設計的需求定義、代碼生成、實現和測試等。安富利攜手 Analog Devices 和 MathWorks 合作,從最初的原型設計階段開始,在設計過程從各個方面為 PicoZed SDR 開發支持架構。[2]
面對縮短開發周期的持續壓力,工程師需要探尋合適的解決方案以便在可靠的硬件上進行快速、精確的概念驗證,從而演示產品在“真實世界”條件下的可行性。MathWorks 使用名為 System objectsTM的 MATLAB? 軟件架構為基于賽靈思 Zynq 的無線電創建程序支持包,該支持包能夠將作為 RF 前端的 PicoZed SDR 用來構建開箱即用的 SDR 設計原型。System objects 軟件架構專門針對用于處理大數據流的迭代計算而優化,能夠在環內無線配置中自動實現 PicoZed SDR 與 MATLAB 和 Simulink? 環境之間的流數據(圖 1)。類似于以對象為中心的編程概念,System objects 也是通過構造函數調用類名稱的方式來創建,可采用 MATLAB 代碼或者用作Simulink 模塊。System object 實例化后,可調用各種方法在仿真過程中通過 System object發送流數據。MathWorks 提供的針對賽靈思Zynq 無線電的 Communications System ToolboxTM支持包,含有針對 PicoZed SDR 接收器和發送器預定義的類別,每個類別包含針對 AD9361 的可調節配置屬性,例如 RF 中心頻率和采樣速率。圖 2 中的代碼實例可用來創建一個 PicoZed SDR 接收器System object,以接收單通道上的數據,AD9361 本地振蕩器頻率設定為 2.5GHz,基帶采樣速率為 100Msps。使用日志保存獲取的數據。
圖 1 - 利用 System object 實現的 PicoZed SDR 流數據
圖 2 - PicoZed SDR 接收器 MATLAB System object
LIBIIO 庫
Analog Devices 開發了 Libiio 庫 [3, 4],可簡化用于連接 Linux Industrial I/O (IIO) 器件(例如 PicoZed SDR SOM 上的 AD9361)的軟件的開發工作。開源(GNU Lesser General Public License V2.1) 庫抽象出硬件的低層細節,并提供一個可用于高級項目的簡單但完整的編程接口。
該庫由一個高級應用編程接口和一套后端組成,如圖 3 所示。
圖 3 - Libiio API 和后端
您可以使用 Libiio 在項目原型設計階段與 PicoZED SDR進行接口連接,以便向或從 MATLAB、Simulink 或GNURadio 等工具的模型發送或接收樣本流。
本地后端與 Linux 內核通過內核的 sysfs 虛擬文件系統進行接口連接。這個后端具有 C、C++ 和 Python 綁定,用以支持運行于 PicoZED SDR 上的遠程部署應用程序。
網絡后端通過網絡鏈路與 IIO Daemon (iiod) 服務器進行接口連接。網絡后端支持多種操作系統(Linux、OS X、Windows)以在運行 MATLAB 和 Simulink [5]、GNURadio [6] 或 IIO Oscilloscope [7]等應用程序的更強大主機平臺上進行基于 GUI 的遠程調試。
用戶需要使用 Libiio 在項目的原型設計階段與 PicoZED SDR 進行接口連接,以向/從 MATLAB、Simulink 或 GNURadio 等工具的模型發送或接收樣本流,這些工具可以建模物理層((QPSK、QAM、OFDM 等)或整個媒體訪問控制器 (MAC)。Libiio 支持中等數據速率(約 8Msps)下的流傳輸(不丟失樣本),以及最大數據速率(61.44 Msps)下的突發模式(獲得樣本突發傳輸流(高達 1M 左右的樣本),會在突發流之間丟失數據)。 通常,當進行 PHY 開發時應使用速率較低的數據流,然后,利用突發模式在生成 HDL/C 代碼之前快速驗證設計。
利用針對 PICOZED SDR 的軟硬件協同設計進行系統集成
在使用 PicoZed SDR 環內無線完全驗證了算法模型之后,接下來是生成 HDL/C 代碼并將 IP 核打包,以集成到更大的系統。例如,在 MATLAB 和Simulink 中建模的無線接收器子系統可能被指定用于點對點無線電鏈路,以從安裝在 PicoZed SDR 載卡上的安富利攝像機模塊傳輸實時視頻。
MathWorks HDL CoderTM 中的軟硬件協同設計流程使用戶可以探索針對 Zynq SoC 的軟件與硬件之間的最佳設計分區(圖 4)。針對可編程邏輯的部分可自動封裝為 IP 核,包括硬件接口組件,例如 ARM AMBA? AXI4 或 AXI4-Lite 接口訪問寄存器,AXI4 或 AXI4-Lite 接口,AXI4-Stream 視頻接口,以及外部端口。MathWorks HDL Workflow AdvisorIP 核生成流程使用戶可以將生成的 IP 核插入賽靈思 Vivado? 集成設計環境中的預定義嵌入式系統項目。[8] HDL Workflow Advisor 包含 Vivado IDE 將用戶設計部署到 SoC 平臺所需的所有元素,除了用戶生成的自定義 IP 核和嵌入式軟件。
圖 4– MathWorks 軟硬件協同設計流程
如果用戶有 MathWorks Embedded Coder? 許可證,就可以自動生成軟件接口模型,從中生成嵌入式 C/C++ 代碼,并在 Zynq SoC 中 ARM 處理器上的 Linux 內核上構建和運行可執行文件。所生成的嵌入式軟件包含 AXI 驅動程序代碼。該代碼由AXI 驅動程序模塊生成的,用以控制 HDL IP 核?;蛘撸脩粢部梢跃帉懬度胧杰浖?,手動為 ARM 內核構建。
IIO 示波器
ADI IIO 示波器 (osc) 是一個示例應用,用以演示如何對 Linux 系統中的不同 Linux IIO 設備進行接口連接。該應用允許用戶以四種模式(時域、頻域、星座圖和互關聯)繪制捕獲的數據,并查看和修改多個 IIO 設備設置。
osc 應用支持 Linux、Windows 和 OS X。由于支持 HDMI 視頻顯示,以及圖形環境,因此它可運行于遠程連接的主機 PC 或 PicoZed SDR FMC 載卡上。提供有關如何在Linux 上構建 osc 應用的使用說明,以及預先創建的 Windows 二進制文件。圖 5給出了 PicoZED SDR 的兩個通道 (I/Q) 的快速傅里葉變換 (FFT),建立了標記以查看單音信號
圖 5 - ADI IIO 示波器
和測量諧波
直接在 PicoZED SDR 上構建 osc 應用只需要(1)下載源代碼:
》 git clone https://github.com/analogdevic- esinc/iio-oscilloscope.git
》 cd iio-oscilloscope
》 git checkout origin/master
(2)構建并安裝:
rgetz@pinky:~/iio-oscilloscope$ make
rgetz@pinky:~/iio-oscilloscope$ sudo make install
憑借強大的處理系統(雙 ARM Cortex-A9 處理器,運行頻率為 1GHz,外加 1GB DDR3 SDRAM),在 Zynq SDR SOM 上進行本機編譯過程非??焖?。
采用 PICOZED SDR 的實時視頻捕獲系統
高性能視頻已成為自動汽車、軍用視覺系統、監控系統和無人機等無線應用領域中智能系統的重要組成部分。這些應用產品將高像素率視頻捕獲與實時分析相結合,可打破純軟件方案的性能限制。憑借 Zynq SoC 和賽靈思的 SDSoCTM 開發環境,嵌入式視覺系統設計人員能兼具兩者的優勢,利用原有軟件圖像處理算法的豐富功能以及硬件加速,以高幀率實時處理高清晰視頻。安富利 ON PYTHON-1300 攝像機模塊采用安森美 (ON Semiconductor) 的 PYTHON-1300 彩色圖像傳感器,能夠達到 210 fps 下的 SXGA 分辨率(1,280 x 1,024 像素)。[9]。安富利的多個基于 Zynq SoC 的開發平臺——包括 PicoZed SDR——都支持該模塊(以實現視頻分析的無線傳輸)。系統設計人員可以使用符合 Video4Linux2 API 規范(V4L2;圖 6)的安富利軟件驅動程序將攝像機模塊集成到完整的 Linux 系統中。V4L2 框架可以實現被稱為流水線的完整視頻數據路徑。典型的視頻捕獲流水線從攝像機接收器獲取視頻,選擇性地處理視頻,然后使用視頻 DMA 引擎將內容發送至外部幀緩沖器。安富利提供與 Vivado IP Integrator 兼容的“攝像機接收器”IP 核 HDL 源代碼(不收取費用和版權費),以及以 Linux 補丁形式提供的 V4L2 子設備 Linux 驅動程序。
圖 6 - 采用安富利 ON PYTHON-1300 攝像機模塊的 V4L2 視頻捕獲流水線
本文中我們已經介紹過,通過安富利的 PicoZed SDR 中提供的自動工作流程,用戶可大大縮短從概念帶部署的開發時間,同時專注于實現 SDR 產品的差異化特性。
評論
查看更多