鄭靜雅,安軍社,趙允齊
(1.中國科學(xué)院國家空間科學(xué)中心 復(fù)雜航天系統(tǒng)電子信息技術(shù)國防科技創(chuàng)新重點(diǎn)實(shí)驗(yàn)室,北京 100190; 2.中國科學(xué)院大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,北京 100190)
近年來,隨著空間探測任務(wù)難度的增加,衛(wèi)星有效載荷通信系統(tǒng)在數(shù)據(jù)處理的速度和數(shù)量等方面有了更高的需求。一些有效載荷要以超過1 Gbps的速度傳輸數(shù)據(jù),例如合成孔徑雷達(dá)、多光譜成像儀等[1]。針對這一問題,鄧迪大學(xué)與歐洲航天局提出了新一代串行、超高速星載數(shù)據(jù)鏈路SpaceFibre技術(shù)[2]。SpaceFibre憑借其高傳輸率、高帶寬、低誤碼率等優(yōu)勢成為構(gòu)建下一代超高速星載數(shù)據(jù)網(wǎng)絡(luò)的核心技術(shù)[3-6]。
SpaceFibre采用虛擬通道(virtual channel,VC)技術(shù)將數(shù)據(jù)流劃分為不同隊(duì)列,每類數(shù)據(jù)隊(duì)列占用一條VC[7]。當(dāng)數(shù)據(jù)流過載時,多路VC會競爭鏈路帶寬資源,從而引起星載數(shù)據(jù)網(wǎng)絡(luò)沖突問題。為保證鏈路帶寬利用率和數(shù)據(jù)傳輸可靠性,SpaceFibre采用服務(wù)質(zhì)量(quality of service,QoS)機(jī)制對各VC進(jìn)行管理。與其它網(wǎng)絡(luò)相比[8-10],該機(jī)制簡化了組建和測試星載數(shù)據(jù)網(wǎng)絡(luò)難度[2],具有更好的靈活性和可靠性,是SpaceFibre網(wǎng)絡(luò)的關(guān)鍵技術(shù)之一。雖然SpaceFibre協(xié)議標(biāo)準(zhǔn)中規(guī)定了3種服務(wù)質(zhì)量機(jī)制,但少有文獻(xiàn)詳細(xì)介紹QoS機(jī)制FPGA設(shè)計(jì)與實(shí)現(xiàn)方法。
本文基于FPGA設(shè)計(jì)和實(shí)現(xiàn)了SpaceFibre星載數(shù)據(jù)網(wǎng)絡(luò)虛擬通道緩沖區(qū)、虛擬通道流控制和介質(zhì)訪問控制器(medium access controller,MAC)等重要功能模塊。實(shí)驗(yàn)結(jié)果表明,本設(shè)計(jì)實(shí)現(xiàn)了完整的SpaceFibre服務(wù)質(zhì)量功能,為SpaceFibre編解碼器(coder/decoder,Codec)IP核的自主、完整開發(fā)和航天工程化應(yīng)用打下了堅(jiān)實(shí)基礎(chǔ)。
SpaceFibre創(chuàng)新性的集成QoS機(jī)制包含優(yōu)先級優(yōu)先權(quán)、預(yù)留帶寬和調(diào)度(Schedule)這3種類型[2]。不同服務(wù)質(zhì)量機(jī)制可自由組合,為SpaceFibre星載數(shù)據(jù)網(wǎng)絡(luò)不同應(yīng)用場景下的高質(zhì)量數(shù)據(jù)傳輸提供保證。一條SpaceFibre物理鏈路上可以有多個虛擬通道,每個虛擬通道均可單獨(dú)配置QoS參數(shù),極大地增加了QoS機(jī)制的靈活性。
SpaceFibre優(yōu)先級優(yōu)先權(quán)(priority precedence,PriPre)計(jì)算方式如式(1)所示[11],其中B表示帶寬信用限制,Q為SpaceFibre支持的優(yōu)先級數(shù)目,R表示當(dāng)前VC優(yōu)先級別。優(yōu)先級編號由0到Q-1,其中編號0的優(yōu)先級最高。鏈路中每個VC都必須指定優(yōu)先級,不同VC的優(yōu)先級既可相同也可不同。當(dāng)無需優(yōu)先級優(yōu)先權(quán)QoS機(jī)制時,可將所有VC置為同一優(yōu)先級
PriPre=2B(Q-1-R)+B
(1)
帶寬預(yù)留是一種依據(jù)虛擬通道預(yù)留帶寬和帶寬使用率計(jì)算該虛擬通道帶寬信用的QoS機(jī)制。虛擬通道每發(fā)送一個數(shù)據(jù)段,MAC就需更新帶寬信用。SpaceFibre帶寬信用(bandwidth credit,BWCredit)計(jì)算方式如式(2)所示[11]。其中c為虛擬通道編號,n為該虛擬通道發(fā)送的數(shù)據(jù)字?jǐn)?shù)目。可用帶寬(available bandwidth,AvailBW)指自上次帶寬信用更新起SpaceFibre鏈路上所有虛擬通道發(fā)送的數(shù)據(jù)字或控制字?jǐn)?shù)總和。已用帶寬(used bandwidth,UsedBW)指自上次帶寬信用更新后,編號為c的虛擬通道發(fā)送的數(shù)據(jù)字?jǐn)?shù)目。標(biāo)準(zhǔn)化期望帶寬(normalised expected bandwidth,NorExpBW)是指虛擬通道c所分配的帶寬占鏈路總帶寬的比例。當(dāng)虛擬通道的標(biāo)準(zhǔn)化期望帶寬為0時,該虛擬通道不允許發(fā)送任何數(shù)據(jù)
(2)
SpaceFibre優(yōu)先權(quán)是優(yōu)先級優(yōu)先權(quán)和帶寬信用之和,如式(3)所示[11]。通常情況下,高優(yōu)先級虛擬通道擁有高于低優(yōu)先級虛擬通道的優(yōu)先權(quán)。只有高優(yōu)先級虛擬通道的帶寬信用達(dá)最小信用帶寬限制,低優(yōu)先級虛擬通道才可能擁有較大的優(yōu)先權(quán)。當(dāng)不同VC優(yōu)先級相同時,帶寬信用高的虛擬通道具有更高優(yōu)先權(quán)。帶寬信用閾值為負(fù)帶寬信用限制的90%,當(dāng)虛擬通道帶寬信用達(dá)此值時,該虛擬通道優(yōu)先級優(yōu)先權(quán)暫時置為0
Precedence=PriPre+BWCredit
(3)
調(diào)度QoS為SpaceFibre鏈路的確定性延時提供了保障。在SpaceFibre中,時間被分成64個時隙。網(wǎng)絡(luò)層向數(shù)據(jù)鏈路層提供時隙編號以指示本時隙的結(jié)束和下一時隙的開始。各VC均擁有本虛擬通道對應(yīng)的時隙調(diào)度表,調(diào)度表中記錄的是本虛擬通道在各時隙是否允許參與調(diào)度。當(dāng)同一時隙中允許多個VC被調(diào)度時,SpaceFibre中的介質(zhì)訪問控制器需在允許調(diào)度的虛擬通道中進(jìn)行仲裁以確定被調(diào)度的虛擬通道。當(dāng)不使用調(diào)度QoS機(jī)制時,可將調(diào)度表配置為在所有時隙允許任何虛擬通道均可參與調(diào)度;當(dāng)僅使用調(diào)度QoS機(jī)制時,可將調(diào)度表配置為在每一時隙最多僅允許一條虛擬通道參與調(diào)度。
一種典型的SpaceFibre服務(wù)質(zhì)量機(jī)制混合使用實(shí)例見表1[2]。表1中包含了8個時隙中8條虛擬通道的調(diào)度信息,其中灰色填充塊表示指定時隙允許該VC參與調(diào)度,白色填充塊則表示在指定時隙該VC不允許發(fā)送任何數(shù)據(jù)。表1中VC1和VC2具有最高的優(yōu)先級級別,其它虛擬通道具有較低的、相同的優(yōu)先級級別。
表1 SpaceFibre服務(wù)質(zhì)量機(jī)制混用實(shí)例
在時隙1,除VC2外其它虛擬通道均允許參與調(diào)度且VC1具有最高優(yōu)先級級別。根據(jù)SpaceFibre QoS機(jī)制特點(diǎn)可知,具有最高優(yōu)先級級別的VC1擁有最高優(yōu)先權(quán)。所以,在時隙1開始時優(yōu)先選擇VC1進(jìn)行數(shù)據(jù)發(fā)送操作。當(dāng)VC1無待發(fā)送數(shù)據(jù)時,在優(yōu)先級相同的VC3~VC8中選擇具有待發(fā)送數(shù)據(jù)且?guī)捫庞米罡叩奶摂M通道發(fā)送數(shù)據(jù)。每發(fā)生一次虛擬通道數(shù)據(jù)發(fā)送操作,各VC均需根據(jù)式(2)、式(3)進(jìn)行帶寬信用和優(yōu)先權(quán)更新。被調(diào)度的VC帶寬信用降低,在該VC優(yōu)先級不變的情況下,該VC優(yōu)先權(quán)也會相應(yīng)降低,有效地防止了單一虛擬通道持續(xù)搶占鏈路帶寬資源。當(dāng)時隙2到來,如果時隙1仍有未完整發(fā)送的數(shù)據(jù)段,則剩余部分繼續(xù)發(fā)送,直至數(shù)據(jù)段被完整發(fā)送。在時隙2中VC1不被允許參與調(diào)度,所以在時隙2期間VC1不可發(fā)送任何數(shù)據(jù)。
SpaceFibre服務(wù)質(zhì)量機(jī)制的混合使用保證了關(guān)鍵衛(wèi)星數(shù)據(jù)的優(yōu)先傳輸,為SpaceFibre網(wǎng)絡(luò)中衛(wèi)星數(shù)據(jù)流的確定性傳輸提供保障,充分利用了鏈路帶寬資源。
SpaceFibre 服務(wù)質(zhì)量FPGA設(shè)計(jì)的整體架構(gòu)如圖1所示,系統(tǒng)架構(gòu)主要包含四路VC輸出緩沖區(qū)、VC流控制和單路介質(zhì)訪問控制器。每個輸出VC緩沖區(qū)模塊又包含存儲控制、FIFO和鏈路復(fù)位狀態(tài)機(jī)子模塊。發(fā)送字計(jì)數(shù)子模塊、FCT信用計(jì)算子模塊和發(fā)送請求生成子模塊共同組成了VC流控制模塊。介質(zhì)訪問控制器主要分為優(yōu)先級優(yōu)先權(quán)計(jì)算、帶寬信用計(jì)算、調(diào)度子模塊和四路優(yōu)先權(quán)計(jì)算子模塊。調(diào)度子模塊主要由仲裁、調(diào)度表和時隙更新狀態(tài)機(jī)單元組成。并行排序和發(fā)送使能兩個子單元共同構(gòu)成仲裁單元。
SpaceFibre星載網(wǎng)絡(luò)中的服務(wù)質(zhì)量作用于幀級別,有效載荷數(shù)據(jù)包在SpaceFibre編解碼器被分割為幀數(shù)據(jù)。VC輸出緩沖區(qū)模塊中的存儲控制子模塊將包字符(Nchar)按指定字地址存儲于FIFO中。由于包結(jié)束字符EOP/EEP的存在,導(dǎo)致數(shù)據(jù)幀長度不固定。存儲控制子模塊還需根據(jù)FIFO中存取的數(shù)據(jù)字進(jìn)行數(shù)據(jù)幀數(shù)統(tǒng)計(jì)。當(dāng)鏈路復(fù)位信號使能且有效載荷字符不為包結(jié)束符EOP/EEP或填充字符Fill時,鏈路復(fù)位狀態(tài)機(jī)子模塊將所有來自有效載荷的字符全部刪除至下一個包結(jié)束符EOP/EEP。鏈路復(fù)位狀態(tài)機(jī)子模塊為數(shù)據(jù)包的完整性提供了保障,提高了SpaceFibre星載網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)目煽啃?。?dāng)FIFO子模塊接收到介質(zhì)訪問控制器的VC輸出緩沖區(qū)讀使能信號時,VC輸出緩沖區(qū)模塊輸出本VC存儲的數(shù)據(jù)段。
VC流控制模塊根據(jù)鏈路遠(yuǎn)端流控制指令(flow control token,F(xiàn)CT)和發(fā)送數(shù)據(jù)字計(jì)數(shù)值,更新FCT信用值。FCT信用計(jì)數(shù)器為正時,表示鏈路遠(yuǎn)端的VC輸入虛擬通道緩沖區(qū)有足夠空間接收本端數(shù)據(jù),此時近端數(shù)據(jù)發(fā)送至遠(yuǎn)端VC輸入緩沖區(qū)不會產(chǎn)生溢出。若FCT信用值大于0且FIFO中包含完整的數(shù)據(jù)段,則發(fā)送請求生成子模塊產(chǎn)生VC發(fā)送請求信號。FIFO中包含完整的數(shù)據(jù)段是指輸出虛擬通道緩沖區(qū)中包含EEP/EOP控制符字或包含64個數(shù)據(jù)字。當(dāng)VC流控制模塊接收到介質(zhì)訪問控制器的VC輸出緩沖區(qū)讀使能信號時,發(fā)送字計(jì)數(shù)子模塊對本VC輸出數(shù)據(jù)段中的數(shù)據(jù)字進(jìn)行計(jì)數(shù)。
介質(zhì)訪問控制器模塊中的優(yōu)先級優(yōu)先權(quán)計(jì)算子模塊和帶寬信用子模塊的計(jì)算結(jié)果分別輸入至對應(yīng)優(yōu)先權(quán)計(jì)算子模塊。四路優(yōu)先權(quán)計(jì)算子模塊計(jì)算值傳遞到調(diào)度子模塊,其仲裁單元的并行排序子單元將各VC優(yōu)先權(quán)進(jìn)行排序。發(fā)送使能子單元接收到排序結(jié)果后,結(jié)合當(dāng)前時隙調(diào)度表和各虛擬通道發(fā)送請求信號,在所有虛擬通道中選擇當(dāng)前時隙允許調(diào)度、向MAC發(fā)送請求且優(yōu)先權(quán)最高的虛擬通道進(jìn)行調(diào)度并生成VC輸出緩沖區(qū)讀使能信號。當(dāng)下一時隙到來且本時隙仍有未發(fā)送完畢的數(shù)據(jù)段時,時隙更新狀態(tài)機(jī)單元待本時隙數(shù)據(jù)段發(fā)送完畢后再進(jìn)行時隙更新。為節(jié)省IO資源,各VC的時隙分配信息和標(biāo)準(zhǔn)化期望帶寬等參數(shù)采用串行輸入方式,介質(zhì)訪問控制器模塊中的輸入控制子模塊用于將相應(yīng)參數(shù)分配給各虛擬通道。
SpaceFibre星載數(shù)據(jù)網(wǎng)絡(luò)中的字符分為數(shù)據(jù)字符和控制字符兩種。數(shù)據(jù)字符包含數(shù)據(jù)信息,控制字符EOP/EEP指示數(shù)據(jù)包結(jié)束。數(shù)據(jù)包字符進(jìn)行存儲時,可使用字節(jié)地址或字地址將數(shù)據(jù)存儲于虛擬通道緩沖區(qū)中。
為便于數(shù)據(jù)讀取和數(shù)據(jù)幀計(jì)數(shù)的硬件實(shí)現(xiàn),存儲控制子模塊中的字存儲單元采用圖2所示的數(shù)據(jù)字存儲方式。8 bit 位寬的N0、N1、N2和N3依次表示虛擬通道按時間先后順序接收到的字符。N0、N1、N2和N3對應(yīng)的字符最高指示位K0/D0、K1/D1、K2/D2和K3/D3按圖2所示方式放置。指示位說明字符的種類,0表示當(dāng)前字符為數(shù)據(jù)字符,1指示該字符為控制字符。I為1 bit指示位,用于說明本數(shù)據(jù)字是否包含EOP/EEP控制字符。若I為1則表示當(dāng)前數(shù)據(jù)字包含EOP/EEP控制字符,若為0則該數(shù)據(jù)字所有字節(jié)均為數(shù)據(jù)字符。同一數(shù)據(jù)字中的字符只能來源于同一數(shù)據(jù)包,所以當(dāng)一個數(shù)據(jù)字包含EOP/EEP字符時,可能會存在數(shù)據(jù)字不對齊的情況。這時,需用Fill字符進(jìn)行填充以保證N0、N1、N2和N3這4個字節(jié)均來自同一數(shù)據(jù)包。數(shù)據(jù)字存儲方式既遵循了先進(jìn)先出的原則,又提高了數(shù)據(jù)讀取和傳輸?shù)乃俣龋瑸镾paceFibre鏈路的高速傳輸提供了保障。
圖2 虛擬通道數(shù)據(jù)字存儲
存儲控制子模塊中的幀計(jì)數(shù)單元主要用于統(tǒng)計(jì)FIFO中存儲的數(shù)據(jù)段數(shù)。由于控制字符的存在,數(shù)據(jù)段分為兩類。數(shù)據(jù)段一為僅包含數(shù)據(jù)字符且字?jǐn)?shù)為64的數(shù)據(jù)集,數(shù)據(jù)段二為包含控制字符EOP/EEP且字?jǐn)?shù)不大于64的數(shù)據(jù)字集。進(jìn)行寫操作時,若寫使能有效且寫入數(shù)據(jù)字的最高位I為0,則數(shù)據(jù)段一計(jì)數(shù)加1;若虛擬通道接收到控制字符EEP/EOP,則數(shù)據(jù)段二計(jì)數(shù)加1。讀取數(shù)據(jù)時,當(dāng)讀數(shù)據(jù)字最高位為1,數(shù)據(jù)段二計(jì)數(shù)減1;當(dāng)VC發(fā)送字計(jì)數(shù)器為64且第64個被讀取的數(shù)據(jù)字最高位為0時,數(shù)據(jù)段一計(jì)數(shù)減1。幀計(jì)數(shù)單元將數(shù)據(jù)段一計(jì)數(shù)和數(shù)據(jù)段二計(jì)數(shù)相加得幀計(jì)數(shù)結(jié)果并傳遞到VC流控制模塊。
為便于硬件實(shí)現(xiàn),設(shè)計(jì)通過增加1 bit符號位將有符號帶寬信用轉(zhuǎn)化為無符號數(shù)。符號位置于帶寬信用最高位,虛擬通道帶寬信用為正時,符號位為0;符號位是1則表示帶寬信用為負(fù)值。相應(yīng)地,帶寬信用計(jì)算分為帶寬信用數(shù)值計(jì)算和帶寬信用符號判斷。如圖3所示,帶寬信用計(jì)算子模塊分為增量計(jì)算、帶寬信用符號判斷、帶寬信用生成和帶寬信用使用狀態(tài)判斷4個單元。帶寬信用使用狀態(tài)判斷子單元由使用不足判斷子單元和使用過度判斷子單元組成。帶寬信用符號判斷單元根據(jù)帶寬信用數(shù)值、帶寬信用原符號和帶寬信用變化量進(jìn)行帶寬信用符號位判斷。增量計(jì)算單元根據(jù)輸入?yún)?shù)進(jìn)行VC帶寬信用數(shù)值的更新。帶寬信用數(shù)值和帶寬信用符號在帶寬信用生成子單元中產(chǎn)生帶寬信用并輸出至優(yōu)先權(quán)計(jì)算子模塊,用于計(jì)算指定虛擬通道的優(yōu)先權(quán)。
圖3 帶寬信用計(jì)算子模塊
(4)
針對這一問題,采用增量的思想對帶寬信用計(jì)算模塊進(jìn)行設(shè)計(jì)。當(dāng)僅發(fā)送數(shù)據(jù)字時,帶寬信用可用式(5)所示方式計(jì)算
(5)
假設(shè)被調(diào)度的虛擬通道編號為c且該虛擬通道所發(fā)送的數(shù)據(jù)段包含數(shù)據(jù)字?jǐn)?shù)為u,則被調(diào)度的虛擬通道每發(fā)送一個數(shù)據(jù)段,帶寬信用變化量 ΔBWCredit[c] 如式(6)所示。虛擬通道c每發(fā)送一個數(shù)據(jù)段,帶寬信用就會減少帶寬信用變化量的絕對值 |ΔBWCredit[c]|。當(dāng)虛擬通道c每次發(fā)送的數(shù)據(jù)段包含相同數(shù)目的數(shù)據(jù)字時,帶寬信用減少量相同
(6)
假設(shè)不被調(diào)度的虛擬通道編號為c′。則編號為c的虛擬通道發(fā)送完數(shù)據(jù)后,虛擬通道c′帶寬信用變化量如式(7)所示
ΔBWCredit[c′]=u
(7)
在初始狀態(tài)下,每個虛擬通道的帶寬信用初始值均為0,所以初始態(tài)每個虛擬通道的優(yōu)先權(quán)等于優(yōu)先級優(yōu)先權(quán)。當(dāng)有虛擬通道產(chǎn)生VC發(fā)送請求信號且時隙0允許該VC參與調(diào)度時,仲裁單元選擇優(yōu)先級優(yōu)先權(quán)最大的虛擬通道并產(chǎn)生相應(yīng)VC讀使能信號。被調(diào)度的虛擬通道根據(jù)式(6)更新帶寬信用值,未被調(diào)度的虛擬通道根據(jù)式(7)在0的基礎(chǔ)上更新帶寬信用。在鏈路運(yùn)行狀態(tài)下,調(diào)度模塊仲裁出被調(diào)度的虛擬通道且該VC發(fā)送完整數(shù)據(jù)段后,增量計(jì)算單元根據(jù)式(6)、式(7)在虛擬通道原帶寬信用基礎(chǔ)上加帶寬信用變化量。增量思想的運(yùn)用易于虛擬通道帶寬信用的更新操作和飽和操作,有利于提高VC帶寬信用計(jì)算效率。
增量計(jì)算單元包含四路虛擬通道增量計(jì)算子單元,分別對應(yīng)四路虛擬通道。其中一路虛擬通道增量計(jì)算子單元如圖4所示。由式(6)可得,當(dāng)本虛擬通道輸出緩沖區(qū)為讀使能狀態(tài),多路選擇器MUX6輸出帶寬信用變化量的絕對值|ΔBWCredit[c]|,同時多路選擇器MUX4輸出MUX2的計(jì)算值。帶寬信用為正時,多路選擇器MUX2輸出帶寬信用數(shù)值和帶寬信用變化量絕對值之差;帶寬信用最高位為1時,多路選擇器MUX2輸出帶寬信用數(shù)值和帶寬信用變化量絕對值之和。根據(jù)式(7)可知,當(dāng)虛擬通道輸出緩沖區(qū)讀使能信號無效時,多路選擇器MUX6輸出帶寬信用變化量ΔBWCredit[c′],同時多路選擇器MUX4輸出MUX3的計(jì)算值。若當(dāng)前帶寬信用首位為0,多路選擇器MUX3輸出帶寬信用數(shù)值和帶寬信用變化量和;當(dāng)帶寬信用為負(fù),多路選擇器MUX3選擇帶寬信用數(shù)值和帶寬信用變化量差。若帶寬信用數(shù)值與帶寬信用限制相等,則多路選擇器MUX5輸出帶寬信用限制。
圖4 單路VC增量計(jì)算子單元
為保持帶寬均衡,每個虛擬通道的帶寬使用狀態(tài)都需使用狀態(tài)判斷單元進(jìn)行記錄。對過量使用帶寬資源的虛擬通道需進(jìn)行暫時降低優(yōu)先級處理,對帶寬使用不足的虛擬通道需減少其帶寬資源分配。
當(dāng)虛擬通道帶寬信用低于帶寬閾值時,帶寬信用計(jì)算單元產(chǎn)生帶寬信用過量使用標(biāo)志并輸出至指定優(yōu)先權(quán)計(jì)算子模塊,以指示該VC所用帶寬超出預(yù)期。指定優(yōu)先權(quán)計(jì)算子模塊將該VC優(yōu)先權(quán)暫時設(shè)置為0直至該虛擬通道帶寬信用上升至帶寬信用閾值之上。帶寬過量使用保護(hù)可防止具有較高優(yōu)先權(quán)的虛擬通道一直占用鏈路帶寬而影響其它虛擬通道發(fā)送數(shù)據(jù)。
當(dāng)虛擬通道帶寬信用飽和在正的帶寬信用限制時,即帶寬信用最高位為0且數(shù)值等于帶寬信用限制,需進(jìn)行計(jì)時操作。帶寬信用數(shù)值降至帶寬信用限制之下,計(jì)時器才可歸零,否則一直進(jìn)行計(jì)時操作。若計(jì)時時間超過1 ms,則使用狀態(tài)判斷單元產(chǎn)生帶寬信用使用不足標(biāo)志以指示本虛擬通道不能充分利用所分配的帶寬資源。再次分配帶寬信用時,可適當(dāng)減少該虛擬通道期望帶寬。
當(dāng)具有最高優(yōu)先權(quán)的虛擬通道在當(dāng)前時隙不允許調(diào)度或無VC發(fā)送請求時,服務(wù)質(zhì)量機(jī)制需選擇具有次高優(yōu)先權(quán)的虛擬通道進(jìn)行調(diào)度,所以SpaceFibre服務(wù)質(zhì)量機(jī)制需將優(yōu)先權(quán)進(jìn)行排序。為保證系統(tǒng)運(yùn)行速度,設(shè)計(jì)采用并行比較算法進(jìn)行各虛擬通道優(yōu)先權(quán)的排序操作。
傳統(tǒng)排序方式以待排序列兩兩之間順序比較為基礎(chǔ),而并行比較排序是一種將待排序列中任意兩數(shù)并行進(jìn)行比較的方案。設(shè)計(jì)中的并行比較排序算法可在一個時鐘周期內(nèi)完成虛擬通道優(yōu)先權(quán)排序。由于串行比較轉(zhuǎn)換為并行比較,導(dǎo)致并行排序方法需消耗更多的邏輯資源,體現(xiàn)了FPGA設(shè)計(jì)中以面積換速度的思想。
并行比較排序的基本思路如下。當(dāng)時鐘沿到來時,每個虛擬通道的優(yōu)先權(quán)都與非本VC的優(yōu)先權(quán)進(jìn)行比較并把比較結(jié)果記錄在得分中。若本虛擬通道的優(yōu)先權(quán)較大,則本VC的優(yōu)先權(quán)得分為1;若兩VC優(yōu)先權(quán)相等,則虛擬通道號較小的優(yōu)先權(quán)分?jǐn)?shù)為1;若本虛擬通道優(yōu)先權(quán)較小,則本VC優(yōu)先權(quán)得分為0。最后對各虛擬通道優(yōu)先權(quán)得分累加,累加結(jié)果即為各優(yōu)先權(quán)的大小順序。
圖5為并行排序子單元結(jié)構(gòu)圖,該結(jié)構(gòu)由4個多路選擇器和四路優(yōu)先權(quán)次序計(jì)算部分組成。設(shè)4個虛擬通道的優(yōu)先權(quán)分別為P0、P1、P2和P3。多路選擇器選擇信號為各虛擬通道對應(yīng)的VC發(fā)送請求信號,當(dāng)虛擬通道緩沖區(qū)無VC發(fā)送請求時,多路選擇器選擇輸出0;否則輸出非0優(yōu)先權(quán)信息。以虛擬通道0優(yōu)先權(quán)次序計(jì)算單元為例進(jìn)一步說明并行比較排序流程。IN0同時與IN1、IN2和IN3比較,比較結(jié)果以得分形式分別記錄在A0、A1和A2中,將得分A0、A1和A2累加可得IN0的大小位置L0。若L0為3,則IN0在IN0、IN1、IN2和IN3中最大;若L0為0,則表示IN0最小。
圖5 并行排序子單元
基于Xilinx ISE開發(fā)環(huán)境,本文使用Verilog編寫設(shè)計(jì)各層級并在Modelsim中進(jìn)行了聯(lián)合仿真測試。實(shí)驗(yàn)中搭建了具有四路虛擬通道的SpaceFibre端口,4個虛擬通道分別編號為VC0、VC1、VC2和VC3。VC0用于傳輸衛(wèi)星控制指令,VC1用于傳遞視頻流量,VC2傳輸音頻數(shù)據(jù),VC3為傳感器信息,各虛擬通道流量特征見表2。
表2 虛擬通道流量特征
為便于測試,帶寬信用限制設(shè)置為300字。相應(yīng)地,帶寬信用閾值為-270字。測試選擇時隙0、時隙1和時隙2,三時隙中各虛擬通道對應(yīng)的調(diào)度表如表3所示。表3中0表示當(dāng)前時隙不允許調(diào)度該VC,1表示當(dāng)前時隙允許調(diào)度該VC。
表3 虛擬通道調(diào)度
各虛擬通道在不同時隙接收的有效載荷數(shù)據(jù)包如圖6所示。在時隙0期間,向VC0中寫入256個數(shù)據(jù)字符,向VC1中寫入255個數(shù)據(jù)字符和EOP控制字符,向VC2中寫入19個數(shù)據(jù)字符和1個EOP控制字符,向VC3中寫入255個數(shù)據(jù)字符和EOP控制字符。在時隙1期間,再向VC0中寫入256個數(shù)據(jù)字符,向VC1中再次寫入255個數(shù)據(jù)字符和EOP控制字符,向VC2中寫入255個數(shù)據(jù)字符和EOP控制字符,向VC3中寫入19個數(shù)據(jù)字符和1個EOP控制字符。
圖6 測試實(shí)例
驗(yàn)證環(huán)境搭建完成后,需進(jìn)行功能測試,測試流程如圖7所示。參數(shù)可配置用于保證本設(shè)計(jì)可適應(yīng)于不同的衛(wèi)星有效載荷通信系統(tǒng),有效保障系統(tǒng)靈活性。測試激勵輸入后,首先觀察各虛擬通道存儲控制結(jié)果是否正確,尤其注意邊緣測試數(shù)據(jù)存儲狀態(tài)。邊緣測試數(shù)據(jù)的輸入,提高了本架構(gòu)對各種有效載荷數(shù)據(jù)包的應(yīng)對能力,進(jìn)而提高了本設(shè)計(jì)的魯棒性。在此基礎(chǔ)上,檢查流控制模塊的數(shù)據(jù)發(fā)送請求信號波形是否符合預(yù)期并檢查FCT信用計(jì)數(shù)更新是否正確。需特別注意的是,多VC競爭數(shù)據(jù)發(fā)送權(quán)時介質(zhì)訪問控制器的仲裁過程與仲裁結(jié)果是否符合預(yù)期,還需注意仲裁時間以保證本設(shè)計(jì)的高速運(yùn)行。在介質(zhì)訪問控制器每次發(fā)送數(shù)據(jù)段前后,需核對優(yōu)先級優(yōu)先權(quán)計(jì)算、優(yōu)先權(quán)計(jì)算和帶寬信用計(jì)算結(jié)果。當(dāng)帶寬信用過低或過高時,注意觀察帶寬信用使用狀態(tài)信號波形變化。測試激勵中包含VC發(fā)送數(shù)據(jù)段過程中時隙號發(fā)生變化的情況。此時,要注意查看MAC是否待本VC數(shù)據(jù)段發(fā)送完畢后才進(jìn)行時隙更新操作。待完整數(shù)據(jù)段發(fā)送完畢后再進(jìn)行時隙更新保障了數(shù)據(jù)完整性,從而提高了本設(shè)計(jì)的可靠性。
圖7 測試流程
測試結(jié)果如圖8所示。圖8(a)中,在開始階段只有VC2寫入以EOP字符為尾字的5個數(shù)據(jù)字,即只有虛擬通道2包含完整數(shù)據(jù)段。同時,虛擬通道2的FCT信用值大于0,所以4個虛擬通道中僅VC2向介質(zhì)訪問控制器傳遞VC發(fā)送請求信號。查表3可知,當(dāng)前時隙0允許虛擬通道2 參與調(diào)度。所以虛擬通道2被調(diào)度,介質(zhì)訪問控制器將VC輸出緩沖區(qū)讀使能信號En_TxDSeg_allVC置為十六進(jìn)制4并向各虛擬通道傳遞相應(yīng)比特位。VC輸出緩沖區(qū)讀使能信號生成之后的5個時鐘周期內(nèi),MAC依次讀出VC2輸出緩沖區(qū)中的5個數(shù)據(jù)字TxDSeg。從圖8(a)中可見,最后讀取的數(shù)據(jù)字為十六進(jìn)制1FFBFBFBFD,即經(jīng)字存儲之后的EOP數(shù)據(jù)字。VC0、VC1和VC3的帶寬信用分別增加5,VC2的帶寬信用為-15,與式(6)、式(7)計(jì)算結(jié)果一致。
圖8(b)中,VC0、VC1和VC3均完成了64字的存儲過程且三者FCT信用計(jì)數(shù)器值均大于0,所以3個虛擬通道均向介質(zhì)訪問控制器傳遞發(fā)送請求信號,可見虛擬通道請求信號ReqTxDSg_allVC為十六進(jìn)制B。查表3可知,在時隙0中虛擬通道1和虛擬通道3均不允許參與調(diào)度。因此虛擬通道0被調(diào)度,VC輸出緩沖區(qū)讀使能信號En_TxDSeg_allVC置為十六進(jìn)制1。在第3255 ns的仿真時間,VC0帶寬信用根據(jù)式(6)、式(7)計(jì)算所得為-571,但圖8(a)中為-300。這是因?yàn)閹捫庞脭?shù)值571大于帶寬信用閾值數(shù)值270,VC0的帶寬信用飽和在帶寬信用限制300。帶寬信用使用狀態(tài)信號UseBW_Reg_allVC置為十六進(jìn)制2,指示VC0占用的帶寬資源超出期望帶寬。同時VC0的優(yōu)先權(quán)被置為0以防止VC0長期搶占帶寬。虛擬通道0發(fā)送數(shù)據(jù)過程中時隙1到來,但時隙更新在虛擬通道0發(fā)送完當(dāng)前數(shù)據(jù)段后才進(jìn)行,保證了時隙更新時所數(shù)據(jù)段發(fā)送的完整性。
圖8 QoS仿真測試結(jié)果
VC0發(fā)送完第五個數(shù)據(jù)字后,時隙0更新為時隙1。此時,VC1和VC3競爭數(shù)據(jù)的發(fā)送權(quán)。由于VC1的優(yōu)先權(quán)更高,所以MAC仲裁VC1發(fā)送數(shù)據(jù),因此VC輸出緩沖區(qū)讀使能信號En_TxDSeg_allVC置為十六進(jìn)制2。
在第4665 ns,VC2和VC3競爭調(diào)度機(jī)會。由于兩虛擬通道優(yōu)先級相同且VC2的帶寬信用較大,虛擬通道2的優(yōu)先權(quán)較高。介質(zhì)訪問控制器調(diào)度VC2進(jìn)行數(shù)據(jù)發(fā)送。在5335 ns仿真時間,除VC2外的虛擬通道均產(chǎn)生VC發(fā)送請求信號。但虛擬通道0 在時隙1內(nèi)不允許參與調(diào)度,所以即使其優(yōu)先權(quán)最高也不能被調(diào)度進(jìn)行數(shù)據(jù)發(fā)送,最終虛擬通道1獲得數(shù)據(jù)發(fā)送權(quán)。
本文設(shè)計(jì)了一種SpaceFibre星載網(wǎng)絡(luò)服務(wù)質(zhì)量FPGA實(shí)現(xiàn)方案,該方案主要包含虛擬通道輸出緩沖區(qū)、虛擬通道輸出緩沖區(qū)流控制和介質(zhì)訪問控制器3個重要功能模塊。方案中通過采用存儲控制、增量計(jì)算和并行比較排序等方法為系統(tǒng)的高速運(yùn)行提供保障。經(jīng)仿真驗(yàn)證,該方案滿足SpaceFibre標(biāo)準(zhǔn)的各項(xiàng)要求,為SpaceFibre Codec IP核的自主、完整開發(fā)提供了可能?,F(xiàn)階段虛擬通道發(fā)送請求是針對單通道Codec情況,后續(xù)該部分還可擴(kuò)展到多通道。