999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于遞推法的CRC-32校驗碼并行改進算法

2019-03-19 11:36:58左飛飛杜英森劉劍霏
探測與控制學報 2019年1期
關鍵詞:方法

左飛飛,杜英森,劉劍霏

(西安機電信息技術研究所,陜西 西安 710065)

0 引言

在數據的傳輸過程中由于空間電磁環境復雜等原因,可能會產生誤碼,即某幾位數據0變為1,或1變為0,導致接收端得到錯誤的數據。為了降低誤碼率,通常對數據進行特定編碼,在收發端進行額外的驗證,使接收端能發現某些錯誤,進而實現糾錯功能,常用的編碼方法有CRC-32校驗碼、CRC-16校驗碼、漢明碼、奇偶校驗法等[1]。其中32位循環冗余校驗(Cyclic Redundancy Check)簡稱CRC-32校驗在性能和資源消耗兩方面都有較大的優勢,因而,在無線電通信、SATA硬盤數據傳輸等系統中,CRC-32校驗是最常用的檢錯手段之一[2]。

計算CRC-32校驗碼有兩類方法:一類方法是將CRC-32校驗碼生成過程轉換為對應的邏輯門電路,將這樣的門電路固化在系統的整體電路中,它的優點是計算速度快,但由于它是專門為固定的通信系統設計的電路,所以無法更改和移植,并且專門設計和集成的成本較高[3];另一類是編程實現,在眾多編程實現的途徑中,FPGA和CPLD由于其可并行計算、可反復修改的特性使其在CRC-32的計算中有較大優勢。

編程實現CRC-32校驗碼生成程序有兩種傳統方法:一種為串行算法,一種為查表法。這兩種是循環調用的函數,設置一個CRC寄存器,設置寄存器初始值后,依次根據輸入數據進行計算,更新CRC寄存器的數值,直至對數據處理完畢,CRC寄存器最終存放的數據即為CRC值[4]。這兩種方法都能實現運算目的,但串行算法由于需要一位一位地計算運行結果,導致運行速度過慢,查表法由于需要存儲所有的運算結果,導致占用空間過大。

引信應用環境最大的特點就是過載數值大、體積小,在這樣的前提下進行篩選,現在使用的某品牌QFN封裝CPLD的最小體積可小至5 mm×5 mm,但是由于這樣的FPGA或CPLD一般是入門級產品,寄存器位數通常只有100~300左右,在這樣的條件限制下,需要提出一種新的CRC-32校驗碼生成方法,能夠根據不同芯片寄存器空間的限制,最大限度的利用存儲空間提升運算速度。

在CRC-32校驗碼生成方法中,固定電路成本高且缺乏靈活性,傳統按位串行算法計算速度慢、查表法需要額外占用空間,本文針對此問題,提出了基于遞推法的CRC-32校驗碼并行改進算法。

1 傳統CRC-32校驗碼的生成算法

CRC校驗的基本原理如下[5]:CRC校驗發收端的首要工作是確認系統所采用的生成多項式G(x),任意一個由二進制位串組成的代碼都可以和一個系數僅為‘0’和‘1’取值的多項式一一對應,例如:代碼1010111對應的多項式為x6+x4+x2+x+1,而多項式x4+x3+1對應的代碼為11001。校驗碼的具體生成過程為:假設要發送的信息用多項式C(x)表示,將C(x)左移R位(可表示成C(x)×2R),這樣C(x)的右邊就會空出R位,這就是校驗碼的位置。用C(x)×2R除以生成多項式G(x)得到的余數r(x)就是校驗碼,將它們組合起來,變為{C(x),r(x)}并發送出去,這樣發送的數據就是一個能被生成多項式G(x)整除(模2除)的碼多項式。接收端收到{C(x),r(x)}后,用它除以生成多項式G(x),如果余數為0,則說明傳輸過程中無錯誤發生,否則說明傳輸有誤。

由上述可知,生成多項式G(x)是構成CRC校驗碼的關鍵。并不是任何一個多項式都可以作為生成多項式,從檢錯與糾錯的要求出發,生成多項式應能滿足下列要求:1)任何一位發生錯誤都應使余數不為0;2)不同位發生錯誤應當使余數不同;3)應滿足余數循環規律。國際上常用的幾種CRC校驗碼及其生成多項式如下所示[6]:

CRC-12:x12+x11+x3+x2+x+1,

CRC-16:x16+x15+x2+1,

CRC-CCITT:x16+x12+x5+1,

CRC-32:x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1。

生成多項式的G(x)位數越高,檢錯能力就越強,由于CRC-32的可靠性,把CRC-32用于重要數據傳輸,在通信、計算機等領域運用十分廣泛。

1.1 串行算法[7]

依據CRC校驗碼的產生原理來設計程序,寄存器每輸入8位或16位待計算數據后更新一次,以8位為例說明該算法。

圖1 每次輸入1字節的CRC-32串行算法Fig.1 Byte-wise serial algorithm for CRC-32 check code

