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