国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

HDLC協(xié)議原理及FPGA實(shí)現(xiàn)研究

2023-06-15 23:32:49仇曉濤
無(wú)線(xiàn)互聯(lián)科技 2023年3期

仇曉濤

摘要:高級(jí)數(shù)據(jù)鏈路控制(HDLC)協(xié)議是在數(shù)字通信領(lǐng)域中廣泛應(yīng)用的協(xié)議之一,用以在遠(yuǎn)程用戶(hù)之間實(shí)現(xiàn)資源共享和信息交互。HDLC協(xié)議是一種面向比特流的數(shù)據(jù)鏈路層協(xié)議,其特點(diǎn)有高效性、可靠的透明傳輸以及強(qiáng)大的差錯(cuò)檢測(cè)功能。文章介紹了HDLC協(xié)議的幀結(jié)構(gòu),并研究了HDLC協(xié)議在發(fā)送端如何組幀以及接收端實(shí)現(xiàn)解幀的過(guò)程,提出一種利用FPGA編程實(shí)現(xiàn)HDLC協(xié)議的硬件處理方法,將編寫(xiě)的代碼下載到Xilinx FPGA芯片中并測(cè)試通過(guò),證實(shí)了HDLC協(xié)議利用FPGA實(shí)現(xiàn)的可行性。與HDLC專(zhuān)用芯片相比,該方法可靠性高、靈活性好以及實(shí)現(xiàn)簡(jiǎn)單,具有良好的應(yīng)用前景。

關(guān)鍵詞:HDLC協(xié)議;FPGA;CRC校驗(yàn)

中圖分類(lèi)號(hào):TN919.1? 文獻(xiàn)標(biāo)志碼:A

0 引言

高級(jí)數(shù)據(jù)鏈路控制(High-level Data Link Control,HDLC)協(xié)議是在數(shù)字通信領(lǐng)域中廣泛使用的協(xié)議之一,用以實(shí)現(xiàn)遠(yuǎn)程用戶(hù)間資源共享以及信息交互。HDLC協(xié)議是一種面向比特流的數(shù)據(jù)鏈路層協(xié)議,其特點(diǎn)有高效性、可靠的透明傳輸以及強(qiáng)大的差錯(cuò)檢測(cè)功能。由于市場(chǎng)上的HDLC專(zhuān)用芯片考慮到功能的完整性和經(jīng)濟(jì)性,這就使得控制芯片的處理操作變得較為復(fù)雜。針對(duì)某些特定場(chǎng)合的通信應(yīng)用場(chǎng)景,本研究只采用了HDLC協(xié)議中最符合系統(tǒng)要求的部分功能,設(shè)計(jì)了一種應(yīng)用靈活、功能相對(duì)簡(jiǎn)單的小型化HDLC協(xié)議控制器。本設(shè)計(jì)中采用Xilinx公司的K7芯片系列XC7K480T來(lái)實(shí)現(xiàn)HDLC協(xié)議[1]。

1 HDLC協(xié)議簡(jiǎn)介

