《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于FPGA的高速同步HDLC通信控制器設計
基于FPGA的高速同步HDLC通信控制器設計
電子設計工程
陳 晨,李志來,徐 偉,金 光
摘要: 摘要:高級數據鏈路控制HDLC協議是一種面向比特的鏈路層協議,具有同步傳輸數據、冗余度低等特點,是在通信領域中應用最廣泛的鏈路層協議之一。提出實現HDLC通信協議的主要模塊——CRC校驗模塊及‘0&
Abstract:
Key words :

摘要:高級數據鏈路控制HDLC協議是一種面向比特的鏈路層協議,具有同步" title="同步">同步傳輸數據、冗余度低等特點,是在通信領域中應用最廣泛的鏈路層協議之一。提出實現HDLC通信協議" title="HDLC通信協議">HDLC通信協議的主要模塊——CRC校驗模塊及‘0’比特插入模塊的FPGA" title="FPGA">FPGA實現方法。CRC校驗模塊采用狀態機設計方,而‘0’比特插入模塊是利用FIFO實現,為HDLC通信控制器的設計提供新的思路。該方法已在Spartan3s400開發板上實現,并能正確傳輸。
關鍵詞:HDLC協議;CRC校驗;‘0’比特插入;FPGA

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

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

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

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

25z.jpg
    由圖2可看到插‘0’操作后,數據比未插‘0’前變長了,而且變長了多少位是由數據內容決定的。
    該方法編程簡單,占用FPGA資源少,在一個模塊內就能完成‘0’比特插入操作。
1.2 利用FIFO實現
    遇‘0’緩沖實現法在傳輸大容量數據時,需要設置許多位緩沖,這樣就耗費大量的FPGA內部資源,而且隨著延時位數增加,門延時呈指數增長,累積到一定程度就會產生誤差,所有當數據量大時,上述的方法就不再適用,可以利用FIFO實現。
    當數據量大時,“積壓”的數據相應也變大,可以利用FPGA內部資源FIFO節省邏輯資源,提高邏輯速度。選擇異步FIFO,即讀/寫時鐘不是同一個,這樣可高速寫入數據,再通過控制讀時鐘控制讀的信息。
    利用FPGA實現的VHDL代碼為:

d.JPG

    其基本思想是,一旦遇到5個連續的‘1’,就“抹掉”1個時鐘,利用ISE 9.1i仿真的波形圖如圖3所示。

25z.jpg


    設計一個FIFO與上述VHDL代碼產生的模塊相連,電路圖如圖4所示。

g.JPG


    利用ISE 9.1i仿真得到的波形圖如圖5所示??煽吹綄atain進行了‘0’比特插入操作,保證數據不丟失。而且該方法可根據所選器件的片內資源設置任意大容量的FIFO,并且當片內FIFO的存儲量不夠時,可先存入一部分數據,等FIFO讀取一部分后,不滿時再存入一部分數據。

25x.jpg


    ‘O’比特刪除操作是‘0’比特插入操作的反過程。在接收時為了還原原本的信息,就要刪除發送時插入的‘O’。以逐位延時法為例,dataout最一開始輸出延時了64個時鐘周期的串行數據,i的初始值為64,當遇到‘lllll’時,i減1,輸出延時了i個時鐘周期的串行數據。而利用FIFO的方法就是遇到‘lllll’,抹去1個寫時鐘,將數據寫入FIFO,再按規定的時鐘把數據讀取,當然寫入的時鐘可用較高的時鐘周期。

2 CRC校驗模塊
    幀校驗字段用于對幀進行循環冗余校驗,校驗的范圍從地址字段的第1個比特到信息字段的最后1個比特,但為了透明傳輸而插入的‘0’比特不在校驗范圍內。
    CRC原理實際上就是在一個p位二進制數據序列之后附加一個r位二進制校驗碼,從而構成一個總長為n=p+r位的二進制序列,例如,P位二進制數據序列,r位二進制校驗碼,所得到的二進制序列就是,附加在數據序列之后的這個校驗碼與數據序列的內容之間存在著某種特定的關系。如果因干擾等原因使數據序列中的某一位或某些位發生錯誤,這種特定關系破壞,因此,通過檢查這一關系,實現對數據正確性的檢驗。
    要傳輸p=16位數據1001011010101011,選定的r=16的校驗序列為10001000000100001,對應的FCS幀校驗列是用100101101010101100000 00000000000(共p+r=32位)對2取模整除以10001000000100001后的余數1010100011000001(共有r=16位)。因此,發送方應發送的全部數據列為
