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