BCH编码——c语言代码
生活随笔
收集整理的這篇文章主要介紹了
BCH编码——c语言代码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 前言
- 一、BCH碼是什么?
- 二、BCH編碼
- 1.原理
- 總結
前言
主要講述BCH碼如何用c語言寫出來
一、BCH碼是什么?
BCH碼是一類重要的糾錯碼,它把信源待發的信息序列按固定的κ位一組劃分成消息組,再將每一消息組獨立變換成長為n(n>κ)的二進制數字組,稱為碼字。如果消息組的數目為M(顯然M>=2),由此所獲得的M個碼字的全體便稱為碼長為n、信息數目為M的分組碼,記為n,M。把消息組變換成碼字的過程稱為編碼,其逆過程稱為譯碼。 比如有60bit數據,我每11bit為一組進行BCH編碼(n=11),然后進行BCH編碼,得到4位校驗位,總位數就是M=15位。
二、BCH編碼
1.原理
將上述11bit稱為信息位,每次都是用信息位除以生成多項式對應的數(比如生成多項式g(x)=x^4+x+1,則對應10011,就是x的冪的系數)
改進BCH編碼算法,去掉生成多項式最高位,判斷信息位最高位是否為1,為1就左移并異或生成多項式,如果信息位最高位不是1,則對信息位直接左移1位。
比如任意給一個11位信息位11100011101,10011是對應生成多項式的系數,這里去掉其最高位變為0011,按照上述算法,一共要循環11次,11位信息位的位數。得到最高位的4位1010就是校驗位,原來的11位信息位加上4位校驗位就得到BCH編碼后的數據包。
代碼如下(示例):
uint16_t bch_code(uint16_t data){uint8_t i = 0;uint16_t BCH = 0;uint16_t poly =(0x3<<7);// g = x^4 + x + 1uint16_t code = 0;BCH = (data & 0x07ff);for (i=0;i<11;i++){ if ((BCH & 0x0400) == 0x0400){BCH = (BCH<<1) ^ poly;}else{BCH = BCH<<1;}}code = (data & 0x07ff)<<4;code|= ((BCH>>7) & 0xf);return code;}poly就是對應的多項式系數左移之后的結果,這里左移7位是為了和信息位對齊。
總結
本文初略介紹了BCH編碼的C語言表述,如有不對,還請指教。
總結
以上是生活随笔為你收集整理的BCH编码——c语言代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一个医院内的计算机网络系统属于,医院信息
- 下一篇: 基于MATLAB的人脸识别研究