《2022年通信原理之PCM编解码 .pdf》由会员分享,可在线阅读,更多相关《2022年通信原理之PCM编解码 .pdf(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、重庆交通大学信息科学与工程学院综合性设计性实验报告专 业班 级:姓名学号:实验所属课程:通信原理实验室(中心):语音八楼指 导 教 师:实验完成时间:3 年月 1 日名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 13 页 -一、设计题目基于 MATLAB 的通信系统仿真信源编解码二、实验目的:1.综合应用 Matlab 编程与系统仿真、信号与系统、现代通信原理等多门课程知识,使我们建立通信系统的整体概念;2.培养我们系统设计与系统开发的思想;3.培养我们利用软件进行通信仿真的能力。4.培养我发现问题,解决问题,查阅资料解决问题的能力。5、培养我熟练掌握MATLAB,运用此 ma
2、tlab 软件工具进行通信仿真的能力三、实验设备及软件:PC机一台,MATBLAB。四、实验主要内容及要求:1、对通信系统有整体的较深入的理解,深入理解自己仿真部分的原理的基础,画出对应的通信子系统的原理框图2、提出仿真方案;3、完成仿真软件的编制4、仿真软件的演示5、提交详细的设计报告五、实验原理1、PCM 基本原理脉冲编码调制(PCM)简称脉码调制,它是一种用二进制数字代码来代替连续信号的抽样值,从而实现通信的方式。因此此种通信方式抗干扰能力强,因此在很多领域都得到了广泛运用。PCM 信号的形教师评阅意见:签名:年月日实验成绩:名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共
3、13 页 -成主要由三大步骤组成,包括:抽样、量化和编码。它们分别完成时间上离散、幅度上离散及量化信号的二进制表示。量化分为均匀量化和非均匀量化,为了减小小信号的量化误差,我们常使用的是非均匀量化。非均匀量化分为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 的比较第二行的X 值是根据 A=87.6 时计算得到的,第三行的X 值是 13 折线分段时的值。可见,13 折线各段11),ln(1 ln1)sgn(1),(ln1VxAVAxAxAVxVxAAZ20 2-1 2-2 2-3 2-4 2-5 2
5、-6 2-70 X近似值1 0 x准确值1 7/8 6/8 5/8 4/8 3/8 2/8 1/8 0 z 128160.6130.6115.417.7913.9311.9810.25 0.5 1 2 4 8 16 16 斜率8 7 6 5 4 3 2 1 段号名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 13 页 -落的分界点与A=87.6 的曲线非常的接近。而13 折线的 x 按 2 的幂次分布,计算较方便,也易于实现。1.3 编码编码即把量化后的新哈变换成二进制代码,其反过程就叫做译码。本实验中我们用的是折叠二进制码。我们把一个量化电平数用一个8 位的二进制表示。第1 位
6、表示信号的极性,2-4 位表示段落码,5-8 位表示段内码。A 律正输入值编码表段落码段落序号1 2 3 4 5 6 7 8 段落码000 001 010 011 100 101 110 111 段内码量化级段内码量化级段内码15 1111 7 0111 14 1110 6 0110 13 1101 5 0101 12 1100 4 0100 11 1011 3 0011 10 1010 2 0010 9 1001 1 0001 8 1000 0 0000 在 13 折线中,用8 位的折叠二进制码表示信号量化值的具体步骤为:用第2 到 4 位表示段落码,8 个段落的起点电平由它的8 种可能状态
7、来分别表示。其他四位表示段内码,每一个段落它的16 个均匀的划分量化级由它的16 种可能状态来分别表示。这样就使得8 个段落被划分为128 个量化级。再加上负的,相当于一共有256 种量化电平数。数字通信系统原理框图名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 13 页 -本实验详细设计方案各子系统详细介绍:1、模拟信号为原始的信源信号2、抽样是将上述的时间和幅值都连续的模拟信号转换为时间离散,幅值连续的信号。3、量化是将上述信号转换为时间和幅值均离散的数字信号4、Pcm 编码是将量化后的信号转换为01 比特流5、Huffuman 编码是为了减少冗余,提高传输效率6、汉明编码是
8、通过增加冗余位来提高传输效率7、Bpsk 调制式将上述0、1 比特流转换成适合在信道中传输的波形8、加噪是模仿信号传输过程中噪声的干扰,解调、滤波是为了恢复原信号。抽样判决是把信号恢复成0、1 比特流的形式9、汉明译码、huffuman 解压缩、pcm 反变换分别是汉明编码,huffuman 编码,pcm 编码的反过程。10、最后还原成模拟信号六、主要代码及必要说明:主函数function PCMmain()close all;模拟信号抽样量化信源编码信道编码数字调制模拟信号信源译码信道数字解调加噪抽样判决滤波信道译码主函数产生模拟信源并得到抽样信PCM 编码Huffuman 编码汉明编码信道
9、汉明译码Hufuman 解压缩Pcm 反变换重建模拟信号Bpsk 调制加噪解调滤波抽样判决名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 13 页 -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=hanmencodin
10、g(datastream);panjue=channel(bit2,5);bit22=hamyima(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(
11、s),8);w(1)=0;for k=2:8 w(k)=2(k+2);%段起始值0,16,32,64,128,256,512,1024 end res=;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);%段内码的判
12、断名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 13 页 -res=res,code(i,:);end end huffuman 编码的主函数function datastream,huff,n=hfencodingmain(code)p,h1,h=aa(code);c,n=hufftree(p,h1);datastream,huff=hufencoding(c,p,h,h1,n);End Huffuman 编码子函数1、统计各电平出现概率function p,h1,h=aa(x)m=length(x)/8;for i=1:256 chars(i).data=dec2bin(i
13、-1,8);chars(i).num=0;end h=;for j=1:m temp=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 end end h1=;l=0;for i=1:256 if chars(i).num=0 h1=h1,chars(i);l=l+1;end end for y=1:l p(y)=h1(y).num/m;end end 2、构建 huffuman 树function c,n=hufftree(p,h1)n
14、=length(p);for i=1:n-1 for j=i:n if p(i)=p(j)P=p(i);p(i)=p(j);p(j)=P;T=h1(i);h1(i)=h1(j);h1(j)=T;end end end Q=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);名
15、师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 13 页 -c(temp2,6)=1;c(i,4)=temp1;c(i,5)=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);end end 根据构建的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;els
16、e huffcode=1,huffcode;end j=p;p=c(j,3);end huff(i).ch=h1(i).data;huff(i).code=huffcode;end l,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 end end end(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
17、;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 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);end bit2=bit2,m(4*n+1:end);end 通过信道的子函数function panjue=channel(bit2,SNR)%-调制-cs=bit2*2-1;名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 13 页 -de=;t=linspace(0,1,16);carrier=cos(2*pi*t
18、);for i=1:length(cs)de=de,cs(i)*carrier;end figure;subplot(4,1,1);plot(de);axis(0,length(de)/10,-1,1);title(调制信号);%-加噪-de=awgn(de,SNR,measured);%-解调-designal=;for i=1:16:length(de)-15 designal=designal,de(i:i+15).*carrier;end subplot(4,1,2);plot(designal);axis(0,length(designal)/10,-1,1);title(解调信号)
19、;%-滤波-load lowpass;l=fix(length(lowpass)/2);designal=designal,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 p
20、anjue=panjue,0;panjue1=panjue1,zeros(1,16);end end subplot(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
21、(:,i)=3 名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 13 页 -break;end end R(i)=R(i);bit3=bit3,R(1:4);end bit3=bit3,bit2(j*7+1:end);end huffuman 译码function transcode=huffdecoding(datastream,huff,n)k=datastream;transcode=;len=0;max=1;for u=1:n temp=length(huff(u).code);if tempmax max=temp;end end while(length(k)=0)d
22、=k(1);for L=1:length(k)symbol=0;for i=1:n if(length(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
23、,k;break;end end end end pcm 译码function 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,1024 end for i=1:7 b(i)=(w(i+1)-w(i)/16;%每段的最小量化间隔end b(8)=1024/16;S=;名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 13 页 -for i=1:len s=code(i-1)*8+1:(i-1)*8+8);t=bin2dec(s(2:4)+1;%判断段落位
24、置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;end function a=bin2dec(x)%二进制转十进制n=length(x);sum=0;for i=1:n sum=sum+x(i)*2(n-i);end a=sum;function a=dec2bin(x,n)%将 x 转换为 n 位的二进制 a a=zeros(1,length(n);for i=1:n if x=2(n-i)a(i)=1;x=x-2(n-i);else a(i)=0;end end六、测试结果
25、及分析:02468101214161820-1-0.500.51原 始 信 号02468101214161820-1-0.500.51抽 样 信 号名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 13 页 -01002003004005006007008009001000-101调 制 信 号01002003004005006007008009001000-101解 调 信 号01002003004005006007008009001000-101滤 波 后 的 信 号01002003004005006007008009001000-101抽 样 判 决 信 号信噪比为 5 时
26、的重建模拟信号02468101214161820-1-0.8-0.6-0.4-0.200.20.40.60.81信噪比为 2 时的重建模拟信号02468101214161820-1-0.8-0.6-0.4-0.200.20.40.60.81信噪比为 1 时的重建模拟信号名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 13 页 -02468101214161820-1-0.8-0.6-0.4-0.200.20.40.60.81对比不同信噪比情况下的重建信号可知,信噪比越大,信号恢复的质量越好。七、实验体会:通过本次实验我收获不少,使我对通信原理更加的了解了,尤其是模拟信号数字化这
27、一块儿。有了以前的 matlab 以及信息论与编码课程设计做铺垫,这次实验相比以往要更顺利一些。但编码过程中还是遇到了一些问题。比如抽样判决过程中,我一直有个问题不是很明白,为什么不取一个周期的平均值作为判决依据,而要取一个周期的某个点呢。我觉得取平均值的话可以在一定程度上减小误差。那么还希望老师能够解决我的这个疑问。在测试不同信噪比情况下,信号恢复情况时我发现,同一信噪比情况下,出来的图也并不完全一样的。我想是不是信道加噪的过程是随机的原因。其间,程序出错了,自己改半天改不出来,最后还是在同学的帮助下解决的。在此,非常的感谢她对我的帮助。同时也体会到了互助的力量。那么通过这次实验学到了不少,也希望自己以后可以通过自己的努力以及老师,同学的帮助学到更多的东西。八、参考文献1 王立宁,乐光新等.Matlab与通信仿真 M,人民邮电出版社,2000.1 2John G.proakis等著,刘树棠译.现代通信系统(Matlab版)(第二版)M,电子工业出版社,2006.9 3Bernard Sklar著,徐平平等译.数字通信基础与应用(第二版)M,电子工业出版社,2004.11 4 樊昌信等.通信原理(第6 版)M.国防工业出版社,2008.3 名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 13 页 -
限制150内