ImageVerifierCode 换一换
格式:DOC , 页数:15 ,大小:237KB ,
资源ID:675569      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-675569.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(循环编码.doc)为本站会员(wj)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

循环编码.doc

1、汕 头 大 学 工 学 院三级项目报告课程名称: 信息论与编码 课程题目: 循环码的编码和译码程序设计 指导教师: 唐雅娟 系 别: 电子工程系 专 业: 电子信息工程 学生姓名: 曾煌冠 学 号: 09141014 完成时间: 2012 年 5月4日至 5月14日成绩: 评阅人:唐雅娟循环码的编码和译码程序设计一. 循环码编码和译码原理简介:1. RS循环码编码原理与特点:首先令和分别表示信息多项式与校验多项式,则一个RS码的多项式表达式为:如果为一个码字,则它必须为生成多项式的位数,即:编码的过程就是从和中寻找,它可通过除法算法来完成。即用除以得到:(1式)同时令=-,则有。2. RS循环

2、码译码原理与特点:(1) 能纠正t个符号差错的(n,k)RS码,数据段中包含k个信息符号和2t个校验符号。设存贮器系统数据输出的多项式(妈接收字多项式)可以表达为,差错图样多项式为,纠错后的码多项式为,伴随式多项式为,差错定位多项式为。3. RS循环码的基本步骤及实现循环码的程序流程图:信源分帧Rs(7,3)编码BPSK调制AWGN信道BPSK解调Rs(7,3)译码合帧误码率计算4. 主要源程序:/*输入的信息元:m(x)*/void information_element(unsigned char mxK)unsigned char tem;srand(unsigned)time(0);f

3、or (unsigned int i=0;iK;i+)tem = rand()%6+1;if (tem = 1)mxi = a;elsemxi = tem + 48;/*确定被除数:x(n-k)m(x)*/void count_dividend(unsigned char dividend,unsigned char mx)for (int i=0;i=K)dividendi = 0;continue;dividendi = mxi;/*gx各项乘以被除数的第一项系数;注意:符号0的ASCII码为48*/void for_mod2(unsigned char tem,unsigned char

4、 c)unsigned int i;switch (c)case 1:for (i=0;i5;i+)temi = gxi;break;case a:for(i=0;i5;i+)if (gxi = 1)temi = a;else if (gxi = a)temi = 2;elsetemi = gxi + 1;break;default:for(i=0;i5;i+)if (gxi = 1)temi = c;else if (gxi = a)temi = (int)c + 1;elsetemi = (int)gxi + (int)c - 48;break;/*应用课本第153页的表6-7的关系式转换

5、*/for (i=0;i8& temi!=a)temi -= 7;if (temi=7)temi = 1;/*与GF(23)扩域(课本153页)匹配*/unsigned char math(unsigned char ctem)unsigned char c = 0;/当两系数相同时(即ai+ai=0)为0if (ctem0=0&ctem1=0&ctem2=1)c = 1;if (ctem0=0&ctem1=1&ctem2=0)c = a;if (ctem0=1&ctem1=0&ctem2=0)c = 2;if (ctem0=0&ctem1=1&ctem2=1)c = 3;if (ctem0=

6、1&ctem1=1&ctem2=0)c = 4;if (ctem0=1&ctem1=1&ctem2=1)c = 5;if (ctem0=1&ctem1=0&ctem2=1)c = 6;return c;/*mod2加*/void mod2(unsigned char dividend,unsigned char tem,unsigned char remainder)unsigned int k;for (unsigned int j=1;j5;j+)unsigned char tem13;unsigned char tem23;/*被除数对应到GF(23)扩域,增加三位都是0的情况*/swi

7、tch (dividendj)case 1:for (k=0;k3;k+)tem1k = GF0k;break;case a:for (k=0;k3;k+)tem1k = GF1k;break;case 0:for (k=0;k3;k+)tem1k = 0;break;default:unsigned int n = dividendj - 48;for (k=0;k3;k+)tem1k = GFnk;/*gx各项乘以被除数的第一项系数后对应到GF(23)扩域,增加三位都是0的情况*/switch (temj)case 1:for (k=0;k3;k+)tem2k = GF0k;break;c

