⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rs.cpp

📁 经典的里德索罗蒙码RS编码的dsp开发的c语言代码。
💻 CPP
字号:
#include<fstream.h>
unsigned int in_data_qian8[405];
unsigned int shengchengduoxiangshi=16385;         //生成多项式100000000000001(1)          
unsigned int raomaqi_biaozhiwei;                  //扰码器寄存器标志位
unsigned int raomaqi_jichunqi=1;                  //扰码器寄存器15位,设初始状态为1
unsigned int  rs_bianma_jiaoyan[96];                //rs编码校验值存放数组
unsigned int  rs_bianma_caozuoshu;                  //rs编码操作数
unsigned int  rs_bianma_jicunqi_0;                  //rs编码寄存器0
unsigned int  rs_bianma_jicunqi_1;                  //rs编码寄存器1
unsigned int  rs_bianma_jicunqi_2;                  //rs编码寄存器2
unsigned int  rs_bianma_jicunqi_3;                  //rs编码寄存器3	unsigned int in_data_xinxi5[648];
unsigned int in_data_xinxi5[648];
void main()
{
	int t;
	int i,j,k,k1,k2;
    unsigned int rs_benyuyu[31]    ={ 1, 2, 4, 8,16, 5,//由本原域值推出多项式值的表
                             10,20,13,26,17, 7,
                             14,28,29,31,27,19,
                              3, 6,12,24,21,15,
                             30,25,23,11,22, 9,
                             18};    
    
    unsigned int rs_duoxiangshi[31]={ 0, 1,18, 2, 5,19,//由多项式值推出本原域值的表、使用时需要减1
                             11, 3,29, 6,27,20,
                              8,12,23, 4,10,30,
                             17, 7,22,28,26,21,
                             25, 9,16,13,14,24,
                             15}; 
	ofstream fout("e:\\a.txt");
	for(i=0;i<255;i++) in_data_qian8[i]=i+1;
	for(i=255;i<405;i++) in_data_qian8[i]=i-255;
	for(j=0;j<405;j++)
	{
		for(k=0;k<8;k++)
		{
			t=(in_data_qian8[j]>>k) & 1;
			fout<<t<<"   ";
			for(i=14;i>=0;i--) 
			{
				t=(raomaqi_jichunqi>>i) & 1;
				fout<<t<<" ";
			}
			fout<<" ";
			raomaqi_biaozhiwei= raomaqi_jichunqi & shengchengduoxiangshi;
			if(raomaqi_biaozhiwei>1)   raomaqi_biaozhiwei=shengchengduoxiangshi-raomaqi_biaozhiwei;
			raomaqi_biaozhiwei = raomaqi_biaozhiwei ^ (in_data_qian8[j]>>k & 1);
			fout<<raomaqi_biaozhiwei<<"   ";
			raomaqi_jichunqi=raomaqi_jichunqi<<1;
			raomaqi_jichunqi=raomaqi_jichunqi ^ raomaqi_biaozhiwei;
			in_data_qian8[j]=(in_data_qian8[j] & ~(1<<k)) ^ (raomaqi_biaozhiwei<<k);
//			cout<<in_data_qian8[j]<<"  ";
			fout<<endl;
		}
		fout<<in_data_qian8[j]<<endl;
	}
	fout<<endl;
	for(j=0;j<81;j++)
    {
        for(k2=0;k2<8;k2++)
        {
            in_data_xinxi5[j*8+k2]=0;
            for(k1=0;k1<5;k1++)
            {
                     in_data_xinxi5[j*8+k2]=((in_data_qian8[j*5+k1]>>k2 & 1)<<k1) ^ in_data_xinxi5[j*8+k2];
            }
			fout<<in_data_xinxi5[j*8+k2]<<endl;
        }    
    }
	fout<<endl;
       for(j=0;j<24;j++)
        {
              //寄存器清0
              rs_bianma_jicunqi_0=0;
              rs_bianma_jicunqi_1=0;
              rs_bianma_jicunqi_2=0;
              rs_bianma_jicunqi_3=0;
              for(k=0;k<27;k++)
              {
                       //算取操作数
                       rs_bianma_caozuoshu = in_data_xinxi5[j*27+k] ^ rs_bianma_jicunqi_3;
                       //算取寄存器
                       if(rs_bianma_caozuoshu==0)
                       {
                             rs_bianma_jicunqi_3 = rs_bianma_jicunqi_2;
                             rs_bianma_jicunqi_2 = rs_bianma_jicunqi_1;
                             rs_bianma_jicunqi_1 = rs_bianma_jicunqi_0;
                             rs_bianma_jicunqi_0 = 0;
                       }
                       else
                       {
                               rs_bianma_caozuoshu = rs_duoxiangshi[rs_bianma_caozuoshu-1];
                               rs_bianma_jicunqi_3 = rs_benyuyu[(rs_bianma_caozuoshu+24)>30?(rs_bianma_caozuoshu+24)-31:(rs_bianma_caozuoshu+24)] ^ rs_bianma_jicunqi_2;
                               rs_bianma_jicunqi_2 = rs_benyuyu[(rs_bianma_caozuoshu+19)>30?(rs_bianma_caozuoshu+19)-31:(rs_bianma_caozuoshu+19)] ^ rs_bianma_jicunqi_1;
                               rs_bianma_jicunqi_1 = rs_benyuyu[(rs_bianma_caozuoshu+29)>30?(rs_bianma_caozuoshu+29)-31:(rs_bianma_caozuoshu+29)] ^ rs_bianma_jicunqi_0;
                               rs_bianma_jicunqi_0 = rs_benyuyu[(rs_bianma_caozuoshu+10)>30?(rs_bianma_caozuoshu+10)-31:(rs_bianma_caozuoshu+10)];
                       }
					  fout<<rs_bianma_jicunqi_3<<"  "<<rs_bianma_jicunqi_2<<"  "<<rs_bianma_jicunqi_1<<"  "<<rs_bianma_jicunqi_0<<endl;
              }
              //存放校验码字
              rs_bianma_jiaoyan[j*4]  =rs_bianma_jicunqi_3;
              rs_bianma_jiaoyan[j*4+1]=rs_bianma_jicunqi_2;
              rs_bianma_jiaoyan[j*4+2]=rs_bianma_jicunqi_1;
              rs_bianma_jiaoyan[j*4+3]=rs_bianma_jicunqi_0;
			  fout<<endl<<rs_bianma_jiaoyan[j*4]<<"  "<<rs_bianma_jiaoyan[j*4+1]<<"  "<<rs_bianma_jiaoyan[j*4+2]<<"  "<<rs_bianma_jiaoyan[j*4+3]<<endl<<endl;
        }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -