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

        ?

        The Implementation of CRC Algorithm Based on FPGA

        2015-10-13 07:30:42ZHANGYanRENYongfengQILeiYAOZong
        電子器件 2015年1期
        關(guān)鍵詞:數(shù)據(jù)位校驗碼原始數(shù)據(jù)

        ZHANG Yan,REN Yongfeng,QI Lei,YAO Zong

        (Science and Dynamic Testing of Ministry and Education Key Laboratory Instrument of North University of China,Taiyuan 030051,China)

        The Implementation of CRC Algorithm Based on FPGA

        ZHANG Yan,REN Yongfeng*,QI Lei,YAO Zong

        (Science and Dynamic Testing of Ministry and Education Key Laboratory Instrument of North University of China,Taiyuan 030051,China)

        As FPGA is high speed,high efficiency,flexible and stable,high integration,etc.,so the use of FPGA in serial communications to achieve serial communication is essential.Due to the uncertainty in communication transmission and interference,serial communication often appears abnormal situation.Thus,adding the CRC in serial communication,can greatly improve the reliability of communication.On the basis of the discussion about the principles of the CRC,we present with the principle of hardware achievement and uses VHDL hardware description language to achieve CRC check,to verify the feasibility of the program.

        electron;FPGA;CRC check;serial communication;VHDL

        信息在傳遞過程中,可能因某種原因使傳輸?shù)臄?shù)據(jù)發(fā)生錯誤。為減少和避免這類錯誤的發(fā)生,除提高硬件的可靠性外,在數(shù)據(jù)的編碼上也應(yīng)提供檢錯和糾錯的支持。具體做法是:在要傳送的數(shù)據(jù)代碼中加入若干個校驗位,使之在傳送過程中若發(fā)生錯誤則會生成非法代碼而被發(fā)現(xiàn),甚至能根據(jù)非法代碼確定錯誤的位置而給予糾正,這種具有檢錯或糾錯能力的編碼即校驗碼[2]。CRC碼也叫循環(huán)冗余校驗碼,它是一種高效能的檢錯和糾錯碼,它可以把99.997%以上的各種錯誤都檢查出來,是數(shù)據(jù)通信領(lǐng)域中最常用的一種差錯校驗碼;其特征是信息字段和校驗字段的長度可以任意選定[3]。

        1 CRC校驗原理

        CRC校驗碼是一種典型的分組碼,碼組的構(gòu)成如圖1所示,由k個信息碼元和n-k個檢驗碼元構(gòu)成,CRC碼也稱為('n,k)碼。

        圖1 CRC校驗碼

        現(xiàn)以圖2為例說明CRC校驗原理:CRC校驗原理類似于算數(shù)中的除法運算,其中用到的減運算相當于CRC校驗中的XOR(異或)運算;在本例中,原始數(shù)據(jù)為1111,“除數(shù)”1001為生成多項式,也稱為POLY,常用G(x)表示;得到的“余數(shù)”110即為CRC校驗碼[4]。

        圖2 CRC校驗原理框圖

        校驗步驟為:

        (1)首先將發(fā)送端要發(fā)送的數(shù)據(jù)進行擴展(擴展位數(shù)=生成多項式的位數(shù)-1);數(shù)據(jù)位進行擴展,是為了所有的數(shù)據(jù)位都可以處理到;

        (2)按圖2中(a)所示的步驟,計算CRC碼;

        (3)發(fā)送端將CRC碼加到原始數(shù)據(jù)之后,一起發(fā)送出去;

        (4)接收端用接收到的數(shù)據(jù),除以與發(fā)送端相同的POLY值,如果計算得到的余數(shù)為0,說明接收到的數(shù)據(jù)正確,如圖2(b)所示;反之則不正確[5]。

        2 硬件實現(xiàn)

        在數(shù)據(jù)通信中,采用CRC校驗方法,可使通信的誤碼率大為降低,確保了數(shù)據(jù)通信的可靠性。其原理圖框圖如圖3所示。

        圖3 CRC校驗硬件實現(xiàn)原理框圖

        本設(shè)計采用Xilinx公司Spartan-3系列XC3S400 FPGA作為主控制器,使用36.864 MHz晶振,通過VHDL語言對FPGA編程;采用的ADC轉(zhuǎn)換芯片為16 bit精度的AD7621,為了節(jié)省FPGA的I/O口資源,AD7621采用8 bit并行口工作模式,模擬量轉(zhuǎn)換成數(shù)字量后,由BYTE信號控制AD7621向FPGA輸出高8 bit和低8 bit?;诖?,設(shè)計思想總結(jié)為:先將模擬量數(shù)據(jù)高8 bit鎖存,同時將高8 bit數(shù)據(jù)作為CRC校驗?zāi)K的輸入并計算其CRC校驗碼,并將CRC校驗碼轉(zhuǎn)存入下一級的FIFO中,低8 bit模擬量數(shù)據(jù)同理,詳見表1。

        表1 發(fā)送端原始數(shù)據(jù)及CRC校驗碼的鎖存與計算

        因此,發(fā)送模塊、接收模塊的FPGA內(nèi)部原理圖分別如圖4、圖5所示,Analog_cha_ctr模塊主要用于數(shù)據(jù)幀的接收,實現(xiàn)模擬量數(shù)據(jù)流的控制并分別計算高8 bit CRC碼、低8 bit CRC碼,然后將接收到的數(shù)據(jù)幀轉(zhuǎn)存到下一級FIFO中。Interface_ctrl模塊用于接收數(shù)據(jù),并將接收到的數(shù)據(jù)與接收到的CRC碼進行異或運算,如果運算結(jié)果為“0000000”,則說明接收到的數(shù)據(jù)正確,反之,則反饋給接收端一個信號,接收端重新發(fā)送數(shù)據(jù)[6]。

        圖4 發(fā)送端FPGA實現(xiàn)CRC校驗原理圖

        圖5 接收端FPGA實現(xiàn)CRC校驗原理圖

        3 VHDL邏輯設(shè)計

        CRC校驗原理對應(yīng)算法的實現(xiàn)主要由一個r bit的移位寄存器和一些可控異或單元組成,其硬件實現(xiàn)示意框圖如圖6所示。

        圖6中由R0、R1、…、Rr-1構(gòu)成的CRC寄存器是一個r bit移位寄存器組,用來存儲r bit的CRC校驗碼R(x)。運算控制開關(guān)g1、g2、…、gr-1的位置與生成多項式G(x)的系數(shù)相關(guān),對應(yīng)系數(shù)1的開關(guān)接通反饋支路(上端),否則接地(右側(cè))。

        這種算法簡單,容易實現(xiàn),對任意長度生成多項式的g(x)都適用。因為這種算法一次只能處理一位數(shù)據(jù),故主要用于串行通信中。

        具體算法如下:

        圖6 VHDL邏輯設(shè)計實現(xiàn)原理圖

        (1)初始化寄存器;

        (2)將寄存器中的數(shù)據(jù)左移一位,讀入1個新的數(shù)據(jù)位并置于寄存器的最低位;如果移出的數(shù)據(jù)位為0,不做處理,如果為1,則將寄存器中的數(shù)據(jù)與POLY項進行異或運算;

        (3)重復(fù)步驟2,直至將所有的數(shù)據(jù)位處理完;

        (5)寄存器的內(nèi)容即為CRC校驗碼[7];

        邏輯如下:

        4 仿真

        首先利用Xilinx ISE 13.1對計算CRC校驗碼的模塊進行了仿真,利用軟件提供的VHDL Test Bench模塊,可以對代碼進行動態(tài)的全面測試。因Xilinx ISE 13不支持使用波形生成仿真向量的方法,須使用HDL語言建立測試向量進行仿真向量行為的描述。測試向量文件如下:

        其仿真結(jié)果如圖7所示,圖中data_in即為程序設(shè)定的原始數(shù)據(jù),crc_out為計算出的對應(yīng)的CRC碼,Poly項為:11010101。例如:原始數(shù)據(jù)11111111的CRC碼即為0001110。

        圖7 CRC校驗碼生成模塊仿真

        圖8為將CRC模塊加入到源程序中的時序仿真圖,其中fosc為時鐘信號,glrn為復(fù)位信號,flag_cj為采集信號,byte1、byte0用于控制數(shù)據(jù)的高8 bit、低8 bit切換,poly為選定的生成多項式,div_cnt為計數(shù)器,ad0_din即為采集到的16 bit模擬量數(shù)據(jù),ad_data用于鎖存數(shù)據(jù)的高8 bit、低8 bit,kzdata為將原始數(shù)據(jù)進行擴展后的數(shù)據(jù),crc_out即為計算出的CRC校驗碼。

        圖8(a)所示為:當計數(shù)器div_cnt為16時,ad0 _din為采集到的原始數(shù)據(jù)的高8 bit,首先將數(shù)據(jù)鎖存到ad_data,ad_data為1111111000000000;當計數(shù)器為17時,將ad_data的高8 bit數(shù)據(jù)進行擴展,并計算其CRC碼,計算結(jié)果為1011011。

        圖8(b)所示為:當計數(shù)器div_cnt為20時,ad0 _din為采集到的原始數(shù)據(jù)的低8 bit,首先將數(shù)據(jù)鎖存到ad_data,ad_data為1111111010101001;當計數(shù)器為21時,將ad_data的高8 bit數(shù)據(jù)進行擴展,得到擴展后的數(shù)據(jù)為:101010010000000,再計算其CRC碼,計算結(jié)果為1101101。

        圖8 發(fā)送端CRC時序仿真

        5 總結(jié)

        本文基于CRC校驗原理,詳細介紹了CRC校驗的硬件實現(xiàn)原理;在實現(xiàn)了串口通信數(shù)據(jù)的采集、處理與發(fā)送的基礎(chǔ)上,加入了CRC檢驗碼的生成過程及具體校驗過程,在接收端將數(shù)據(jù)存儲到FLASH中之前,總是先判斷接收到的數(shù)據(jù)是否正常,若有誤碼,可通過CRC校驗及時發(fā)現(xiàn),接收端通過收到的反饋信號重新發(fā)送數(shù)據(jù),使得誤碼的概率得到大幅度的降低[8];通過Xilinx ISE 13.1自帶的仿真軟件進行了仿真,從而驗證了該設(shè)計的可行性。該方案的特點是實現(xiàn)容易,速度快,效率高,實用性強。

        [1]姚七棟,張春玉.CRC校驗及其軟件實現(xiàn)[J].現(xiàn)代電子技術(shù),2006,29(13):67-68.

        [2]張樹剛,張遂南,黃士坦.CRC校驗碼并行計算的FPGA實現(xiàn)[J].計算機技術(shù)與發(fā)展,2007,17(2):56-58.

        [3]同曉榮.基于FPGA的PCM基群設(shè)備串行通訊CRC校驗的實現(xiàn)[J].河南科學(xué),2012,30(2):231-234.

        [4]季鵬輝,孟丁,任勇峰.基于FPGA的16 bit CRC校驗查表法設(shè)計[J].電子器件,2013,36(4):580-584.

        [5]金志超,張磊,黃莉莉.遠程地面測發(fā)控系統(tǒng)在PLC中嵌入CRC代碼校驗[J].航天控制,2009,27(2):81-83.

        [6]周泰莢,王新梅,葛嫦.在CRC校驗中擴展縮短碼的設(shè)計與性能分析[J].西北工業(yè)大學(xué)學(xué)報,2001,22(5):640-642.

        [7]林凱宏,游林儒,王立松.CRC校驗算法在I/O擴展上的應(yīng)用[J].控制與檢測,2009(12):69-77.

        [8]張增波,陳仲林,肖劉.基于FPGA的內(nèi)置并行CRC校驗的UART[J].總線與網(wǎng)絡(luò),2013,28(2):30-32.

        張焱(1989-),女,漢族,山西平遙人,中北大學(xué)電路與系統(tǒng)專業(yè)在讀研究生,研究方向為電路與系統(tǒng),1039224079@ qq.com;

        任勇峰(1968-),男,漢族,山西中陽人,博士,教授,現(xiàn)從事動態(tài)測試、高速數(shù)據(jù)采集等領(lǐng)域的研究。

        EEACC:621010.3969/j.issn.1005-9490.2015.01.047

        基于FPGA的CRC校驗算法的實現(xiàn)

        張焱,任勇峰*,齊蕾*,姚宗
        (中北大學(xué)儀器科學(xué)與動態(tài)測試教育部重點實驗室,太原030051)

        由于FPGA具有速度快、效率高、靈活穩(wěn)定、集成度高等優(yōu)點,所以在串行通信中采用FPGA來實現(xiàn)串口通信是十分必要的。由于通信傳輸?shù)牟淮_定性以及干擾等原因,串行通信經(jīng)常會出現(xiàn)異常情況[1]。因此,在串行通信中添加CRC校驗,可大幅度提高通信的可靠性。在論述了CRC校驗原理的基礎(chǔ)上,提出了硬件實現(xiàn)原理,并用VHDL硬件描述語言實現(xiàn)CRC校驗,驗證了方案的可行性。

        電子;FPGA;CRC校驗;串行通信;VHDL

        TN919.3

        A文獻標識碼:1005-9490(2015)01-0222-05

        2014-03-17修改日期:2014-04-30

        猜你喜歡
        數(shù)據(jù)位校驗碼原始數(shù)據(jù)
        GOLDEN OPPORTUNITY FOR CHINA-INDONESIA COOPERATION
        A320飛機大氣數(shù)據(jù)的采集和計算在排故中的應(yīng)用
        受特定變化趨勢限制的傳感器數(shù)據(jù)處理方法研究
        全新Mentor DRS360 平臺借助集中式原始數(shù)據(jù)融合及直接實時傳感技術(shù)實現(xiàn)5 級自動駕駛
        汽車零部件(2017年4期)2017-07-12 17:05:53
        一種適用于FPGA系統(tǒng)中的變速箱電路設(shè)計
        基于Excel實現(xiàn)書號校驗碼的驗證
        減少調(diào)度自動化設(shè)備通訊串口丟包率的措施
        電子測試(2016年3期)2016-03-12 04:46:52
        基于FPGA的循環(huán)冗余校驗碼設(shè)計
        電子世界(2015年14期)2015-11-07 05:32:29
        身份證號碼中的數(shù)學(xué)
        世界經(jīng)濟趨勢
        久久久久av无码免费网| 少妇spa推油被扣高潮| 亚洲成人免费观看| 中文字幕日本熟妇少妇| 91九色播放在线观看| 日本又色又爽又黄又免费网站| 无码三级在线看中文字幕完整版| 一区二区视频观看在线| 亚洲AV秘 无码一区二区久久| 国产一品二品三品精品久久| 人妻熟女翘屁股中文字幕| 色窝窝无码一区二区三区| 中文字幕一区二区三区乱码| 免费看一级a女人自慰免费| 国产自拍精品视频免费观看| 网站在线观看视频一区二区 | 色av综合av综合无码网站| 亚洲va中文字幕欧美不卡 | 精精国产xxxx视频在线播放器| 女同在线网站免费观看| 18岁日韩内射颜射午夜久久成人| 国产熟妇搡bbbb搡bb七区| 久久久久人妻精品一区5555| 久久精品国产亚洲av久五月天| 国产精品特级毛片一区二区三区| 久久亚洲av永久无码精品| 在线亚洲精品国产成人二区| 亚洲黄片av在线播放| 中文字幕免费不卡二区| 久久波多野结衣av| 按摩少妇高潮在线一区| 奇米影视7777久久精品| 推油少妇久久99久久99久久 | 黄色中文字幕视频网站| 嫩草伊人久久精品少妇av| 1区2区3区高清视频| 国产精品美女一级在线观看| 日本美女在线一区二区| 国产精品毛片完整版视频| 激情人妻在线视频| 午夜视频一区二区三区在线观看|