亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

        2010-09-19 08:41:10李志來
        電子設(shè)計工程 2010年8期
        關(guān)鍵詞:利用方法

        陳 晨 , 李志來 , 徐 偉 , 金 光

        (1.中國科學(xué)院 長春光學(xué)精密機械與物理研究所,吉林 長春 130033;2.中國科學(xué)院 研究生院,北京 100039)

        高級數(shù)據(jù)鏈路控制HDLC(High-level Data Link Control)廣泛應(yīng)用于數(shù)據(jù)通信領(lǐng)域,是確保數(shù)據(jù)信息可靠互通的重要技術(shù)。實施HDLC的一般方法通常是采用ASIC器件和軟件編程等。HDLC的ASIC芯片使用簡易,功能針對性強,性能可靠,適合應(yīng)用于特定用途的大批量產(chǎn)品中。但由于HDLC標(biāo)準(zhǔn)的文本較多,ASIC芯片出于專用性的目的難以通用于不同版本,缺乏應(yīng)用靈活性。例如 CCITT、ANSI、ISO/IEC等都有各種版本的HDLC標(biāo)準(zhǔn),器件生產(chǎn)商都還有各自的標(biāo)準(zhǔn),對HDLC的CRC序列生成多項式等有不同的規(guī)定。況且,專用于HDLC的ASIC芯片其片內(nèi)數(shù)據(jù)存儲器容量有限,通常只有不多字節(jié)的FIFO可用。對于某些應(yīng)用來說,當(dāng)需要擴大數(shù)據(jù)緩存的容量時,只能對ASIC芯片再外接存儲器或其他電路,ASIC的簡單易用性就被抵銷掉了[1]。

        FPGA是現(xiàn)場可編程門陣列,屬于超大規(guī)模集成電路,具有豐富的系統(tǒng)門、邏輯單元、塊RAM和IO引腳等硬件資源。由于FPGA具有重裝載功能,可以在其內(nèi)部靈活實現(xiàn)各種數(shù)字電路設(shè)計,甚至可以動態(tài)改變其內(nèi)部設(shè)計,動態(tài)實現(xiàn)不同的功能[2]。

        因此,采用FPGA實現(xiàn)HDLC是一種可行的方法。HDLC通信控制器主要是對數(shù)據(jù)進(jìn)行CRC校驗、‘0’比特插入和加幀頭幀尾操作。

        1 “0”比特插入模塊

        HDLC規(guī)程規(guī)定信息的傳送以幀為單位,每一幀的基本格式如圖1所示。

        圖1 HDLC規(guī)程格式Fig.1 HDLC protocols format

        HDLC規(guī)程指定采用8 bit的01111110為標(biāo)志序列,稱為F標(biāo)志。用于幀同步,表示1幀的開始和結(jié)束,相鄰2幀之間的F,既可作為上一幀的結(jié)束,又可作為下一幀的開始。標(biāo)志序列也可以作為幀間填充字符,因而在數(shù)據(jù)鏈路上的各個數(shù)據(jù)站都要不斷搜索F標(biāo)志,以判斷幀的開始和結(jié)束[3]。

        由于HDLC具有固定的幀格式,以7EH為幀頭和幀尾,為了保證透明傳輸,即只有幀頭和幀尾出現(xiàn)連續(xù)的6個‘1’,其他地方不允許有連續(xù)5個以上的‘1’出現(xiàn),否則就要進(jìn)行‘0’比特插入,即只要遇到連續(xù) 5個‘1’,就在其后插入 1個‘0’。根據(jù)傳輸數(shù)據(jù)量的大小可采用以下2種思路實現(xiàn)‘0’比特插入操作。

        1.1 遇‘0’緩沖實現(xiàn)法

        由于數(shù)據(jù)中出現(xiàn)多少個連續(xù)的‘1’是不可控的,故最終插入‘0’的個數(shù)也是不可控的。例如要發(fā)送的“有效數(shù)據(jù)”(包含地址字段、控制字段、信息字段、幀校驗字段)為320 bit,則最多會插入64個‘0’。數(shù)據(jù)是串行輸入,每插入1個‘0’,則數(shù)據(jù)由5位變成 6位,則插‘0’后要輸入的數(shù)據(jù)就被“積壓”來,插入的‘0’越多,“積壓”的數(shù)據(jù)就越多。如果采用文獻(xiàn)[4]中的插‘0’方法,簡單的將‘0’插入,將會丟失 1位數(shù)據(jù),設(shè)置1個64位的緩沖,每插入1個‘0’就把后面數(shù)據(jù)做為1位延時,插‘0’后在把已經(jīng)延時1個時鐘周期的數(shù)據(jù)加進(jìn)來,就保證不丟失數(shù)據(jù)。實際利用VHDL語言編譯時,其VHDL代碼為:

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

        由圖2可看到插‘0’操作后,數(shù)據(jù)比未插‘0’前變長了,而且變長了多少位是由數(shù)據(jù)內(nèi)容決定的。

        該方法編程簡單,占用FPGA資源少,在一個模塊內(nèi)就能完成‘0’比特插入操作。

        1.2 利用FIFO實現(xiàn)

        遇‘0’緩沖實現(xiàn)法在傳輸大容量數(shù)據(jù)時,需要設(shè)置許多位緩沖,這樣就耗費大量的FPGA內(nèi)部資源,而且隨著延時位數(shù)增加,門延時呈指數(shù)增長,累積到一定程度就會產(chǎn)生誤差,所有當(dāng)數(shù)據(jù)量大時,上述的方法就不再適用,可以利用FIFO實現(xiàn)。

        當(dāng)數(shù)據(jù)量大時,“積壓”的數(shù)據(jù)相應(yīng)也變大,可以利用FPGA內(nèi)部資源FIFO節(jié)省邏輯資源,提高邏輯速度。選擇異步FIFO,即讀/寫時鐘不是同一個,這樣可高速寫入數(shù)據(jù),再通過控制讀時鐘控制讀的信息。

        利用FPGA實現(xiàn)的VHDL代碼為:

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

        設(shè)計一個FIFO與上述VHDL代碼產(chǎn)生的模塊相連,電路圖如圖4所示。

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

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

        2 CRC校驗?zāi)K

        幀校驗字段用于對幀進(jìn)行循環(huán)冗余校驗,校驗的范圍從地址字段的第1個比特到信息字段的最后1個比特,但為了透明傳輸而插入的‘0’比特不在校驗范圍內(nèi)。

        CRC原理實際上就是在一個p位二進(jìn)制數(shù)據(jù)序列之后附加一個r位二進(jìn)制校驗碼,從而構(gòu)成一個總長為n=p+r位的二進(jìn)制序列,例如,p位二進(jìn)制數(shù)據(jù)序列D=[dp-1dp-2...d1d0],r位二進(jìn)制校驗碼R=[rr-1rr-2...r1r0],所得到的二進(jìn)制序列就是M=[dp-1dp-2...d1d0rr-1rr-2...r1r0],附加在數(shù)據(jù)序列之后的這個校驗碼與數(shù)據(jù)序列的內(nèi)容之間存在著某種特定的關(guān)系。如果因干擾等原因使數(shù)據(jù)序列中的某一位或某些位發(fā)生錯誤,這種特定關(guān)系破壞,因此,通過檢查這一關(guān)系,實現(xiàn)對數(shù)據(jù)正確性的檢驗[5]。

        要傳輸p=16位數(shù)據(jù)1001011010101011,選定的r=16的校驗序列為10001000000100001,對應(yīng)的FCS幀校驗列是用10010110101010110000000000000000(共 p+r=32位)對 2取模整除以10001000000100001后的余數(shù) 1010100011000001(共有r=16位)。因此,發(fā)送方應(yīng)發(fā)送的全部數(shù)據(jù)列為10010110101010111010100011000001。接收方將收到的32位數(shù)據(jù)對 2取模整除以 r校驗二進(jìn)制位列10001000000100001,如余數(shù)非0,則認(rèn)為有傳輸錯誤位。

        而多項式乘除法運算過程與普通代數(shù)多項式的乘除法相同。多項式的加減法運算以2為模,加減時不進(jìn)位或錯位,和邏輯異或運算一致,即加法和減法等價。則對上述例舉的數(shù)據(jù)的CRC計算過程如圖6所示。

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

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

        該方法思想簡單,是對2取模整除方法的模擬,直觀,易于理解,由于是串行輸入,不受需要CRC計算的數(shù)據(jù)位數(shù)限制。由于HDLC通信協(xié)議的最大優(yōu)點是對要傳輸?shù)男畔⑽碾姳忍亟Y(jié)構(gòu)無任何限制[6],也就是說,信息文電可以是任意的比特串,不會影響鏈路的監(jiān)控操作。因此,這里給出的CRC串行算法符合HDLC傳輸文電比特結(jié)構(gòu)任意的特點。

        3 程序加載驗證

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

        由圖8可知,對數(shù)據(jù)進(jìn)行CRC校驗,‘0’比特插入及加幀頭幀尾操作,發(fā)送數(shù)據(jù)正確,符合HDLC通信協(xié)議標(biāo)準(zhǔn)。

        4 結(jié)束語

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

        [1]王喜,吳祖民,魏武.HDLC的FPGA實現(xiàn)方法[J].通信與廣播電視,2005(3):23-29.

        WANG Xi,WU Zu-min,WEI Wu.Realization of FPGA with HDLC[J].Communication&Audio and Video,2005(3):23-29.

        [2]應(yīng)三從,張行.基于FPGA的HDLC協(xié)議控制器[J].四川大學(xué)學(xué)報:工程科學(xué)版,2008,40(3):116-120.

        YING San-cong,ZHANG Xing.New HDLC protocol controller based on the FPGA[J].Journal of Sichuan University:Engineering Science Edition;2008,40(3):116-120.

        [3]婁景藝,王魯平,李飚.HDLC控制協(xié)議的FPGA設(shè)計與實現(xiàn)[J].電子設(shè)計工程,2005(5):64-66.

        LOU Jing-yi,WANG Lu-ping,LI Biao.Design and implementation of a HDLC protocol controller based on the field programmable gate arrays[J].Electronic Design Engineering,2005(5):64-66.

        [4]王魯平,李飚,胡敏霞.一種基于FPGA的HDLC協(xié)議控制器[J].電子產(chǎn)品世界,2003(11):13-14.

        WANG Lu-ping,LI Biao,HU Min-xia.A HDLC protocol controller based on FPGA[J].Electronic Engineering&Product World,2003(06A):U013-U014.

        [5]范紅旗,王勝,祝依龍.CRC編解碼器及其FPGA實現(xiàn)[J].數(shù)據(jù)采集與處理,2006,12(2):97-100.

        FAN Hong-qi,WANG Sheng,ZHU Yi-long.CRC coder-encoder algorithm and its FPGA implementation[J].Journal of Data Acquisition&Processing,2006,21(B12):97-100.

        [6]李曉娟,黃翌.基于FPGA的HDLC設(shè)計實現(xiàn)[J].現(xiàn)代電子技術(shù),2007(6):35-37.

        LI Xiao-juan,HUANG Yi.HDLC design realization based on FPGA[J].Modern Electronics Technique,2007,30(6):35-37.

        猜你喜歡
        利用方法
        利用min{a,b}的積分表示解決一類絕對值不等式
        利用倒推破難點
        利用一半進(jìn)行移多補少
        學(xué)習(xí)方法
        利用數(shù)的分解來思考
        Roommate is necessary when far away from home
        利用
        可能是方法不對
        用對方法才能瘦
        Coco薇(2016年2期)2016-03-22 02:42:52
        四大方法 教你不再“坐以待病”!
        Coco薇(2015年1期)2015-08-13 02:47:34
        精品一区二区av天堂色偷偷| 国产成人综合久久精品推荐免费| 亚洲精品国产av一区二区| 国产精品成人av一区二区三区| 国产欧美性成人精品午夜| 精品久久久噜噜噜久久久| 日韩女人毛片在线播放| 色综合中文字幕综合网| 欧美激情乱人伦| 午夜福利92国语| 国产自产c区| 国产亚洲av一线观看| а天堂中文在线官网在线| 男受被做哭激烈娇喘gv视频| 国产在线视欧美亚综合| 午夜视频手机在线免费观看| 色天使久久综合网天天| 国产熟妇人妻精品一区二区动漫 | 三级全黄裸体| 国产人妻久久精品二区三区| 美女爽好多水快进来视频| 邻居少妇太爽在线观看| 日韩视频在线观看| 在教室伦流澡到高潮h麻豆| 久久91精品国产91久久麻豆| 香港三级日本三韩级人妇久久| 丰满少妇人妻无码专区| 欧美在线三级艳情网站| 一区二区三区在线观看日本视频| 国产日产韩国av在线| 国产成熟人妻换╳╳╳╳| 欧美日韩国产亚洲一区二区三区| av男人的天堂第三区| 成人免费a级毛片无码片2022| 久久婷婷国产剧情内射白浆| 国产熟女av一区二区三区四季| 亚洲国产色婷婷久久精品| 4hu四虎永久在线观看 | 日产精品一区二区三区免费| 麻神在线观看免费观看| 被黑人猛躁10次高潮视频|