?? bch編譯碼.c.txt
字號:
BCH(15,5)編譯碼C程序
voidLinCoding(void)//BCH(15,5)編碼
{
char i,aaa;
//char g[11]={1,0,1,0,0,1,1,0,1,1,1};
char a[10]={0,0,0,0,0,0,0,0,0,0};
char u[15]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
//移位寄存器輸入序列
for(i=0;i<5;i++)
{
u[10+i]=OrigSeq;
}
//求余式得監督序列
for(i=0;i<15;i++)
{
aaa=a[9];
a[9]=a[8]+aaa;
if(a[9]==2)
a[9]=0;
a[8]=a[7]+aaa;
if(a[8]==2)
a[8]=0;
a[7]=a[6];
a[6]=a[5]+aaa;
if(a[6]==2)
a[6]=0;
a[5]=a[4]+aaa;
if(a[5]==2)
a[5]=0;
a[4]=a[3];
a[3]=a[2];
a[2]=a[1]+aaa;
if(a[2]==2)
a[2]=0;
a[1]=a[0];
a[0]=u[14-i]+aaa;
if(a[0]==2)
a[0]=0;
}
//得到系統碼序列
for(i=0;i<10;i++)
{
LinCodSeq=a;
}
for(i=0;i<5;i++)
{
LinCodSeq[10+i]=OrigSeq;
}
for(i=0;i<15;i++)
{
if(i%5==0&&i!=0)
printf(",";
printf("%d",LinCodSeq);
}
printf(" 15,5,3)Bian Ma\n\n";
}
voidLinRecoding(void)//BCH(15,5)譯碼
{
char i,j,k,aaa;
//char g[11]={1,0,1,0,0,1,1,0,1,1,1};
char a[10]={0,0,0,0,0,0,0,0,0,0};
char u[15]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
//計算伴隨式S(X),由伴隨式并用修正捕錯法求錯誤圖樣
for(j=0;j<16;j++)
{
if(j==0)
{
for(i=0;i<15;i++)
{
u=LinCodSeq;
}
for(i=0;i<15;i++) //計算初始伴隨式
{
aaa=a[9];
a[9]=a[8]+aaa;
if(a[9]==2)
a[9]=0;
a[8]=a[7]+aaa;
if(a[8]==2)
a[8]=0;
a[7]=a[6];
a[6]=a[5]+aaa;
if(a[6]==2)
a[6]=0;
a[5]=a[4]+aaa;
if(a[5]==2)
a[5]=0;
a[4]=a[3];
a[3]=a[2];
a[2]=a[1]+aaa;
if(a[2]==2)
a[2]=0;
a[1]=a[0];
a[0]=u[14-i]+aaa;
if(a[0]==2)
a[0]=0;
}
}
else
{
aaa=u[14];
for(i=14;i>0;i--)
u=u[i-1];
u[0]=aaa;
for(i=0;i<10;i++)
a=0;
for(i=0;i<15;i++) //計算移位后伴隨式
{
aaa=a[9];
a[9]=a[8]+aaa;
if(a[9]==2)
a[9]=0;
a[8]=a[7]+aaa;
if(a[8]==2)
a[8]=0;
a[7]=a[6];
a[6]=a[5]+aaa;
if(a[6]==2)
a[6]=0;
a[5]=a[4]+aaa;
if(a[5]==2)
a[5]=0;
a[4]=a[3];
a[3]=a[2];
a[2]=a[1]+aaa;
if(a[2]==2)
a[2]=0;
a[1]=a[0];
a[0]=u[14-i]+aaa;
if(a[0]==2)
a[0]=0;
}
}
aaa=0;
for(i=0;i<10;i++) //計算伴隨式重量
aaa=aaa+a;
if(aaa<=3)//捕錯譯碼
{
for(i=0;i<10;i++)
{
LinError=a;
}
for(i=0;i<15;i++)
{
u=u+LinError;
if(u==2)
u=0;
}
for(k=j;k<15;k++)
{
aaa=u[14];
for(i=14;i>0;i--)
u=u[i-1];
u[0]=aaa;
}
for(i=0;i<15;i++)
LinCodSeq=u;
for(i=0;i<5;i++)
OrigSeq=LinCodSeq[10+i];
break;
}
aaa=!a[0]+a[1]+!a[2]+a[3]+a[4]+!a[5]+!a[6]+a[7]+!a[8]+!a[9];
if(aaa<=2)//捕錯譯碼修正
{
LinError[0]=!a[0];
LinError[1]=a[1];
LinError[2]=!a[2];
LinError[3]=a[3];
LinError[4]=a[4];
LinError[5]=!a[5];
LinError[6]=!a[6];
LinError[7]=a[7];
LinError[8]=!a[8];
LinError[9]=!a[9];
LinError[10]=1;
for(i=0;i<15;i++)
{
u=u+LinError;
if(u==2)
u=0;
}
for(k=j;k<15;k++)
{
aaa=u[14];
for(i=14;i>0;i--)
u=u[i-1];
u[0]=aaa;
}
for(i=0;i<15;i++)
LinCodSeq=u;
for(i=0;i<5;i++)
OrigSeq=LinCodSeq[10+i];
break;
}
}
for(i=0;i<5;i++)
{
printf("%d",OrigSeq);
}
printf(" 15,5,3)Yi Ma\n\n";
for(i=0;i<46;i++)
{
if(i%5==0&&i!=0)
printf(",");
printf("%d",Error);
}
printf(" :Cuo Wu Tu Yang B\n\n");
for(i=0;i<15;i++)
{
if(i%5==0&&i!=0)
printf(",");
printf("%d",LinError);
}
printf(" :Cuo Wu Tu Yang A\n\n");
}
2005-3-1 20:34 #1
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -