资源描述:
《pocsag编码器的实现,无线寻呼系统》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、实验总成绩:报告份数通信与信息工程学院专业课程设计报告专业班级:通工1102学生姓名:学号(班内序号):2013年11月1曰POCSAG编码器的实现1.实验原理:POCSAG码采用的是串行批次结构,每次传输的信号,首先是至少576bit的前导信号,跟着是若干批次的地址和信息信号,每一批次由17个码字组成,一个码字长32bit,第一个码字必是同步码字,后面16个码字分成8帧,每帧有两个码字,这样一个批次就由一个同步码加8帧组成,其编码格式如下:前蘆网SC0I7SC0地址码字01地址位功能位校验位佶坊码字偶校验<j1佶念位校检位POCSAG编码
2、格式前导码是576bit的101010交替码,其作用是让各接收机做好接受准备,使接收机获得位同步,以便在后面获得码组同步。同步码用于标识一批码组的开始,码字固定为7CD215D8,地址码必须在其对应的帧屮发送,信息码可在任一帧中发送,但须紧跟随其地址码字。码字第一位为0表示地址码字,为1表示信息码字,没有信息码字,则用空闲码字填充,空闲码字固定为5A89C197POCSAG码字都是BCH(31,21)加一位偶校验位组成,其第22至31位是BCH纠错附加码,即对前面1至21位进行纠错编码,最后一位是偶校验,使32位码字中1的个数为偶数,该码字
3、能够纠正2个或检出5个随机错误。1.实验流程图:1.实验心得体会:通过这两周的专业课程设计-POCSAG编码器的实现,感觉收获很大,学到了很多,首先,通过查阅相关的资料,对POCSAG原理十分的熟悉。开始做实验室时,先列出流程图,然后进行分块编码,在此期间,遇到一些困难,比如,一些条件的限制,当输入七位十进制大于2097151时,转换成的二进制数大于21位,不符合实际,最终在冋学一块的帮助下,得到了解决。深深地认识到团队的力量,合作的重要性,还有对C语言知识进行了复习,还学到了很多新知识,收获颇丰。2.参考文献:1.《无线寻呼系统原理》、设
4、计与维修许伟平编著电子工业出版社2.《无线寻呼系统》陆冰霞编著电子工业山版社3.《C语言在微机输入输出与接口技术中的实现与范例》李齐雄游国乾郑颜雄编著学苑出版社5.实验代码:#include〃stdio.h"#dcfincN8#dcfincM21#dcfincP32#dcfincZ64inti;void^addressCode(intd[],longn)//地址码字形成{while(n>0)//l).7位十进制码转化为21位2进制d[i++]=n%2;n=n/2;}if(i〈21)//判断是当否是21位,不是自动加零for(;i〈21;i+
5、+){d[i]=0;}return0;}voidgradeBCH(intb[])//2)形成地址码字,生成BC11码{inti=0,j,k;intG[11]={1,1,1,0,1,1,0,1,0,0,1};intT[ll]={0,0,0,0,0,0,0,0,0,0,0};intC[32];for(j=0;j〈32;j++)C[j]=0;for(j=0;j<=20;j++)C[j]=b[j];while(1){if(C[i]&&i<=21){j=0;for(k=i;i〈k+ll;i++)c[i]=c[irG[,];i-=ll;}i++;if(
6、C[i]==l&&i〉21)break;}for(j=0;i〈:31;i++,j++)T[j]=C[i];for(i=0,j=21;j<31;i++,j++)b[j]=T[i];}voidmcssagcCodc(intMess[],intc[],intcount,intzhen)//信息码字形成{intj,k=l,t,s=l;intnum=0;c[0]=l;t=count-1;for(;t>二0;t—)switch(Mess[t]){case0:num二0;break;case1:num=l;break;case2:num=10;break
7、;case3:num=ll;break;case4:num=100;break;case5:num=101;break;case6:num=110;break;case7:num=lll;break;case8:num二1000;break;case9:num=1001;break;}k=k+3;for(j=0;j<4;j++){c[k]=num%10;num=num/10;k一一;}k=k+5;}for(k;k<=20;k++)c[k>l;}voidcodeConvert(charMess[],intsynchro口,intcount,i
8、ntflag)//同步码字SC和空闲码字的转化{intj,k=0,t,m;intnum=0;if(flag==0)m=l;if(flag==l)m=0;for(;m〈2;m++)