楊宏志,賀占莊,劉 露,唐金鋒
(西安微電子技術(shù)研究所,陜西 西安 710054)
隨著科學(xué)技術(shù)的發(fā)展,航空、航天和工業(yè)自動(dòng)化等領(lǐng)域?qū)νㄐ啪W(wǎng)絡(luò)的時(shí)間確定性、可靠性要求越來(lái)越高,而傳統(tǒng)以太網(wǎng)不具備這些特性,難以滿足應(yīng)用需求。在這一形勢(shì)下,時(shí)間觸發(fā)以太網(wǎng)(Time-Triggered Ethernet, TTE)應(yīng)運(yùn)而生,為實(shí)現(xiàn)通信任務(wù)和收發(fā)操作的時(shí)間確定性提供了良好的解決方案。
TTE的實(shí)現(xiàn)主要包括時(shí)鐘同步和數(shù)據(jù)調(diào)度兩大部分。其中時(shí)鐘同步是實(shí)現(xiàn)TTE的前提,TTE網(wǎng)絡(luò)在時(shí)鐘同步的基礎(chǔ)上進(jìn)行數(shù)據(jù)調(diào)度,TTE系統(tǒng)的通信任務(wù)可以用一張調(diào)度表來(lái)表示,可以離線生成通信任務(wù)的調(diào)度時(shí)刻表。
TTE系統(tǒng)中支持的用戶數(shù)據(jù)包括時(shí)間觸發(fā)數(shù)據(jù)、速率受限(Rate Constraint, RC)數(shù)據(jù)和盡力傳(Best Effort, BE)數(shù)據(jù),其中RC和BE屬于ET類消息,三種數(shù)據(jù)的優(yōu)先級(jí)依次降低。
網(wǎng)絡(luò)節(jié)點(diǎn)周期性地在固定時(shí)刻發(fā)送數(shù)據(jù),這樣的數(shù)據(jù)就稱為TT數(shù)據(jù)。圖1為TT數(shù)據(jù)幀格式,其類型字段的值為0x88d7,封裝在以太網(wǎng)幀的數(shù)據(jù)域中進(jìn)行傳輸。TT數(shù)據(jù)應(yīng)用于對(duì)時(shí)延、抖動(dòng)、確定性要求較高的場(chǎng)合,主要應(yīng)用于實(shí)時(shí)系統(tǒng)。TT數(shù)據(jù)的傳輸依賴于系統(tǒng)的全局時(shí)間,TT數(shù)據(jù)的發(fā)送時(shí)刻是預(yù)先定義好的,而且是全局唯一的,從而避免數(shù)據(jù)傳輸發(fā)生沖突。
TT數(shù)據(jù)采用搶占機(jī)制進(jìn)行傳輸,當(dāng)系統(tǒng)節(jié)點(diǎn)到達(dá)TT數(shù)據(jù)的預(yù)定發(fā)送時(shí)刻時(shí),通信鏈路會(huì)清空正在傳輸?shù)臄?shù)據(jù),轉(zhuǎn)而發(fā)送TT數(shù)據(jù),這樣保證了TT數(shù)據(jù)無(wú)沖突、無(wú)等待的發(fā)送。當(dāng)系統(tǒng)節(jié)點(diǎn)接收TT數(shù)據(jù)時(shí),將立刻停止正在處理的工作,轉(zhuǎn)而接收TT數(shù)據(jù),保證了TT數(shù)據(jù)在接收節(jié)點(diǎn)能夠無(wú)等待被接收。
RC和BE數(shù)據(jù)的幀格式與TT數(shù)據(jù)相同,RC型字段為0x0888,BE類型字段的值為0x0800。
圖1 TT數(shù)據(jù)幀格式
TTE系統(tǒng)中每個(gè)端系統(tǒng)都有自己的調(diào)度表,且各個(gè)調(diào)度表一般是不相同的。調(diào)度表由矩陣周期(Matrix Cycle, MC)和基本周期(Basic Cycle, BC)組成。調(diào)度表中的一行就是一個(gè)基本周期,整個(gè)表的時(shí)間長(zhǎng)度就是一個(gè)矩陣周期。TTE調(diào)度表的構(gòu)成如圖2所示。
圖2 TTE調(diào)度表的構(gòu)成
每個(gè)基本周期由3個(gè)時(shí)間段組成:第一個(gè)時(shí)間段用于發(fā)送TT消息,該時(shí)間段又細(xì)分為多個(gè)時(shí)間槽,每個(gè)時(shí)間槽發(fā)送一幀TT數(shù)據(jù);第二個(gè)時(shí)間段用于發(fā)送ET類消息,該段同樣分為多個(gè)時(shí)間槽,每個(gè)時(shí)間槽發(fā)送一幀RC或BE數(shù)據(jù);第三個(gè)時(shí)間段是保護(hù)間隔,不發(fā)送數(shù)據(jù),其作用是防止抖動(dòng)對(duì)數(shù)據(jù)發(fā)送造成影響。
現(xiàn)假設(shè)有N個(gè)TT數(shù)據(jù),將這些TT數(shù)據(jù)按傳輸周期從小到大排列為集合I:
I={T1,T2,…,TN-1,TN}Ti-1≤Ti.
則可由最小周期法生成TT數(shù)據(jù)發(fā)送時(shí)刻調(diào)度表,具體步驟如下:
(1) 取最小傳輸周期T1作為BC。
(2) 取所有TT消息傳輸周期的最小公倍數(shù)作為矩陣周期MC,可得調(diào)度表的行數(shù)為R=MC/BC。
(3) 為了保證在一個(gè)發(fā)送時(shí)間槽內(nèi)能發(fā)送完一幀TT數(shù)據(jù),用TT消息的最大幀長(zhǎng)度加上一個(gè)保護(hù)間隔除以傳輸速率就可以得到傳輸一幀TT數(shù)據(jù)所需的最長(zhǎng)時(shí)間t。一個(gè)基本周期內(nèi)能傳輸?shù)淖畲骉T數(shù)據(jù)個(gè)數(shù)β=(BC-t)/t。
(4) 每個(gè)基本周期內(nèi)傳輸TT數(shù)據(jù)的平均個(gè)數(shù)為:
如果α<β,則每個(gè)基本周期分為[α]+2列([]為取整符號(hào)),其中[α]列用于發(fā)送TT消息,后2列中一列用于發(fā)送ET消息,一列用于保護(hù)間隔。如果α>β,說(shuō)明波特率太低,不能保證TT數(shù)據(jù)的可靠傳輸,需要增加波特率之后重新生產(chǎn)調(diào)度表。
(5) 根據(jù)得到的調(diào)度表行列數(shù)以及TT消息傳輸周期的關(guān)系,將TT消息填入調(diào)度表中即可。
根據(jù)預(yù)先定義的發(fā)送時(shí)刻調(diào)度表進(jìn)行TT數(shù)據(jù)發(fā)送模塊設(shè)計(jì)?;贔PGA的TT幀發(fā)送控制器的頂層模塊如圖3所示,內(nèi)部主要包含5個(gè)模塊。
2.2.1數(shù)據(jù)生成模塊
該模塊用于生成數(shù)據(jù),包括數(shù)據(jù)域、幀長(zhǎng)和虛鏈路號(hào)等配置信息,還要添加SN和CRC校驗(yàn)碼。
2.2.2FIFO
FIFO用于存儲(chǔ)數(shù)據(jù),每一條虛鏈路對(duì)應(yīng)一個(gè)FIFO。
2.2.3虛鏈路隊(duì)列
根據(jù)預(yù)定的發(fā)送時(shí)刻生成虛鏈路號(hào)和發(fā)送時(shí)間槽,設(shè)有標(biāo)志位表征虛鏈路的使用狀態(tài),調(diào)度管理模塊通過(guò)讀取虛鏈路信息來(lái)管理數(shù)據(jù)發(fā)送。
2.2.4冗余管理模塊
為了提高數(shù)據(jù)發(fā)送的可靠性,采用雙冗余通道。冗余管理模塊可根據(jù)配置信息來(lái)決定是否將數(shù)據(jù)分發(fā)到兩個(gè)通道。
2.2.5調(diào)度管理模塊
調(diào)度管理模塊的功能可由圖4的狀態(tài)機(jī)表示。
(1) IDLE:初始狀態(tài),該狀態(tài)檢測(cè)存儲(chǔ)TT數(shù)據(jù)的FIFO是否為空。當(dāng)tt_txfifo_emp_i 信號(hào)拉低,說(shuō)明TT緩存區(qū)有數(shù)據(jù),則進(jìn)入讀取TT數(shù)據(jù)信息狀態(tài);若TT緩存區(qū)沒(méi)有數(shù)據(jù),則停留在該狀態(tài)。
(2) RD_INFO:該狀態(tài)為讀取TT數(shù)據(jù)信息階段。在該狀態(tài)內(nèi)將讀取TT幀的幀長(zhǎng)度和該TT幀所使用的虛鏈路,這些信息用于判斷此時(shí)是否能夠發(fā)送該TT幀。讀取完之后進(jìn)入預(yù)發(fā)送階段。
(3) PR_SEND:預(yù)發(fā)送狀態(tài),在該狀態(tài)檢測(cè)是否滿足發(fā)送的條件。當(dāng)滿足以下幾個(gè)條件時(shí)進(jìn)入TT幀發(fā)送階段:①當(dāng)前時(shí)間處于TT幀發(fā)送時(shí)間槽內(nèi),調(diào)度表定義了TT數(shù)據(jù)的發(fā)送時(shí)刻,只有在這些時(shí)刻點(diǎn)才能發(fā)送TT數(shù)據(jù);②該TT幀所使用的虛擬鏈路處于空閑狀態(tài);③TT數(shù)據(jù)幀已經(jīng)準(zhǔn)備好,在讀取TT數(shù)據(jù)信息階段已經(jīng)獲得幀長(zhǎng)度,若獲得的幀長(zhǎng)度小于等于此時(shí)FIFO中的幀長(zhǎng)度則說(shuō)明TT幀已經(jīng)準(zhǔn)備好;④沒(méi)有其他數(shù)據(jù)在此時(shí)刻發(fā)送。
(4) SEND_DATA:TT數(shù)據(jù)發(fā)送階段,開始往外發(fā)送數(shù)據(jù)。在發(fā)送階段使用一個(gè)計(jì)數(shù)器來(lái)計(jì)發(fā)送的次數(shù),每發(fā)送一次(即發(fā)送了4個(gè)字節(jié))計(jì)數(shù)器加1,當(dāng)該計(jì)數(shù)器的值與tt_txfifo_cnt_i相等時(shí)說(shuō)明FIFO中的數(shù)據(jù)已發(fā)送完,狀態(tài)機(jī)進(jìn)入發(fā)送完成狀態(tài)。
(5) SEND_DONE:發(fā)送完成狀態(tài),該狀態(tài)不進(jìn)行任何操作直接進(jìn)入初始狀態(tài),等待下一幀TT數(shù)據(jù)發(fā)送。
圖4 狀態(tài)轉(zhuǎn)移圖
圖5為發(fā)送一幀TT數(shù)據(jù)的完整過(guò)程。首先當(dāng)tt_txfifo_emp_i信號(hào)拉低時(shí)進(jìn)入讀取TT數(shù)據(jù)信息狀態(tài),得到此TT幀的幀長(zhǎng)度為(19×4)字節(jié),傳輸使用的虛鏈路號(hào)為64;然后進(jìn)入預(yù)發(fā)送狀態(tài),此時(shí)檢測(cè)到已處于TT發(fā)送時(shí)刻點(diǎn),64號(hào)虛擬鏈路未被占用,一直等到TT幀準(zhǔn)備好信號(hào)tt_frame_rdy_o拉高,說(shuō)明此時(shí)可以發(fā)送該TT幀;當(dāng)tt_frame_st_i拉高時(shí)進(jìn)入發(fā)送狀態(tài),發(fā)送時(shí)序如圖6所示。在發(fā)送TT數(shù)據(jù)階段每個(gè)時(shí)鐘周期發(fā)送4個(gè)字節(jié),直到數(shù)據(jù)全部發(fā)送完。
圖5 發(fā)送一幀TT數(shù)據(jù)時(shí)序圖
圖6 TT數(shù)據(jù)發(fā)送時(shí)序
圖7為多個(gè)(4個(gè) )TT幀的發(fā)送過(guò)程,它們分別占用4條虛擬鏈路,虛擬鏈路號(hào)分別為64、32、17、50,且它們的幀長(zhǎng)度也不相同。從圖7中可以看出,4個(gè)TT幀在預(yù)定時(shí)刻點(diǎn)被發(fā)送,實(shí)現(xiàn)了實(shí)時(shí)、無(wú)沖突地發(fā)送。
圖7 多個(gè)TT幀發(fā)送時(shí)序
本文在默認(rèn)TTE系統(tǒng)各節(jié)點(diǎn)已同步的基礎(chǔ)上,通過(guò)對(duì)TT、RC、BE三種數(shù)據(jù)傳輸特性和應(yīng)用場(chǎng)合進(jìn)行分析,提出了基于FPGA的TT數(shù)據(jù)發(fā)送方案。首先離線生成端系統(tǒng)數(shù)據(jù)發(fā)送時(shí)刻調(diào)度表,根據(jù)預(yù)定的發(fā)送時(shí)刻點(diǎn)發(fā)送TT數(shù)據(jù),保證了TT數(shù)據(jù)發(fā)送的實(shí)時(shí)性和可靠性。
數(shù)據(jù)調(diào)度是實(shí)現(xiàn)TTE通信網(wǎng)絡(luò)的一個(gè)重要部分,本文設(shè)計(jì)的數(shù)據(jù)發(fā)送方法能保證數(shù)據(jù)實(shí)時(shí)可靠地發(fā)送,為整個(gè)網(wǎng)絡(luò)的數(shù)據(jù)調(diào)度打下基礎(chǔ)。
參考文獻(xiàn):
[1]查文靜. 時(shí)間觸發(fā)網(wǎng)絡(luò)的調(diào)度方法與實(shí)時(shí)應(yīng)用任務(wù)研究[D]. 上海:上海交通大學(xué), 2015:1-13.
[2]高鵬飛.時(shí)間觸發(fā)以太網(wǎng)交換機(jī)設(shè)計(jì)[D].西安:西安電子科技大學(xué),2004:7-16.
[3]劉晚春,李峭,何峰,等.時(shí)間觸發(fā)以太網(wǎng)同步及調(diào)度機(jī)制的研究[J].航空計(jì)算技術(shù),2011,41(4):122-127.