通信原理之PCM编解码_第1页
通信原理之PCM编解码_第2页
通信原理之PCM编解码_第3页
通信原理之PCM编解码_第4页
通信原理之PCM编解码_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、重庆交通大学信息科学与工程学院综合性设计性实验报告专 业 班 级: 姓 名 学 号: 实验所属课程: 通信原理 实验室(中心): 语音八楼 指 导 教 师 : 实验完成时间: 3 年月1日教师评阅意见: 签名: 年 月 日实验成绩:一、 设计题目基于MATLAB的通信系统仿真信源编解码二、实验目的:1.综合应用Matlab编程与系统仿真、信号与系统、现代通信原理等多门课程知识,使我们建立通信系统的整体概念;2.培养我们系统设计与系统开发的思想;3.培养我们利用软件进行通信仿真的能力。4.培养我发现问题,解决问题,查阅资料解决问题的能力。5、培养我熟练掌握MATLAB,运用此matlab软件工具

2、进行通信仿真的能力三、实验设备及软件:PC机一台,MATBLAB。四、实验主要内容及要求:1、 对通信系统有整体的较深入的理解,深入理解自己仿真部分的原理的基础,画出对应的通信子系统的原理框图2、 提出仿真方案;3、 完成仿真软件的编制4、 仿真软件的演示5、 提交详细的设计报告五、实验原理1、 PCM基本原理脉冲编码调制(PCM)简称脉码调制,它是一种用二进制数字代码来代替连续信号的抽样值,从而实现通信的方式。因此此种通信方式抗干扰能力强,因此在很多领域都得到了广泛运用。PCM信号的形成主要由三大步骤组成,包括:抽样、量化和编码。它们分别完成时间上离散、幅度上离散及量化信号的二进制表示。量化

3、分为均匀量化和非均匀量化,为了减小小信号的量化误差,我们常使用的是非均匀量化。非均匀量化分为A律和µ律。我国采用的是A律,但由于A律不好实现,所以我们常用近似的13折线编码。1.1抽样抽样即是将时间连续的模拟信号由一系列时间离散的样值所取代的过程它实现的是信号在时间上的离散化。抽样信号要想无失真的恢复出原信号,抽样频率必须要满足抽样定理。即:如果信号的最高频率为fH,那么抽样频率fs必须要满足fs>=2fH.1.2量化经过抽样后的信号还并不是数字信号,它只实现了时间上的离散化。幅值上并不离散。所以我们要对信号进行量化,实现其幅值的离散化。量化分为均匀量化和非均匀量化。本实验主要

4、用到了非均匀量化中的A律13折线压缩。下面主要介绍A律13折线。A律压缩是指压缩器具有如下的压缩特性: 由于A律在工程上不好实现,所以我们经常用近似的13折线压缩法去代替A率压缩下面是13折线时的X值与A律计算得的X的比较202-12-22-32-42-52-62-70X近似值10x准确值17/86/85/84/83/82/81/80z0.250.512481616斜率87654321段号第二行的X值是根据A=87.6时计算得到的,第三行的X值是13折线分段时的值。可见,13折线各段落的分界点与A=87.6 的曲线非常的接近。而13折线的x按2的幂次分布,计算较方便,也易于实现。1.3编码编码

5、即把量化后的新哈变换成二进制代码,其反过程就叫做译码。本实验中我们用的是折叠二进制码。我们把一个量化电平数用一个8位的二进制表示。第1位表示信号的极性,2-4位表示段落码,5-8位表示段内码。A律正输入值编码表段落码段落序号12345678段落码000001010011100101110111段内码量化级段内码量化级段内码15111170111141110601101311015010112110040100111011300111010102001091001100018100000000在13折线中,用8位的折叠二进制码表示信号量化值的具体步骤为:用第2到4位表示段落码,8个段落的起点电平

6、由它的8种可能状态来分别表示。其他四位表示段内码,每一个段落它的16个均匀的划分量化级由它的16种可能状态来分别表示。这样就使得8个段落被划分为128个量化级。再加上负的,相当于一共有256种量化电平数。数字通信系统原理框图模拟信号抽样量化信源编码信道编码数字调制模拟信号信源译码信道数字解调加噪抽样判决滤波信道译码本实验详细设计方案主函数产生模拟信源并得到抽样信号PCM编码Huffuman编码汉明编码信道汉明译码Hufuman解压缩Pcm反变换重建模拟信号Bpsk调制加噪解调滤波抽样判决各子系统详细介绍:1、 模拟信号为原始的信源信号2、 抽样是将上述的时间和幅值都连续的模拟信号转换为时间离散