10010110101010111010100011000001。接收方將收到的32位數據對2取模整除以r校驗二進制位列10001000000100001,如余數非O,則認為有傳輸錯誤位。
    而多項式乘除法運算過程與普通代數多項式的乘除法相同。多項式的加減法運算以2為模,加減時不進位或錯位,和邏輯異或運算一致,即加法和減法等價。則對上述例舉的數據的CRC計算過程如圖6所示。

i.JPG


    模擬上述計算CRC校驗值的方法,不難想到可用狀態機實現,設置一個17位的矢量,檢驗最高位是否為零。如果為零,則跳轉到狀態1,即所有位左移,最低位補1位數據;如果不為零,則跳轉到狀態0,最低位補1位數據,與“00010000001000010”異或,(以CRC-CCITT為例,由于y16與‘1’異或必為‘0’,datain與‘0’異或還為datain),這種思路的VHDL代碼如下:

k.JPG
    圖7為該VHDL代碼的仿真波形,可看到該方法模擬對2取模整除的一步步計算。

25x.jpg


    該方法思想簡單,是對2取模整除方法的模擬,直觀,易于理解,由于是串行輸入,不受需要CRC計算的數據位數限制。由于HDLC通信協議的最大優點是對要傳輸的信息文電比特結構無任何限制,也就是說,信息文電可以是任意的比特串,不會影響鏈路的監控操作。因此,這里給出的CRC串行算法符合HDLC傳輸文電比特結構任意的特點。

3 程序加載驗證
    經過邏輯綜合和時序仿真后,利用ISE 9.1i集成開發軟件將程序燒入FPGA,利用示波器觀測FPGA按HDLC通信協議標準發出的信號。如要發送的“有效信號”(不含幀頭幀尾,未進行CRC校驗及‘O’比特插入之前的原始數據)為“llll llll”,則經過FPGA處理后應發出的數據為“0111 1110 1111 1011 1000 1111 0111 1000 0011 1111 0”,利用示波器檢測到的信號波形如圖8所示。

n.JPG
    由圖8可知,對數據進行CRC校驗,‘0’比特插入及加幀頭幀尾操作,發送數據正確,符合HDLC通信協議標準。

