循环码二步大数逻辑译码原理实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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。