循环码生成原理与FPGA实现

本文介绍了CRC编码原理,用于数据传输中的错误检测。在(7, 4)系统循环码示例中,详细解释了如何生成码字,并探讨了FPGA实现循环码字生成电路的时序控制和工作过程。" 114477473,10538596,CentOS6.9下解决zabbix_server3.0.17无法监听10051端口问题,"['zabbix', 'Linux系统管理', '数据库管理', '网络监控']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        近日,因为项目的需要,重新拾起编码理论,这个项目当中,发送端的信息序列添加了CRC码字,好在接收端进行CRC校验,检测接收到的信息序列是否在传输过程中出现了错误。CRC编码作为循环码字的一种,通常用在数据传输的检错中,其生成原理与循环码字的生成完全一致,其原理下面会进行说明。

1. 编码原理

        循环码的码字多项式都是多项式g(D)的倍式,该g(D)的阶数为r=n-k,对于一个信息序列M(D),其码字多项式可以表示为

A(D) = D^(n-k)*M(D) + r(D),

        r(D)为监督码多项式,它等于D^(n-k)*M(D)除以g(D)得到的余式,说的通俗一点,循环码的构造就是凑出一个余式r(D)使得码字多项式A(D)能够被生成多项式g(D)整除,在传输过程中码字A(D)一旦发生了错误,则接收端的码字不能够被生成多项式整除,就可以知道在传输过程中发生了错误,在循环码字的纠错范围内时,可以根据错误的图案(接收到的码字除以生成多项式的余式),找到对应错误的信息比特位。余式r(D)可以表示为

r(D) = D^(n-k)*M(D) mod g(D),

        下面举个例子看看循环码字是怎么生成的。对于一个(7, 4)的系统循环码,7表示码字长度n=7,4表示编码的信息序列长度k=4,那么监督序列的长度r=n-k=3,系统码表示生成的n比特码字中,前面k个比特的码字与信息码字完全一致,只是在信息码字后添加了r个比特的校验位。言归正传,(7, 4)系统循环码的生成多项式为g(D) = D^3 + D^2 + 1,若信息码为1001,那么怎么求编码后的码字呢?我们知道,只要求出后面r个比特的监督码字就行了,前面的k个比特的码字照抄信息码字就行了。信息码字1001写成多项式的形式为

M(D) = D^3 + 1,

        监督多项式通过求余得到:

r(D) = D^3*(D^3 + 1) mod (D^3 + D^2 + 1) = D + 1,

        码字多项式:

A(D) = D^3*(D^3 + 1) + D + 1 = D^6 + D^3 + D + 1,

        码字多项式写成序列的形式为1001011。值得一提的是,在编码过程中,所采用是GF(2)域上的加减法运算,相当于说减法也可看成加法,所有的加法都是模2加运算,即

1 + 1 = 0, 1 + 0 = 1, 0 + 1 = 1, 0 + 0 = 0,

        对于k比较长的情况,写成这种多项式的形式不便于计算,这里提供另外一种表达形式,实际上都是求余式操作,不过在形式上做了简化而已。

                                                                                         1  1  1  1

                                                                                 _____________________

                                                               1101       |         1   0  0  1  0  0  0

                                                                                   +    1   1  0  1

                                                                                   ----------------------------

                                                                                              1  0  0  0

                                    &nbs

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值