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