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

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

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

 

 

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

 

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

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

 

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


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

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。