WTB網(wǎng)絡(luò)HDLC在FPGA中的實(shí)現(xiàn)
1 引言
TCN(Train Communication Network)總體結(jié)構(gòu)是由WTB(絞線式列車總線)和MVB(多功能車輛總線)組成,符合IEC61375-1標(biāo)準(zhǔn)。本文主要圍繞WTB鏈路控制的幀格式進(jìn)行研究。鑒于IEC61375-1標(biāo)準(zhǔn)中規(guī)定的WTB幀數(shù)據(jù)格式與IS03309中定義的HDLC(High Level Data Link Control)格式一致,基帶Manchester-Biphase-L技術(shù)編解碼器現(xiàn)則圍繞HDLC展開。
隨著深亞微米工藝技術(shù)的發(fā)展,FPGA(FieldProgrammable Gate Array)的規(guī)模越來越大,其單片邏輯門數(shù)已超過上百萬門。同時(shí)還具有開發(fā)周期短、成本低、可實(shí)時(shí)在線檢驗(yàn)等優(yōu)點(diǎn)。因此廣泛用于特殊器件設(shè)計(jì)。中小批量通信產(chǎn)品的設(shè)計(jì)生產(chǎn)中采用FPGA實(shí)現(xiàn)HDLC功能是一種值得借鑒的方法。
2 WTB的HDLC幀格式
WTB的有效幀格式包括幀頭、HDLC幀數(shù)據(jù)格式、終止分界符。其中HDLC幀數(shù)據(jù)格式與ISO3309中定義的相同,包括起始8位標(biāo)志位、HDLC數(shù)據(jù)、16位FCS、結(jié)束8位標(biāo)志位。幀頭和HDLC幀
數(shù)據(jù)由曼徹斯特碼編碼,一個(gè)位單元的前半部分為負(fù)電平,在位單元的中間跳變?yōu)檎娖降奈痪幋a為“1”,反之為“0”。幀頭在起始位和結(jié)束位“1”之間有7個(gè)(“0”,“1”)位對(duì)。終止分界符可使線路保持2個(gè)周期的正電平。
2.1 HDLC幀格式
WTB通信方式中,所有信息都是以幀的格式傳輸?shù)模琀DLC幀格式如圖1所示。HDLC協(xié)議規(guī)定,所有信息傳輸必須以一個(gè)標(biāo)志字開始,且以同一標(biāo)志字結(jié)束,這個(gè)標(biāo)志字為01111110。開始標(biāo)志到結(jié)束標(biāo)志之間構(gòu)成一個(gè)完整的信息單位,稱為一幀。在HDLC通信方式中,接收方通過搜索01111110探知幀的開始和結(jié)束,以此建立幀同步。在幀與幀之間的空載期,可連續(xù)發(fā)送標(biāo)志字來做填充。而在WTB的網(wǎng)絡(luò)中,具有特殊的起始幀頭,更易于產(chǎn)生同步解碼。
2.2 HDLC數(shù)據(jù)及“0”比特插入
HDLC幀的數(shù)據(jù)區(qū)的長度是可變的,可傳送標(biāo)志字以外的任意二進(jìn)制信息。其數(shù)據(jù)最小為32位,最大為1 056位,HDLC發(fā)送的數(shù)據(jù)應(yīng)是8的整數(shù)倍。為了確保標(biāo)志字是唯一的,發(fā)送方在發(fā)送信息時(shí)采用“0”比特插入技術(shù),即發(fā)送方在發(fā)送除標(biāo)志字符外的所有信息時(shí)(包括校驗(yàn)位),只要遇到連續(xù)的5個(gè)“1”,就自動(dòng)插入一個(gè)“0”;反之,接收方在接收數(shù)據(jù)時(shí),只要遇到連續(xù)的5個(gè)“1”,就自動(dòng)將其后的“0”刪掉。“0”比特插人與刪除技術(shù)可使HDLC具有良好的傳輸透明性,可傳輸任何比特代碼。
2.3 CRC校驗(yàn)
HDLC采用16位循環(huán)冗余校驗(yàn)碼(CRC-16)進(jìn)行差錯(cuò)控制,生成若干種多項(xiàng)式,WTB網(wǎng)絡(luò)使用標(biāo)準(zhǔn)的生成多項(xiàng)式x16+x12+x5+1。HDLC差錯(cuò)校驗(yàn)是對(duì)整個(gè)幀的內(nèi)容作CRC循環(huán)冗余校驗(yàn),即糾正糾錯(cuò)范圍內(nèi)的錯(cuò)碼,在校錯(cuò)范圍內(nèi)的錯(cuò)碼只能校驗(yàn),但不能糾正。標(biāo)志位和按透明規(guī)則插入的所有“0”不在校驗(yàn)的范圍內(nèi)。
3 編碼器與解碼器的FPGA實(shí)現(xiàn)
基于FPGA成本低、實(shí)時(shí)性好、可擴(kuò)展為SOPC(片上系統(tǒng))便于應(yīng)用層的開發(fā)等優(yōu)點(diǎn),本設(shè)計(jì)采用Altera公司的CYCLONE II經(jīng)濟(jì)型FPGA實(shí)現(xiàn)編解碼。
3.1 有限時(shí)序狀態(tài)機(jī)
HDLC通信幀屬于串行數(shù)字信號(hào)編解碼方式,其幀格式與時(shí)序邏輯聯(lián)系緊密。編碼器是功能、時(shí)序復(fù)雜的時(shí)序邏輯電路。為了便于利用硬件描述語言設(shè)計(jì),將這一復(fù)雜的時(shí)序邏輯抽象成有限狀態(tài)機(jī),并利用有限狀態(tài)機(jī)實(shí)現(xiàn)復(fù)雜設(shè)計(jì)。這種控制方式很容易解決0比特插入技術(shù),使?fàn)顟B(tài)自由按照ISO3309的標(biāo)準(zhǔn)轉(zhuǎn)換。根據(jù)HDLC的編碼協(xié)議,得到FPGA設(shè)計(jì)的狀態(tài)機(jī),將狀態(tài)的轉(zhuǎn)換與數(shù)據(jù)處理分別在同一狀態(tài)機(jī)的不同模塊中實(shí)現(xiàn)。同時(shí),在解碼過程中,在起始標(biāo)志位同步后,每一步HDLC狀態(tài)過程均需對(duì)數(shù)據(jù)進(jìn)行判斷(若出錯(cuò)概率為P),直至結(jié)束。若有N個(gè)狀態(tài),其總體出錯(cuò)概率非常小,大小為PN,大大提高了解碼的可靠性。發(fā)送器狀態(tài)機(jī)如圖2所示。準(zhǔn)備狀態(tài):當(dāng)發(fā)送器復(fù)位后,處于準(zhǔn)備狀態(tài),收到開始發(fā)送信號(hào)后,狀態(tài)機(jī)轉(zhuǎn)至開始狀態(tài)進(jìn)行初始化,然后跳轉(zhuǎn)至幀頭狀態(tài)。幀頭狀態(tài):在該狀態(tài)添加WTB固定的幀頭和標(biāo)志位,然后跳轉(zhuǎn)至數(shù)據(jù)發(fā)送狀態(tài)。數(shù)據(jù)發(fā)送狀態(tài):在該狀態(tài)讀取數(shù)據(jù),按照幀結(jié)構(gòu)將數(shù)據(jù)編碼發(fā)出,直到全部發(fā)送完畢跳轉(zhuǎn)至校驗(yàn)狀態(tài)。校驗(yàn)狀態(tài):調(diào)用CRC校驗(yàn)單元模塊,進(jìn)行CRC檢驗(yàn)。完成后進(jìn)入結(jié)束狀態(tài)。結(jié)束狀態(tài):發(fā)送結(jié)束標(biāo)志,然后跳入下一次的準(zhǔn)備狀態(tài)。
{{分頁}}
3.2 CRC校驗(yàn)
HDLC數(shù)據(jù)編碼是難點(diǎn),數(shù)據(jù)位的不確定性進(jìn)一步導(dǎo)致CRC校驗(yàn)的復(fù)雜性。但由于HDLC數(shù)據(jù)具有特殊含義:8位位組的整數(shù)倍,故可以采用以字節(jié)寬度讀雙口RAM的方式進(jìn)行編碼。CRC校驗(yàn)也可字節(jié)累加運(yùn)算完成。校驗(yàn)?zāi)K示意圖如圖3所示。
校驗(yàn)序列按多項(xiàng)式:G(x)=x16+x12+x5+1進(jìn)行計(jì)算,校驗(yàn)初始結(jié)果值應(yīng)設(shè)為0xffff、圖3中rst為復(fù)位信號(hào),sig為事件觸發(fā)電平,pdata為需要計(jì)算的數(shù)據(jù),prevcrc為上一次計(jì)算的結(jié)果,crc最后輸出的計(jì)算結(jié)果。Verilog核心代碼為:
3.3 位同步
編碼器發(fā)送有效幀序列,解碼器對(duì)有效幀解析的最大難點(diǎn)在于起始的同步性。常用的同步方式有鎖相環(huán)。但為了節(jié)省FPGA內(nèi)部資源,針對(duì)WTB特有的幀頭規(guī)則序列,采用高頻采樣比較方式進(jìn)行同步。幀頭在起始位和結(jié)束位“1”之間有7個(gè)(“0”,“1”)位對(duì),如圖4所示。在一個(gè)周期內(nèi),一位采樣12次,若在位跳變的前后符合標(biāo)準(zhǔn)位,則同步開始,繼續(xù)采樣下一位,直到幀頭位對(duì)全部完成,即使在空閑時(shí),電平有干擾毛刺也不會(huì)產(chǎn)生誤同步。
4 標(biāo)準(zhǔn)應(yīng)用檢驗(yàn)
通過使用Quartus II對(duì)WTB的編解碼器的波形進(jìn)行仿真,結(jié)果符合標(biāo)準(zhǔn)。
解碼器在接收一個(gè)字節(jié)后進(jìn)行CRC計(jì)算,當(dāng)全部數(shù)據(jù)接收完成時(shí)計(jì)算出最后CRC結(jié)果;當(dāng)全部CRC接收完畢接收到CRC結(jié)果,將這兩種CRC結(jié)果進(jìn)行比較。若數(shù)據(jù)合法則給一個(gè)脈沖。
如圖5所示,硬件采用485實(shí)現(xiàn)物理層與標(biāo)準(zhǔn)機(jī)車WTB網(wǎng)卡的通訊,能夠相互解析,證明了設(shè)計(jì)的準(zhǔn)確可靠性,為下一步應(yīng)用層的設(shè)計(jì)打下基礎(chǔ)。
5 結(jié)束語
針對(duì)WTB網(wǎng)絡(luò)標(biāo)準(zhǔn)提出了一種基于FPGA的HDLC協(xié)議編解碼器設(shè)計(jì)方案,并利用Altera公司的CYCLONE II EP2C8實(shí)現(xiàn)。目前對(duì)該網(wǎng)絡(luò)協(xié)議的實(shí)現(xiàn)僅限于初期階段,只能實(shí)現(xiàn)基本鏈路的HDLC數(shù)據(jù)編解碼。該系統(tǒng)的后續(xù)還需加入NIOS進(jìn)行鏈路控制的優(yōu)化和應(yīng)用層的設(shè)計(jì),如WTB總線的初運(yùn)行。實(shí)踐表明,該編解碼器實(shí)現(xiàn)簡(jiǎn)單、使用靈活,資源占用合理,對(duì)進(jìn)一步工作的展開有深遠(yuǎn)意義。
評(píng)論