HDLC協(xié)議的優(yōu)點(diǎn)包括數(shù)據(jù)報(bào)文傳輸具有可靠性、高速性、透明性和靈活性等特點(diǎn);協(xié)議以最基本的比特流進(jìn)行傳輸,不需要數(shù)據(jù)必須是規(guī)定的字符集;透明傳輸使用的“0”比特插入法便于實(shí)現(xiàn)。因此,目前很多計(jì)算機(jī)網(wǎng)絡(luò)設(shè)計(jì)及數(shù)字通信領(lǐng)域中涉及的數(shù)據(jù)鏈路層普遍使用HDLC協(xié)議[2]。HDLC協(xié)議是一種面向比特流的數(shù)據(jù)鏈路層協(xié)議,采用統(tǒng)一的幀結(jié)構(gòu)形式進(jìn)行數(shù)據(jù)的傳輸,HDLC幀結(jié)構(gòu)如表1所示[2]。HDLC幀協(xié)議中每幀數(shù)據(jù)以標(biāo)志字段“01111110”作為幀頭開(kāi)始,又以標(biāo)志字段“01111110”作為幀尾結(jié)束,標(biāo)志字段“01111110”具有指示幀起始和終止以及幀同步的作用。為了避免引起歧義,標(biāo)志字段“01111110”不允許出現(xiàn)在幀的內(nèi)部。為了保證標(biāo)志字段“01111110”的唯一性而又兼顧幀內(nèi)數(shù)據(jù)的透明傳輸,在發(fā)送數(shù)據(jù)幀時(shí)采用‘0比特插入法來(lái)解決?!?”比特插入法即在發(fā)送端發(fā)送數(shù)據(jù)時(shí)檢查所有的字段(除幀頭和幀尾外),一旦發(fā)現(xiàn)發(fā)送的數(shù)據(jù)比特流中有連續(xù)的5個(gè)“1”出現(xiàn)時(shí),就自動(dòng)在其后插入1個(gè)“0”,然后繼續(xù)發(fā)送后續(xù)的比特流。接收端則進(jìn)行相反的操作,一旦識(shí)別出幀標(biāo)志字段“01111110”之后的比特流不是“01111110”則啟動(dòng)接收程序:若監(jiān)測(cè)出連續(xù)5個(gè)“1”和1個(gè)“0”,則自動(dòng)刪除該“0”,以恢復(fù)原來(lái)的比特流;若識(shí)別出連續(xù)6個(gè)“1”,表示數(shù)據(jù)結(jié)束,完成該數(shù)據(jù)幀的接收。地址字段通常用在多點(diǎn)鏈路中,用來(lái)存放從站的地址。HDLC定義了3種不同的幀:信息幀、監(jiān)督幀和無(wú)編號(hào)幀,可以根據(jù)控制字段來(lái)區(qū)分,控制字段使用前兩位用來(lái)區(qū)別不同格式的幀;信息字段為待傳輸?shù)臄?shù)據(jù),其包含了用戶(hù)數(shù)據(jù)的所有比特序列;幀校驗(yàn)字段包括地址字段、控制字段和信息字段的校驗(yàn)和,但不包括標(biāo)志字段,該字段一般使用的是16 bit的CRC校驗(yàn)序列。針對(duì)某些特殊的應(yīng)用場(chǎng)景,可以不使用幀結(jié)構(gòu)中的地址字段和控制字段,可以簡(jiǎn)化HDLC幀結(jié)構(gòu)。

2 HDLC的FPGA實(shí)現(xiàn)

隨著FPGA功能的日益強(qiáng)大,可以將各種不同功能的應(yīng)用封裝成IP核集成在FPGA中實(shí)現(xiàn),用于滿(mǎn)足不同應(yīng)用場(chǎng)景的需求。因此,也可以通過(guò)VHDL語(yǔ)言編程[3],然后下載到FPGA中來(lái)實(shí)現(xiàn)HDLC協(xié)議。由于FPGA器件具有可重復(fù)編程和高集成度的特點(diǎn),既能靈活地使用同時(shí)還兼顧了編程速度,在數(shù)字電路設(shè)計(jì)領(lǐng)域得到了廣泛的應(yīng)用。

2.1 HDLC協(xié)議實(shí)現(xiàn)的總體結(jié)構(gòu)

基于上述對(duì)HDLC協(xié)議原理的分析,進(jìn)一步細(xì)分了HDLC協(xié)議的功能模塊,本研究采用了不同功能的子模塊來(lái)實(shí)現(xiàn)HDLC協(xié)議。

HDLC協(xié)議實(shí)現(xiàn)的總體結(jié)構(gòu)如圖1所示[4-5]。HDLC功能主要包括發(fā)送組幀模塊和接收解幀模塊。發(fā)送組幀模塊包括產(chǎn)生標(biāo)志字段“01111110”、數(shù)據(jù)的并串轉(zhuǎn)換移位、CRC序列生成器、0比特插入等功能;接收解幀模塊包括搜索標(biāo)志字段“01111110”、0比特刪除、CRC校驗(yàn)、數(shù)據(jù)的串并轉(zhuǎn)換移位等功能。

2.2 發(fā)送組幀模塊設(shè)計(jì)

