CRC解碼(解碼並刪除迴圈冗餘校驗)

2021-10-08 06:49:27 字數 1787 閱讀 8146

(1)[blk,err] = nrcrcdecode(blkcrc,poly)

[blk,err] = nrcrcdecode(blkcrc,poly)檢查輸入資料blkcrc中是否存在crc錯誤。該函式假定輸入資料報括與多項式poly相關的crc奇偶校驗位。該函式返回blk,這是輸入blkcrc的資料部分。該函式還返回err,它是輸入中包含的crc與跨輸入的資料部分重新計算的crc之間的邏輯差(xor)。如果err不等於0,則說明發生了錯誤或輸入crc被遮蔽。有關相關多項式的詳細資訊,請參見ts 38.212第5.1節[1]。

(2)[blk,err] = nrcrcdecode(blkcrc,poly,mask)

[blk,err] = nrcrcdecode(blkcrc,poly,mask)在使用err返回之前,用mask對crc差異進行xor遮蔽。將掩碼值應用於crc差,最高有效位(msb)在前,最低有效位(lsb)在後。

例:檢查資料塊是否存在crc錯誤

使用和不使用掩碼檢查crc解碼的效果

(1)定義與等於12的無線網路臨時識別符號(rnti)對應的掩碼。將rnti掩碼的crc奇偶校驗位附加到乙個資料塊的全1矩陣。

rnti = 12;

blkcrc = nrcrcencode(ones(100,1),『24c』,rnti);

(2)當執行不帶掩碼的crc解碼時,err1等於rnti,因為crc在編碼過程中被掩碼了。原始crc與重新計算的crc之間的邏輯差異是crc掩碼。

[blk,err1] = nrcrcdecode(blkcrc,『24c』);

err1

(3)使用rnti值作為掩碼執行crc解碼時,err等於0。

[blk,err2] = nrcrcdecode(blkcrc,『24c』,err1);

err2

(1)blkcrc — crc編碼的資料

crc編碼的資料,指定為實數矩陣。矩陣的每一列均視為單獨的crc編碼資料塊。

資料型別:雙精度/8位整型/邏輯型

(2)poly — crc多項式

crc多項式,指定為「 6」,「 11」,「 16」,「 24a」,「 24b」或「 24c」。有關相關多項式的詳細資訊,請參見ts 38.212第5.1節。

資料型別:字元/字串

(3)掩碼—xor掩碼

xor掩碼,指定為非負整數。該掩碼通常是無線電網路臨時識別符號(rnti)。

資料型別:雙精度

(1)blk — crc解碼的資料

crc解碼資料,以實數矩陣形式返回。 blk是輸入blkcrc的僅資料部分。

資料型別:雙精度/8位整型/邏輯型

(2)err —邏輯crc差

邏輯crc差,以整數形式返回。 err是輸入blkcrc中包含的crc與跨輸入資料部分重新計算的crc之間的邏輯差。如果指定了掩碼,則函式xor使用mask對err-masks進行掩碼,然後再返回它。

資料型別:無符號32位整型

[1] 3gpp ts 38.212. 「nr; multiplexing and channel coding.」 3rd generation partnership project; technical specification group radio access network.

CRC解碼演算法

利用crc演算法計算誤位元速率和誤位元率,研究此演算法的效能曲線。crc.h pragma once include includeclass crc16 crc.cpp include crc16.h 多項式除法 int crc16 polynomial division int data in,...

python迴圈解碼base64

第一次寫部落格,都不知道該如何下手,寫的不是很好,還望各位大佬不要噴我。先來介紹一下base64 base64是網路上最常見的用於傳輸8bit位元組碼的編碼方式之一,base64就是一種基於64個可列印字元來表示二進位制資料的方法。在看了一段時間的python,然後結合網上的指令碼,自己寫了乙個解碼...

python迴圈解碼base64

base64是網路上最常見的用於傳輸8bit位元組碼的編碼方式之一,base64就是一種基於64個可列印字元來表示二進位制資料的方法。在看了一段時間的python,然後結合網上的指令碼,自己寫了乙個解碼的指令碼,功能非常簡單,還望各位大神不要噴,看看就好 coding utf 8 import ba...