8、ase a:for (k=0;k3;k+)tem2k = GF1k;break;case 0:for (k=0;k3;k+)tem1k = 0;break;default:unsigned int m = temj - 48;for (k=0;k3;k+)tem2k = GFmk;/*异或运算*/unsigned char ctem3;for (k=0;kK;k+)if (tem1k = tem2k)ctemk = 0;elsectemk = 1;remainderj-1 = math(ctem);/*匹配*/*多项式相除*/void polynomial_division(unsigned

9、char dividend,unsigned char remainder,int flag)unsigned char tem5;unsigned int i,n=5;for (i=0;iflag;i+)for_mod2(tem,dividend0);mod2(dividend,tem,remainder);/*准备下次除法的被除数,如果被除数的第一项为0则被除数数组左移一位,第一,二项都为0则停止*/for (unsigned int j=0;jR;j+)dividendj = remainderj;dividend4 = dividendn+;if (dividend0 = 0)if (

10、dividend1 = 0)break;for (unsigned int k=0;kK;k+)dividendk = dividendk+1;i +;n +;dividend3 = 0;/*求余式*/void count_remainder(unsigned char remainderR)information_element(mx);unsigned char dividendN;count_dividend(dividend,mx);polynomial_division(dividend,remainder,K);/*RS码映射成7个二进制3bit组,对应GF表*/void crea

11、te_rsc(unsigned char rsc,unsigned char remainder,unsigned char rsc_GFNK)unsigned int i,k;for (i=0;i3;i+)rsci = mxi;for (i=3;iN;i+)rsci = remainderi-3;for (i=0;iN;i+)switch (rsci)case 1:for (k=0;k3;k+)rsc_GFik = GF0k;break;case a:for (k=0;k3;k+)rsc_GFik = GF1k;break;case 0:for (k=0;k3;k+)rsc_GFik = 0