4 結束語
    由于HDLC通信協議具有透明傳輸、可靠性高等優點,在數據鏈路層應用廣泛,而FPGA更具有靈活、高性能、低成本、平臺化、可定制等優點,具有系統級能的復雜可編程邏輯器件和現場可編程門陣列實現可編程片上系統也成為今后的發展方向。本文提出的基于FPGA實現HDL-C/SDLC協議方法采用ISE 9.1i編譯、綜合、仿真、布線、燒寫,ISE軟件支持器件多,功能強大,操作更方便,因此,該實現方法具有很強的實用性,另外,程序加載入FPGA后發送數據正確,說明該實現方法實用、有效。
 

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美视频免费看| 狠狠v欧美v日韩v亚洲ⅴ| 卡一卡二国产精品| 欧美一级网站| 亚洲中字黄色| 亚洲一区二区日本| 亚洲午夜精品在线| 在线视频一区二区| 99国产精品99久久久久久粉嫩| 亚洲大胆人体视频| 亚洲成人资源网| 久久精品卡一| 亚洲福利电影| 亚洲电影网站| 亚洲国产第一页| 亚洲国产精品va在看黑人| 亚洲国产成人tv| 91久久黄色| 亚洲乱码精品一二三四区日韩在线 | 亚洲精品欧洲| 亚洲另类春色国产| 一本大道久久a久久综合婷婷 | 亚洲另类视频| 一二三区精品| 亚洲综合国产| 久久国产精品久久久久久| 亚洲国产成人av在线| 日韩视频在线免费| 亚洲一区二区精品在线| 亚洲欧美在线另类| 久久久精品性| 欧美激情第8页| 欧美午夜精品理论片a级按摩 | 亚洲免费视频一区二区| 香蕉成人啪国产精品视频综合网| 欧美一区二区三区播放老司机 | 国产一区二区三区电影在线观看 | 一区二区三区欧美| 亚洲欧美成人在线| 亚洲国产精品va在线看黑人动漫 | 亚洲欧美文学| 亚洲国产婷婷综合在线精品| 亚洲精品字幕| 亚洲一区尤物| 久久精品国产欧美激情| 欧美成人一品| 欧美性天天影院| 国产主播一区| 亚洲精品一区在线| 亚洲欧美一区二区三区在线| 亚洲大片在线观看| 一区二区三区精品视频| 欧美一区二区在线免费观看| 免费试看一区| 国产精品久久久久久妇女6080| 国产亚洲欧美一级| 亚洲另类春色国产| 午夜影院日韩| 夜夜嗨av色综合久久久综合网 | 久久国产免费看| 欧美激情欧美激情在线五月| 国产精品蜜臀在线观看| 在线国产亚洲欧美| 99国产精品视频免费观看一公开| 性一交一乱一区二区洋洋av| 亚洲精品一区在线观看| 欧美一二三视频| 欧美激情麻豆| 国户精品久久久久久久久久久不卡| 亚洲精品午夜精品| 久久超碰97中文字幕| 亚洲综合导航| 欧美国产第一页| 国产日韩欧美在线一区| 亚洲另类视频| 亚洲国产精品精华液2区45| 亚洲欧美日韩爽爽影院| 欧美电影免费观看高清| 国产欧美精品一区aⅴ影院| 亚洲九九九在线观看| 欧美亚洲一区二区在线| 亚洲午夜一区二区三区| 欧美xart系列高清| 国产一区二区精品| 亚洲视频在线一区观看| 日韩写真视频在线观看| 久久夜色精品国产欧美乱极品| 国产精品久久久久三级| 亚洲日本欧美在线| 亚洲国产精品www| 久久精品中文字幕一区| 国产精品久久久久久av福利软件| 亚洲啪啪91| 亚洲黄色天堂| 久久久噜噜噜| 国产一区二区精品久久91| 亚洲一区自拍| 亚洲午夜高清视频| 欧美激情精品久久久久久黑人| 韩国免费一区| 欧美亚洲一级| 欧美在线黄色| 国产欧美精品一区| 亚洲综合三区| 亚洲一区在线观看免费观看电影高清| 欧美精品乱人伦久久久久久| 在线日韩成人| 亚洲国产精品一区二区久| 久久人人看视频| 国产综合激情| 久久精品国产99精品国产亚洲性色 | 亚洲综合精品| 亚洲欧美日韩系列| 国产精品久久久久久久7电影 | 久久亚洲视频| 国产一区二区中文| 欧美在现视频| 久久深夜福利| 一区国产精品| 亚洲韩国精品一区| 欧美成人资源| 亚洲精品免费在线播放| 日韩亚洲精品电影| 欧美日韩国产欧| 亚洲剧情一区二区| 中日韩午夜理伦电影免费| 欧美日韩一区自拍| 亚洲少妇在线| 香蕉乱码成人久久天堂爱免费| 国产精品久久久999| 亚洲一区日韩在线| 欧美在线观看网站| 国产在线拍揄自揄视频不卡99| 久久成人精品无人区| 欧美sm极限捆绑bd| 亚洲精品久久久久久下一站| 一区二区欧美日韩视频| 国产精品久久二区| 午夜精品理论片| 老司机aⅴ在线精品导航| 亚洲盗摄视频| 日韩亚洲国产精品| 欧美午夜激情小视频| 亚洲一区二区成人| 久久精彩免费视频| 亚洲电影在线播放| 一区二区欧美日韩| 国产精品免费网站| 久久国产夜色精品鲁鲁99| 免费在线观看一区二区| 亚洲精品久久久久久久久久久久 | 欧美在线亚洲| 欧美好骚综合网| 99精品欧美一区二区三区综合在线 | 亚洲视频二区| 国产小视频国产精品| 亚洲电影在线看| 欧美人与性动交cc0o| 亚洲性感美女99在线| 久久久久久久成人| 91久久精品美女| 性xx色xx综合久久久xx| 一区在线电影| 亚洲在线视频网站| 黄色精品网站| 亚洲手机在线| 国内欧美视频一区二区| 99这里有精品| 国产欧美一区二区视频| 亚洲精品免费网站| 国产精品视频观看| 亚洲国产一区二区三区a毛片| 亚洲午夜一区| 国产精品一区二区你懂的| 亚洲欧美日韩精品在线| 免费视频久久| 亚洲一区二区三区中文字幕 | 欧美不卡一区| 亚洲视频在线看| 欧美成人国产| 午夜精品久久久久久久久久久| 欧美黄色小视频| 午夜精品久久久久久久| 欧美精品v日韩精品v国产精品 | 狠狠色丁香婷综合久久| 中日韩在线视频| 激情av一区| 午夜精品免费| 亚洲精品视频一区| 久久天堂av综合合色| 亚洲一级黄色片| 欧美激情在线狂野欧美精品| 午夜一区二区三视频在线观看 | 亚洲资源在线观看| 欧美69视频| 欧美尤物一区| 国产精品每日更新在线播放网址| 最新精品在线| 国产视频久久| 亚洲淫性视频|