《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 基于S3C4510B的HDLC協(xié)議實現(xiàn)
基于S3C4510B的HDLC協(xié)議實現(xiàn)
陳雪良1, 夏 冬2, 許川佩2
摘要: 使用嵌入式微處理器S3C4510B內部包含的HDLC控制器封裝和解析HDLC協(xié)議,微處理器既可實現(xiàn)系統(tǒng)功能,又可完成HDLC協(xié)議的數(shù)據(jù)傳輸,降低了設計的復雜度。本設計已應用于微波網絡管理系統(tǒng)中,該系統(tǒng)可以通過RS-232接口或RS-485接口遵循HDLC協(xié)議完成網管數(shù)據(jù)傳輸。經驗證,HDLC協(xié)議傳輸正確、可靠,達到設計要求。
Abstract:
Key words :

  摘 要:使用嵌入式微處理器S3C4510B內部包含的HDLC控制器封裝和解析HDLC協(xié)議,微處理器既可實現(xiàn)系統(tǒng)功能,又可完成HDLC協(xié)議的數(shù)據(jù)傳輸,降低了設計的復雜度。本設計已應用于微波網絡管理系統(tǒng)中,該系統(tǒng)可以通過RS-232接口或RS-485接口遵循HDLC協(xié)議完成網管數(shù)據(jù)傳輸。經驗證,HDLC協(xié)議傳輸正確、可靠,達到設計要求。
  關鍵詞:S3C4510B;HDLC協(xié)議;數(shù)據(jù)傳輸

   傳統(tǒng)的HDLC協(xié)議采用專用芯片或軟件編程等方法實現(xiàn)。專用芯片針對性強、性能可靠,但靈活性差,尤其是片內數(shù)據(jù)存儲器容量有限,當需要擴大數(shù)據(jù)緩存的容量時,芯片要外接存儲器或其他電路,這就增加了系統(tǒng)成本。軟件編程方法靈活,但占用處理器資源多,執(zhí)行速度慢,實時性不易預測,一般只能用于個別路數(shù)的低速信號處理。采用ASIC芯片設計成本過于昂貴。考慮到HDLC協(xié)議的應用多和系統(tǒng)其他功能有機結合,而在很多應用系統(tǒng)中均采用嵌入式設計技術實現(xiàn)[1]。選用嵌入式微處理器S3C4510B設計微波網絡管理系統(tǒng)控制器,實現(xiàn)數(shù)據(jù)的采集、控制、存儲與傳輸,利用S3C4510B內嵌的HDLC控制器完成HDLC傳輸數(shù)據(jù)的封裝與解析,系統(tǒng)設計簡單、實用[2]。
1 HDLC簡介
  HDLC 是一個在同步網上傳輸數(shù)據(jù)并面向位的高級數(shù)據(jù)鏈路層協(xié)議, 由國際標準化組織ISO制定,具有透明傳輸、可靠性高、傳輸速率高以及靈活性高等特點。它采用點對點或多點( 多路播送或一對多) 連接的主/從結構, 要求每個從站都有唯一的地址, 從站只有在允許通信時才能且只能和主站通信, 這就消除了串行線路上由于幾個從站同時發(fā)送引起沖突的可能性。由于HDLC 面向位的特性, 因而可以實現(xiàn)不限制編碼的、高可靠和高效率的透明數(shù)據(jù)傳輸。隨著通信的發(fā)展, HDLC 得到日益廣泛的應用, 同時, 它還是許多重要的數(shù)據(jù)鏈路層協(xié)議的基礎。HDLC 幀結構如表1所示。

 

 

  表1所列HDLC幀結構中各部分功能為:
  標志位: Flag (F), 每個HDLC 幀以8 位序列( 01111110) 標志幀的開始和結束, 這是HDLC中僅有的2個包含連續(xù)6個1 的可能組合。為了避免在其他域中出現(xiàn)這種組合, HDLC 采用“零比特插入法”, 即每發(fā)現(xiàn)有接連5個1 時便在下一位自動插入一個0, 接收器在收到連續(xù)5個1 之后又自動刪去插入的0。標志位除了標志幀的開始和結束外, 還可用作時鐘同步, 接收設備不斷地搜尋標志位, 以實現(xiàn)幀同步, 從而保證接收部分對后續(xù)字段的正確識別。另外, 在幀與幀的空載期間, 可以連續(xù)發(fā)送這種標志序列, 用作時間填充。
  地址域:Address (A) Field,命令幀或響應幀的地址。每個從站必須有唯一的地址, 主站必須知道每個從站的指定地址。全“1”構成的地址在HDLC中定義為廣播地址;全“0”構成的地址在HDLC中定義為無站地址, 用于測試數(shù)據(jù)鏈路的狀態(tài)。
  控制域:Control (C) Field, 用于確定待傳送幀的類型,并攜帶有關幀的順序、載波控制和輪詢信息。HDLC有3種類型的幀,分別為信息幀、監(jiān)控幀和無編號幀。三者都符合幀結構,幀的格式不一樣,幀的用途也不一樣。
  信息域:Information (I) Field,要傳送的數(shù)據(jù),長度可變,是幀的數(shù)據(jù)部分,字段通常取8位的整數(shù)倍。
  校驗域:Frame Check Sequence (FCS) Field,采用16位循環(huán)冗余校驗碼進行差錯控制,其生成的多項式為G(X)=X16+X12+X5+1。幀校驗序列用于對幀進行循環(huán)冗余校驗, 其校驗范圍從地址字段的第一比特到信息字段的最后一比特的序列, 并且規(guī)定為了透明傳輸而插入的“0”不在校驗范圍內。
2 HDLC協(xié)議實現(xiàn)[3-5]
2.1 S3C4510B HDLC 控制器結構
  微波網管系統(tǒng)控制器采用嵌入式設計方法,系統(tǒng)CPU選用三星公司生產的S3C4510B。S3C4510B具有HDLC模塊,能夠完成HDLC協(xié)議的幀同步、比特填充、FCS的產生和檢測等,可以利用硬件實現(xiàn)HDLC協(xié)議的數(shù)據(jù)處理。
S3C4510B是含有雙通道的HDLC控制器,支持符合SDLC 標準和HDLC 標準的CPU/數(shù)據(jù)通道接口, 包含2 個DMA 引擎,支持使用對應幀的緩沖區(qū)描述符結構,可以靈活地配置通道物理編碼模式(NRZ、FM、MAN), 選擇本地或者外部時鐘; 支持通過鎖相環(huán)路從接收數(shù)據(jù)流提取時鐘信號。S3C4510B的HDLC通道具有以下特點:
  (1)HDLC協(xié)議特征:標準檢測與同步、零插入與刪除、空閑檢測與發(fā)送、FCS生成和檢測(16位)、終止檢測與發(fā)送;
  (2)FIFO:發(fā)送和接收模塊都有8 B FIFO,提供CPU內部總線到HDLC串行接口之間的數(shù)據(jù)緩存;
  (3)DMA:HDLC通道的發(fā)送和接收支持DMA方式;
  (4)波特率生成器:HDLC通道包含一個可編程的波特率產生計數(shù)器,能夠產生各種波特率的傳輸速率;
  (5)PLL模塊:HDLC通道包含一個數(shù)字鎖相環(huán),提供了時鐘恢復功能,可從編碼后的數(shù)據(jù)流中迅速提取出時鐘信息。
  S3C4510B的HDLC 控制器功能結構如圖1所示。

 

  HDLC 控制器功能結構主要包括總線仲裁單元、DMA 控制器、8 B的發(fā)送/接收( Tx/Rx) FIFO、狀態(tài)/控制寄存器和物理收發(fā)器??偩€仲裁單元負責向CPU 申請系統(tǒng)總線,DMA 控制器使用緩沖描述符在無CPU 干預下控制數(shù)據(jù)幀的收發(fā),8 B的FIFO 結構對CPU 和串行接口的數(shù)據(jù)進行立即存儲,物理收發(fā)器控制HDLC 通道的運行模式、編解碼等,狀態(tài)/控制寄存器是運行的核心, 程序設計人員通過設置來檢測這些寄存器控制數(shù)據(jù)的收發(fā)。
2.2  HDLC協(xié)議實現(xiàn)
2.2.1 HDLC傳輸通道設計

  微波網絡管理系統(tǒng)主要用于管理和維護傳輸網絡中微波網絡及微波設備的性能、故障、告警和配置,實時監(jiān)測與管理微波網絡的運行狀況,系統(tǒng)由微波網管軟件與微波網管系統(tǒng)控制器組成。微波網管軟件通過訪問控制器監(jiān)測連接在網絡上的微波設備的性能狀態(tài),控制器通過HDLC 協(xié)議與微波設備通信,采集微波設備數(shù)據(jù)并存儲。
  HDLC傳輸通道連接如圖2所示。網管系統(tǒng)控制器通過RS-232接口與微波設備連接,接口芯片選用MAX3232,采用HDLC協(xié)議實現(xiàn)數(shù)據(jù)傳輸。不同微波站點的網管系統(tǒng)控制器間通過RS-485接口完成通信,接口芯片選用ADM3491,數(shù)據(jù)傳輸時同樣遵循HDLC協(xié)議。

 

2.2.2  HDLC協(xié)議實現(xiàn)
  系統(tǒng)HDLC協(xié)議傳輸支持2種數(shù)據(jù)傳輸模式: 中斷模式和DMA 模式。對于中斷模式, 由于CPU 需要主動干預緩沖區(qū)和I/O 模塊之間的數(shù)據(jù)傳送, 因此將會導致過多的系統(tǒng)切換開銷,降低CPU 利用率, 同時無法支持高速的數(shù)據(jù)傳輸。本系統(tǒng)采用DMA 模式。在DMA 模式下, S3C4510B 中的HDLC 控制器使用了緩沖區(qū)描述符BD (Buffer Descriptor) 來實現(xiàn)以幀為單位的數(shù)據(jù)發(fā)送和接收。BD 是S3C4510B 中HDLC 控制器用以實現(xiàn)DMA 模式下的數(shù)據(jù)收發(fā)而使用的數(shù)據(jù)結構, 且構成循環(huán)鏈表的形式,使用BD緩沖描述符結構,可以實現(xiàn)以幀為單位對數(shù)據(jù)進行接收和發(fā)送控制,只需要填寫相應BD結構的域信息,配置收發(fā)模式,具體的執(zhí)行由DMA單元控制完成。
  DMA方式下HDLC數(shù)據(jù)接收和發(fā)送的實現(xiàn)。首先要進行系統(tǒng)HDLC通道的初始化。實現(xiàn)步驟如下:
  (1)HDLC通道復位, 恢復其默認配置;
  (2)設置工作模式寄存器(HMODE)來配置HDLC工作模式;
  (3)設置控制寄存器(HCON)來控制HDLC通道的工作;
  (4)設置中斷使能寄存器(HINTEN)來控制HDLC通道的中斷產生;
  (5)設置站地址寄存器(HSAR0- HSAR3)和掩碼寄存器(HMASK);
  (6)建立DMA方式的發(fā)送和接收BUFFER描述符鏈表結構, 并初始化DMA發(fā)送BUFFER 緩沖描述符指針寄存器(DMATxPTR)和DMA接收BUFFER緩沖描述符指針寄存器(DMARxPTR);
  (7)使能HDLC通道的收發(fā)功能。
  DMA方式下HDLC通道的數(shù)據(jù)發(fā)送實現(xiàn)步驟如下:
  (1)讀取發(fā)送緩沖幀描述符指針寄存器DMATxPTR,得到當前發(fā)送幀描述符的地址,得到整個發(fā)送幀描述符的內容;
  (2)得到發(fā)送幀描述符中幀數(shù)據(jù)BUFFER起始地址;
  (3)將準備好的HDLC幀拷貝到BUFFER中;
  (4)設置當前幀描述符中的相應控制位;
  (5)將發(fā)送幀描述符的OWERSHIP位設置為DMA所有,使能HDLC的DMA發(fā)送。
  按上述步驟完成后, DMA即可主動將BUFFER中的數(shù)據(jù)拷貝到HDLC通道TxFIFO中發(fā)送出去。一幀發(fā)送完畢后,S3C4510B將已使用的發(fā)送BUFFER描述符的OWERSHIP位設置為CPU所有, 并將幀緩沖描述符指針寄存器DMATxPTR中的內容更新為下一個未使用的發(fā)送BUFFER描述符地址。
  HDLC通道數(shù)據(jù)接收實現(xiàn)步驟如下:
  (1)接收到數(shù)據(jù)時,DMA機制會從DMARxPTR指向的接收BUFFER描述符中找到接收BUFFER的起始地址, 然后把收到的數(shù)據(jù)寫入BUFFER;
  (2)如果接收無誤,S3C4510B自動更新DMARxPTR寄存器的值,使其指向下一個還未使用的接收BUFFER描述符,以備下一次接收使用。
3  系統(tǒng)驗證
  對系統(tǒng)進行調試、聯(lián)機測試。
  網管系統(tǒng)遵循HDLC協(xié)議傳輸微波設備性能數(shù)據(jù)。參數(shù)包括誤碼秒 ES、嚴重誤碼秒 SES、不可用秒數(shù)US以及總秒數(shù)TS及狀態(tài)數(shù)據(jù),包括輸出功率TX、輸出頻率TF、輸出電平RF、頻率RX以及輸出電源電壓,微波網管軟件通過查詢/輪詢方式訪問網管控制器,讀取微波設備數(shù)據(jù)。微波網管軟件通過HDLC協(xié)議傳輸?shù)奈⒉ㄔO備數(shù)據(jù)如圖3所示。


  HDLC協(xié)議在微波網管系統(tǒng)的正確實現(xiàn)說明了通過利用S3C4510B內嵌的HDLC控制器完成HDLC協(xié)議的封裝與解析,在實現(xiàn)系統(tǒng)功能的同時,簡化了電路設計,縮短了系統(tǒng)開發(fā)周期。
參考文獻
[1]  李駒光,聶雪媛.ARM應用系統(tǒng)開發(fā)詳解——基于S3C4510B的系統(tǒng)設計[M].北京:清華大學出版社,2003.
[2]  Samsung Electronics. S3C4510B User Manual.1999.
[3]  劉朋,金野. 基于S3C4510B和μClinux的HDLC接口設計實現(xiàn)[J]. 微計算機信息,2007(2):1-3.
[4]  談國文,張煒,朱丹,等. 基于HDLC協(xié)議的實時通信軟件的設計與實現(xiàn)[J].計算機工程與科學,2000(22):87-90.
[5]  高振斌,陳禾,韓月秋. HDLC協(xié)議RS-485總線控制器的FPGA實現(xiàn)[J].河北工業(yè)大學學報,2004(5):28-32.

此內容為AET網站原創(chuàng),未經授權禁止轉載。