12、;break;default:unsigned int m = rsci - 48;for (k=0;k3;k+)rsc_GFik = GFmk;/*BPSK映射:符号1映射成1,符号0映射成-;注意:符号-输出为-1*/void BPSK_mapping(unsigned char rsc_GFNK,unsigned char rsc_BPSKNK)unsigned int i,j;for (i=0;iN;i+)for (j=0;jK;j+)if (rsc_GFij = 1)rsc_BPSKij = 1;else rsc_BPSKij = -;if (rsc_BPSKij = -)/*加噪声

13、干扰*/void add_noise(unsigned char rsc_BPSKNK)srand(unsigned(time(0);unsigned int n1=1,n2=2;unsigned int m1=1,m2=1;while (1)n1 = rand()%7;n2 = rand()%7;m1 = rand()%3;m2 = rand()%3;if (n1!=n2)break;/*/*对应的位置取反*/if (rsc_BPSKn1m1 = -)rsc_BPSKn1m1 = 1;elsersc_BPSKn1m1 = -;if (rsc_BPSKn2m2 = -)rsc_BPSKn2m2

14、 = 1;elsersc_BPSKn2m2 = -;/*解映射*/void de_mapping(unsigned char rsc_BPSKNK,unsigned char de_rscN)unsigned int i,j;for (i=0;iN;i+)for (j=0;j8& c!=a)c -= 7;if (c=7)c = 1;if (c 7| c=a)break;switch (c)case 1:for (k=0;k3;k+)c_temk = GF0k;break;case a:for (k=0;k3;k+)c_temk = GF1k;break;case 0:for (k=0;k3;k

15、+)c_temk = 0;break;default:unsigned int m = c - 48;for (k=0;k3;k+)c_temk = GFmk;/*求伴随多项式*/unsigned char count_sx(unsigned char de_rscN,unsigned int f)unsigned char tem = 0 ,result = 0;unsigned char c_tem1K;unsigned char c_tem2K;unsigned char c_temK;for (unsigned int i=0;iN;i+)if (de_rsci = 0)continu

16、e;else if (de_rsci = a)tem = 1 + (6 - i)*f;else if (de_rsci = 1)if (6-i)!=0)tem = 0 + (6 - i)*f;else tem = 1;elsetem = de_rsci + (6 - i)*f;math_GF(tem,c_tem1);math_GF(result,c_tem2);for (unsigned int k=0;kK;k+)if (c_tem1k = c_tem2k)c_temk = 0;else c_temk = 1;result = math(c_tem);return result;/*求错误多

17、项式count_ex()的子程序,实现异或运算*/void nor(unsigned char temp1K,unsigned char temp2K,unsigned char resultK)for (unsigned int i=0;iK;i+)if (temp1i = temp2i)resulti = 0;else resulti = 1;/*求错误多项式count_ex()的子程序,返回两个行列式相减的结果*/int fun(unsigned char c1,unsigned char c2)unsigned char temp1K,temp2K,resultK;if (c1 = 0

18、)c1 = 1;else if (c1 = 1)c1 = a;if (c2 = 0)c2 = 1;else if (c2 = 1)c2 = a;math_GF(c1,temp1);math_GF(c2,temp2);nor(temp1,temp2,result);unsigned char c = math(result);if (c = 1)return 0;else if (c = a)return 1;else return c-48;/*求错误多项式*/void count_ex(unsigned char sR,unsigned char qxK-1,int n)unsigned c

19、har tem1,tem2;unsigned char sxR;int tem;for (unsigned int i=0;in;i+)if (si = 1)sxi = 0;else if (si = a)sxi = 1;elsesxi = si;/*采用行列式法*/if (s0!=0&s2!=0)tem1 = sx0+sx2-48;else tem1 = 0;if (s1!=0)tem2 = sx1+sx1-48;elsetem2 = 0;tem = fun(tem1,tem2);/*Q2=(s3s3-s2s4)/(s1s3-s2s2)*/if (s2!=0)tem1 = sx2+sx2-4

20、8;elsetem1 = 0;if (s1!=0&s3!=0)tem2 = sx1+sx3-48;elsetem2 = 0;int a = fun(tem1,tem2);qx0 = a-tem+48;if (qx0 0)qx0 = qx0 + 7;/*Q1=(s1s4-s2s3)/(s1s3-s2s2)*/if (s0!=0&s3!=0)tem1 = sx0+sx3-48;elsetem1 = 0;if (s1!=0&s2!=0)tem2 = sx1+sx2-48;elsetem2 = 0;int b = fun(tem1,tem2);qx1 = b-tem+48;if (qx1 0)qx1

21、= qx1 + 7;/*搜索错误位置*/void wrong_position(unsigned char tem2)unsigned char qxK;unsigned int i,j;unsigned char tem1K,tem2K,tem3K;unsigned char temp=0,result;for (i=0;iN;i+)for (unsigned int j=0;jK-1;j+)qxj = temj;/*确保下次循环时错误位置不变*/int n=2;result = 0;for (j=0;jK;j+)if (qxj=1)qxj = 0;else if (qxj=a)qxj =

22、1;qxK-1 = 1;/*错误多项式的最后一位是1*/temp = qxj+i*n;/*实现xi*ai*/n -= 1;math_GF(temp,tem1);math_GF(result,tem2);for (unsigned int k=0;kK;k+)/*异或运算*/if (tem1k = tem2k)tem3k = 0;elsetem3k = 1;result = math(tem3);/*译码与纠错*/void decode_rsc(unsigned char de_rscN,unsigned char sxR)for (unsigned int i=0;iR;i+)sxi = co

23、unt_sx(de_rsc,i+1);unsigned char qxK-1;count_ex(sx,qx,R);for (unsigned int j=0;j8& qxj!=a)qxj -= 7;else if (qxj=7)qxj = 1;else if (qxj 0)qxj = qxj + 7;wrong_position(qx);void main()char GXR+1;void count_gx(char GXR+1);count_gx(GX);unsigned char rscN;unsigned char rsc_GFNK;unsigned char remainderR;count_remainder(remainder);create_rsc(rsc,remainder,rsc_GF);unsigned char rsc_BPSKNK;BPSK_mapping(rsc_GF,rsc_BPSK);add_noise(rsc_BPSK);unsigned char de_rscN;de_mapping(rsc_BPSK,de_rsc);unsigned char sxR;decode_rsc(de_rsc,sx

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2