通信原理综合实验报告 PCM

更新时间:2024-01-01 18:12:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

重庆交通大学信息科学与工程学院

综合性设计性实验报告

专 业 班 级: 通信工程一班

姓 名 :

学 号:

实验所属课程: 通信原理

实验室(中心): 语音八楼

指 导 教 师 : 许登元

实验完成时间: 2013 年1月1日

教师评阅意见:

一、 设计题目

基于MATLAB的通信系统仿真——信源编解码 二、实验目的:

1.综合应用《Matlab编程与系统仿真》、《信号与系统》、《现代通信原理》等多门课程知识,使我们建立通信系统的整体概念;

2.培养我们系统设计与系统开发的思想; 3.培养我们利用软件进行通信仿真的能力。

4.培养我发现问题,解决问题,查阅资料解决问题的能力。

5、培养我熟练掌握MATLAB,运用此matlab软件工具进行通信仿真的能力

签名: 年 月 日 实验成绩: 三、实验设备及软件:

PC机一台,MATBLAB。

四、实验主要内容及要求:

1、

对通信系统有整体的较深入的理解,深入理解自己仿真部分的原理的基础,画出对应的通信子系统的原理框图

2、 3、 4、 5、

提出仿真方案; 完成仿真软件的编制 仿真软件的演示 提交详细的设计报告

五、实验原理

1、

PCM基本原理

脉冲编码调制(PCM)简称脉码调制,它是一种用二进制数字代码来代替连续信号的抽样值,从而实现通信的方式。因此此种通信方式抗干扰能力强,因此在很多领域都得到了广泛运用。PCM信号的形

成主要由三大步骤组成,包括:抽样、量化和编码。它们分别完成时间上离散、幅度上离散及量化信号的二进制表示。量化分为均匀量化和非均匀量化,为了减小小信号的量化误差,我们常使用的是非均匀量化。非均匀量化分为A律和μ律。我国采用的是A律,但由于A律不好实现,所以我们常用近似的13折线编码。

1.1抽样

抽样即是将时间连续的模拟信号由一系列时间离散的样值所取代的过程它实现的是信号在时间上的离散化。抽样信号要想无失真的恢复出原信号,抽样频率必须要满足抽样定理。即:如果信号的最高频率为fH,那么抽样频率fs必须要满足fs>=2fH.

1.2量化

经过抽样后的信号还并不是数字信号,它只实现了时间上的离散化。幅值上并不离散。所以我们要对信号进行量化,实现其幅值的离散化。量化分为均匀量化和非均匀量化。本实验主要用到了非均匀量化中的A律13折线压缩。下面主要介绍A律13折线。 A律压缩是指压缩器具有如下的压缩特性:

?Axx1(),??1?lnAVVA?Z???sgn(x)[1?ln(Ax)],1?x?1 ?1?lnAVAV?

由于A律在工程上不好实现,所以我们经常用近似的13折线压缩法去代替A率压缩 下面是13折线时的X值与A律计算得的X的比较

z

确值 X近 似值

0 0 0 1 16 1/8 2/8 3/8 4/8 5/8 6/8 7/8 1 1 20

x准

1128

160.6

130.6

115.4

17.79

13.93

11.98

2-7 2 16 2-6 3 2-5 4 4 2-4 5 2 2-3 6 1 2-2 7 0.5 2-1 8 0.25 段号 斜率

8 第二行的X值是根据A=87.6时计算得到的,第三行的X值是13折线分段时的值。可见,13折线各段

落的分界点与A=87.6 的曲线非常的接近。而13折线的x按2的幂次分布,计算较方便,也易于实现。

1.3编码

编码即把量化后的新哈变换成二进制代码,其反过程就叫做译码。本实验中我们用的是折叠二进制码。我们把一个量化电平数用一个8位的二进制表示。第1位表示信号的极性,2-4位表示段落码,5-8位表示段内码。 A律正输入值编码表 段落码 段落序号 段落码 1 000 2 001 3 010 4 011 5 100 6 101 7 110 8 111 段内码 量化级 段内码 量化级 段内码 15 14 13 12 11 10 9 8 1111 1110 1101 1100 1011 1010 1001 1000 7 6 5 4 3 2 1 0 0111 0110 0101 0100 0011 0010 0001 0000 在13折线中,用8位的折叠二进制码表示信号量化值的具体步骤为:用第2到4位表示段落码,8个段落的起点电平由它的8种可能状态来分别表示。其他四位表示段内码,每一个段落它的16个均匀的划分量化级由它的16种可能状态来分别表示。这样就使得8个段落被划分为128个量化级。再加上负的,相当于一共有256种量化电平数。

