戴伏生
(哈爾濱工業(yè)大學(xué)(威海)信息與電氣工程學(xué)院,山東 威海 264209)
基于類似Unix操作系統(tǒng)但可自由免費使用的開源無線電軟件(GNU’s not Unix Radio, GNU Radio)[1],研制的無線通信系統(tǒng)實驗平臺,采用易于獨立發(fā)展和便于操作的層級化管理和控制模式。頂層管理控制放在計算機當(dāng)中實現(xiàn)。底層管理控制由實驗平臺承擔(dān),主要是對中頻/射頻模塊進行管理與控制。在信號處理方面,實驗平臺負(fù)責(zé)中頻信號的處理,計算機負(fù)責(zé)基帶信號的處理。只有計算機和實驗平臺有機的結(jié)合,才能完成無線電系統(tǒng)功能。雖然,計算機與實驗平臺相互配合,通過GNU Radio軟件能夠驗證很多應(yīng)用無線電技術(shù)[2-6]。但是,若不掌握實驗平臺系統(tǒng)內(nèi)部控制的原理和工作方式,就不能靈活應(yīng)用該實驗平臺,驗證的功能將局限于基帶信號處理方面,很難開發(fā)出具有實質(zhì)創(chuàng)新特色的無線電技術(shù)實驗,更談不上對實驗平臺無線電實現(xiàn)的技術(shù)進行移植,進而開發(fā)出可獨立工作的軟件無線裝置,因此本文著重介紹所研制的無線電通信系統(tǒng)教學(xué)實驗平臺的控制方法。
在實驗平臺XtremeDSP48A FPGA[7]構(gòu)建的系統(tǒng)中,上位機和下位機均需對所要傳輸信息進行分類,若從信息的性質(zhì)方面進行分類,則分為工作背景命令/狀態(tài)和數(shù)據(jù)信息;若從信息需要處理的實時性方面進行分類,則分為低速數(shù)據(jù)和高速數(shù)據(jù)流。其中所有的數(shù)據(jù)信息均分類為高速數(shù)據(jù)流,而命令/狀態(tài)信息既有低速數(shù)據(jù)流,也有高速數(shù)據(jù)流。實驗平臺上用FPGA構(gòu)建的系統(tǒng)中對低速數(shù)據(jù)流和高速數(shù)據(jù)流的處理,所使用的傳輸協(xié)議棧在高層是有區(qū)別的,實驗平臺上用FPGA所構(gòu)建的系統(tǒng)信息傳輸協(xié)議棧如圖1所示。
實驗平臺上用FPGA構(gòu)建的系統(tǒng)主要采用輕量級的網(wǎng)絡(luò)協(xié)議(Light weight IP, LwIP)[8],低速控制數(shù)據(jù)包傳輸采用LwIP/UDP+(Application, APP)背景包協(xié)議結(jié)構(gòu),APP為實驗平臺上用FPGA構(gòu)建的系統(tǒng)自定義的應(yīng)用包格式[9]。高速信息流傳輸采用LwIP/UDP+(Vita Radio Transport, VRT)包協(xié)議結(jié)構(gòu)。VRT是基于VITA-49協(xié)議規(guī)范定義的無線收發(fā)數(shù)據(jù)包格式[10]。由于VITA-49是專門用于軟件無線電射頻/中頻設(shè)備網(wǎng)絡(luò)方式的互操作性傳輸協(xié)議規(guī)范,所以VRT非常適合高速數(shù)據(jù)及高速命令狀態(tài)信息的網(wǎng)絡(luò)化傳輸。
圖1 實驗平臺傳輸協(xié)議棧
為了更明確實驗平臺的處理流程,主要從信息流向角度介紹。下位機通過UDP/IP協(xié)議與上位機進行信息的傳輸,而在UDP協(xié)議的上層使用幾種信息包格式,對應(yīng)地在實驗平臺中的數(shù)據(jù)流也包括幾種,如下主要介紹的是低速控制信息和高速信息包。低速APP信息包格式采用操作標(biāo)識ID包格式;而高速VRT信息包格式中又含有兩種格式,即數(shù)據(jù)包Data Packet和工作背景命令包Context Packet,分別對應(yīng)在高速數(shù)據(jù)通道和高速控制信息通道上傳輸。
在千兆以太網(wǎng)的角度來看,其將上位機與實驗平臺的所有數(shù)據(jù)交互,都作為千兆以太網(wǎng)的有效數(shù)據(jù),并通過UDP/IP協(xié)議在二者之間傳輸。當(dāng)下位機將以太網(wǎng)數(shù)據(jù)拆包后,先根據(jù)UDP端口號區(qū)分是APP低速控制信息,還是VRT的高速有效數(shù)據(jù)或控制信息,并將不同數(shù)據(jù)發(fā)往不同的方向。圖2體現(xiàn)實驗平臺系統(tǒng)設(shè)計上對內(nèi)部對數(shù)據(jù)流向的控制思想。
圖2 實驗平臺內(nèi)部對數(shù)據(jù)流向的控制思想
UDP協(xié)議使用端口號大于49151的端口號都代表動態(tài)端口,用戶可以自己定義其對應(yīng)的應(yīng)用程序[11]。為了信息傳輸?shù)男枰?,對UDP端口進行了定義,表1所示的是實驗平臺常用的UDP端口。
表1 實驗平臺主要常用的UDP端口定義
低速控制信息所涉及UDP端口號為49152,主要實現(xiàn)上位機與下位機之間的低速控制狀態(tài)的設(shè)置和讀取。對低速控制信息通道的數(shù)據(jù)處理,均需要片上系統(tǒng)中處理器(Zylin CPU, ZPU)[12]進行解析,然后根據(jù)解析出的操作要求,通過Wishbone總線[13],再控制相應(yīng)功能模塊及其子單元。UDP端口號49156~49159是高速數(shù)據(jù)及控制信息傳輸通道,這些端口傳輸?shù)男畔⒅饕c數(shù)字變頻,或者發(fā)送接收前端的高速設(shè)置寄存器Setting FIFO Control模塊相關(guān)[14]。高速傳輸通道在信息傳遞過程中不需要ZPU進行解析,而是由Packet router解析包頭后,直接送給相應(yīng)的邏輯功能模塊,實質(zhì)上是時序邏輯的硬件動作。
低速控制信息主要涉及五種操作,SPI的處理、I2C讀、I2C寫、窺探Peek、干涉Poke等。上位機給實驗平臺低速控制信息APP包格式見圖3所示。由于實驗平臺返回給上位機的APP包格式與此相似,恕不需特別介紹。
圖3 上位機給實驗平臺低速控制信息數(shù)據(jù)包格式
實驗平臺低速控制信息APP包格式中的包頭與擬操作的功能模塊相關(guān),例如SPI的處理包,其操作涉及9個SPI芯片,為:主板A/D轉(zhuǎn)換器、射頻子板發(fā)射頻率合成器、射頻子板發(fā)射電路參數(shù)檢測與調(diào)整用串行A/D轉(zhuǎn)換和D/A轉(zhuǎn)換器、射頻子板接收電路參數(shù)檢測與調(diào)整用串行D/A和D/A轉(zhuǎn)換芯片器、主板D/A轉(zhuǎn)換器、時鐘管理器等。對SPI操作將用到掛載Wishbone總線的Settings bus功能模塊,且在Settings bus之下的設(shè)置寄存器組SR_SPI_CORE,對應(yīng)總線基組BASE地址為0X7050,SR_SPI_CORE中有3個設(shè)置寄存器,SR_SPI_CORE+0寄存器地址為BASE+0=0X7050,它負(fù)責(zé)設(shè)定SPI功能模塊的工作時鐘參數(shù);SR_SPI_CORE+1寄存器地址為BASE+1=0X7054,它負(fù)責(zé)選擇本次操作針對的是9個SPI芯片中哪個,以及要傳輸多少位數(shù)據(jù)和動作時序;SR_SPI_CORE+2寄存器地址為BASE+2=0X7056,存放準(zhǔn)備傳輸?shù)臄?shù)據(jù)。
由于ZPU是Wishbone總線的主控制器,對低速控制信息的處理,會涉及路由器模塊Packet router與ZPU之間對總線操作的控制,所以需要進行總線資源屬性的設(shè)置。Packet router給ZPU傳送數(shù)據(jù)稱為總線設(shè)置資源屬性,反之則稱為總線讀取資源屬性??偩€設(shè)置資源屬性時,ZPU將Packet router設(shè)置為寫ZPU方式,Packet router對來自以太網(wǎng)的APP數(shù)據(jù)包頭進行UDP端口識別,當(dāng)端口號為49152即USRP2_UDP_ CTRL_PORT時,Packet router把APP數(shù)據(jù)送到總線??偩€再把數(shù)據(jù)傳給ZPU,ZPU進行APP數(shù)據(jù)解析,進而控制總線掛載的功能模塊。總線讀取資源屬性時,ZPU將Packet router設(shè)置為讀ZPU方式。Packet router讀取ZPU中的資源信息,再把APP包加上相同的端口號49152即USRP2_UDP_CTRL_PORT包頭后,然后把APP包通過以太接口送給上位機。
當(dāng)實驗平臺接收到端口號為49152即USRP2_UDP_CTRL_PORT的控制信息時,總線處于總線設(shè)置資源屬性,Packet router把APP包通過總線傳給ZPU,ZPU對APP包中的操作控制信息數(shù)據(jù)處理方法見表2。ZPU給上位機返回信息時,總線處于總線讀取資源屬性,ZPU把VRT包通過總線傳給Packet router,由Packet router給APP包添加UDP端口號49152后發(fā)送給上位機。
表2 低速控制信息在實驗平臺中處理方法
實驗平臺對發(fā)射信息處理方法如圖4所示。高速信息數(shù)據(jù)的來源有兩個即以太網(wǎng)或MIMO,由設(shè)置寄存器組SR_BUF_POOL中Sreg_mode_ctrl寄存器的最低位決定。若設(shè)置該實驗平臺為主設(shè)備,高速信息數(shù)據(jù)來源以太網(wǎng);若在多個實驗平臺級聯(lián)使用時,設(shè)置該實驗平臺為從設(shè)備,則高速信息數(shù)據(jù)來源MIMO。文中以默認(rèn)設(shè)置實驗平臺為主設(shè)備介紹。
高速信息包流從以太網(wǎng)傳輸?shù)铰酚善鱌acket router模塊時,路由器模塊中的包調(diào)度Packet dispatcher模塊,會根據(jù)VRT數(shù)據(jù)包UDP端口判斷包流的類型。當(dāng)UDP端口為USRP2_UDP_TX_DSP0_PORT時,就將其發(fā)往發(fā)射信號高速數(shù)據(jù)通道;當(dāng)UDP端口為USRP2_UDP_FIFO_CRTL_PORT時,則將電路高速控制信息發(fā)往高速命令通道,即控制命令順序執(zhí)行寄存器。由于發(fā)射的高速數(shù)據(jù)量較大,實驗平臺中設(shè)計了一個9 Mbit SRAM作為突發(fā)數(shù)據(jù)的緩存,并采用了存儲控制器(General Purpose Memory Controller, GPMC)[15],GPMC負(fù)責(zé)協(xié)調(diào)SRAM緩存數(shù)據(jù)與外部數(shù)據(jù)提取Ext_fifo_i1模塊間數(shù)據(jù)輸出速率。由于傳輸數(shù)據(jù)采用了VRT數(shù)據(jù)包格式,所以在數(shù)字上變頻DUC前,需要通過VITA_tx_chain邏輯模塊對信息包流進行包頭和有效數(shù)據(jù)分離,分離出的包頭信息將會確保數(shù)據(jù)和時序的正確性,有效數(shù)據(jù)在D/A轉(zhuǎn)換前還需通過TX_frontend邏輯模塊,對信號進行直流偏置工作、信號增益和相位等進行調(diào)整。
高速命令通道中的控制命令順序執(zhí)行寄存器模塊,該模塊內(nèi)包含兩個短的先進先出寄存器Short_fifo模塊,分別用于存放控制命令和執(zhí)行結(jié)果,主要負(fù)責(zé)讀取輸入的控制命令包而進行對應(yīng)操作,并產(chǎn)生執(zhí)行結(jié)果的VRT格式應(yīng)答包ACK_packet。該應(yīng)答包作為UDP的數(shù)據(jù)通過路由器Packet router模塊加上USRP2_UDP_FIFO_CRTL_PORT包頭后送給上位機。
對接收信息處理方法如圖5所示。由A/D轉(zhuǎn)換器輸出高速采樣的數(shù)據(jù)共有兩路DSP0和DSP1通道,兩路信號經(jīng)RX_frontend邏輯模塊對數(shù)字信號進行直流偏置工作、信號增益和相位等進行調(diào)整后,利用VITA_rx_chain邏輯模塊進行VITA-49數(shù)據(jù)格式轉(zhuǎn)換[16],添加包頭等信息形成VRT規(guī)范數(shù)據(jù)包流。當(dāng)傳輸?shù)铰酚善鱌acket router邏輯模塊時,路由器首先會根據(jù)數(shù)據(jù)來源,分別給數(shù)據(jù)包添加上UDP端口,若數(shù)據(jù)為高速采樣數(shù)據(jù)來自數(shù)字下變頻DDC0時,路由器會給VRT包添加上USRP2_UDP_RX_DSP0_PORT包頭,而來自數(shù)字下變頻DDC1時,則給VRT包添加上USRP2_UDP_RX_DSP1_PORT包頭;若信號來自順序控制應(yīng)答寄存器時,路由器會把數(shù)據(jù)加上USRP2_UDP_FIFO_CRTL_PORT包頭后送給上位機。
圖4 實驗平臺對發(fā)射信息的處理方法
圖5 實驗平臺對接收RX信息的處理方法
需要說明的是在批量數(shù)據(jù)發(fā)送或者是接收期間將用到一些設(shè)置寄存器組,如:路由器Packet router邏輯模塊的設(shè)置寄存器組SR_UDP_SM、SR_BUF_POOL,數(shù)字上下變頻邏輯模塊DDC_chain和UDC_chain中的設(shè)置寄存器組SR_RX_CTRL0、SR_RX_DSP0、SR_RX_CTRL0、SR_RX_DSP1、SR_TX_CTRL、SR_TX_DSP,以及RX_frontend和TX_frontend信號調(diào)整邏輯模塊中的設(shè)置寄存器組SR_RX_FRONT、SR_TX_FRONT等。這些設(shè)置寄存器中的參量都是通過低速控制信息Setting bus模塊,需要利用ZPU進行事前設(shè)置,且在批量數(shù)據(jù)發(fā)送或者是接收期間,這些設(shè)置寄存器中的參量應(yīng)保持不改變。
實驗平臺的高速信息采用VITA-49規(guī)范構(gòu)建了VRT包[10],格式如圖6所示。其中,包類型的4 bit字段,實驗平臺定義3種,若為0001,則包類型定義為表示帶有流標(biāo)識的高速數(shù)據(jù)包;若為0100或0101,則包類型定義為表示工作背景和擴展背景包的高速命令包。
圖6 實驗平臺中VRT包格式
VRT包格式中C字段用來標(biāo)志數(shù)據(jù)包中是否含有類標(biāo)識符,因?qū)嶒炂脚_沒采用類標(biāo)識符,故C置為0。T只對數(shù)據(jù)包起作用,標(biāo)志VRT數(shù)據(jù)包中是否含有尾部,含有尾部T置為1。M只對背景包起作用,為0時表示使用精準(zhǔn)時間戳。TSI字段標(biāo)志數(shù)據(jù)包中使用的整數(shù)部分時間戳是UTC、GPS還是其他類型,由于獨立工作的實驗平臺暫時無法獲得電信聯(lián)盟參考時間UTC,所以在實驗平臺暫不使用UTC,但是若給實驗平臺外配GPS模塊,可設(shè)置TSI為10,否則TSI設(shè)置為11即其他時間標(biāo)準(zhǔn)。TSF字段標(biāo)志數(shù)據(jù)包中使用小數(shù)部分時間戳的實時性定義類型。更多有關(guān)VITA-49規(guī)范建議將另文介紹,此處不再贅述。
對研制的無線電通信系統(tǒng)教學(xué)實驗平臺中低速控制信息和高速信息處理方法和工作特點,進行了系統(tǒng)地介紹。闡明了實驗平臺中低速控制數(shù)據(jù)流傳輸采用LwIP/UDP+APP背景包協(xié)議結(jié)構(gòu),高速數(shù)據(jù)流傳輸采用LwIP/UDP+VRT數(shù)據(jù)包協(xié)議結(jié)構(gòu),并根據(jù)UDP端口號區(qū)分低速控制信息和高速控制信息。區(qū)分后的信息發(fā)給相應(yīng)功能模塊進行相應(yīng)處理。實驗平臺主板設(shè)計特點是通過接口對信息進行分類處理,并采用了層級化管理和控制方法。掌握APP低速控制信息和VRT高速數(shù)據(jù)及控制信息處理方法,不僅有助于對實驗平臺工作原理的全面理解,而且為進一步按照用戶特定要求實施對實驗平臺特殊控制,開展個性化創(chuàng)新特色實驗奠定了必要的基礎(chǔ)。雖然,通過以上介紹對教學(xué)實驗平臺主板工作原理建立了系統(tǒng)工作的概念,但是,若要想充分發(fā)揮實驗平臺提供的資源,尤其是想開發(fā)出具有創(chuàng)造性的軟件無線電應(yīng)用,還需要掌握射頻子板的工作原理。后續(xù)將對實驗平臺的射頻子板工作原理,以及主板控制射頻子板的方法進行闡述。