24小时热门版块排行榜    

查看: 2362  |  回复: 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 的主题更新
☆ 无星级 ★ 一星级 ★★★ 三星级 ★★★★★ 五星级
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 一志愿中南大学化学学硕0703总分337求调剂 +4 niko- 2026-03-22 4/200 2026-03-23 07:56 by Iveryant
[考研] 323求调剂 +6 洼小桶 2026-03-18 6/300 2026-03-23 00:29 by king123!
[考研] 263求调剂 +4 yqdszhdap- 2026-03-22 4/200 2026-03-22 21:20 by 1144970272
[考研] 308求调剂 +3 墨墨漠 2026-03-21 3/150 2026-03-22 16:54 by i_cooler
[考研] 一志愿 西北大学 ,070300化学学硕,总分287,双非一本,求调剂。 +3 晨昏线与星海 2026-03-20 3/150 2026-03-22 16:00 by ColorlessPI
[考研] 生物学一志愿985,分数349求调剂 +4 zxts12 2026-03-21 7/350 2026-03-22 09:57 by zxts12
[考研] 0856材料专硕353求调剂 +4 NIFFFfff 2026-03-20 4/200 2026-03-22 09:49 by 2026paper
[考研] 085600材料与化工306 +4 z1z2z3879 2026-03-21 4/200 2026-03-21 23:44 by ms629
[考研] 280求调剂 +11 咕噜晓晓 2026-03-18 12/600 2026-03-21 22:40 by ACS Nano——
[考研] 311求调剂 +3 勇敢的小吴 2026-03-20 3/150 2026-03-21 17:40 by ColorlessPI
[考研] 材料 271求调剂 +5 展信悦_ 2026-03-21 5/250 2026-03-21 17:29 by 学员8dgXkO
[考研] 296求调剂 +4 www_q 2026-03-20 4/200 2026-03-21 17:26 by 学员8dgXkO
[考研] 336求调剂 +5 rmc8866 2026-03-21 5/250 2026-03-21 17:24 by 学员8dgXkO
[基金申请] 学校已经提交到NSFC,还能修改吗? 40+4 babangida 2026-03-19 9/450 2026-03-21 16:12 by babangida
[考研] 材料与化工(0856)304求 B区 调剂 +3 邱gl 2026-03-21 3/150 2026-03-21 13:47 by lature00
[考研] 083200学硕321分一志愿暨南大学求调剂 +3 innocenceF 2026-03-17 3/150 2026-03-21 02:35 by JourneyLucky
[考研] 华东师范大学-071000生物学-293分-求调剂 +3 研究生何瑶明 2026-03-18 3/150 2026-03-21 01:30 by JourneyLucky
[考研] 296求调剂 +6 www_q 2026-03-18 10/500 2026-03-20 23:56 by JourneyLucky
[考研] 生物学调剂招人!!! +3 山海天岚 2026-03-17 4/200 2026-03-19 21:34 by 怎么释怀
[考研] 286求调剂 +6 lemonzzn 2026-03-16 10/500 2026-03-19 14:31 by lemonzzn
信息提示
请填处理意见