24小时热门版块排行榜    

Znn3bq.jpeg
查看: 2367  |  回复: 0

source03

银虫 (正式写手)


[资源] BCH编码说明

声明:本文参考了http://blog.csdn.net/shimeng/archive/2010/04/10/5471525.aspx BCH码小述而作,在此要向该作者表示感谢。
图片没能转载到此,请大家到我的博客里看吧。
http://source03.blog.163.com/blo ... 222201121322718365/

BCH属于循环码,是一种常用的纠错编码,其编码可以有两种方式实现:串行形式和并行形式。串行形式是利用生成多项式和相关寄存器来实现,具有占用资源少的优点,但速度比较慢(要n个时钟周期)。并行形式是利用生成矩阵和一些逻辑门(主要是异或门)来实现,属组合逻辑电路,占用资源多,速度快。

一、串行形式的编码实现

         设循环码的生成多项式为g(x),待编码的消息多项式为u(x),g(x)和u(x)的次数分别是r和k-1,则C(x)=u(x)·xn-k+u(x)·xn-k|modg(x)为编码后的多项式,用此方法编得的码字为系统码。

    下面给出电路实现,直接将u(x)移位n-k次即得到u(x)·xn-k,为得到C(x)的第二项,要用到除法器,是将u(x)移位n-k次后除g(x),取其余数。

    下图是g(x)= X8+X7+X6+X4+1,实现BCH(15,7)的编码电路图。





电路工作过程分两步:

1.       两个开关都向上,输入数据一路经SW2输出,组成编码的信息位,另一路与h的输出相异或后经SW1反馈到相应寄存器单元,这主要完成(u(x)·xn-k)/g(x)),完成这个过程需要k(7)个时钟周期;

2.       两个开关都向下,输入数据与h的输出通路断开,除法运算完成,每来一个脉冲把u(x)·xn-k)mod g(x)的结果依次输出,余数由h输出后经SW2输出成为编码的校验位。完成这个过程需要n-k(8)个时钟周期。



C语言实现如下:

/****************************************************

实现BCH(15,7)的编码输出

*****************************************************/

#include

#define           N            15

#define           K            7

int info[K];

int Encode[N];



void BCHencode()

{  

    int i;

    int a = 0, b = 0, c = 0, d = 0, e = 0,f = 0,g = 0,h = 0,j = 0;

    for(i=0; i
        if(i
           {

         Encode = info;

                    j = h^info;      //x8

                    h = g^j;              //x7

                    g = f^j;               //x6

                    f = e;

                    e = d^j;              //x4

                    d = c;

                    c = b;

                    b = a;

                    a = j;                            //1

        }

           else

           {

                    Encode = h;

                    h = g;

                    g = f;

                    f = e;

                    e = d;

                    d = c;

                    c = b;

                    b = a;

                    a = 0;

        }

    }

}



main()

{

int Num = 0,count;

int Din = 0x37;                            //十六进制形式,最大值为7F

int Edin = Din;


//把十六进制转换为二进制

for(Num = 0;Num
{

           if(Din%2)

                    info[K-1-Num] = 1;

           else

                    info[K-1-Num] = 0;

           Din = Din >>1;

}



BCHencode();



printf("The Data:%x \n encode is:",Edin);

for(count = 0;count
{

           if((N-count)%4==0)

           {

                    printf("\t";

           }

                    

printf("%d",Encode[count]);

}

printf("\n";



}

在VC上运行结果如下:




二、并行形式的编码实现

           对于并行形式的编码有

C=UG

         U—1行(N-k)列的数组,即输入数值的二进制排列形式

         G—生成矩阵

生成矩阵G= ,是(n-k)×n阶矩阵。

在文献[2]中给出了具体的实现方法。





参考文献:

[1]       沈连丰.信息论与编码[M].科学出版社,2004.

[2]       赵华,殷奎喜.(15,7)BCH编译码器的VHDL设计.现代电子技术,2004.
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

智能机器人

Robot (super robot)

我们都爱小木虫

相关版块跳转 我要订阅楼主 source03 的主题更新
☆ 无星级 ★ 一星级 ★★★ 三星级 ★★★★★ 五星级
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 电气专硕320求调剂 +6 小麻子111 2026-04-10 6/300 2026-04-12 10:54 by lemon6009
[考研] 297求调剂 +17 ORCHID1 2026-04-10 18/900 2026-04-12 09:59 by zhouwenxian
[考研] 326求调剂 +6 Shansyn 2026-04-10 6/300 2026-04-12 09:46 by hammer3
[考研] 269电子信息求调剂,可转专业 +11 独酌wl 2026-04-06 11/550 2026-04-11 11:12 by 逆水乘风
[考研] 一志愿085502,267分求调剂 +11 再忙也要吃饭啊 2026-04-08 12/600 2026-04-11 11:08 by zhq0425
[考研] 生物学调剂 可调剂到生物与医药 +8 李政莹 2026-04-06 9/450 2026-04-11 10:36 by wwj2530616
[考研] 282,求调剂 +12 jggshjkkm 2026-04-09 14/700 2026-04-11 09:39 by 猪会飞
[考研] 281求调剂 +11 觉得好的吧 2026-04-10 11/550 2026-04-11 09:35 by 逆水乘风
[考研] 083200 305分 求二轮调剂 不接受跨专业 +9 Claireyyyy 2026-04-09 10/500 2026-04-10 21:21 by Claireyyyy
[考研] 284求调剂 +9 让我上岸吧阿西 2026-04-09 11/550 2026-04-10 19:18 by 靖jing
[考研] 085404 298分求调剂 +10 呼啦呼啦呼呼呼 2026-04-10 11/550 2026-04-10 16:44 by wangy0907
[考研] 一志愿京区985,085401电子信息,本科电子信息 +3 阳光开朗的男孩 2026-04-10 3/150 2026-04-10 16:29 by sophia_93
[考研] 266求调剂 +29 阳阳哇塞 2026-04-07 29/1450 2026-04-10 16:20 by 高维春
[考研] 071000生物学调剂求助 +17 zzzzwww 2026-04-09 20/1000 2026-04-10 15:55 by 求调剂zz
[考研] 1U盾记得记得就 +9 sanjin020722 2026-04-08 10/500 2026-04-09 14:11 by 诗与自由
[考研] 二次调剂求老师收留 +3 笑笑袁 2026-04-08 3/150 2026-04-08 23:50 by 醉在风里
[考研] 一志愿211,化学学硕,310分,本科重点双非,求调剂 +10 努力奋斗112 2026-04-07 10/500 2026-04-08 15:01 by screening
[考研] 307求调剂 +3 Youth@@ 2026-04-07 3/150 2026-04-07 22:00 by hemengdong
[考研] 297分083200求助 +9 aekx 2026-04-05 9/450 2026-04-06 20:57 by flysky1234
[考研] (调剂)一志愿报考哈尔滨工业大学0857资源与环境专业378分考生 +7 狠狠加油 2026-04-05 8/400 2026-04-06 16:52 by momo皓
信息提示
请填处理意见