這種方法的思路與CRC校驗碼的生成原理一致,優點是可讀性強,占用空間小,模塊代碼較少,修改靈活,可移植性較強,缺點也很明顯,每位數據都要進行一次移位與異或計算,計算量大,速度慢。

1.2 查表法[8]

查表法的基本原理是把所有會出現的CRC碼全部計算出來,放在一個表里,每次進數據通過查表得到當次結果,省去了計算時間,可大大提高運行速度。對于CRC-32來說,共有256組32位的數據需要提前存儲在處理器的寄存器中,寄存器中的一部分數據如下:

查表法的優缺點基本與串行計算法相反,由于每次計算只需查表即可得到答案,因此它的運行速度很快,但是相對的,存儲這樣的一個查找表至少需要占用256×32=8 192位寄存器,占用空間對于寄存器較少的CPLD或入門級FPGA過大,另外這樣的查找表一旦約定的寄存器初始值不同或選擇的特征多項式不同,整個表內的所有值都需要重新計算,幾乎沒有可修改性,移植性較弱。

2 基于遞推法的CRC-32校驗碼并行改進算法

串行算法雖然速度慢,但其每次計算過程在邏輯上都完全按照CRC-32校驗碼的生成原理,每次串行算法的結果與初始值之間的邏輯關系可以由CRC-32校驗碼生成原理經過簡單的推導轉化成并行邏輯關系。根據這樣的思路,可以將第一次串行算法的結果作為第二次串行算法的初始值,再將第二次串行算法的結果作為第三次串行算法的初始值,按照這樣的規律層層遞推n次,就可以直接得到并行輸入任意n位數據時CRC寄存器中新老數據之間的并行邏輯關系。

(1)

(2)

(3)

(4)

基于遞推法的CRC-32校驗碼并行改進算法以遞推法為基礎,根據實際情況中不同的計算速度和占用空間的需求,計算出并行輸入任意n位數據時CRC寄存器中新老數據之間的并行邏輯關系,并根據這一邏輯關系修改程序,從而達到在一定占用空間的限制下,最大程度提升運算速度的目的。

3 仿真驗證

為了具有代表性,本文在仿真驗證過程中分別并行輸入16位數據、8位數據、4位數據的遞推并行算法進行驗證。

基于第2章所使用的CRC-32特征多項式,類似上面的推算,我們可以分別得出并行輸入16位數據、8位數據、4位數據的CRC低6位更新邏輯,其中并行輸入4位的CRC-32更新邏輯(低6位)如下所示:

crc_new[0]=crc_old[28]^data_in[0];

crc_new[1]=crc_old[28]^crc_old[29]^data_in[0]^data_in[1];

crc_new[2]=crc_old[28]^crc_old[29]^crc_old[30]^data_in[0]^data_in[1]^data_in[2];

crc_new[3]=crc_old[29]^crc_old[30]^crc_old[31]^data_in[1]^data_in[2]^data_in[3];

crc_new[4]=crc_old[0]^crc_old[28]^crc_old[30]^crc_old[31]^data_in[0]^data_in[2]^data_in[3];

crc_new[5]=crc_old[1]^crc_old[28]^crc_old[29]^crc_old[31]^data_in[0]^data_in[1]^data_in[3]。

3.1 正確性仿真驗證

首先驗證本文提出方法的正確性,編寫Verilog程序,在ISE軟件環境下進行編譯后,設定同樣的初始值、輸入數據,如果得到的結果相同,則證明該算法無誤,反之說明算法不正確。

設定初始值32′hFFFFFFFF,取輸入數據為32′h12345678,使用并行輸入16位、8位、4位數據的遞推并行算法運行程序,輸出結果為32′h4A090E98,再通過查表法與串行算法分別進行計算,發現三者得到的結果一致,證明本文提出的計算數據無誤。

3.2 占用空間與計算速度的仿真驗證

3.3.1占用空間對比

在ISE軟件中,程序設計占用寄存器數量等片上資源在Design Summary中可以直觀的看到,分別截取16位、8位、4位遞推并行算法、串行算法和查表法的界面即可做出比較。

根據圖2、圖3可以看到:并行輸入16位、8位、4位數據的遞推并行算法占用寄存器分別為449個、225個和68個;查表法占用寄存器2 095個;串行算法占用寄存器32個。

3.3.2計算速度對比

隨機輸入一串長度為1 000位的數據,在ISE自帶仿真器中對比得出最后結果的時刻數字,如圖4、圖5所示。根據圖4、圖5可以看到:本文提出的遞推并行算法與查表法、串行算法所得結果相同并且均為正確結果,其中并行輸入16位、8位、4位數據的遞推并行算法分別在第106、190、315個時鐘周期得出正確結果,查表法在第59個時鐘周期得出正確結果,串行算法在第2 107個時鐘周期得出正確結果。

圖2 16位、8位、4位并行算法占用空間統計Fig.2 Numbers of slice registers of 16/8/4 bits parallel algorithm