發(fā)送組幀模塊采用有限狀態(tài)機(jī)結(jié)構(gòu)的設(shè)計(jì)模式,狀態(tài)機(jī)的狀態(tài)包括send_idle,load_flag,shift_flag,load,shift,crc1,crc2。復(fù)位時(shí)狀態(tài)機(jī)運(yùn)行在send_idle狀態(tài),主要是初始化各個(gè)信號(hào)值,load_flag狀態(tài)主要是產(chǎn)生標(biāo)志字段“01111110”,shift_flag狀態(tài)主要是處理數(shù)據(jù)并發(fā)送出去,load狀態(tài)主要是根據(jù)輸入的數(shù)據(jù)序列計(jì)算16位的CRC校驗(yàn)碼,并存儲(chǔ)起來(lái),crc1和crc2主要是對(duì)計(jì)算好的CRC值以倒序的方式進(jìn)行賦值。

在發(fā)送端對(duì)數(shù)據(jù)進(jìn)行組幀處理時(shí)(標(biāo)志字段“01111110”除外),模塊內(nèi)部以計(jì)數(shù)器方式統(tǒng)計(jì)發(fā)送的連續(xù)“1”的個(gè)數(shù),當(dāng)計(jì)數(shù)器值計(jì)數(shù)到“5”時(shí),后續(xù)則輸出一個(gè)“0”發(fā)送,并且將計(jì)數(shù)器進(jìn)行清零;如果計(jì)數(shù)器值沒(méi)有計(jì)數(shù)到“5”時(shí),且有數(shù)據(jù)“0”輸出,也要進(jìn)行計(jì)數(shù)器清零,這樣的處理操作完成了發(fā)送組幀模塊中的插入“0”的功能。

CRC校驗(yàn)字段采用的是16位的CRC校驗(yàn)碼,是基于G(x)=x16+x12+x5+1的生成多項(xiàng)式產(chǎn)生的。發(fā)送的數(shù)據(jù)經(jīng)過(guò)CRC運(yùn)算并將運(yùn)算結(jié)果附在數(shù)據(jù)后面,如若CRC的二進(jìn)制數(shù)值中出現(xiàn)5個(gè)連續(xù)的“1”也要進(jìn)行插“0”操作。

為了保證通信雙方能夠有效檢測(cè)到幀頭,避免出現(xiàn)誤判的情況,在發(fā)送數(shù)據(jù)時(shí),可以發(fā)送兩個(gè)或者多個(gè)幀頭標(biāo)志字段“01111110”。

2.3 接收解幀模塊設(shè)計(jì)

接收解幀模塊同樣采用有限狀態(tài)機(jī)結(jié)構(gòu)的設(shè)計(jì)模式,狀態(tài)機(jī)的狀態(tài)包括:search,shift_flag,shift_add1,shift_add2,shift_data,load_last1,crc。

search狀態(tài)主要是用來(lái)搜索數(shù)據(jù)序列中的幀頭標(biāo)志字段“01111110”,這里采用8bit移位寄存器進(jìn)行搜索幀頭標(biāo)志字。首先是右移寄存器1位,將最低位的數(shù)據(jù)移出,然后將接收的數(shù)據(jù)放在寄存器的最高位,存儲(chǔ)接收的數(shù)據(jù),依次右移寄存器,當(dāng)寄存器中的數(shù)據(jù)變?yōu)椤?1111110”時(shí),就判定為搜索到了幀頭標(biāo)志字。

當(dāng)在search狀態(tài)中檢測(cè)到幀頭標(biāo)志后,狀態(tài)機(jī)就跳轉(zhuǎn)至shift_flag狀態(tài),并且在該狀態(tài)中出現(xiàn)有效數(shù)據(jù)后,進(jìn)入shift_data狀態(tài)。此狀態(tài)包括對(duì)數(shù)據(jù)序列的刪“0”處理、產(chǎn)生16位的CRC校驗(yàn)碼、獲取有效數(shù)據(jù)并存入RAM。

當(dāng)在shift_data狀態(tài)中檢測(cè)到幀尾標(biāo)志時(shí),狀態(tài)機(jī)進(jìn)入CRC狀態(tài),該狀態(tài)主要是將本地產(chǎn)生的CRC校驗(yàn)碼與原始數(shù)據(jù)序列中的CRC進(jìn)行比對(duì),并判斷結(jié)果是否一致,以此來(lái)判斷數(shù)據(jù)傳輸?shù)倪^(guò)程中是否產(chǎn)生了錯(cuò)誤。

