器存入整个码字,除法电路[S(x)?E(x)/g(x),E(x)?x6]得到校验子
S0?[s2,s1,s0]。这时门关上,进行译码。
如果S0(x)?x6?x2?1[modg(x)],这时[101]识别电路输出为1,表明
r6位有错。这时译码器继续移位,通过[101]识别电路可以将r6位的错
误纠正。在纠错的同时,[101]识别电路的输出又反馈到除法电路的输入端,以消除错误码元对除法电路的下一个校验子计算的影响。本电路中,第7次移位后产生了校验子S0,第8次移位时对r6进行纠正,同时将[101]识别电路的输出的1输入到输入端,结果使除法电路的寄存器状态为[000],消除了e6的影响。
由于循环闭合性,对于其它错误图样,该电路同样可以纠正。
图3-4 梅吉特译码器原理图
3.3.2梅吉特译码流程
5
输入接收码字Ri=0i=i+1i<=6否m=0m<=6是是校验子是否为101否是移位寄存器移位寄存,各寄存器更新状态校验子标志位s=1校验子标志位s=0否输入码字的第i位与s模2加得到输出码字的第i位; 寄存器D0、D1、D2相应更新m=m+1输出译码码字C
图3-5 梅吉特译码流程图
6
3.4程序整体流程图
图3-6 程序总体流程图
四、程序代码及注释
4.1编码程序
function C=Encode(M)
7
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
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]; elseif s==[1,0,0]
E=[0,0,0,0,1,0,0]; elseif s==[0,1,1]
E=[0,0,0,1,0,0,0]; elseif s==[1,1,0]
E=[0,0,1,0,0,0,0]; elseif s==[1,1,1,]
E=[0,1,0,0,0,0,0]; elseif s==[1,0,1]
E=[1,0,0,0,0,0,0]; end
C=mod((R+E),2);
4.5 梅吉特译码程序
function C=Decode(R) C=zeros(1,7);
D00=0;D10=0;D20=0; for i=1:14
if i<=7 D01=xor(D20,R(i)); D11=xor(D00,D20); D21=D10;
S1=D01&(~D11)&D21; else
D01=xor(D20,S0);
%梅吉特译码程序 %初始化寄存器的状态 %接收码字依次输入寄存器
%当前寄存器的状态,xor异或,相当于模2加法 1检测电路的输出 9