盧華
【摘要】 數(shù)據(jù)復(fù)接是通信中的一個(gè)重要環(huán)節(jié),本文針對(duì)動(dòng)態(tài)TDMA系統(tǒng)的強(qiáng)實(shí)時(shí)性要求設(shè)計(jì)了一種基于FPGA的高速低時(shí)延數(shù)據(jù)復(fù)接方法,同時(shí)解決了數(shù)據(jù)鏈對(duì)數(shù)據(jù)復(fù)接提出的多通道并發(fā)問題,本文著重介紹了數(shù)據(jù)存儲(chǔ)和隊(duì)列管理的方法,整個(gè)設(shè)計(jì)已經(jīng)實(shí)現(xiàn),并在實(shí)際通信系統(tǒng)中應(yīng)用。
【關(guān)鍵詞】 數(shù)據(jù)復(fù)接 數(shù)據(jù)存儲(chǔ) 隊(duì)列管理 FPGA
Lu Hua (Southwest China Institute of Electronic Technology, Chengdu 610036, China)
Abstract: Multiplexer is an important part of communication, in this paper a high-speed and low-latency Multiplexer based on FPGA is designed for the real-time requirement of dynamic TDMA system,at the same time this paper solved the multi-channel requirement of the data link.This paper focusing on the data storage and queue management methods.The design is implemented with and has been successfully used in our communication systems.
Key words: multiplexer,data storage,queues management,F(xiàn)PGA
一、引言
信息化戰(zhàn)爭(zhēng)中空中信息平臺(tái)、空中武器裝備平臺(tái)之間的通信,正由點(diǎn)對(duì)點(diǎn)通信向數(shù)據(jù)鏈、網(wǎng)絡(luò)發(fā)展,并從窄帶通信向?qū)拵ㄐ虐l(fā)展,通信平臺(tái)中為了提高網(wǎng)絡(luò)的通信容量采用多通道頻分通信技術(shù)。
在鏈路層接入技術(shù)上,隨著同步技術(shù)(如GPS衛(wèi)導(dǎo)同步[1]等)的不斷發(fā)展,時(shí)分多址(Time Division Multiple Access,簡(jiǎn)稱TDMA)接入技術(shù)憑借頻譜利用率高、系統(tǒng)容量大等優(yōu)點(diǎn),廣泛應(yīng)用于民用與軍用無線網(wǎng)絡(luò)中。對(duì)于多信道互聯(lián)網(wǎng)絡(luò),為了解決子網(wǎng)間負(fù)載不均衡,網(wǎng)間中繼擁塞等現(xiàn)象,實(shí)現(xiàn)時(shí)隙資源的全局資源優(yōu)化采用動(dòng)態(tài)TDMA技術(shù)[2]。
數(shù)據(jù)復(fù)接將多路不同類型、不同速率的數(shù)據(jù)流經(jīng)過組幀,復(fù)接成一路高速數(shù)據(jù)流[3]。迄今為止國內(nèi)外數(shù)據(jù)復(fù)接技術(shù)在民用領(lǐng)域展開了廣泛的研究,主要針對(duì)信道獨(dú)占的點(diǎn)對(duì)點(diǎn)通信系統(tǒng)[4-8]。動(dòng)態(tài)TDMA通信網(wǎng)絡(luò)中具有突發(fā)性,通信對(duì)象多變等特點(diǎn),傳統(tǒng)數(shù)據(jù)復(fù)接采用連續(xù)數(shù)據(jù)流水設(shè)計(jì)不適合TDMA通信條件下的突發(fā)通信。另外傳統(tǒng)數(shù)據(jù)復(fù)接數(shù)據(jù)緩存設(shè)計(jì)簡(jiǎn)單,采用FPGA內(nèi)部FIFO緩存數(shù)據(jù)[3,5-8],存儲(chǔ)容量小,當(dāng)通信干擾導(dǎo)致連接短暫斷開或者時(shí)隙協(xié)商失敗時(shí)從而FIFO溢出導(dǎo)致數(shù)據(jù)丟幀,通信速率越高該問題越突出;僅僅針對(duì)單通道的數(shù)據(jù)復(fù)接[3-8],至今未查閱到多通道數(shù)據(jù)復(fù)接的相關(guān)文獻(xiàn)。
本文利用FPGA實(shí)現(xiàn)數(shù)據(jù)高速數(shù)據(jù)的復(fù)接,F(xiàn)PGA具有反復(fù)可編程,應(yīng)用靈活,資源豐富等優(yōu)點(diǎn),更重要的是其按信號(hào)的硬件邏輯運(yùn)行,速度快,實(shí)時(shí)性好[9],采用QDRII+緩存數(shù)據(jù)幀,設(shè)計(jì)了靈活的隊(duì)列管理和調(diào)度的方式,實(shí)現(xiàn)多通道并行的高速低時(shí)延數(shù)據(jù)復(fù)接。
二、數(shù)據(jù)復(fù)接系統(tǒng)模型
2.1復(fù)接方法
根據(jù)參與復(fù)接的各支路碼元數(shù)字結(jié)構(gòu)情況,把復(fù)接分為三種:按位復(fù)接、按字復(fù)接、按幀復(fù)接。按位復(fù)接,也稱“比特單位復(fù)接”。這種方法每次復(fù)接一位碼;按字復(fù)接就是每次復(fù)接取一個(gè)支路的8位碼,各個(gè)支路的碼輪流被復(fù)接;按幀每次復(fù)接一個(gè)支路的一幀數(shù)碼,復(fù)接以后的碼序列順序?yàn)椋旱?路的第一幀、第2路的第一幀、第3路的第一幀、第4路的第一幀、第1路的第二幀、第2路的第二幀,后面的依此類推。也就是說,各路的第一幀依次取過以后,再循環(huán)取以后的各個(gè)幀。這種復(fù)接方法的優(yōu)點(diǎn)是復(fù)接時(shí)不破壞原來各個(gè)幀的結(jié)構(gòu),有利于交換,但要求有更大的存儲(chǔ)容量[7]。本文應(yīng)用于TDMA的無線通信網(wǎng)絡(luò)中,為了進(jìn)行數(shù)據(jù)交換采用按幀復(fù)接的方法。
圖1為復(fù)接的幀結(jié)構(gòu),NDU(Network-layer Data Unit,簡(jiǎn)稱NDU)為來自不同源的數(shù)據(jù)幀,LDU(Link-layer Data Unit,簡(jiǎn)稱LDU)為數(shù)據(jù)復(fù)接的輸出,其由基本報(bào)頭和若干NDU組成。基本報(bào)頭包含LDU的目的地址、源地址、長(zhǎng)度等信息。同一個(gè)LDU的NDU目的地址相同。LDU的長(zhǎng)度由當(dāng)前的通信速率和時(shí)隙長(zhǎng)度計(jì)算得到。
2.2約束條件
2.3 NDU數(shù)據(jù)幀結(jié)構(gòu)
本文涉及的數(shù)據(jù)幀結(jié)構(gòu)復(fù)雜,是本文的難點(diǎn)之一,每個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)需緩存發(fā)送到其他節(jié)點(diǎn)的NDU數(shù)據(jù),NDU數(shù)據(jù)的長(zhǎng)度不固定,NDU數(shù)據(jù)根據(jù)重要性和實(shí)時(shí)性要求分為4個(gè)優(yōu)先級(jí)。
用圖2的三維模型表示NDU數(shù)據(jù)結(jié)構(gòu),X方向表示優(yōu)先級(jí),網(wǎng)絡(luò)節(jié)點(diǎn)之間需要通過數(shù)據(jù)鏈傳輸?shù)脑捯?、圖像、業(yè)務(wù)消息、視頻數(shù)據(jù)、管理消息等信息按照優(yōu)先級(jí)分別存入4個(gè)隊(duì)列中;Y方向?yàn)橐阅康牡刂穭澐值木W(wǎng)絡(luò)節(jié)點(diǎn),本網(wǎng)絡(luò)節(jié)點(diǎn)需要傳輸?shù)綄?duì)應(yīng)網(wǎng)絡(luò)節(jié)點(diǎn)目的地址的數(shù)據(jù)存入相應(yīng)的優(yōu)先級(jí)隊(duì)列中;Z方向表示NDU數(shù)據(jù)幀,圖2中黑色表示由本網(wǎng)絡(luò)節(jié)點(diǎn)發(fā)送到網(wǎng)絡(luò)節(jié)點(diǎn)2、優(yōu)先級(jí)2的第二個(gè)NDU數(shù)據(jù)幀。同一目的網(wǎng)絡(luò)節(jié)點(diǎn)的同一優(yōu)先級(jí)NDU數(shù)據(jù)為一個(gè)先入先出隊(duì)列,復(fù)接時(shí)先復(fù)接高優(yōu)先級(jí)NDU再復(fù)接低優(yōu)先NDU。
三、數(shù)據(jù)復(fù)接實(shí)現(xiàn)方法
3.1硬件架構(gòu)
本文選用Xilinx公司的XC6VLX75T FPGA實(shí)現(xiàn)數(shù)據(jù)復(fù)接,XC6VLX75T采用40nm工藝,具有速度快、功耗低、內(nèi)部資源豐富和高速接口豐富的特點(diǎn)。本文通過XC6VLX75T的兩對(duì)高速串行總線RapidIO接口輸入NDU、輸出LDU。
多通道動(dòng)態(tài)TDMA系統(tǒng)的高速數(shù)據(jù)復(fù)接需要很高的實(shí)時(shí)性,對(duì)存儲(chǔ)器的選擇非常關(guān)鍵,NDU數(shù)據(jù)幀存儲(chǔ)器須要滿足高帶寬和高實(shí)時(shí)性的要求?,F(xiàn)在常用的存儲(chǔ)器有可以分為ROM、RAM和Flash等類別。ROM為只讀存儲(chǔ)器,F(xiàn)lash的寫速度慢顯然不能滿足本文應(yīng)用需求,RAM由分為兩大類SSRAM和SDRAM,兩種當(dāng)前都能夠達(dá)到很高的帶寬,如DDR2,DDR3單顆很容易達(dá)到10Gbps以上的帶寬,因此兩類RAM能夠滿足高帶寬的要求,SDRAM是動(dòng)態(tài)RAM需要刷新因此,刷新時(shí)不能進(jìn)行數(shù)據(jù)讀寫,因此實(shí)時(shí)性不如SSRAM[10]。
本文采用QDRII+作為NDU數(shù)據(jù)幀的緩存器,QDRII+是SSRAM的一種,具有兩個(gè)典型的特點(diǎn):1、帶寬高,讀寫端口獨(dú)立,分別獨(dú)享帶寬;2、高實(shí)時(shí)性,以零等待(100ns以內(nèi))完成猝發(fā)訪問。QDRII+型號(hào)為CY7C2663KV18,大小為144Mbit,位寬為18bit,接口時(shí)鐘速率為200Mhz,由于采用DDR的方式讀寫數(shù)據(jù),因此讀、寫理論帶寬分別為7.2Gbps。
硬件架構(gòu)如圖3所示,CY7C2663KV18和XC6VLX75T直接相連,NDU數(shù)據(jù)通過XC6VLX75T上的RapidIO接口輸入,復(fù)接后的LDU數(shù)據(jù)幀通過XC6VLX75T上的RapidIO接口輸出。
3.2隊(duì)列管理
數(shù)據(jù)幀存儲(chǔ)采用文件存儲(chǔ)結(jié)構(gòu),如圖4所示首地址P_ base_address_n和幀長(zhǎng)度Length_n可以唯一的確定一幀數(shù)據(jù)的位置,這兩個(gè)參數(shù)作為幀的索引值,所有幀的索引值組成索引表。索引表和幀數(shù)據(jù)獨(dú)立存儲(chǔ),將索引表存儲(chǔ)于FPGA內(nèi)部,數(shù)據(jù)的存儲(chǔ)于QDRII+中,利用FPGA的快速性和QDRII+的容量?jī)?yōu)勢(shì),達(dá)到了大容量數(shù)據(jù)高速存儲(chǔ)的目的。
索引表是一個(gè)先入先出隊(duì)列,NDU數(shù)據(jù)幀輸入時(shí),將NDU幀寫入QDRII+中,并在索引表的末尾添加一個(gè)索引值保存NDU的首地址和幀長(zhǎng)度,NDU數(shù)據(jù)幀復(fù)接時(shí),從索引表頭上讀取一個(gè)索引值,根據(jù)索引值找到NDU,在索引表中刪除該索引值。采用FPGA內(nèi)部的FIFO來實(shí)現(xiàn)索引表, FIFO為Xilinx官方提供的先入先出隊(duì)列IP Core,如圖 5所示,DIN為FIFO的輸入信號(hào),其中DIN[31:0]連接P_base_ address_n表示輸入NDU初始地址,DIN[47:32]連接Length_ n表示輸入NDU長(zhǎng)度,輸出信號(hào)DOUT定義和DIN相同,RD_DATA_COUNT[9:0]表示FIFO索引表中存儲(chǔ)的索引值總數(shù),即索引表長(zhǎng)度。
本文包含4個(gè)通信節(jié)點(diǎn),NDU數(shù)據(jù)分為4個(gè)優(yōu)先級(jí),每個(gè)優(yōu)先級(jí)單獨(dú)建立數(shù)據(jù)隊(duì)列,每個(gè)通信節(jié)點(diǎn)內(nèi)建立16個(gè)數(shù)據(jù)隊(duì)列。每個(gè)數(shù)據(jù)隊(duì)列單獨(dú)建立索引表,建立16個(gè)索引表,消耗FPGA內(nèi)部16個(gè)FIFO。QDRII+空間劃為16份,本文將QDRII+平均分配為9Mbit的16份,每一份獨(dú)立存儲(chǔ)一個(gè)數(shù)據(jù)隊(duì)列。
隊(duì)列管理FPGA邏輯實(shí)現(xiàn)如圖 6所示,F(xiàn)PGA從RapidIO接收NDU數(shù)據(jù)后,根據(jù)輸入NDU數(shù)據(jù)目的通信成員節(jié)點(diǎn)地址和優(yōu)先級(jí),分流到16個(gè)優(yōu)先級(jí)管理隊(duì)列中,如圖6所示。
本文設(shè)計(jì)的隊(duì)列為循環(huán)隊(duì)列,用FPGA內(nèi)部P_head_ address_n、P_tail_address_n兩個(gè)寄存器分別表示隊(duì)首和隊(duì)尾。當(dāng)NDU數(shù)據(jù)寫入后隊(duì)列管理器移動(dòng)P_head_address_n,P_head_address_n通過n-1幀的首地址P_head _address_n-1加上n-1幀的長(zhǎng)度Length_n-1得到,隊(duì)列管理器將P_base_ address_n和Length_n寫入到隊(duì)列索引表中。當(dāng)數(shù)據(jù)復(fù)接器需要從數(shù)據(jù)隊(duì)列中讀取出NDU時(shí),根據(jù)從索引表FIFO中讀取出NDU的基地址和NDU幀長(zhǎng)度從QDRII+中讀取一幀完整的NDU數(shù)據(jù),數(shù)據(jù)讀取成功后移動(dòng)P_tail_address_n將其指示到新的隊(duì)尾。
3.3數(shù)據(jù)復(fù)接
數(shù)據(jù)復(fù)接器由FPGA內(nèi)部的一個(gè)狀態(tài)機(jī)實(shí)現(xiàn),如圖 7所示,F(xiàn)PGA復(fù)位后或者一幀復(fù)接結(jié)束后狀態(tài)機(jī)處于IDLE狀態(tài),等待時(shí)隙開始時(shí)刻,數(shù)據(jù)復(fù)接器啟動(dòng)數(shù)據(jù)復(fù)接,狀態(tài)機(jī)進(jìn)入Queue_sel狀態(tài);Queue_sel狀態(tài)數(shù)據(jù)復(fù)接器選擇數(shù)據(jù)幀隊(duì)列,首先通過一個(gè)16選4的選擇器選擇目的通信節(jié)點(diǎn)地址的4個(gè)NDU數(shù)據(jù)隊(duì)列,然后通過輪詢的方式選擇其中一個(gè)數(shù)據(jù)隊(duì)列,選擇數(shù)據(jù)隊(duì)列后狀態(tài)機(jī)進(jìn)入Arbitrage狀態(tài)。
當(dāng)多路數(shù)據(jù)并行復(fù)接時(shí),多路同時(shí)讀取QDRII+中的數(shù)據(jù),由圖 6所示的數(shù)據(jù)仲裁器進(jìn)行QDRII+讀權(quán)限的仲裁,數(shù)據(jù)仲裁器的工作流程如圖 8所示,數(shù)據(jù)復(fù)接器在Arbitrage狀態(tài)時(shí)向數(shù)據(jù)仲裁器提出仲裁請(qǐng)求,仲裁器根據(jù)先來先獲取的原則,判決QDRII+的使用權(quán)限,數(shù)據(jù)復(fù)接器獲取QDRII+讀取權(quán)限后進(jìn)入Read狀態(tài),復(fù)接器在Read狀態(tài)控制Rd_ Cmd和Rd_Addr信號(hào)產(chǎn)生圖9所示的時(shí)序向QDRII+發(fā)起讀數(shù)請(qǐng)求,Rd_Cmd表示讀數(shù)請(qǐng)求,Rd_Addr表示讀數(shù)地址。QDR II+數(shù)據(jù)通過Data_Valid和Data輸出,Data_Valid表示輸出數(shù)據(jù)有效,Data為數(shù)據(jù)輸出總線。從發(fā)起到Rd_Cmd到數(shù)據(jù)輸出之間有一定時(shí)延,在復(fù)接器讀請(qǐng)求發(fā)送完成后進(jìn)入Wait狀態(tài)等待QDRII+數(shù)據(jù)輸出,當(dāng)Rd_Cmd數(shù)量和Data_ Valid數(shù)量相等時(shí)表示數(shù)據(jù)從QDRII+全部讀出,狀態(tài)機(jī)進(jìn)入Multiplexer狀態(tài)進(jìn)行復(fù)接。
NDU數(shù)據(jù)從QDRII+中讀出后存入FIFO中跨時(shí)鐘域處理,F(xiàn)PGA在Multiplexer狀態(tài)將若干NDU和基本包頭拼接為圖1所示的LDU數(shù)據(jù)幀,復(fù)接過程中的LDU緩存在內(nèi)部RAM中,待復(fù)接NDU存入FIFO后,計(jì)算該NDU數(shù)據(jù)在緩存RAM中的起始地址,然后將數(shù)據(jù)從FIFO中搬入緩存 RAM中,直到NDU的長(zhǎng)度達(dá)到最大長(zhǎng)度或者對(duì)應(yīng)節(jié)點(diǎn)的隊(duì)列為空,狀態(tài)機(jī)進(jìn)入Head狀態(tài),向RAM中寫入LDU頭。狀態(tài)機(jī)結(jié)束一次LDU復(fù)接,重新回到IDLE狀態(tài)。
四、測(cè)試結(jié)果
外部激勵(lì)產(chǎn)生NDU測(cè)試數(shù)據(jù)包,測(cè)試通信速率從2Mbps-80Mbps,LDU包長(zhǎng)度從4Kbit-160Kbit,測(cè)試NDU數(shù)據(jù)通過RapidIO總線寫入到FPGA中, FPGA每2ms發(fā)起一次復(fù)接,復(fù)接分為單通道和雙通道并行復(fù)接兩種情況,F(xiàn)PGA內(nèi)部計(jì)時(shí)器(5ns步進(jìn))計(jì)算LDU復(fù)接過程消耗的時(shí)間,測(cè)試結(jié)果見表2。
從表2測(cè)試結(jié)果可見:
1、本文的高速數(shù)據(jù)復(fù)接方法處理時(shí)延短,在160Mbps通信速率下,雙通道同時(shí)進(jìn)行數(shù)據(jù)復(fù)接僅需要不足200us的通信時(shí)間,在2ms時(shí)隙情況下,復(fù)接環(huán)節(jié)僅占時(shí)隙的十分之一,數(shù)據(jù)鏈協(xié)議,編碼調(diào)制留下了充足的處理時(shí)間,能夠滿足多通道動(dòng)態(tài)TDMA下對(duì)數(shù)據(jù)復(fù)接提出的強(qiáng)實(shí)時(shí)性要求。
2、FPGA的數(shù)據(jù)復(fù)接處理時(shí)延單通道和雙通道沒有明顯差異,通信速率2Mbps、8Mbps, 40Mbps,80Mbps時(shí)雙通道的復(fù)接時(shí)間分別是單通道復(fù)接時(shí)間的1.12、1.18、1.24、1.29倍,本設(shè)計(jì)可以適用多通道高實(shí)時(shí)性的數(shù)據(jù)復(fù)接。
五、結(jié)論
本文設(shè)計(jì)一種基于FPGA的數(shù)據(jù)復(fù)接方法,滿足由于動(dòng)態(tài)時(shí)隙TDMA環(huán)境下低時(shí)延強(qiáng)實(shí)時(shí)性的要求,能夠?qū)崿F(xiàn)高速、多通道并行的數(shù)據(jù)復(fù)接,重點(diǎn)研究了復(fù)接過程中的數(shù)據(jù)存儲(chǔ)和隊(duì)列管理,本文根據(jù)FPGA的特點(diǎn)用FIFO實(shí)現(xiàn)基于文件存儲(chǔ)結(jié)構(gòu)的分布式排隊(duì)管理器,對(duì)于通信、圖像處理等需要快速數(shù)據(jù)隊(duì)列調(diào)度的應(yīng)用具有參考意義。
參 考 文 獻(xiàn)
[1] 徐世許,王濤. INS/GPS組合導(dǎo)航系統(tǒng)的數(shù)據(jù)精確同步方法[J]. 中國慣性技術(shù)學(xué)報(bào),2008,16(5):563 – 565.
[2] 王昭. 一種適用于多信道聯(lián)合組網(wǎng)的時(shí)隙分配新算法[J].電訊技術(shù),2014,54(4):506-512.[WANG Zhao. A New Algorithm for Time Slot Assignment in Multi-Channel Networking Environments[J].Telecommunication Eengineering, 2014,54(4):506-512.].
[3] 楊保平,陳永光,陳軍,徐忠富.基于FPGA 的戰(zhàn)術(shù)數(shù)據(jù)鏈中繼傳輸復(fù)接技術(shù)[J].系統(tǒng)工程與電子技術(shù).2010,32(12):2628-2631.
[4] 宋學(xué)瑞,蔡子裕,段青青.基于FPGA 的同步數(shù)字復(fù)接系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)測(cè)量與控制.2008,16( 8):1174-1176.
[5] 趙妍.高速數(shù)據(jù)復(fù)接器. [D].西安:西安電子科技大學(xué),2007:10.
[6] 肖勇軍.基于FPGA的數(shù)字復(fù)接器的設(shè)計(jì)與實(shí)現(xiàn)[D].武漢:武漢大學(xué),2004.5.
[7] 黃飛.高速數(shù)據(jù)復(fù)接器的研究與實(shí)現(xiàn)[D].武漢:武漢大學(xué),2004.5.
[8] 王琦.異步高速數(shù)據(jù)復(fù)接器. [D].西安:西安電子科技大學(xué),2010:12.
[9] Wolf Wayne.FPGA-Base System Design [M].Beijing:Prentice Hall PTR,2005.
[10] 杜貴然,張民選,謝倫國.Pentium 系統(tǒng)采用SSRAM/ SDRAM存儲(chǔ)器的性能分析[J].計(jì)算機(jī)工程與科學(xué).1996.18(3):16-20.