田照耀 劉泰
【摘要】 本文介紹了一種在NI CompactRIO平臺基礎上自主開發的HDLC通信協議,既有軟件編程方法的功能靈活,方便修改,適用性廣的特點,又具有專用芯片性能可靠、實時性高、可并行處理、CPU利用率抵等優點。
【關鍵詞】 列車監控系統 HDLC FPGA
一、概述
HDLC(High Level Data Link Control),是國際標準化組織ISO制訂的高級數據鏈路控制規程。它具有數據報文可透明傳輸、報文長度可以是任意位、傳輸效率高、可靠性高等優點。HDLC的一般實現方法為采用專用芯片和軟件編程等。應用專用芯片時設計簡單、使用簡易、功能針對性強、性能可靠,適合應用于特定用途的大批量產品中,但靈活性較差;軟件編程方法靈活,但占用處理器資源多、執行速度慢、實時性不易預測,HDLC 的軟件編程方法功能靈活,通過修改程序就可以適用于不同的 HDLC 應用。本文在NI CompactRIO平臺基礎上,利用其集成的高性能FPGA芯片,使用編程方式實現HDLC協議,既有軟件編程方法的功能靈活,方便修改,適用性廣的特點,又具有專用芯片性能可靠、實時性高、可并行處理、CPU利用率低等優點,其生成電路所具有的性能可媲美經廠商定義并優化的硬件性能。另外還具有開發周期短,成本低的優點,在實際應用過程中,取得了良好的效果。
二、系統總體結構
HDLC協議的實現總共分三部分(如圖1 所示),第一部分位于實時控制器中通過軟件實現,主要是通信參數的設置(如周期、波特率、超時時間等)、故障處理和發送接收數據管理。第二部分位于NI CompactRIO FPGA中,主要實現HDLC的協議部分,其中包括通信管理單元,數據緩存區FIFO和完全獨立的兩個通信通道。通信管理單元是整個協議運行的指揮者,其負責通信的初始化設置、通信的周期控制及故障診斷。A通道和B通道是兩個獨立的通信通道,分別含有發送插0模塊、接收刪0模塊、時鐘同步模塊和CRC校驗模塊。數據緩存區FIFO負責與實時控制器交換數據。第三部分為硬件接口,實現RS485電平的轉換。
三、系統模塊設計
3.1通信管理單元
通信管理單元負責整個協議的數據發送和接收管理,在上電時首先讀取實時控制器設置的通信周期、通信波特率、超時時間等參數。在參數設置完成后進入發送接收循環,通信采用半雙工通信方式。
在通信過程中,如果子系統響應時間小于數據發送周期則嚴格按照發送周期發送,如果到傳輸周期時子系統仍然在發送數據則通信管理單元等待接收子系統數據完成后立即進行發送數據。在通信周期到時,仍然沒有收到子系統響應則視本幀為接收超時,在置位超時標志位后重新開始發送數據,如連續5次沒有收到正確數據,通信管理單元向實時控制器報通信故障。
3.2數據發送模塊
數據發送模塊包括發送CRC校驗,同步位發送,發送插0,和NRZI編碼。
HDLC的幀格式如下
在起始標志之前至少應向接收器發送4個標志(7EH)以同步接收時鐘和發送信號。
數據發送模塊首先從FIFO中讀取要發送的數據,在CRC校驗完成后,加上同步位和標志位后,進入到發送循環。發送循環時鐘為40MHz,根據發送波特率的設置對時鐘分頻得到實際發送波特率,發送完幀頭標志位(7E)后開始對數據1計數,發現連續的5個1時,即在后面插入0。
CRC校驗采用CRC‐CCITT,其校驗多項式為(X16+X12+X5+1)。計算的應用范圍為從地址1到信息。CRC的最高位先發送。
3.3數據接收模塊
接收模塊包括同步時鐘提取、NRZI解碼、接收數據刪0模塊。在進入到接收程序之后,即開始在數據流中檢測有無“7E”標志,如果連續的收到“7E”后,本次收到數據不是“7E”,則認為上一次收到的“7E”標志為幀頭,立即啟動數據刪0模塊,之后如再收到“7E”標志則認為是幀尾,收到幀尾后即對收到數據進行CRC校驗和幀長度檢查,兩項都正確的數據存入接收緩存,不正確的數據放棄。在HDLC數據接收程序中時鐘提取模塊起到了非常重要的作用,時鐘提取模塊根據NRZI編碼的特點,在每一個數據位跳變沿都對接收誤差進行重新校正,消除接收中的累積誤差,這樣接收容許波特率誤差可以達到±7%。
四、結論
本文開發的HDLC通信協議在某地鐵列車的牽引系統設備上進行了大量試驗,試驗表明:在多次長時間的測試當中通信穩定可靠,通信周期嚴格按照設置進行,在一次約60萬幀的測試統計中,無丟幀現象,沒有出現CRC校驗錯和接收超時的情況。
本文介紹的HDLC通信協議兼有軟件編程和硬件芯片兩方面的優點,并在現車試驗成功,對于國產化列車監控系統的研發具有重要的意義。
參 考 文 獻
[1]付新虎,史浩,鄭喜鳳,丁鐵夫,HDLC 協議在通信系統中的應用[J],電子技術,No.8,2005,P58-60