3 FPGA實(shí)現(xiàn)運(yùn)行結(jié)果

使用硬件描述語(yǔ)言VHDL進(jìn)行編程,將編譯好的代碼程序下載到Xilinx FPGA XC7K480T中[1]。測(cè)試時(shí),在發(fā)送端,將8個(gè)字節(jié)的十六進(jìn)制數(shù)據(jù)0x22寫(xiě)入RAM,通過(guò)Vivado的在線(xiàn)邏輯分析儀進(jìn)行觀察,發(fā)送組幀模塊的運(yùn)行結(jié)果如圖2所示,接收解幀模塊的運(yùn)行結(jié)果如圖3所示。

通過(guò)硬件測(cè)試,接收端可以正確接收到8個(gè)字節(jié)的數(shù)據(jù)0x22,數(shù)據(jù)序列中發(fā)送的CRC校驗(yàn)碼為0x83CE。

4 結(jié)語(yǔ)

本研究介紹了HDLC協(xié)議,并分析了其具體功能的實(shí)現(xiàn),在此基礎(chǔ)上使用硬件描述語(yǔ)言VHDL語(yǔ)言設(shè)計(jì)了HDLC協(xié)議的發(fā)送和接收模塊,并將代碼下載到Xilinx FPGA XC7K480T芯片中測(cè)試通過(guò),證實(shí)利用FPGA實(shí)現(xiàn)HDLC協(xié)議的可操作性。還可以根據(jù)實(shí)際應(yīng)用場(chǎng)景的需求對(duì)代碼進(jìn)行更改以適應(yīng)不同的配置,能兼顧速度和靈活性或者擴(kuò)展多路HDLC以滿(mǎn)足數(shù)量要求等。因此,在數(shù)字通信系統(tǒng)中,利用FPGA實(shí)現(xiàn)數(shù)據(jù)鏈路層的HDLC協(xié)議是一種不錯(cuò)的選擇,有廣闊的應(yīng)用前景。

參考文獻(xiàn)

[1]李云松,宋銳,雷杰,等.Xilinx FPGA設(shè)計(jì)基礎(chǔ)[M].西安:西安電子科技大學(xué)出版社,2008.

[2]謝希仁.計(jì)算機(jī)網(wǎng)絡(luò)[M].2版.北京:電子工業(yè)出版社,1999.

[3]侯伯亨,顧新.VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)[M].西安:西安電子科技大學(xué)出版社,1999.

[4]張必英.基于FPGA的HDLC協(xié)議控制器的設(shè)計(jì)[D].哈爾濱:哈爾濱工程大學(xué),2005.

[5]宋飛,李志蜀.HDLC協(xié)議在FPGA通信系統(tǒng)中的實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用,2009(4):1092-1094.

(編輯 傅金睿)

Research on HDLC protocol principle and implementation based on FPGA

Qiu? Xiaotao

(CEC Defense Technology Company Limited, Nanjing 210000, China)

Abstract:? High-level data link control protocol is one of the most widely used protocols in the digital communication field, which is used to realize resource sharing and information interaction between remote users. It is a bit oriented high level data link control procedure, which has the characteristics of high efficiency, synchronous transmission and powerful error detection function. This paper introduces the frame structure of HDLC protocol, and studies the implementation process of framing at the sending end and deframing at the receiving end of HDLC protocol. This study proposes a hardware processing method of implementing HDLC based on FPGA. The code is downloaded to Xilinx FPGA chip and tested, which confirms the feasibility based on FPGA. Compared with the special HDLC chip, this method has the advantages of high reliability, good flexibility and simple implementation, and has a good application prospect.

Key words: HDLC protocol; FPGA; CRC

金昌市| 甘谷县| 卢湾区| 临高县| 新泰市| 金华市| 中宁县| 电白县| 吐鲁番市| 惠州市| 搜索| 延津县| 罗平县| 太湖县| 博罗县| 米泉市| 安图县| 吕梁市| 佳木斯市| 上虞市| 香港 | 中卫市| 监利县| 成武县| 龙江县| 华池县| 淮滨县| 樟树市| 青浦区| 连山| 阿拉尔市| 麻城市| 石嘴山市| 鄱阳县| 清河县| 蓝山县| 孟村| 丰原市| 金昌市| 宾川县| 湛江市|