劉 遠,譚 覓,王綱領(lǐng)
(中國電子科技集團公司第三十研究所,四川 成都 610041)
高級數(shù)據(jù)鏈路控制(High Level Data Link Control,HDLC)協(xié)議,由于其封裝簡單,且具有良好的流量控制能力和差錯檢測能力,被廣泛應(yīng)用于各類數(shù)字通信領(lǐng)域中[1]。
為滿足信道兩端對數(shù)據(jù)通信的有效管控,需構(gòu)建管控數(shù)據(jù)通道,由于HDLC幀通信的同步傳輸特性[2],帶內(nèi)管控是較為有效和簡單的管理方式,既可以簡化用戶的網(wǎng)絡(luò)拓撲,又具備較好的可靠性。由于HDLC幀數(shù)據(jù)承載著用戶的關(guān)鍵通信信息,因此帶內(nèi)管控數(shù)據(jù)通道的構(gòu)建不應(yīng)對用戶數(shù)據(jù)造成損壞。
現(xiàn)有的HDLC幀帶內(nèi)管控數(shù)據(jù)通道構(gòu)建技術(shù)[3]無法滿足在HDLC幀滿帶寬傳輸條件下,管控數(shù)據(jù)即時傳遞且對HDLC幀零損壞的要求。本文提出的零開銷帶內(nèi)管控技術(shù),可以有效解決此設(shè)計難點,提高HDLC幀數(shù)據(jù)的傳輸效率。此外,管理幀采用偽隨機序列,可實現(xiàn)管控信道誤碼糾錯。使用現(xiàn)場可編輯邏輯門陣列(Field Programmable Gate Array,F(xiàn)PGA)方案實現(xiàn)設(shè)計,可提高功能實現(xiàn)的可靠性,降低引入的信道時延。
HDLC協(xié)議以幀作為單位傳輸數(shù)據(jù),基本的幀結(jié)構(gòu)如圖1所示[4]。
圖1 HDLC幀結(jié)構(gòu)
標志F為開始或結(jié)束標志字。固定為16進制碼“7E”,當信道處于空閑狀態(tài)時,標志F也作為幀與幀之間的空閑填充。如果開始和結(jié)束標志位之間的幀數(shù)據(jù)含有“7E”,需對數(shù)據(jù)進行轉(zhuǎn)譯[5]。地址域為接收端的地址??刂朴蛴糜跇?gòu)成各種命令和響應(yīng),以便對業(yè)務(wù)鏈路進行監(jiān)視和控制。信息域為幀的凈荷數(shù)據(jù)部分,根據(jù)不同的行業(yè)標準,長度限制也有所不同。幀校驗域為兩個標志位之間數(shù)據(jù)的CRC校驗結(jié)果[6]。
本文所設(shè)計的HDLC幀的零開銷帶內(nèi)管控技術(shù),不需要解析HDLC幀的內(nèi)容。本文中的“HDLC數(shù)據(jù)”是指HDLC幀去掉開始和結(jié)束標志“7E”后的數(shù)據(jù)內(nèi)容。
端到端通信設(shè)備之間傳遞的控制數(shù)據(jù),以自定義幀的方式傳遞。本文提供一個管控幀結(jié)構(gòu)的示例,如圖2所示。
圖2 管控幀示例
幀頭設(shè)定為偽隨機m序列[7],用于指示管控幀的起始位置。本文使用的m序列生成多項式為:
初值設(shè)置為0,截取使用其前8字節(jié)數(shù),即16進制數(shù)“83CA90BB7DCF897A”。長度字段L代表整個管控幀的字節(jié)數(shù),自定義位為1字節(jié)長度;凈荷數(shù)據(jù)為管控幀內(nèi)承載的管控信息數(shù)據(jù),用戶自定義其最大長度;校驗和字段用于驗證管控幀數(shù)據(jù)傳輸?shù)恼_性,本文使用1個字節(jié)的累加和進行校驗。
根據(jù)HDLC幀的特點,幀頭幀尾的標志位都是“7E”,結(jié)合自定義管控幀的數(shù)據(jù)結(jié)構(gòu),設(shè)計基于HDLC幀的零開銷帶內(nèi)管控方案如圖3所示。
圖3 基于HDLC幀的零開銷帶內(nèi)管控實現(xiàn)原理
采用對HDLC幀進行隨路鐘緩存、高頻鐘處理的方式[8],構(gòu)建管控數(shù)據(jù)通道。輸入輸出緩存用于隨路鐘與高頻鐘的隔離,同時保證管控幀插入和提取處理時,不影響數(shù)據(jù)通信的連續(xù)性。
輸出異步緩存1中需緩存2個字節(jié)數(shù)據(jù),用于預(yù)留判斷HDLC幀標志位時產(chǎn)生的延時。輸出異步緩存2中需緩存管控幀最大長度字節(jié)數(shù),確保在管控幀解析與丟棄的時候,輸出數(shù)據(jù)不被間斷。異步緩存的設(shè)計,將會引入信道傳輸延時,延時的計算公式為Lmax×8/R,其中,Lmax表示用戶自定義的管控幀最大長度字節(jié)數(shù),R表示隨路鐘的波特率。
零開銷管控幀插入工作在高頻時鐘域,由3個模塊組成,其中,HDLC幀定位模塊根據(jù)HDLC幀結(jié)構(gòu)特點檢測HDLC幀的標志位。管控幀插入模塊,使用高頻時鐘實現(xiàn)管控幀數(shù)據(jù)的一次性插入,插入管控幀的位置在HDLC幀定位模塊檢測到2個標志位后的位置,保證在管控幀插入位置的HDLC幀間隔內(nèi)至少有2個標志位,從而滿足HDLC幀恢復(fù)模塊的實現(xiàn)要求。
“7E”序列丟棄模塊使用高頻時鐘,在插入管控幀之后的“7E”位置,根據(jù)管控幀插入的總長度,完成對“7E”數(shù)據(jù)的丟棄,以保證管控幀的插入不會對鏈路引入新的開銷。根據(jù)HDLC數(shù)據(jù)間標志位“7E”的個數(shù),分兩種情況完成“7E”序列的丟棄。
情況1:當管控幀插入位置的HDLC數(shù)據(jù)間的“7E”字節(jié)數(shù)大于或等于L+2時,如圖4所示,在一次性插入管控幀數(shù)據(jù)后,可以連續(xù)完成管控幀長L的“7E”數(shù)據(jù)丟棄。
情況2:當管控幀插入位置的HDLC數(shù)據(jù)間“7E”字節(jié)數(shù)小于L+2時,如圖5所示,在一次性插入管控幀數(shù)據(jù)后,不能連續(xù)完成管控幀長度L的“7E”數(shù)據(jù)丟棄,需要在后續(xù)HDLC幀間繼續(xù)丟棄“7E”,并且保證HDLC數(shù)據(jù)間至少留有1個“7E”,用于指示HDLC幀間隔。
圖5 管控插入的幀間空閑L<+2(含滿帶寬情況)
高可靠管控幀提取,工作在高頻時鐘域,由3個模塊組成。其中,m序列捕獲模塊通過自相關(guān)計算實現(xiàn)m序列定位[9],設(shè)置相關(guān)判決門限為60,8字節(jié)m序列可以實現(xiàn)3比特糾錯[10];管控幀解析和丟棄模塊基于管控幀格式完成幀解析,并根據(jù)解析出的長度完成管控幀數(shù)據(jù)的丟棄,刪除對HDLC幀空閑的占用;HDLC幀恢復(fù)模塊,根據(jù)HDLC數(shù)據(jù)間標志位“7E”的數(shù)量和進入方向“7E”序列丟棄模塊的原理,分以下幾種情況完成HDLC幀的恢復(fù)。
情況1:當管控幀丟棄后,數(shù)據(jù)仍為“7E”,則可以一次性回填管控幀長度L的“7E”,此過程為圖4的逆向。
圖4 管控插入的幀間空閑≥L+2
情況2:當管控幀丟棄后,數(shù)據(jù)為非“7E”,說明在下一幀HDLC數(shù)據(jù)后仍需回填“7E”,圖6表示在管控幀丟棄后,下一個HDLC數(shù)據(jù)間隔中,“7E”個數(shù)大于1的情況,可以直接在這個幀間隔中回填L長度的“7E”。
圖6 能在管控幀下一幀HDLC間隔完成一次性“7E”回填
情況3:當管控幀丟棄后,數(shù)據(jù)為非“7E”,并且下一個HDLC數(shù)據(jù)間隔中,“7E”個數(shù)等于1時,則需在這個幀間隔中回填1個字節(jié)的“7E”,然后繼續(xù)尋找下一個HDLC數(shù)據(jù)間隔,繼續(xù)回填,直至回填完L長度的“7E”,恢復(fù)原始HDLC幀數(shù)據(jù),如圖7所示。
圖7 不能在管控幀下一幀HDLC間隔完成一次性“7E”回填
在HDLC滿帶寬情況下,原始HDLC幀頭和幀尾至少組成2個標志位,結(jié)合零開銷管控幀插入中情況2的“7E”序列丟棄原理和高可靠管控幀提取中情況3的HDLC幀恢復(fù)原理,可以實現(xiàn)HDLC幀滿帶寬通信情況下的零開銷管控數(shù)據(jù)傳輸。
FPGA實現(xiàn)和仿真都基于第3節(jié)中自定義的管控幀結(jié)構(gòu)開展設(shè)計。
實現(xiàn)方案如圖8所示,通過異步緩存、管控幀高頻插入、標志字“7E”的判決、丟棄等方式,實現(xiàn)零開銷管控幀插入。
圖8 零開銷管控幀插入FPGA實現(xiàn)方案
如圖9所示,通過異步緩存、管控幀高頻插入、m序列捕獲、標志字“7E”的判決、回填等方式,實現(xiàn)高可靠管控幀提取。
圖9 高可靠管控幀提取FPGA實現(xiàn)方案
使用FPGA仿真軟件modelsim對第5節(jié)方案進行仿真。
圖10為進入方向的仿真結(jié)果,信號data_clk和high_clk分別為隨路鐘和高頻鐘,信號manage_in_flag為管控幀插入指令,信號org_rxd為輸入的HDLC幀數(shù)據(jù),信號h_manage_dout和h_manage_wr分別為進行管控幀插入和“7E”序列丟棄的高頻鐘域數(shù)據(jù)和有效信號,信號manage_txd為完成管控幀插入和“7E”序列丟棄后的隨路鐘域輸出數(shù)據(jù)。仿真結(jié)果顯示,在收到管控幀插入指令后,通過高頻鐘完成管控幀數(shù)據(jù)的插入和“7E”序列的丟棄,并將含有管控幀數(shù)據(jù)(83CA90BB7DCF897A_02_AABB_4E)的HDLC通信幀通過隨路鐘輸出。
圖11為外出方向仿真結(jié)果,信號manage_txd為含管控幀數(shù)據(jù)的隨路鐘域HDLC幀數(shù)據(jù)(圖10的輸出結(jié)果),信號h_resume_dout和h_resume_wr分別為進行管控幀提取、丟棄和“7E”序列回填的高頻鐘域數(shù)據(jù)和有效信號,信號resume_txd為完成管控幀丟棄和“7E”序列回填的隨路鐘域輸出數(shù)據(jù)。仿真結(jié)果顯示,通過m序列捕獲,定位到管控幀位置,并通過高頻鐘完成管控幀數(shù)據(jù)的提取、丟棄和“7E”序列的回填,并將最終恢復(fù)的HDLC幀原始數(shù)據(jù)通過隨路鐘輸出,實現(xiàn)了HDLC幀的零開銷帶內(nèi)管控功能。
圖10 零開銷管控幀插入modelsim仿真結(jié)果
圖11 高可靠管控幀提取modelsim仿真結(jié)果
本文提出了基于HDLC幀的零開銷帶內(nèi)管控技術(shù),有效解決了端到端HDLC通信零開銷帶內(nèi)管控通信構(gòu)建的難點問題,在保證不損壞原有HDLC幀的條件下,提高了帶內(nèi)管控通道的性能,可以滿足在HDLC幀滿帶寬傳輸條件下的零開銷帶內(nèi)管控需求。該技術(shù)可以有效應(yīng)用于信號資源有限、傳輸帶寬緊張的環(huán)境中,如衛(wèi)星無線通信等環(huán)境。本文給出的FPGA詳細設(shè)計方案,實現(xiàn)簡單、資源占用少,可靈活應(yīng)用于各種規(guī)模的FPGA設(shè)計項目中。FPGA仿真驗證結(jié)果證明了本方案的可實現(xiàn)性。此外,本文所提方案已經(jīng)在多個項目中得到應(yīng)用。