圖3 串行算法和查表法占用空間統計Fig.3 Numbers of slice registers of serial algorithm and the look-up table method

3.3 仿真結果分析

根據3.1節、3.2節,將仿真數據匯總在表1中做比對,其中,占用空間s越小越好,處理時間t越短越好。

圖4 并行輸入16位、8位、4位遞推并行輸入算法計算時間Fig.4 Time consumptions of slice registers of 16/8/4 bits parallel algorithm

圖5 查表法與串行算法計算時間Fig.5 Time consumptions of slice registers of serial algorithm and the look-up table method

算法占用空間s(寄存器個數)處理時間t(時鐘周期)16位遞推并行算法4491068位遞推并行算法2251904位遞推并行算法68315串行算法322 107查表法2 09559

通過比較數據可以看出,本文提出的算法在不同寄存器數量的限制下,比傳統方法計算速度更快。并行輸入16位、8位、4位數據的遞推并行算法的仿真結果說明,本文提出的基于遞推法的CRC-32校驗碼并行改進算法速度快于按位串行計算的方法,存儲空間小于查表法,有利于小型化、快速化的硬件實現。

4 結論

本文提出的基于遞推法的CRC-32校驗碼并行改進算法以遞推法為基礎,根據實際情況中不同的計算速度和占用空間的需求,計算出并行輸入任意n位數據時CRC寄存器中新老數據之間的并行邏輯關系,并根據這一邏輯關系修改程序,從而達到在一定占用空間的限制下,最大程度提升運算速度的目的。仿真結果表明,本文提出的基于遞推法的CRC-32校驗碼并行改進算法速度快于按位串行計算的方法,存儲空間小于查表法,有利于小型化、快速化的硬件實現。

猜你喜歡
方法
中醫特有的急救方法
中老年保健(2021年9期)2021-08-24 03:52:04
高中數學教學改革的方法
河北畫報(2021年2期)2021-05-25 02:07:46
化學反應多變幻 “虛擬”方法幫大忙
變快的方法
兒童繪本(2020年5期)2020-04-07 17:46:30
學習方法
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
最有效的簡單方法
山東青年(2016年1期)2016-02-28 14:25:23
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
捕魚
404 Not Found

404 Not Found


nginx
主站蜘蛛池模板: 亚洲AV无码一区二区三区牲色| AV老司机AV天堂| 亚洲精品无码日韩国产不卡| 成人综合久久综合| 秘书高跟黑色丝袜国产91在线| 台湾AV国片精品女同性| 日日碰狠狠添天天爽| 国产久操视频| 亚洲欧美日韩另类在线一| 91娇喘视频| 欧美精品1区2区| 国产精品lululu在线观看| 久草视频中文| 国产精品深爱在线| 青青草国产在线视频| 日本国产在线| 98超碰在线观看| 91精品国产麻豆国产自产在线| 久久综合九九亚洲一区| 中文一级毛片| 国产丝袜91| 亚洲欧美日韩成人在线| 亚洲精品无码AV电影在线播放| 午夜视频在线观看免费网站| 香蕉视频国产精品人| 国产精品理论片| 亚洲精品无码成人片在线观看| 亚洲视频三级| 国产精品思思热在线| 久久精品中文字幕免费| 久久亚洲精少妇毛片午夜无码| jizz在线观看| 天天综合天天综合| 成人国产三级在线播放| www中文字幕在线观看| 国产日韩精品欧美一区灰| 欧美亚洲第一页| 国产农村妇女精品一二区| 9966国产精品视频| 久久国产精品夜色| 久久精品国产国语对白| 99在线观看国产| 亚洲日韩日本中文在线| 亚洲男人的天堂久久香蕉| 国产精品无码AⅤ在线观看播放| 第一区免费在线观看| 亚洲中文字幕国产av| 日韩精品一区二区三区视频免费看| 亚洲欧洲日产国产无码AV| 久久久受www免费人成| 97在线观看视频免费| 欧美日韩国产在线播放| 亚洲电影天堂在线国语对白| 午夜久久影院| 无码AV动漫| 欧美国产视频| 亚洲色图综合在线| 欧美在线观看不卡| 久久精品丝袜高跟鞋| 色吊丝av中文字幕| 高清欧美性猛交XXXX黑人猛交| 欧日韩在线不卡视频| 国产精欧美一区二区三区| 欧美国产三级| 精品久久久久久久久久久| 日韩国产亚洲一区二区在线观看| 欧美日韩精品一区二区视频| 久久久久无码精品国产免费| 亚洲视频a| 日本精品视频一区二区| 伊人色天堂| 一区二区理伦视频| 成人精品视频一区二区在线| 中文字幕亚洲另类天堂| 日韩中文字幕免费在线观看| 91年精品国产福利线观看久久| 精品欧美一区二区三区久久久| 毛片网站观看| 亚洲国产看片基地久久1024 | 最新国产精品第1页| 亚洲国产中文欧美在线人成大黄瓜| 国产在线视频二区|