軟件無(wú)線電平臺(tái)可重配置接口的實(shí)現(xiàn)
隨著2.5 G和3 G的出現(xiàn),使多種通信體制并存發(fā)展,它們?cè)诠ぷ黝l段、波形結(jié)構(gòu)、調(diào)制方式、編碼方式、加密方式等方面的不同,既限制了系統(tǒng)之間操作的互通性,也影響了用戶(hù)使用的便捷性。由于軟件無(wú)線電SDR(Software Defined Radio)技術(shù)可以將模塊化、標(biāo)準(zhǔn)化和通用化的硬件單元和軟件模塊集成在一個(gè)通用的物理平臺(tái)上,通過(guò)軟硬件的可重構(gòu),實(shí)現(xiàn)多種無(wú)線通信功能,故以軟件無(wú)線電為基礎(chǔ)、面向多種通信體制的兼容信號(hào)處理技術(shù)成為研究熱點(diǎn)。
本文研制了一個(gè)能實(shí)現(xiàn)多種無(wú)線通信體制的軟件無(wú)線電平臺(tái)。該平臺(tái)如圖1所示,由上位機(jī)、FPGA處理板、射頻板和天線組成。其中,上位機(jī)提供用戶(hù)界面,并完成基帶信號(hào)處理和系統(tǒng)控制。FPGA處理板主要完成各種通信體制的信號(hào)預(yù)處理。
考慮到平臺(tái)對(duì)多體制速率的兼容性、用戶(hù)遠(yuǎn)程配置處理平臺(tái)的便捷性以及平臺(tái)與現(xiàn)有網(wǎng)絡(luò)的融合和向分布式處理方向的可升級(jí)性和易擴(kuò)展性等,該平臺(tái)選用以太網(wǎng)接口作為上位機(jī)與FPGA處理板之間的連接方式。該以太網(wǎng)接口需要支持實(shí)時(shí)的在線重配置功能。
由于平臺(tái)選用的FPGA器件是Alteral公司的CycllONeII2C70F672C8,芯片本身沒(méi)有動(dòng)態(tài)部分可重構(gòu)的功能,不能利用中介紹的Xilinx的VirtexFPGA的動(dòng)態(tài)部分重構(gòu)功能,只需要重新配置FPGA的部分區(qū)域,而FPGA其余部分正常工作。Off-Chip動(dòng)態(tài)重構(gòu)的重構(gòu)時(shí)間太長(zhǎng)。模塊的可重選擇[5]的重構(gòu)時(shí)間短,但耗費(fèi)FPGA資源較多。為了滿足平臺(tái)的以太網(wǎng)接口對(duì)于一種配置時(shí)間較短而且耗用資源較少的配置方式的需要,本文提出并實(shí)現(xiàn)了一種上位機(jī)和FPGA處理板之間信令驅(qū)動(dòng)的、參數(shù)可重加載的、可實(shí)時(shí)在線重配置的以太網(wǎng)接口,并詳細(xì)介紹了該接口的數(shù)據(jù)/信令包的格式設(shè)計(jì)和FPGA中的邏輯設(shè)計(jì)。
1 可配置接口設(shè)計(jì)
1.1 接口電路原理描述
上位機(jī)和FPGA之間的接口電路如圖2所示,主要由網(wǎng)絡(luò)交換芯片BCM5325E和接口轉(zhuǎn)換芯片RTL8201組成。其中,BCM5325E為網(wǎng)絡(luò)交換芯片[6],工作頻率為25 MHz。芯片集成了10/100 Mb/s切換控制器和6個(gè)端口,除了一個(gè)MII(Media Independent Interface)端口以外,另外5個(gè)端口(port0-port4)為全雙工的10/100 Mb/s快速以太網(wǎng)收發(fā)器(滿足IEEE802.3 u標(biāo)準(zhǔn)接口),完成以太網(wǎng)物理接口功能。RTL8201是一個(gè)快速以太網(wǎng)物理層收發(fā)器,工作頻率為25 MHz,可以將IEEE802.3 u標(biāo)準(zhǔn)接口轉(zhuǎn)化為MII接口。
發(fā)送過(guò)程中,上位機(jī)先將用戶(hù)原始數(shù)據(jù)/信令按照一定的格式封裝成網(wǎng)絡(luò)包,通過(guò)網(wǎng)口發(fā)送到交換芯片的端口(port0或者port1),網(wǎng)絡(luò)交換芯片將該網(wǎng)絡(luò)包轉(zhuǎn)發(fā)到相應(yīng)端口(port3或者port4),然后經(jīng)過(guò)相應(yīng)的8201進(jìn)行數(shù)據(jù)格式的轉(zhuǎn)換,最后到達(dá)相應(yīng)的FPGA,F(xiàn)PGA再對(duì)接收到的網(wǎng)絡(luò)包進(jìn)行解析處理,以恢復(fù)上位機(jī)發(fā)送的用戶(hù)原始數(shù)據(jù)/信令。接收過(guò)程相反,F(xiàn)PGA發(fā)送的數(shù)據(jù)包依次經(jīng)過(guò)8201、網(wǎng)絡(luò)交換芯片后到達(dá)上位機(jī)。
1.2 接口包格式設(shè)計(jì)
上位機(jī)與FPGA之間需要交換數(shù)據(jù)包來(lái)完成通信雙方的信息傳輸,還需要交換信令包來(lái)完成系統(tǒng)的重配置,因此需要接口能夠區(qū)分不同類(lèi)型的包。此外,不同通信體制下或不同傳輸業(yè)務(wù)中,數(shù)據(jù)速率不同可能要求包的長(zhǎng)度不同,因此還需要接口能夠靈活地識(shí)別不同長(zhǎng)度的網(wǎng)絡(luò)數(shù)據(jù)包。
標(biāo)準(zhǔn)EthernetII協(xié)議下的包格式如圖3所示,其中D_MAC為數(shù)據(jù)包的目的地址,S_MAC為數(shù)據(jù)包的源地址,TYPE為數(shù)據(jù)包的類(lèi)型,F(xiàn)CS為校驗(yàn)位。標(biāo)準(zhǔn)的EthernetII包不能滿足所需接口的要求,需要在EthernetII協(xié)議的基礎(chǔ)上做一些改動(dòng),形成適合于統(tǒng)一平臺(tái)的網(wǎng)絡(luò)包格式,如圖4所示,圖4(a)為數(shù)據(jù)包格式,圖4(b)為信令包格式。
改進(jìn)的包格式有以下特點(diǎn):首先,將EthernetII協(xié)議的標(biāo)準(zhǔn)包格式中的數(shù)據(jù)段中劃分出一部分作為標(biāo)示域,其中長(zhǎng)度域(Length)用來(lái)標(biāo)示包中數(shù)據(jù)/信令的長(zhǎng)度,時(shí)間戳域(TimeSTamp)用來(lái)標(biāo)示包的發(fā)送或者接收時(shí)間。其次,通過(guò)Type域的內(nèi)容來(lái)區(qū)分?jǐn)?shù)據(jù)包和信令包。最后,數(shù)據(jù)包中的Data域用來(lái)裝載用戶(hù)數(shù)據(jù),信令包的Infor域用來(lái)裝載信令,如濾波器的參數(shù)配置信息、成幀模塊的參數(shù)配置信息、編碼模塊的參數(shù)配置信息等。每個(gè)模塊對(duì)應(yīng)的配置信令的格式為“Addr+Len+Para”,如圖4(b)所示。首先是4 B的信令頭信息,其中2 B表示該信令對(duì)應(yīng)的內(nèi)部模塊地址Addr,另外2 B表示該信令的長(zhǎng)度Len;接下來(lái)的n B是信令的內(nèi)容,即各模塊的配置參數(shù)Para。因此,用戶(hù)可以靈活地選擇需要配置的模塊,也可以根據(jù)需要設(shè)定這些模塊的配置參數(shù),而且每個(gè)模塊的配置參數(shù)的長(zhǎng)度可以變化。
改進(jìn)的網(wǎng)絡(luò)包為統(tǒng)一平臺(tái),為實(shí)現(xiàn)靈活的切換方式提供了很好的基礎(chǔ),而且由于改進(jìn)的網(wǎng)絡(luò)包保留了EthernetII協(xié)議的基本特性,可以在現(xiàn)有的以太網(wǎng)中傳輸。
1.3 FPGA的邏輯設(shè)計(jì)
在接口電路中傳輸?shù)氖茄b載了用戶(hù)數(shù)據(jù)/信令的網(wǎng)絡(luò)包,在接口兩端(即上位機(jī)和FPGA)都需要有相應(yīng)的接口模塊來(lái)對(duì)網(wǎng)絡(luò)包進(jìn)行解析和封裝。本文重點(diǎn)介紹FPGA端的接口模塊,如圖5所示,由6個(gè)子模塊組成:解包、打包、信令/數(shù)據(jù)切換控制、信令控制器以及FIFO。其中,解包是從MII口收取網(wǎng)絡(luò)包,根據(jù)網(wǎng)絡(luò)包的格式取出其中的信令/數(shù)據(jù);打包是將信令/數(shù)據(jù)按照網(wǎng)絡(luò)包的格式封裝起來(lái),發(fā)送到MII口;切換控制是用來(lái)選擇控制信令通路或數(shù)據(jù)通路的開(kāi)啟;信令控制器解析信令,送往相應(yīng)模塊的配置端口;FIFO用于緩存上行數(shù)據(jù)和下行數(shù)據(jù)。
該模塊主要完成兩項(xiàng)工作:一是從MII口收發(fā)信令包,并將解析的信令送給各基帶處理模塊,進(jìn)行參數(shù)配置和模式切換;二是從MII口收發(fā)數(shù)據(jù)包,提供上位機(jī)到FPGA內(nèi)部各個(gè)基帶處理模塊之間的數(shù)據(jù)通路。
當(dāng)系統(tǒng)在某種通信體制下正常工作時(shí),上位機(jī)與FPGA之間的數(shù)據(jù)通路開(kāi)啟,同時(shí)完成雙向數(shù)據(jù)的傳輸。待發(fā)送的下行數(shù)據(jù)經(jīng)過(guò)解包、切換控制、FIFO_1傳輸?shù)胶罄m(xù)模塊;接收到的上行數(shù)據(jù)經(jīng)過(guò)FIFO_2、切換控制、打包傳送到上位機(jī)。
當(dāng)系統(tǒng)需要切換到另一種通信體制時(shí),上位機(jī)與FPGA之間的信令通路開(kāi)啟,完成模塊的重配置。配置信令經(jīng)過(guò)解包、切換控制、信令控制后,解析出各配置參數(shù)送往相應(yīng)模塊進(jìn)行參數(shù)重配置;待各模塊配置完成后(mcu_reply有效),啟動(dòng)打包模塊發(fā)送一個(gè)信令回執(zhí)包以告知上位機(jī)。上位機(jī)收到FPGA的回執(zhí)包后,系統(tǒng)已切換到新通信體制下,可以進(jìn)行雙向數(shù)據(jù)(上下行數(shù)據(jù))的傳輸。
解包模塊:從MII口獲取網(wǎng)絡(luò)包后,首先應(yīng)核對(duì)網(wǎng)絡(luò)包中D_MAC域的內(nèi)容,若D_MAC域與本地MAC地址相同則接收該網(wǎng)絡(luò)包,否則丟棄。然后取出網(wǎng)絡(luò)包的Type域和Length域的內(nèi)容,并根據(jù)Length域的長(zhǎng)度信息取出包中的信令/數(shù)據(jù),一并送往切換控制器。
切換控制模塊:根據(jù)type端口的信息選擇開(kāi)啟信令通路或者數(shù)據(jù)通路。當(dāng)開(kāi)啟信令通路時(shí),將從datain端口輸入的信令送到信令控制器;同時(shí)當(dāng)檢測(cè)到mcu_reply端口的有效脈沖后,驅(qū)動(dòng)打包模塊發(fā)送一個(gè)特定格式的信令回執(zhí)。當(dāng)開(kāi)啟數(shù)據(jù)通路時(shí),將從datain端口輸入的數(shù)據(jù)送到FIFO_1;同時(shí)將從端口fout_data輸入的FIFO_2的數(shù)據(jù)送到打包模塊。
信令控制器:解析信令,并將根據(jù)配置信息完成模塊的重配置。信令控制器在mcu_en端口為高電平期間從mcu_data讀取信令,并開(kāi)始按信令格式“AddrN+LenN+ParaN”解析信令。首先根據(jù)內(nèi)部預(yù)設(shè)的一個(gè)模塊端口查找表,查出AddrN對(duì)應(yīng)模塊的配置端口(包括configN_en,configN_data,configN_done)。配置時(shí),configN_en為高電平,configN_data中傳送的是配置信息(ParaN),configN_done在配置完成時(shí)會(huì)出現(xiàn)一個(gè)正脈沖。當(dāng)信令控制器搜集完各個(gè)配置模塊的config_done有效脈沖后,才輸出一個(gè)mcu_reply有效脈沖反饋給切換控制器。
可重配置FIFO:緩存上行數(shù)據(jù)和下行數(shù)據(jù),可以根據(jù)當(dāng)前體制或業(yè)務(wù)需求來(lái)調(diào)整某些參數(shù),以完成數(shù)據(jù)流的控制。例如FIFO一端連接的是固定的硬件網(wǎng)口速率(25 MHz時(shí)鐘RXCLK/TXCLK),而另一端則需要實(shí)時(shí)改變數(shù)據(jù)速率,以匹配各種通信體制的上下行速率。本文中,可重配置FIFO中內(nèi)嵌了一個(gè)參數(shù)可調(diào)的PLL,該P(yáng)LL可以根據(jù)配置端口的config_data內(nèi)容來(lái)實(shí)時(shí)改變時(shí)鐘,因此FIFO能快速可靠地實(shí)現(xiàn)不同數(shù)據(jù)速率的切換。config_data的內(nèi)容可以由用戶(hù)在配置信令中自行設(shè)置,位寬為16 bit,可以完成216種不同速率(基本時(shí)鐘為80 MHz,可以在基本時(shí)鐘上倍頻或分頻)。
2 接口重配置過(guò)程的仿真
為了驗(yàn)證接口模塊的正常傳輸數(shù)據(jù)的功能以及在線重配置的功能,對(duì)接口模塊進(jìn)行了仿真驗(yàn)證。仿真中,數(shù)據(jù)包的長(zhǎng)度(即Length域)設(shè)置為1 490 B,Type1為080 A。信令包的長(zhǎng)度(即Length域)設(shè)置為1 490 B,Type2為080 B,F(xiàn)IFO的配置信令長(zhǎng)度設(shè)置為2 B。
仿真環(huán)境選用Modelsim,仿真中需要驗(yàn)證的場(chǎng)景是:
(1)初始配置過(guò)程,即在上電后,F(xiàn)PGA中的接口模塊從MII口接收到第一個(gè)信令包(圖6中信令1),信令控制器根據(jù)其中的信令信息完成FIFO1和FIFO2的速率參數(shù)rate1的配置,并反饋給MII口一個(gè)信令回執(zhí)包。
(2)數(shù)據(jù)傳輸過(guò)程,即FPGA中的接口模塊從MII口連續(xù)接收幾個(gè)數(shù)據(jù)包(圖6中數(shù)據(jù)1和數(shù)據(jù)2),數(shù)據(jù)通過(guò)切換控制器到FIFO1緩沖,再由rate1速率輸出給后續(xù)的處理模塊。
(3)在線重配置過(guò)程,即在系統(tǒng)工作中,F(xiàn)PGA中的接口模塊從MII口接收到第二個(gè)信令包(圖6中信令2),按(1)的過(guò)程配置FIFO的速率rate2,并反饋信令回執(zhí)。
(4)新的數(shù)據(jù)傳輸過(guò)程,即同(2)的過(guò)程,數(shù)據(jù)由rate2速率輸出給后續(xù)的處理模塊。
利用TestBentch產(chǎn)生rxdv、rxd、rxclk等MII口的輸入信號(hào)以及sys_clk、reset_n等系統(tǒng)全局輸入信號(hào),即可模擬以上網(wǎng)絡(luò)接口的運(yùn)行過(guò)程。仿真結(jié)果如圖6所示。
通過(guò)仿真表明,該接口能在上位機(jī)與FPGA之間準(zhǔn)確地傳輸數(shù)據(jù)包,而且通過(guò)該接口還能實(shí)現(xiàn)FPGA中各個(gè)基帶處理模塊(如FIFO)的在線重配置功能。該接口從系統(tǒng)整體的角度出發(fā),采用模塊化思想合理地劃分了各個(gè)模塊功能,不僅資源利用率高,而且配置時(shí)間短,如單個(gè)FIFO模塊的配置的時(shí)間小于1 μs,滿足設(shè)計(jì)需求。
該接口通過(guò)在FPGA上進(jìn)一步調(diào)試,已經(jīng)在試驗(yàn)平臺(tái)上開(kāi)展測(cè)試。目前該接口可以滿足幾種主流通信體制的不同速率要求,用戶(hù)可以自行選擇需要配置的模塊,也可以設(shè)定這些模塊的配置參數(shù),切換過(guò)程靈活。
該接口在軟件無(wú)線電平臺(tái)上也已經(jīng)開(kāi)展測(cè)試,可以滿足幾種主流通信體制的不同速率要求,具有很好的兼容性、靈活性和穩(wěn)定性,適合用于多種主流無(wú)線通信體制的不同速率要求。
評(píng)論