高潤蓮 ,周 晴
(1.中國科學(xué)院大學(xué)北京100190;2.中國科學(xué)院國家空間科學(xué)中心,北京100190)
隨著計算機(jī)技術(shù)、數(shù)據(jù)通訊技術(shù)和網(wǎng)絡(luò)技術(shù)的發(fā)展,信息時代數(shù)據(jù)量的爆炸增長給存儲傳輸技術(shù)的發(fā)展提供了良好的機(jī)遇,如何對數(shù)據(jù)進(jìn)行安全快速遠(yuǎn)距離的存儲、傳輸、管理以及使用成為了現(xiàn)代通信存儲技術(shù)的主要要求。而對于航空航天電子系統(tǒng)而言,也同樣面臨著對數(shù)據(jù)通信在可靠性、數(shù)據(jù)吞吐率、實時性等方面越來越高的要求,目前光纖通道通信網(wǎng)絡(luò)已成為新一代航空電子系統(tǒng)的主流技術(shù)[1-2]。
光纖通道作為代替現(xiàn)代航空電子總線的網(wǎng)絡(luò),具有高帶寬、低延遲、拓?fù)潇`活、長距離傳輸,支持多種上層協(xié)議[3]。目前對于光纖通道的研究只要集中于對協(xié)議的研究和協(xié)議框架的設(shè)計:文獻(xiàn)[4]提出一種基于光纖通道接口通用驅(qū)動程序的設(shè)計方案;文獻(xiàn)[5]提出光纖通道現(xiàn)狀和發(fā)展趨勢;文獻(xiàn)[6]提出光纖通道與MIL-STD-1553協(xié)議兼容性設(shè)計方案;文獻(xiàn)[7]提出一種光纖通道協(xié)議分析與接口卡設(shè)計方案。
文中主要講述基于光纖通道FC-AE-1553協(xié)議的數(shù)據(jù)收發(fā)系統(tǒng)的設(shè)計,以及各模塊作用進(jìn)行說明。采用Xilinx的Virtex-4實現(xiàn)FC-0、FC-1以及部分的FC-2層的功能,通過上板調(diào)試,從而實現(xiàn)點對點數(shù)據(jù)傳輸通信,經(jīng)過實驗證明,該數(shù)據(jù)收發(fā)系統(tǒng)方案可行。
光纖通道 OSI(OpenSystem Inter-connection)模型分為5層[8-9],分為兩個部分:物理和信號層,上層協(xié)議層,如圖1所示。物理和信號層包括FC-0,F(xiàn)C-1,F(xiàn)C-2層,上層協(xié)議層包括FC-3,F(xiàn)C-4層。其中物理層由傳輸介質(zhì)、發(fā)送機(jī)和接收機(jī)及其接口組成;編碼層采用8B/10B編碼;協(xié)議層規(guī)定了端到端數(shù)據(jù)塊的傳輸機(jī)制;通用服務(wù)層提供了一組對FC節(jié)點上的多個N端口通用的服務(wù)。FC提供支持多種ULP(Upper Layer Protocal)的方法。
光纖通道協(xié)議規(guī)定在光纖通道中傳輸?shù)?個級別的數(shù)據(jù)結(jié)構(gòu):交換,序列和幀。交換是數(shù)據(jù)傳輸?shù)淖罡邔?,一次交換表示兩個節(jié)點之間的一次信息交互過程,可包含一個或多個序列的傳輸。序列是一個數(shù)據(jù)報或者分組,一個序列可以包含一個或多個幀。幀是網(wǎng)絡(luò)中兩個節(jié)點進(jìn)行信息交互的基本數(shù)據(jù)單元。FC-AE-1553幀格式由一個SOF、幀內(nèi)容和EOF組成[10-11]。幀內(nèi)容包括幀頭、0-2112字節(jié)數(shù)據(jù)字段和32位CRC校驗碼。另外,光纖通道定義了3種服務(wù)類[12]。這些服務(wù)類按N端口間通信回路的配置和保持方法,以及系統(tǒng)的傳輸完整性要求來區(qū)分:第1類服務(wù)是建立專用連接的服務(wù)。這類服務(wù)通過在兩個N端口間建立連接,保證獲得最大帶寬;第2類服務(wù)是一種按幀大小傳輸?shù)摹в薪粨Q網(wǎng)多路復(fù)用幀的無連接服務(wù)。如果沒有交換網(wǎng),則這種服務(wù)就變成一種特殊的點對點服務(wù)。在沒有鏈路錯誤時,交換網(wǎng)能保證給出交付成功或交付失敗的通知;第3類服務(wù)是一種按幀大小傳輸?shù)?、帶有交換網(wǎng)多路復(fù)用幀的無連接服務(wù)。第3類服務(wù)只支持無確認(rèn)幀的交付。其中目的N端口在收到有效數(shù)據(jù)幀時不發(fā)送任何確認(rèn)鏈路控制幀,所有確認(rèn)都是由ULP確定和實現(xiàn)的。為了數(shù)據(jù)的快速傳輸,本論文采用第3類服務(wù),只支持無確認(rèn)幀的交付,目的N端口在收到有效數(shù)據(jù)幀時不發(fā)送任何確認(rèn)鏈路控制幀。
本方案是針對1.062 5 Gbps的光纖速率設(shè)計的,系統(tǒng)總體方案如圖1所示。該系統(tǒng)主要由發(fā)送緩存、接收緩存、發(fā)送模塊、接收模塊、端口狀態(tài)機(jī)、流量控制模塊和光模塊組成,除光模塊以外的其他模塊都由FPGA完成。本方案FPGA采用Xilinx公司Virtex-4系列的XC4VFX60芯片,該芯片包含16個RocketIO模塊。RocketIO為622 Mb/s到6.5 Gb/s波特率的全雙工串行收發(fā)器[13],可以實現(xiàn)數(shù)據(jù)的高速串行傳輸。光模塊采用Eoptolink公司的EOLP-1380-10芯片,該芯片支持1.062 5 Gbps到8.5 Gbps的數(shù)據(jù)傳輸。參考時鐘來自外部晶振,選用的是泰藝公司的OT-M-212.5M的差分晶振,輸出波形為方波,輸出電壓為3.3 V。
圖1 光纖通訊控制FPGA
本系統(tǒng)主要由發(fā)送模塊、接收模塊、端口狀態(tài)機(jī)、流量控制模塊、RocketIO和光模塊組成。發(fā)送模塊完成組幀、CRC校驗、8b/10b編碼等功能;接收模塊完成逗號檢測、8b/10b解碼、解幀等功能;端口狀態(tài)機(jī)完成鏈路狀態(tài)之間的轉(zhuǎn)換功能;流量控制模塊完成兩端口之間流量的控制;光模塊實現(xiàn)電信號與光信號的相互轉(zhuǎn)換,通過光纖傳輸光信號。
發(fā)送模塊具體框圖如圖2所示。Tx_buffer通過FIFO實現(xiàn),將要發(fā)送的數(shù)據(jù)輸入到發(fā)送緩存,通過Tx_control模塊來確定端口此時處于發(fā)送數(shù)據(jù)幀、原語序列還是原語信號的狀態(tài)。其中原語序列來自端口狀態(tài)機(jī),原語信號來自流量控制模塊,幀內(nèi)容來自發(fā)送緩存。當(dāng)端口狀態(tài)機(jī)處于激活狀態(tài)時,Tx_control模塊控制Tx_buffer的讀使能(rd_en)有效,從而將數(shù)據(jù)從Tx_buffer中讀出;CRC32模塊用來計算數(shù)據(jù)的校驗碼,采用32位數(shù)據(jù)并行校驗的方法[14];EOF_Polarity模塊用來計算數(shù)據(jù)幀結(jié)尾的RD值,從而確定EOF的值;Tx_SOF_Select模塊用來確定SOF的值,不同的服務(wù)類型SOF的值不同。Tx_control將數(shù)據(jù)組幀,幀格式如圖2所示。Demux_32to8模塊將32位的數(shù)據(jù)解復(fù)用為8位串行數(shù)據(jù),以便數(shù)據(jù)進(jìn)行8b/10b編碼,將編碼后的值送入RocketIO進(jìn)行并串轉(zhuǎn)換。
接收模塊具體框圖如圖3所示。接收到的串行數(shù)據(jù)經(jīng)過RocketIO的串并轉(zhuǎn)換模塊轉(zhuǎn)換為并行數(shù)據(jù)后,通過Decoder_10b/8b模塊進(jìn)行解碼,解碼得到的數(shù)據(jù)經(jīng)過復(fù)用(Mux_8to32)之后送入原語檢測模塊(Prim_check)和字同步模塊(Word_syn)。Prim_check模塊的主要功能檢測接收到的數(shù)據(jù)是原語信號、原語序列還是傳輸?shù)臄?shù)據(jù),從而送到相應(yīng)模塊進(jìn)行處理,其中原語信號送到流量控制模塊,原語序列送到端口狀態(tài)機(jī)模塊,而傳輸數(shù)據(jù)送到CRC校驗?zāi)K(Calibration_crc32)和接收緩存模塊(rx_buffer)。另外通過監(jiān)測數(shù)據(jù)的幀起始與結(jié)束標(biāo)識符,判斷數(shù)據(jù)幀是否完整及數(shù)據(jù)幀的長度。Calibration_crc32模塊主要負(fù)責(zé)為將接收的數(shù)據(jù)(不包括SOF和EOF)進(jìn)行CRC校驗,從而判斷數(shù)據(jù)在傳輸過程中是否出現(xiàn)錯誤。rx_buffer模塊負(fù)責(zé)緩存接收到的數(shù)據(jù)幀(包括SOF和EOF),通過Rx_control模塊來控制數(shù)據(jù)幀的寫入。Word_syn模塊負(fù)責(zé)判斷硬件模塊是否字同步,如果接收端接收到的位流的傳輸字與發(fā)送端發(fā)送的傳輸字一樣,那么應(yīng)實現(xiàn)傳輸字同步,條件滿足時進(jìn)入同步獲取狀態(tài),從而使端口狀態(tài)機(jī)(PSM)一直處于激活狀態(tài)。State_Register模塊主要功能是記錄每一幀數(shù)據(jù)幀的長度以及對應(yīng)的錯誤類型(如果傳輸過程中出現(xiàn)錯誤),主要包括無效傳輸字、CRC校驗錯誤、無效EOF、數(shù)據(jù)幀不完整及幀長度溢出這幾種錯誤。
圖2 發(fā)送模塊框圖
圖3 接收模塊框圖
根據(jù)FC-AE-1553協(xié)議規(guī)定,在端口進(jìn)行正常通信之前,端口狀態(tài)機(jī)要處于激活狀態(tài)。協(xié)議定義了一系列的原語序列用于表示端口狀態(tài),并且詳細(xì)敘述了端口狀態(tài)機(jī)的實現(xiàn)方法。原語序列是一個連續(xù)重復(fù)發(fā)送的有序集,若端口遇到了特殊情況,或一個端口的接收機(jī)邏輯碰到了特定的條件,就發(fā)送原語序列。如圖4為端口狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)移圖[15]。當(dāng)端口上電或復(fù)位后,處于未激活狀態(tài),需要通過光纖協(xié)議定義的握手機(jī)制恢復(fù)到激活(上線)狀態(tài)。光纖通道協(xié)議規(guī)定使用的原語序列協(xié)議有3種,分別為:鏈路初始化協(xié)議、鏈路失效協(xié)議和鏈路復(fù)位協(xié)議[16]。當(dāng)端口檢測到同步丟失時間超過R_T_TOV,或不在離線狀態(tài)時檢測到信號丟失時,端口應(yīng)執(zhí)行鏈路失效協(xié)議。具體實現(xiàn)步驟如下:1)當(dāng)A端口中存在鏈路失效條件時,端口應(yīng)發(fā)送NOS(Not Operational Primitive Sequence)并進(jìn)入NOS發(fā)送狀態(tài);2)B端口接收到NOS時,進(jìn)入NOS接收狀態(tài),發(fā)送OLS(Offline Primitive Sequence);3)A端口接收到OLS,進(jìn)入OLS接收狀態(tài),發(fā)送LR(Link Reset Primitive Sequence);4)B端口接收到LR時,進(jìn)入LR接收狀態(tài) ,發(fā) 送 LRR( Link Reset Response Primitive Sequence);5)A端口接收到LRR時,進(jìn)入LRR接收狀態(tài),發(fā)送 IDLE(Idle Word);6)B端口接收到IDLE時,退出LR接收狀態(tài)進(jìn)入激活狀態(tài),A端口在接收到IDLE時,也退出LRR接收狀態(tài)進(jìn)入激活狀態(tài)。同理,鏈路初始化協(xié)議和鏈路復(fù)位協(xié)議執(zhí)行過程如圖5所示。圖5為這3個原語序列的恢復(fù)過程和層次,通過這3層結(jié)構(gòu)端口可以最后達(dá)到激活狀態(tài)[17],從而確保端口之間能夠進(jìn)行數(shù)據(jù)傳輸。
圖4 端口狀態(tài)機(jī)狀態(tài)轉(zhuǎn)移圖
圖5 鏈路恢復(fù)協(xié)議的3層結(jié)構(gòu)
流量控制是FC-2層的控制過程,用于跟蹤N端口之間、N端口與交換網(wǎng)之間幀的傳輸。流控制分為端到端流控制和緩沖區(qū)到緩沖區(qū)流控制。本論文使用第3類幀,只使用緩沖區(qū)到緩沖區(qū)流控制。緩沖區(qū)到緩沖區(qū)流量控制管理見表1所示[9]。信用是分配給傳輸端口的接收緩沖區(qū)的數(shù)量。信用計數(shù)由序列啟動方進(jìn)行管理。首先確定對方的信用即對方可以接收多少幀數(shù)據(jù)。每發(fā)送一幀數(shù)據(jù)信用計數(shù)(Credit_CNT)加1,直到加到信用規(guī)定的最大值為止。在這種情況下,信用計數(shù)代表序列接收方還沒有確認(rèn)的重要數(shù)據(jù)幀的數(shù)目。當(dāng)序列啟動方接收到來自接收方的
R_RDY(32’hbc954a4a)信號時,信用計數(shù)減 1,序列啟動方可繼續(xù)發(fā)送數(shù)據(jù)。
表1 緩沖區(qū)到緩沖區(qū)流量控制管理
收發(fā)器的工作原理是發(fā)送端按照一定的計算規(guī)則產(chǎn)生的CRC校驗碼被插入到準(zhǔn)備發(fā)送的并行數(shù)據(jù)中,經(jīng)過8B/10B編碼(8B/10B編碼可根據(jù)需要選擇),寫入發(fā)送FIFO,然后將其轉(zhuǎn)換成差分信號發(fā)送出去[18]。接收端通過接收器接收串行差分信號,在時鐘數(shù)據(jù)恢復(fù)電路的作用下,從串行數(shù)據(jù)流中恢復(fù)出時鐘信號,該時鐘信號用于串/并轉(zhuǎn)換,在comma檢測和對齊模塊的作用下,將數(shù)據(jù)對齊進(jìn)行串并轉(zhuǎn)換,輸出的并行數(shù)據(jù)經(jīng)過8B/10B解碼(可根據(jù)需要選擇,與發(fā)送端選擇一致),依據(jù)需要用彈性緩沖器實現(xiàn)通道綁定和時鐘修正,經(jīng)過CRC模塊校驗后并行輸出。本方案中只使用RocketIO中的PMA(physical media attachment)部分。
本論文對光纖通道數(shù)據(jù)收發(fā)系統(tǒng)光纖通訊控制FPGA進(jìn)行仿真,通過chipscope抓取波形如圖6所示,tx2_top_module模塊的frame_out表示發(fā)送端發(fā)出的數(shù)據(jù)幀,rx2_module模塊的frame_in為接收端接收到的數(shù)據(jù)幀。由圖6(a)可以看出,當(dāng)有一幀數(shù)據(jù)從接收FIFO取出后,接收端發(fā)送原語信號R_RDY進(jìn)行原語控制。圖(b)(c)為圖(a)放大后的時序圖,可以看出接收端接收到的數(shù)據(jù)幀與發(fā)送端發(fā)送的數(shù)據(jù)幀完全相同,數(shù)據(jù)幀由幀頭、數(shù)據(jù)、CRC和幀尾組成。32’hbc95b5b5為空閑信號,每一幀數(shù)據(jù)之間必須有5個以上的空閑信號。當(dāng)接收到原語信號R_RDY(32’hbc954a4a) 時 ,信 用 量 計 數(shù)credit_cnt_reg減1;當(dāng)發(fā)送端每發(fā)送一幀數(shù)據(jù),信用量計數(shù)credit_cnt_reg加1。通過上板調(diào)試表明數(shù)據(jù)收發(fā)系統(tǒng)功能正確,沒有出現(xiàn)丟幀或錯誤的現(xiàn)象,串行時鐘頻率達(dá)到1.062 5 Gb/s。
文中設(shè)計并實現(xiàn)了基于光纖通道數(shù)據(jù)收發(fā)系統(tǒng),完成了FC-AE-1553協(xié)議的FC-0、FC-1和部分FC-2層的功能,通過使用RocketIO使數(shù)據(jù)串行傳輸速率達(dá)到1.062 5 Gb/s,實現(xiàn)點對點傳輸。與傳統(tǒng)1553B總線協(xié)議1 Mb的傳輸速率[19]相比較,在速度上有質(zhì)的提高。
[1]楊現(xiàn)萍,段亞.FC-AE-1553總線數(shù)據(jù)處理技術(shù)研究[J].現(xiàn)代電子技術(shù),2011,34(12):29-32.
[2]鳳雷,馮收,喬家慶,等.FC-AE-1553設(shè)備光纖接口電路的設(shè)計與實現(xiàn)[J].電子測量技術(shù),2012,35(7):62-65.
[3]田澤,徐文龍,許恒,等.FC光纖通道技術(shù)研究綜述[J].電子技術(shù)應(yīng)用,2016(9):143-146.
[4]許里,馮國仕,李璞.光纖通道接口通用驅(qū)動程序設(shè)計與實現(xiàn)[J].通信技術(shù),2014,47(11):1343-1346.
[5]王樹占,李娟艷,王佳敏.光纖通信技術(shù)的現(xiàn)狀及發(fā)展趨勢[J].電子制作,2015(8):149.
圖6 數(shù)據(jù)收發(fā)系統(tǒng)發(fā)送與接收數(shù)據(jù)對比圖
[6]曹素芝,張善從.光纖通道與MIL-STD-1553協(xié)議的兼容性設(shè)計[J].計算機(jī)測量與設(shè)制,2010,18(7):1624-1626.
[7]張志,翟正軍.航空電子光纖通道協(xié)議分析與接口卡設(shè)計[J].測控技術(shù),2010(2):99-101.
[8]FCIA Editor.GEN 6-Sixth Generation Fibre Channel[S].2014.
[9]ANSI INCITS.Fibre Channel-Physical and Signal Interface(FC-PH)REV4[S].1994.
[10]ANSI INCITS.Fibre Channel-Avionics Enviroment(FC-AE)REV2.4[S],2002.
[11]ANSI INCITS.Fibre Channel-Avionics Enviroment(FC-AE)REV2.6[S],2002.
[12]黃浩益,熊華剛.GJB 6410.1-2008.中華人民共和國軍用標(biāo)準(zhǔn)[S].
[13]Virtex-4 RocketIO Multi-Gigabit Transceiver User Guide[M].2008.
[14]杜瑞,張偉功,鄧哲,等.新型總線中并行CRC算法的設(shè)計與實現(xiàn)[J].計算機(jī)工程與設(shè)計,2013,34(1):131-135.
[15]冷悅.FC-AE-1553協(xié)議的硬件系統(tǒng)設(shè)計[D].成都:電子科技大學(xué),2010.
[16]宣亮亮.基于PC機(jī)和FPGA的光纖通道接口適配器的研究與實現(xiàn)[D].南昌:南昌航空大學(xué),2010.
[17]鳳雷,馮收,喬家慶,等.FC-AE-1553設(shè)備光纖接口電路的設(shè)計與實現(xiàn)[J].電子測量技術(shù),2012,35(7):62-65.
[18]蘇秀妮.基于RocketIO高速串行通信接口的研究與實現(xiàn)[D].西安:西安電子科技大學(xué),2013.
[19]徐貴賢.1553B總線簡介及其實現(xiàn)[J].通信技術(shù),2011,44(5):166-168.