【报告】信息论实验报告

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

【关键字】报告

Harbin Institute of Technology

信息与编码理论

实验报告

设计题目:循环码编、译码器实验

院系:电子与信息工程学院

班级:通信一班

姓名:周蕾

学号:14S105045

序号:41

指导教师:石硕

报告时间:2014年12月20日

哈尔滨工业大学

一、设计题目、内容

(1)利用(7,4)系统循环码的生成多项式为:g(x)=x3+x+1,请设计该循环码的编码器;

(2)随机产生重量为0或1的八种错误图样中的一种,得到实际接收码字。

(3)根据接收到的码字进行译码,

(3.1)校验子多项式与错误图样多项式的对应关系表:

(3.2)梅吉特译码电路:

二、设计工具

MATLAB的GUI界面。

三、设计过程与流程图

3.1循环码编码

对于(7,4)循环码,生成多项式为。编码过程主要分为三步:

(1)用xn-k乘上m(x);

(2)用g(x)除xn-km(x),得到模g(x)的余式r(x),即

(3)c(x)=xn-km(x)+r(x)为系统循环码的码字多项式。

(7,4)循环码编码流程图如下:

图3-1 (7,4)循环码编码流程图

3.2、校验子译码

(1)首先根据接收到的码字与生成多项式进行二进制除法,得到校验子;

(2)根据校验子与错误图样的一一对应关系,确定错误图样。校验子多项式与错误图样多项式的对应关系表:

图3-2 校验子多项式与错误图样多项式的对应关系表

(3)根据接收码字R与错误图样E,得到译码之后的码字。

图3-3 校验子译码流程图

3.3、梅吉特译码

梅吉特译码器的结构如图3-4所示。以位有错为例,详细介绍该电路的译码过程:

开始译码时门打开,移位寄存器内全0.收到的码字多项式R(x)由高次到低次分别输入到七级缓存器和除法电路,7次移位后,缓存器存入整个码字,除法电路[,]得到校验子。这时门关上,进行译码。

如果,这时[101]识别电路输出为1,表明位有错。这时译码器继续移位,通过[101]识别电路可以将位的错误纠正。在纠错的同时,[101]识别电路的输出又反馈到除法电路的输入端,以消除错误码元对除法电路的下一个校验子计算的影响。本电路中,第7次移位后产生了校验子,第8次移位时对进行纠正,同时将[101]识别电路的输出的1输入到输入端,结果使除法电路的寄存器状态为[000],消除了的影响。

由于循环紧闭性,对于其它错误图样,该电路同样可以纠正。

图3-4 梅吉特译码器原理图

图3-5 梅吉特译码流程图

3.4程序整体流程图

图3-6 程序总体流程图

四、程序代码及注释

4.1编码程序

function C=Encode(M)

gx=[1,0,1,1]; %生成多项式x^3+x+1

xr=[1,0,0,0]; %x^r=x^3

xrmx=mod(conv(M,xr),2); %信息码字与x^r相乘

[q,r]=deconv(xrmx,gx); %模g(x)

q=mod(q,2);

r=mod(r,2);

C=xrmx+r;

4.2检查输入是否合法程序

function M=Check(m,number)

if number==4 %检测输入码字的位数,若为4,则合法

%将输入的数据的单独位提取出来

m3=uint8(mod(m,10000)/1000);

m2=uint8(mod(m,1000)/100);

m1=uint8(mod(m,100)/10);

m0=uint8(mod(m,10)/1);

M=[m3 m2 m1 m0];

%判断输入的数据是否合法,即是否只有0和1

if((m0==0|m0==1)&(m1==0|m1==1)&(m2==0|m2==1)&(m3==0|m3==1))

m4=0; %m4为附加位,用来表示输入的数据是否合法,0表示合法else

M=zeros(1,4);

m4=1; %m4=1,表示码字不是由0,1组成的四位码字end

else

M=zeros(1,4);

m4=2; %m4=2,表示输入的不是四位码字

end

M=[M m4];

4.3产生错误图样接收程序

function R=Recieve(C)

E=[0 0 0 0 0 0 0;

1 0 0 0 0 0 0;

0 1 0 0 0 0 0;

0 0 1 0 0 0 0;

0 0 0 1 0 0 0;

0 0 0 0 1 0 0;

0 0 0 0 0 1 0;

0 0 0 0 0 0 1]; %错误图样矩阵

i=unidrnd(8); %随机生成整数1~8

E1=E(i,:); %取出一个错误图样

R=mod((C+E1),2);

4.4 校验子译码程序

function C=Decode1(R) %校验子译码程序

gx=[1,0,1,1]; %生成多项式x^3+x+1 [q,s]=deconv(R,gx); %模g(x)

q=mod(q,2);

s=mod(s,2);

s=[s(5) s(6) s(7)]; %校验子

if s==[0,0,0]

E=[0,0,0,0,0,0,0];

elseif s==[0,0,1]

E=[0,0,0,0,0,0,1];

elseif s==[0,1,0]

E=[0,0,0,0,0,1,0];

相关文档
最新文档