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