7、,幅值连续的信号。3、 量化是将上述信号转换为时间和幅值均离散的数字信号4、 Pcm编码是将量化后的信号转换为01比特流5、 Huffuman编码是为了减少冗余,提高传输效率6、 汉明编码是通过增加冗余位来提高传输效率7、 Bpsk调制式将上述0、1比特流转换成适合在信道中传输的波形8、 加噪是模仿信号传输过程中噪声的干扰,解调、滤波是为了恢复原信号。抽样判决是把信号恢复成0 、1比特流的形式9、 汉明译码、huffuman解压缩、pcm反变换分别是汉明编码,huffuman 编码,pcm编码的反过程。10、 最后还原成模拟信号六、主要代码及必要说明:主函数function PCMmain()

8、close all;clc;clear;A=3;t1=0:0.1:6*pi;a1=sin(t1);figure;subplot(2,1,1);plot(t1,a1);title('原始信号');t2=0:2*pi/32:6*pi;a=sin(t2);subplot(2,1,2);stem(t2,a);title('抽样信号');res=pcm(a);%-datastream,huff,n=hfencodingmain(res);bit2=hanmencoding(datastream); panjue=channel(bit2,5);bit22=hamyima(

9、panjue);bit3=huffdecoding(bit22,huff,n);S=ipcm(bit3);figure;title('经过信道的重建信号');t=linspace(0,6*pi,length(S);plot(t,S,'r');hold on;plot(t,S,'.b');pcm编码function res=pcm(s)z=sign(s);maxs=max(abs(s);s=abs(s/maxs);%归一化Q=2048*s;%一个量化单位为1/2048;code=zeros(length(s),8);w(1)=0;for k=2:8

10、 w(k)=2(k+2);%段起始值0,16,32,64,128,256,512,1024endres=;for i=1:length(s) if(z(i)>0) code(i,1)=1; else code(i,1)=0; end for k=8:-1:1 if Q(i)>=w(k) a=dec2bin(k-1,3); code(i,2:4)=a;%段落码的判断 break; end end if k>=2 t=fix(Q(i)-w(k)/(2(k-2); else t=fix(Q(i)-w(k); end code(i,5:8)=dec2bin(t,4); %段内码的判断

11、 res=res,code(i,:);endendhuffuman编码的主函数function datastream,huff,n=hfencodingmain(code)p,h1,h=aa(code);c,n=hufftree(p,h1);datastream,huff=hufencoding(c,p,h,h1,n);EndHuffuman编码子函数1、统计各电平出现概率function p,h1,h=aa(x)m=length(x)/8;for i=1:256 chars(i).data=dec2bin(i-1,8); chars(i).num=0;endh=;for j=1:m temp

12、=x(j-1)*8+1:j*8); h=h;temp; for k=1:256 if sum(temp=chars(k).data)=8 chars(k).num=chars(k).num+1; break; end endendh1=;l=0;for i=1:256 if chars(i).num=0 h1=h1,chars(i); l=l+1; endendfor y=1:l p(y)=h1(y).num/m;endend2、构建huffuman树function c,n=hufftree(p,h1)n=length(p);for i=1:n-1for j=i:nif p(i)>=p

13、(j)P=p(i);p(i)=p(j);p(j)=P;T=h1(i);h1(i)=h1(j);h1(j)=T;endendendQ=sort(p);c=-ones(2*n-1,6);c(:,1)=1:2*n-1;c(1:n,2)=Q;q=Q;m=zeros(1,2*n-1);for i=n+1:2*n-1 c(i,2)=q(1)+q(2); temp1=find(c(:,2)=q(1)&c(:,6)=1,1); c(temp1,6)=1; temp2=find(c(:,2)=q(2)&c(:,6)=1,1); c(temp2,6)=1; c(i,4)=temp1; c(i,5)

14、=temp2; c(temp1,3)=i; c(temp2,3)=i; Q=Q,q(1)+q(2); q=q(1)+q(2),q(3:end); q=sort(q);endend根据构建的huffuman树进行编码function datastream,huff=hufencoding(c,p,h,h1,n)for i=1:n huffcode=; p=c(i,3); j=i; while(p=-1) if(c(p,4)=j) huffcode=0,huffcode; else huffcode=1,huffcode; end j=p; p=c(j,3); end huff(i).ch=h1(

15、i).data; huff(i).code=huffcode;endl,k=size(h);datastream=;for i=1:l for j=1:n if sum(h(i,:)=huff(j).ch)=8 datastream=datastream,huff(j).code; break; end endendend(7、4)汉明编码function bit2=hanmencoding(m)H=0 1 1 1 1 0 0; 1 0 1 1 0 1 1; 1 1 0 1 0 0 1;G=1 0 0 0 0 1 1; 0 1 0 0 1 0 1; 0 0 1 0 1 1 0; 0 0 0 1

16、 1 1 1;bit2=;n=fix(length(m)/4);for i=1:n t=m(i-1)*4+1:i*4); bit2=bit2,rem(t*G,2);endbit2=bit2,m(4*n+1:end);end通过信道的子函数function panjue=channel(bit2,SNR)%-调制-cs=bit2*2-1;de=;t=linspace(0,1,16);carrier=cos(2*pi*t);for i=1:length(cs) de=de,cs(i)*carrier;endfigure;subplot(4,1,1);plot(de);axis(0,length(d

17、e)/10,-1,1);title('调制信号');%-加噪-de=awgn(de,SNR,'measured');%-解调-designal=;for i=1:16:length(de)-15 designal=designal,de(i:i+15).*carrier;endsubplot(4,1,2);plot(designal);axis(0,length(designal)/10,-1,1);title('解调信号');%-滤波-load lowpass;l=fix(length(lowpass)/2);designal=designal

18、,zeros(1,l);b=filter(lowpass,1,designal);b=b(l+1:end);subplot(4,1,3);plot(b);axis(0,length(b)/10,-1,1);title('滤波后的信号');%-抽样判决-panjue=;panjue1=;for i=1:length(b)/16; sum1=b(i-1)*16+4); if sum1>=0 panjue=panjue,1; panjue1=panjue1,ones(1,16); else panjue=panjue,0; panjue1=panjue1,zeros(1,16)

19、; endendsubplot(4,1,4);plot(panjue1);axis(0,length(panjue1)/10,-1,1);title('抽样判决信号');end汉明码译码函数function bit3=hamyima(bit2)H=0 1 1 1 1 0 0; 1 0 1 1 0 1 1; 1 1 0 1 0 0 1;j=fix(length(bit2)/7);bit3=;for k=1:j R=bit2(k-1)*7+1:k*7); S=rem(R*H',2); for i=1:7 if sum(S=H(:,i)')=3 break; end

20、end R(i)=R(i); bit3=bit3,R(1:4);endbit3=bit3,bit2(j*7+1:end);endhuffuman译码function transcode=huffdecoding(datastream,huff,n)k=datastream;transcode=;len=0;max=1;for u=1:n temp=length(huff(u).code); if temp>max max=temp; endendwhile(length(k)=0) d=k(1);for L=1:length(k) symbol=0; for i=1:n if (leng

21、th(d)=length(huff(i).code) if(length(find(d=huff(i).code)=length(d) transcode=transcode,huff(i).ch; k=k(length(d)+1:end); symbol=1; end end if symbol=1 break; end end if symbol=1 break; else if length(k)-length(d)>0 d=d,k(length(d)+1); else transcode=transcode,k; break; end endendendpcm译码function

22、 S=ipcm(code)len=length(code)/8;w(1)=0;for k=2:8 w(k)=2(k+2);%段起始值0,16,32,64,128,256,512,1024endfor i=1:7 b(i)=(w(i+1)-w(i)/16;%每段的最小量化间隔endb(8)=1024/16;S=;for i=1:len s=code(i-1)*8+1:(i-1)*8+8); t=bin2dec(s(2:4)+1;%判断段落位置 y=bin2dec(s(5:8);%判断段内地址 m=w(t)+(y+0.5)*b(t); m=m/2048; if s(1)=0%判断极性 m=-m; end S=S,m;endfunction a=bin2dec(x)%二进制转十进制n=length(x);sum=0;for i=1:n sum=sum+x(i)*2(n-i);enda=sum; function a=dec2bin(x,n)%将x转换为n位的二进

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论