32位crc校驗碼程式 CRC編碼

2021-10-13 18:37:43 字數 2774 閱讀 9991

實驗資源來自於mooc-華中科技大學-計算機硬體系統設計

計算機硬體系統設計_華中科技大學_中國大學mooc(慕課)

對crc不太清楚的同學可以看看,這位up主做的很直觀。

[crc校驗]手算與直觀演示_嗶哩嗶哩 (゜-゜)つロ 乾杯~-bilibili

設計需求:求原始資料的crc校驗和。多項式為10011。

需要四個d觸發器,將原始資料流從高位開始,一位一位傳入,從q1(d觸發器)流向q4。

最前端需要乙個探測器,探測到1 就進行反轉。

反轉的位置和多項式後四位相同,多項式為10011。就反轉第1個觸發器的輸出和第2個出發器的輸出。

傳入資料需要使用位選擇器和計數器,將計數器的值從最高位開始逆向計數。即可實現資料流從高位開始傳入。

由此,設計電路可得

crc序列編碼

反轉器使用異或的效果是相同的。這裡使用選擇器知識便於理解。

設計需求:將16位的資料並行轉換為crc編碼,要求在解碼是可以檢出並糾正一位錯,以及檢出兩位錯。

首先計算校驗碼位數:2^r-1>=n=k+r

k = 16r = 5,共需要21位。為了後續檢驗兩位錯,我們需要另外加一位總偶校驗位。

根據k和r,選擇多項式為100101。(查常用多項式表即可)

編碼原理:

原始16位資料左移5位得到新的21位資料(後面補5個0)。

將新得到的21位資料與多項式100101做模2運算,得到5位的餘數(crc校驗和)(p5p4p3p2p1),p5為高位。

將5位餘數替換21位資料尾部的5位。

將最後的得到的21位資料異或即可得到p6(總偶校驗位)。

由於要求並行處理。可使用結合律。

模2除法餘數運算滿足結合律。兩數的餘數異或等於兩數異或後的餘數。

有公式:(m(x)%g(x))⊕(n(x)%g(x))=(m(x)⊕n(x))%g(x)

eg:多項式1011

編碼:1101 000 = 1000 0000100 0000001 000

解碼:1101 011 = 1000 0000100 000 ⊕ 0001 000 ⊕ 011

因為011小於多項式,模2運算餘數為本身,直接異或即可。

那麼先對16位資料按位和多項式100101進行模2運算,最後合併異或即可。

原始資料在第21位到第6位上。

計算過程:

eg:第6位:按位異或

由上,可得電路

注意校驗和的順序,p5是高位。

crc編碼電路

設計需求:將22位crc編碼轉換為16位原始資料,要求能夠檢出並糾正1位錯,以及檢出兩位錯。

若crc編碼正確,那麼和多項式100101模2除后得到的餘數為0。

crc編碼和多項式100101模2運算

若餘數全為0表明除p6外,剩餘21位資料全部正確。

糾錯原理:

將得到的餘數w和每一位相對應的餘數進行異或。若最後得到的值全為0,即表示這一位出錯。

根據這一特性,可以在最後得到的值後加或非門(當值全為0時,輸出1,其餘全部輸出0)。

此時得到16位出錯位元串,0表示沒出錯,1表示出錯。

當取0時,不變,當取1是,取反。使用異或即可實現。

將16位出錯位元串和對應位的資料進行異或,即可得到糾錯後的資料。

注意,p6和p5p4p3p2p1無法糾錯,因為沒有和他們相對應的餘數。

糾錯模組

總偶校驗碼為22位crc編碼異或後的值。

記 f = 0 為 crc編碼和多項式100101模2運算後得到餘數全為0

記 f = 1 為 crc編碼和多項式100101模2運算後得到餘數不全為0

記總偶校驗碼為b

當f = 0,b = 0時,表示無錯誤

當f = 0,b = 1時,表示p6出錯,一位錯

當f = 1,b = 1時,表示一位錯

當f = 1,b = 0時,表示兩位錯

檢錯模組

整體電路

crc序列電路

crc並行電路

CRC冗餘校驗碼

1 基本概念 crc cyclic redundancy check 是資料通訊領域中最常用的一種查錯校驗碼,對資料進行多項式計算,並將得到的結果附在幀的後面,接收裝置也執行相似的演算法以保證資料傳輸的正確性與完整性。2 基本原理 這裡先介紹 模2除法 的知識,與 算數除法 類似,只不過 模2除法 ...

32位crc校驗碼程式 組成中三個校驗碼計算和校驗

這個校驗主要的應用場景是ascii碼的校驗,因為ascii一共有 128個,所以只需要7位足夠了,但是計算機基本按照位元組儲存,所以自然而然多出來一位,也就是8位。那麼左邊的那個bit位就可以用來做奇偶校驗位置了。核心思想 對資訊位中的1進行異或運算,然後根據這個異或結果和奇偶校驗的方法決定校驗位的...

CRC校驗(迴圈冗餘校驗碼)

一 概念 crc即迴圈冗餘校驗碼 是資料通訊領域中最常用的一種查錯校驗碼,其特徵是資訊字段和校驗欄位的長度可以任意選定。迴圈冗餘檢查 crc 是一種資料傳輸檢錯功能,對資料進行多項式計算,並將得到的結果附在幀的後面,接收裝置也執行類似的演算法,以保證資料傳輸的正確性和完整性。二 工作原理 迴圈冗餘校...