<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > EDA/PCB > 設計應用 > 基于FPGA的高速同步HDLC通信控制器設計

基于FPGA的高速同步HDLC通信控制器設計

作者: 時(shí)間:2010-11-25 來(lái)源:網(wǎng)絡(luò ) 收藏

摘要:高級數據鏈路控制協(xié)議是一種面向比特的鏈路層協(xié)議,具有同步傳輸數據、冗余度低等特點(diǎn),是在領(lǐng)域中應用最廣泛的鏈路層協(xié)議之一。提出實(shí)現協(xié)議的主要模塊——CRC校驗模塊及‘0’比特插入模塊的實(shí)現方法。CRC校驗模塊采用狀態(tài)機設計方,而‘0’比特插入模塊是利用FIFO實(shí)現,為控制器的設計提供新的思路。該方法已在Spartan3s400開(kāi)發(fā)板上實(shí)現,并能正確傳輸。
關(guān)鍵詞:HDLC協(xié)議;CRC校驗;‘0’比特插入;

本文引用地址:http://dyxdggzs.com/article/191467.htm

高級數據鏈路控制HDLC(High-level Data Link Control)廣泛應用于數據通信領(lǐng)域,是確保數據信息可靠互通的重要技術(shù)。實(shí)施HDLC的一般方法通常是采用ASIC器件和軟件編程等。HDLC的ASIC芯片使用簡(jiǎn)易,功能針對性強,性能可靠,適合應用于特定用途的大批量產(chǎn)品中。但由于HDLC標準的文本較多,ASIC芯片出于專(zhuān)用性的目的難以通用于不同版本,缺乏應用靈活性。例如CCITT、ANSI、ISO/IEC等都有各種版本的HDLC標準,器件生產(chǎn)商都還有各自的標準,對HDLC的CRC序列生成多項式等有不同的規定。況且,專(zhuān)用于HDLC的ASIC芯片其片內數據存儲器容量有限,通常只有不多字節的FIFO可用。對于某些應用來(lái)說(shuō),當需要擴大數據緩存的容量時(shí),只能對ASIC芯片再外接存儲器或其他電
路,ASIC的簡(jiǎn)單易用性就被抵銷(xiāo)掉了。
是現場(chǎng)可編程門(mén)陣列,屬于超大規模集成電路,具有豐富的系統門(mén)、邏輯單元、塊RAM和IO引腳等硬件資源。由于FPGA具有重裝載功能,可以在其內部靈活實(shí)現各種數字電路設計,甚至可以動(dòng)態(tài)改變其內部設計,動(dòng)態(tài)實(shí)現不同的功能。
因此,采用FPGA實(shí)現HDLC是一種可行的方法。HDLC通信控制器主要是對數據進(jìn)行CRC校驗、‘0’比特插入和加幀頭幀尾操作。

1 “0”比特插入模塊
HDLC規程規定信息的傳送以幀為單位,每一幀的基本格式如圖1所示。

a.JPG
HDLC規程指定采用8 bit的01111110為標志序列,稱(chēng)為F標志。用于幀同步,表示1幀的開(kāi)始和結束,相鄰2幀之間的F,既可作為上一幀的結束,又可作為下一幀的開(kāi)始。標志序列也可以作為幀間填充字符,因而在數據鏈路上的各個(gè)數據站都要不斷搜索F標志,以判斷幀的開(kāi)始和結束。
由于HDLC具有固定的幀格式,以7EH為幀頭和幀尾,為了保證透明傳輸,即只有幀頭和幀尾出現連續的6個(gè)‘l’,其他地方不允許有連續5個(gè)以上的‘l’出現,否則就要進(jìn)行‘0’比特插入,即只要遇到連續5個(gè)‘1’,就在其后插入1個(gè)‘O’。根據傳輸數據量的大小可采用以下2種思路實(shí)現‘0’比特插入操作。
1.1 遇‘O’緩沖實(shí)現法
由于數據中出現多少個(gè)連續的‘1’是不可控的,故最終插入‘0’的個(gè)數也是不可控的。例如要發(fā)送的“有效數據”(包含地址字段、控制字段、信息字段、幀校驗字段)為320 bit,則最多會(huì )插入64個(gè)‘0’。數據是串行輸入,每插入1個(gè)‘0’,則數據由5位變成6位,則插‘0’后要輸入的數據就被“積壓”來(lái),插入的‘0’越多,“積壓”的數據就越多。如果采用文獻中的插‘0’方法,簡(jiǎn)單的將‘O’插入,將會(huì )丟失1位數據,設置1個(gè)64位的緩沖,每插入1個(gè)‘0’就把后面數據做為1位延時(shí),插‘0’后在把已經(jīng)延時(shí)1個(gè)時(shí)鐘周期的數據加進(jìn)來(lái),就保證不丟失數據。實(shí)際利用VHDL語(yǔ)言編譯時(shí),其VHDL代碼為:
b.JPG

c.JPG

上述VHDL的思路:矢量a的第64位到第l位分別為datain延時(shí)64個(gè)時(shí)鐘周期的串行數據到延時(shí)1個(gè)時(shí)鐘周期的串行數據,i的初始數據為O,每遇到連續5個(gè)‘1’,插入1個(gè)‘0’后,dataout輸出為datain延時(shí)i個(gè)時(shí)鐘周期的數據。這樣就做到了不丟失數據。圖2是利用ISE 9.1i仿真的波形圖。

25z.jpg
由圖2可看到插‘0’操作后,數據比未插‘0’前變長(cháng)了,而且變長(cháng)了多少位是由數據內容決定的。


上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: FPGA HDLC 通信 制器設計

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>