循环码二步大数逻辑译码原理实验

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

H a r b i n I n s t i t u t e o f T e c h n o l o g y

信息论与编码

实验报告

实验名称:循环码二步大数逻辑译码原理实验院系:电子与信息工程学院通信工程系班级:10硕通信一班

姓名:

学号:

设计时间:2010-11-20

哈尔滨工业大学

一、 实验内容

已知一个(7,4)系统循环码的生成多项式为g x =x 3+x +1,设计基于此生成多项式的大数逻辑译码器。

二、 实验原理

2.1 多项式的除法电路

本实验的输入为串行数据,因而只考虑串行数据的除法电路。

假设多项式r x =r n x n +r n −1x n−1+⋯+r 1x +r 0,g x =g r x r +g r−1x r−1+⋯+g 1x +g 0,且有r ≤n ,则r x 除以g x 的除法电路的一般形式如图1。

图1

多项式除法的一般电路

图1中,输入序列按r n −1r n …r 0的顺序输入,右上方的输出为商多项式,待r 0输入结束后,各寄存器中的数据为余式多项式。

在二进制的情况下,模2加法等效于模2减法,且g x 的系数只可能为0或1,因而除法电路可进一步简化,例如,g x =x 3+x +1对应的除法电路如图2所示。

图2 除式为g x =x 3+x +1的除法电路

在本实验中,只对余式感兴趣,在输入序列完毕后,余式为s x =s 2x 2+s 1x +s 0。 2.2 循环码的译码原理

假设系统循环码的生成多项式为g x =g r x r +g r−1x r−1+⋯+g 1x +g 0,接收到的一组循环码字的多项式表示为r x =r n x n +r n −1x n−1+⋯+r 1x +r 0,则按照以下方法译码:

i) 求r x 除以g x 的余式s x ,定义此余式为校验子多项式。 ii) 根据校验子多项多生成错误图样e x 。

iii) e x+r x=c x即为译码结果。

这里不讨论循环码的纠检错能力,(7,4)系统循环码可以纠正一位错。

根据第ii步所用的方法不同,循环码的译码方法有梅吉特译码、捕错译码及大数译码等方法。

2.3大数译码原理

实际上,无论是梅吉特译码器,捕错译码器还是大数译码器,都用到了循环码的一个重要性质:

如果s x为接收码字多项式r x的校验子多项式,则xs x[模g x]也必然是

xr x[模x n+1]的校验子多项式。

每个校验子多项式对应一种错误图样。循环码本身的定义就表明了xr x[模x n+1]也对应一个许用码字(在无错的情况下),这就意味着,如果一个校验子对应的错误图样可以纠正一位错,那么就可以通过上述运算纠正这个码字中的所有一位错的情况。

下面以本实验的实验内容来构造大数逻辑译码器。(7,4)系统循环码的码字长度为7,收到的码字为r x。错误图样e=[1000000]可以纠正码字r6,假设此错误图样对应的校验子多项式为s6x,则可以通过以下运算来纠正码字r5(假设只有一位错):

i) 通过除法电路得到校验子多项式s x。

ii) 做运算s5x=xs x[模g x]。

iii) 如果s5x等于s6x,则证明码字r5有错,否则无错。

依照这样的方法可以依次纠正其余码字。

在图2中,当输入为零时,就相当进行了运算xs x[模g x]。现在问题转化为,如何根据验子多项式为s6x纠正码字r6?亦即如何根据s6x的系数s0s1s2纠正码字r6?

考虑循环码一致监督矩阵与校验子向量、错误图样之间的关系:

S T=H R T=H E T

式中S为校验子向量,H为监督矩阵,E错误图样向量。生成多项式为g x=x3+x+1的一致监督矩阵为:

H=1110100 0111010 1101001

代入上式,并将S及E展开可得:

s2

s1 s0=

1110100

0111010

1101001

e6

e5

e4

e3

e2

e1

e0

于是,得到以下关系式:

s2=e6+e5+e4+e2

s1=e5+e4+e3+e1

s0=e6+e5+e3+e0

A11=s1+s0=e6+e4+e1+e0

A12=s2=e6+e4+e5+e2

A21=s2=e6+e5+e4+e2

A22=s0=e6+e5+e3+e0

上式中用到了模二加的性质e+e=0。

再记

A1=A11 & A12=e6+e4

A2=A21 & A22=e6+e5

式中符号&表示与操作,并且假设e i,i=0…6最多只能有一位等于1,即接收码字只可能为无错或有一位错。

显然,只有当A1与A2均为1的情况下,可以知道e6=1,否则一定有e6=0,但不能确定e i,i=0…5的情况。

最后,结合图2的除法电路及上面的分析,可以得到生成多项式为g x=x3+x+ 1的(7,4)系统循环码的大数逻辑译码电路图,如图3所示。

图3 生成多项式为g x=x3+x+1的循环码大数逻辑译码电路

图3中,各寄存器的初始状态为零,在前7个时钟周期,接收码字序列r6r5 0

次进入系统,输出为7个零。寄存器S0、S1、S2保存此时的校验子多项式的系数,如果A1、A2与操作结果为1,表明接收到的码字最高位即r6有错,在下一个时钟周期就可以对r6进行纠错。在后7个时间周期,电路输入为7个零,输出为译码结果。因此,整个系统需要14个时钟周期才能完成一个码字的译码。因为经过两级逻辑运算才得到错误结果,因此称上面的电路为二步大数逻辑译码电路。

为了达到连续译码的目的,图中增加了虚线所示的反馈,在检测到错误后,这个反馈可以将寄存器S0、S1、S2清零,虚线只在后7个时钟周期有效。此外需要说明的是寄存器D的作用:在第7个时钟周期后,A1、A2相与的结果已经出现,标志着r6的错误情况,但此时r6在7级移位寄存器中,因此将A1、A2相与的结果延时一个时钟周期方可正确译码。另一种解决方法是将7级移位寄存器改为6级。

事实上,图3中,只有当S0=1,S1=0,S2=1时,组合逻辑电路部分才输出1,即有错误发生,如果将组合逻辑电路部分换为一个“101”识别器,就构成了梅吉特译码器。

三、实验环境及设计工具

3.1 实验环境

操作系统:Windows XP SP2简体中文版

运行环境:.NET Framework 2.0

3.2设计工具

本实验程序使用C#语言编写译码过程及交互界面,所用开发工具为SharpDevelop 3.2;使用gnuplot 4.4绘制码元的波形图。

四、设计方法

4.1模块/单元设计

二步大数逻辑译码器实验程序由三部分组成:界面及控制模块、译码器单元和波形生成模块。各部分关系如图4。

相关文档
最新文档