数字通信系统原理框图

模拟信号 抽样 量化 信源编码 信道编码 数字调制 加噪 信道 模拟信号 信源译码 信道译码 抽样判决 滤波 数字解调 本实验详细设计方案

主函数

产生模拟信源并得到抽样信

PCM编码

Huffuman编码

Bpsk调制

汉明编码 信道 汉明译码 Hufuman解

压缩

Pcm反变换重建模拟信号

加噪 解调 滤波 抽样判决

各子系统详细介绍:

1、 2、 3、 4、 5、 6、 7、 8、

模拟信号为原始的信源信号

抽样是将上述的时间和幅值都连续的模拟信号转换为时间离散,幅值连续的信号。 量化是将上述信号转换为时间和幅值均离散的数字信号 Pcm编码是将量化后的信号转换为01比特流 Huffuman编码是为了减少冗余,提高传输效率 汉明编码是通过增加冗余位来提高传输效率

Bpsk调制式将上述0、1比特流转换成适合在信道中传输的波形

加噪是模仿信号传输过程中噪声的干扰,解调、滤波是为了恢复原信号。 抽样判决是把信号恢复成0 、1比特流的形式

9、 10、

汉明译码、huffuman解压缩、pcm反变换分别是汉明编码,huffuman 编码,pcm编码的反过程。 最后还原成模拟信号

六、主要代码及必要说明:

主函数

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]; 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; de=[];

t=linspace(0,1,16); carrier=cos(2*pi*t); 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('解调信号');

%-------------滤波------------------- 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

panjue=[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(:,i)')==3 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 temp>max max=temp; end end

while(length(k)~=0) d=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,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=[]; 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]; 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

六、测试结果及分析:

原始信号10.50-0.5-10246810抽样信号121416182010.50-0.5-102468101214161820

调制信号10-110-110-110-1010020030040050060070080090010000100200300400500600抽样判决信号70080090010000100200300400500600滤波后的信号70080090010000100200300400500600解调信号7008009001000

信噪比为5时的重建模拟信号

10.80.60.40.20-0.2-0.4-0.6-0.8-102468101214161820

信噪比为2时的重建模拟信号

10.80.60.40.20-0.2-0.4-0.6-0.8-102468101214161820

信噪比为1时的重建模拟信号

10.80.60.40.20-0.2-0.4-0.6-0.8-102468101214161820

对比不同信噪比情况下的重建信号可知,信噪比越大,信号恢复的质量越好。

七、实验体会:

通过本次实验我收获不少,使我对通信原理更加的了解了,尤其是模拟信号数字化这一块儿。有了以前的matlab以及信息论与编码课程设计做铺垫,这次实验相比以往要更顺利一些。但编码过程中还是遇到了一些问题。比如抽样判决过程中,我一直有个问题不是很明白,为什么不取一个周期的平均值作为判决依据,而要取一个周期的某个点呢。我觉得取平均值的话可以在一定程度上减小误差。那么还希望老师能够解决我的这个疑问。在测试不同信噪比情况下,信号恢复情况时我发现,同一信噪比情况下,出来的图也并不完全一样的。我想是不是信道加噪的过程是随机的原因。其间,程序出错了,自己改半天改不出来,最后还是在同学的帮助下解决的。在此,非常的感谢她对我的帮助。同时也体会到了互助的力量。那么通过这次实验学到了不少,也希望自己以后可以通过自己的努力以及老师,同学的帮助学到更多的东西。

八、参考文献

[1]王立宁,乐光新等. Matlab与通信仿真[M], 人民邮电出版社, 2000.1

[2]John G. proakis等著, 刘树棠译. 现代通信系统(Matlab版)(第二版)[M], 电子工业出版社, 2006.9

[3]Bernard Sklar著, 徐平平等译. 数字通信-基础与应用(第二版) [M], 电子工业出版社, 2004.11

[4]樊昌信等. 通信原理(第6版)[M]. 国防工业出版社,2008.3

本文来源:https://www.bwwdw.com/article/kkdx.html

Top