黃致綺
【摘要】 HDLC協(xié)議作為一種數(shù)字通信技術(shù)中使用較為廣泛的高級鏈路傳輸協(xié)議,在如今已經(jīng)被用于計算機通信的各項領(lǐng)域當(dāng)中,不過顯然其在被應(yīng)用的過程中同樣出現(xiàn)了一些弊端。因此本文以基于FPGA平臺的HDLC協(xié)議作為研究對象,重點討論了HDLC協(xié)議本身的構(gòu)成,以及在實現(xiàn)HDLC協(xié)議過程中對初始化模塊、發(fā)送模塊、接收模塊進行了論述,最后給出了仿真測試結(jié)果。
【關(guān)鍵詞】 HDLC協(xié)議 數(shù)據(jù)鏈路層 FPGA平臺
一、HDLC協(xié)議的介紹
數(shù)據(jù)鏈路層協(xié)議根據(jù)數(shù)據(jù)幀控制的格式可以分為:面向字符的數(shù)據(jù)鏈路層協(xié)議和面向比特的數(shù)據(jù)鏈路層協(xié)議。HDLC協(xié)議是一種面向比特的數(shù)據(jù)鏈路協(xié)議。在這類面向比特的數(shù)據(jù)鏈路協(xié)議中,幀頭和幀尾都是特定的二進制序列,通過控制字段來實現(xiàn)對鏈路的監(jiān)控,可以采用多種編碼方式實現(xiàn)高效的、可靠的透明傳輸。
二、基于FPGA平臺的HDLC協(xié)議的實現(xiàn)
1、初始模塊的實現(xiàn).在實現(xiàn)HDLC模塊以前必須針對其完成初始化的相應(yīng)流程以后方可正常進入工作運行裝填。這里的初始化具體來說是針對HDLC模塊內(nèi)部的各類寄存器進行參數(shù)上的配置,其中主要的寄存器類型有輔助寄存器、地址寄存器等。而且地址寄存器的初始化尤為重要,一般當(dāng)對這幾類寄存器完成初始化配置后,系統(tǒng)會自動生成一個標(biāo)識信號,如果信號顯示為正常且有效的,那么其代表HDLC的初始化工作已經(jīng)基本完成,且可以進入到下一步工作狀態(tài)中。而輔助配置寄存器的初始化則并不一定需要在該階段中完成。
2、發(fā)送模塊的實現(xiàn)。在HDLC協(xié)議中,具體負責(zé)差錯校檢功能的為CRC校檢模塊,具體的幀發(fā)送模塊的實現(xiàn)過程為:首先系統(tǒng)與CPU線路開始連接一戶,然后數(shù)據(jù)開始被寫入到FIFO中,如果檢測到某條線路正好處于未被資源占用的狀態(tài),那么CRC校驗?zāi)K則開始對FIFO中的數(shù)據(jù)進行校驗和插零程序。同時,數(shù)據(jù)經(jīng)過插零并發(fā)送以后,每一個數(shù)據(jù)序列必須添加包頭和包圍并以串行的形式被發(fā)送端傳輸出去,并且將幀標(biāo)志的狀態(tài)修改為“011111100”,這里筆者將以上組成發(fā)送模塊的發(fā)送端分成四個部分,分別是fifomain、insert_0、crcme以及frame insert等模塊。
3、接收模塊的設(shè)計。HDLC協(xié)議中的接收模塊在功能結(jié)構(gòu)的組成方面和發(fā)送模塊相類似,主要由CRC校驗?zāi)K、控制模塊、數(shù)據(jù)鎖存模塊以及同步模塊組成。
具體來說,系統(tǒng)中的控制模塊針對數(shù)據(jù)傳輸中的刪零過程以及標(biāo)識檢驗過程來進行??刂颇K會優(yōu)先檢測幀頭和數(shù)據(jù)起始的范圍,當(dāng)檢測到串行數(shù)據(jù)中輸入或者輸出數(shù)值相對偏高,則證明幀頭被控制模塊捕捉到,如果輸入輸出數(shù)值沒有變化甚至為零,則說明尚未接受到幀頭。CRC校驗?zāi)K則主要負責(zé)對串行數(shù)據(jù)進行校驗。數(shù)據(jù)鎖存模塊主要對寄存器上所記錄的數(shù)據(jù)進行鎖存,并將結(jié)果存儲到系統(tǒng)中來。另外,數(shù)據(jù)鎖存模塊還會負責(zé)對短幀進行長度的檢測、整數(shù)字節(jié)的檢測以及起到反向傳輸字節(jié)的作用。
三、HDLC協(xié)議的仿真測試
1、初始化模塊測試。如下圖1所示,其為HDLC模塊在FPGA平臺上模擬仿真時序圖,其正處于初始化狀態(tài),HDLC的初始化主要是針對系統(tǒng)的各類寄存器進行配置,如圖中所示,尋址寄存器中的Write_AC_Flag被配置的狀態(tài)值就為“1”,其他寄存器像地址寄存器等相繼完成配置以后,就會在通過Init_Done給出初始化完成的有效信號,從圖中可看出上電時也會完成初始化。
2、發(fā)送模塊測試。HDLC的發(fā)送模塊主要原理是將需要發(fā)送的數(shù)據(jù)存儲到TDR寄存器中來,系統(tǒng)中的發(fā)送時鐘Tx_Clk會在數(shù)據(jù)寫入操作結(jié)束以后開始進行輪詢。其中輪詢周期被設(shè)定為0.25ms,Tx_Enable信號則是在經(jīng)過Poll_RRT_ Pulse正式開始發(fā)送完畢以后開始生效。而且數(shù)據(jù)狀態(tài)機的TX_IDLE則開始正式跳轉(zhuǎn),并向系統(tǒng)發(fā)送有效的幀頭標(biāo)識。
3、接收模塊測試。HDLC的接收模塊主要會使用外環(huán)測試,CH1和CH2之間彼此構(gòu)成環(huán)路,當(dāng)CH2接收端接受完所有串并轉(zhuǎn)換以后的數(shù)據(jù)流后,就會開始對幀頭狀態(tài)進行丁姐,如果判斷幀頭為“01111110”,系統(tǒng)自動跳轉(zhuǎn)為RX_FLAG,并且接著繼續(xù)判斷幀頭和檢測序列,直至不再出現(xiàn)以上序列幀頭就會再次轉(zhuǎn)變狀態(tài)。CRC校驗信號值Rx_ CRC_Error仍然為0,由此可以確認本次系統(tǒng)接收模塊運行正常,可供幀數(shù)據(jù)之間的接收。
參 考 文 獻
[1]易鳴.基于FPGA的IP協(xié)議轉(zhuǎn)換控制器的研究與實現(xiàn)[D].廣西大學(xué),2012.
[2]孔令軍.基于FPGA的POS IC設(shè)計[D].杭州電子科技大學(xué),2013.
[3]劉巖俊,閆海霞.HDLC通訊協(xié)議中CRC的應(yīng)用[J].電子測量技術(shù),2010,03:21-23.
[4]劉文學(xué),郭玉忠,姜琳琳.HDLC協(xié)議的FPGA實現(xiàn)方法[J].航空計算技術(shù),2011,3:93-96.