PCM通信系统的性能分析与MATLAB仿真.docx
《PCM通信系统的性能分析与MATLAB仿真.docx》由会员分享,可在线阅读,更多相关《PCM通信系统的性能分析与MATLAB仿真.docx(15页珍藏版)》请在冰豆网上搜索。
PCM通信系统的性能分析与MATLAB仿真
淮海工学院
课程设计报告书
课程名称:
通信系统的计算机仿真设计
题目:
PCM通信系统的性能分析与MATLAB仿真
系(院):
电子工程学院
学期:
专业班级:
姓名:
学号:
评语:
成绩:
签名:
日期:
1绪论
研究背景与研究意义
数字化e时代,我们身边的数字产品越来越多,像数码相机,手机,数字电视等等。
我们重点关注的是这些现代无线通信系统有一个共同的特点,那就是它们采用的都是数字制式。
在现阶段,数字通信系统相对模拟通信系统有着巨大的优势。
脉冲编码(PCM)调制是一种将模拟信号转变成数字信号的编码方式,主要运用与语音传输。
于20世纪40年代,在通信技术中就已经实现了这一编码技术,并迅速在光纤通信、卫星通信、数字微波通信中得到广泛应用,目前它不仅运用于通信领域,还广泛运用于计算机、遥控遥测、数字仪表广播电视等许多领域。
借助于MATLAB软件,可以直观方便的进行计算和仿真。
课程设计的目的和任务
通信系统的计算机仿真设计课程设计目的在于使学生在课程设计过程中能够理论联系实际,在实践中充分利用所学理论知识分析和研究设计过程中出现的各类技术问题,巩固和扩大所学知识面,为以后走向工作岗位进行设计打下一定的基础。
课程设计的任务是:
(1)掌握一般通信系统设计的过程、步骤、要求、工作内容及设计方法;掌握用计算机仿真通信系统的方法。
(2)训练学生网络设计能力。
(3)训练学生综合运用专业知识的能力,提高学生进行通信工程设计的能力。
2PCM通信系统
PCM通信系统介绍
信源
调制
噪声
信道编码
抽样
量化
PCM编码
信道
信道译码
解调
性能分析
图1PCM通信系统框图
PCM系统的原理框图,本次课程设计应用Matlab进行仿真,仿真基本框图如图1所示。
PCM主要优点是:
抗干扰能力强;传输性能稳定,远距离信号再生中继时噪声不累积,且可以使用压缩编码和纠错编码和保密编码等来提高系统有效性、可靠性、保密性。
PCM通信系统的性能指标
1.误码率:
错误接收的码元数在传送总码元数中所占的比例,误码率是码元在传输系统中被传错的概率。
2.误信率:
指错误接收的信息量在传送信息总量中所占的比例。
3PCM通信系统主要模块
模拟信号的抽样
抽样定理
抽样是时间上连续的模拟信号变成一系列时间上离散的抽样序列的过程。
抽样定理要解决的是能否由此抽样序列无失真地恢复出原模拟信号。
抽样定理是模拟信号数字化的理论依据。
根据乃奎斯特抽样定理:
若频带宽度有限的,要从抽样信号中无失真地恢复原信号,抽样频率应大于2倍信号最高频率。
抽样过程
抽样的过程是将输入的模拟信号与抽样信号相乘,通常抽样信号是一个周期为Ts的周期脉冲信号,抽样后得到的信号称为抽样序列。
对幅度A频率f的信号进行的周期性扫描即是对信号的抽样。
话音信号频率在4kHZ以内,实际中话音的抽样频率采用的是8kHZ,此次课程设计也是采用fs=8kHZ的抽样频率,抽样周期T=1/fs。
所以由音频信号和抽样函数可得抽样后的信号为:
S=Asin(w*n*T),抽n个值。
每隔时间t(时间t要尽量小,如)对低通连续的语音信号进行取样。
MATLAB对抽样的仿真结果
(1)时域抽样
MATLAB程序运行仿真出的一百个点的序列,连线形成的波形为正弦波如图所示。
图2原始语音信号
语音信号幅度A=,频率f=2K;
图3抽样脉冲信号
抽样频率fs=8K,抽样周期Ts=1/fs
图4时域抽样信号
在-0s到时间段T内,每隔进行取样,信源的单音频信号为y=Asin(w*t),抽样后的信号为:
S=Asin(w*n*T),抽100个值,即n=[1,100]。
(2)抽样信号的频谱
原音频信号f=的单频信号,抽样频率是8kHZ,两个信号相乘即为已抽样信号,时域相乘对应频域卷积,所以已抽样信号的频谱应是周期离散的,如果只显示一个周期(0—8kHZ)的,只在和有值,如图3,理论分析与实际仿真结果正好吻合。
图5抽样信号频谱
量化和编码
量化就是将一个有连续幅度值的信号映射成取值离散的抽样。
量化方案可分为标准量化和矢量量化,标量量化中每个信源输出被分别量化,又分为均与量化和非均匀量化。
均匀量化
对大的输入信号还是小的输入信号一律采用相同的量化间隔。
为适应幅度大的输入信号,同时又要满足精度要求,就需要增加样本的位数。
但是,对话音信号来说,大信号出现的机会并不多,增加的样本位数就没有充分利用。
为了克服这个不足,就出现了非均匀量化的方法。
非均匀量化
非均匀量化是根据信号的不同区间来确定量化间隔的。
对于信号取值小的区间,其量化间隔
也小;反之,量化间隔就大。
它与均匀量化相比,有两个突出的优点。
实际中,非均匀量化的实际方法通常是将抽样值通过压缩再进行均匀量化。
通常使用的压缩器中,大多采用对数式压缩。
广泛采用的两种对数压缩律是
压缩律和A压缩律。
美国采用
压缩律,我国和欧洲各国均采用A压缩律,所谓A压缩律也就是压缩器具有如下特性的压缩律:
,
由于A律压缩实现复杂,常使用13折线法编码,压扩特性图如图4所示:
图613折线法编码
编码
编码是把量化后的信号变换成代码的过程。
其反过程称为译码。
编码的原理:
把量化后的所有量化级,按其量化电平的大小次序排序起来,并列出个对应的码字。
PCM编码中一般采用二进制编码,常用的二进制码型有自然码和折叠码等。
语音信号数字化国际标准采用的是折叠码型。
A律13折线编码规则中采用8位二进制码,对应有M=
=256个量化级,即正、负输入幅度范围内各有128个量化级。
每根折线为一个区间,正负各8个区间。
每个区间均匀量化成16个量化电平。
13折线编码码位的安排按照极性码、段落码、段内码的顺序。
A律PCM编码规则:
极性码段落码段内码
C1C2C3C4C5C6C7C8
C1:
极性码,1为正;0为负,表示信号的正负极;
C2C3C4:
段落码,表示信号绝对值处在8个区间中的哪个区间,为000~111共有8种组合,分别表示对应的8个分段,即第1至8段;
C5C6C7C8:
段内码,表示区间中的16个均匀量化级,0000~1111共有16中组合,表示每段的16个分级。
信道编码/译码
信道编码的目的就是增强数字信号的抗干扰能力。
数字信号在信道中传输容易受到噪声干扰,为了减少差错,我们对传输信息的码元按一定的规则加入保护成分(监督元),组成所谓的抗干扰编码。
主要实现方法是增加冗余位。
常见的纠错编码有线性分组码、循环码、卷积码等等。
本课程采用了线性分组码中的典型编码方式(7,4)汉明码和(15,8)循环编码。
程序(见附录)中这两种编码方式;对收到的信号还要进行译码,信道译码是信道编码的逆过程。
数字调制/解调
编码完成后的信息序列还不能再信道中传输,必须经过调制后才能发射出去,数字调制就是把数字基带信号的频谱搬移到高频处,形成适合在信道中传输的带通信号。
对数字信号调制的方式有很多种,基本的调制方式有振幅键控(ASK)、频移键控(FSK)、绝对相移键控(PSK)、差分相移键控(DPSK)等,本课程设计中则采用的是振幅键控(ASK)。
数字解调:
在接收端可以采用相干解调或者非相干解调还原数字基带信号。
性能分析
PCM通信系统的主要参数设置
信噪比(SNR)范围:
dB=[-25:
5:
25];
信源模块:
我们设定原始信号的幅值A为,频率f为2KHZ;
信源编码/译码:
取样时间间隔t:
,范围T是;抽样频率fs=8K,抽样数量n=100,进行非均匀量化。
PCM系统中噪声的影响
PCM系统的噪声主要有两种:
量化噪声和加性噪声。
在图1中的PCM系统的低通滤波器的输出信号为
其中
:
接收端输出的信号成分;
:
由量化引起的输出噪声成分;
:
由信道加性噪声引起的输出噪声成分。
在接收端输出信号的总信噪比为
:
量化噪声的平均功率;
:
信道加性噪声的平均功率;
(1)量化噪声对系统的影响
PCM系统输出端的量化信号与量化噪声的平均功率比为
对于二进制编码,设其编码位数为N,则上式又可写为
(2)加性噪声对系统的影响
仅考虑信道加性噪声时PCM系统的输出信噪比为
从上式可以看出,由于误码引起的信噪比与误码率成反比。
(3)PCM系统接收端输出信号的总信噪比
在接收端输入大信噪比的情况下,误码率
将极小,于是
,所以总信噪比近似为
与只考虑量化噪声情况下的系统输出信噪比是相同的。
在接收端输入小信噪比的情况下,有
,则又可近似为
与只考虑噪声干扰时系统的输出信噪比是相同的。
由于在基带传输时误码率降到
以下是不难的,所以此时通常用式
来估算PCM系统的性能。
MATLAB仿真分析系统误码律
系统误码率仿真图如图4:
从仿真图可以看出,信噪比越大,误码率越低,与理论相符;还可以直观的看出误码率在有信道编码的情况下明显低于无信道编码的情况,尤其是当信噪比dB>5时,有信道编码的系统的误码率几乎为0,其传输可靠性远好于无信道编码的情况;
两种信道编码方式(7,4)汉明编码和(15,8)循环编码在此传输系统中,性能相当。
由图可以得知通过信道编码可以增加通信系统的可靠性。
图7系统误码率—信噪比仿真曲线图
4心得体会
设计给人以创作的冲动,在这学期的设计过程中,在收获知识的同时,还收获了阅历,收获了成熟,在此过程中,我们通过查找大量资料,不懈的努力,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。
更重要的是,我们学会了很多学习的方法。
而这是日后最实用的,真的是受益匪浅。
要面对社会的挑战,只有不断的学习、实践,再学习、再实践。
通过此次课程设计,更加扎实的掌握了有关的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,检查找出了原因所在,也暴露出了我在这方面的知识的欠缺和经验的不足。
实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。
在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。
在今后社会的发展和学习实践过程中,一定要不懈努力,不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,收获成功,得到社会及他人的认可!
参考资料
[1]黄吉顺.数字信号处理及其应用.北京:
国防工业出版社,1982
[2]邓华.MATLAB通信仿真及应用实例详解[M].北京:
人民邮电大学出版社,2006
[3]张贤达.现代数字信号处理.北京:
清华大学出版社,1994
[4]王世一.数字信号处理.北京:
北京理工大学出版社,2010
[5]赵静,张瑾.基于基于MATLAB的通信系统的仿真.北京:
北京航空航天大学出版社,2007
[6]郭文彬.通信原理—基于MATLAB的计算机仿真[M].北京:
北京邮电大学出版社,2006
[7]韩利竹,王华.MATLAB电子仿真与应用[M].北京:
国防工业出版社,2003.
[8]刘卫国.MATLAB程序设计与应用[M].北京:
高等教育出版社,2006.
[9]丛玉良,王宏志.数字信号处理原理及其MATLAB实现[M].北京:
电子工业出版社,2005.
附录
实验程序
clearall
A=;f=2000;w=2*pi*f;%语音信号频率2K,幅值
t=-0:
:
y=A*sin(w*t);%语音信号
figure(4)
plot(t,y);
xlabel('t');
ylabel('A');
legend('原始语音信号')
n=1:
100;%抽样的个数
fs=8*10^3;T=1/fs;
Y(n)=1;
figure(5)
stem(n,Y(n));
axis([05001]);
xlabel('n');
ylabel('幅度');
legend('抽样脉冲信号');
n=1:
100;
fs=8*10^3;T=1/fs;
s=A*sin(w*n*T);
figure
(1)
stem(n,s);%时域抽样后的信号图
axis([0100-44]);
xlabel('n');
ylabel('幅度');
legend('时域抽样信号图');
f=n./(100*T);
y1=abs(fft(s));
figure
(2)
plot(f,y1);
xlabel('f');
ylabel('幅频');
legend('抽样信号频谱');
s1=s./max(s);%归一化
s2=s1./(1/2048);
fori=1:
100%c是pcm码100*8
y=s2(i);
u=[00000000]
if(y>0)%极值码判断
u
(1)=1;
else
u
(1)=0;
end
y=abs(y);
if(y>=0&y<16)%段落码判断
u
(2)=0;u(3)=0;u(4)=0;step=1;st=0;
elseif(y>=16&y<32)
u
(2)=0;u(3)=0;u(4)=1;step=1;st=16;
elseif(y>=32&y<64)
u
(2)=0;u(3)=1;u(4)=0;step=2;st=32;
elseif(y>=64&y<128)
u
(2)=0;u(3)=1;u(4)=1;step=4;st=64;
elseif(y>=128&y<256)
u
(2)=1;u(3)=0;u(4)=0;step=8;st=128;
elseif(y>=256&y<512)
u
(2)=1;u(3)=0;u(4)=1;step=16;st=256;
elseif(y>=512&y<1024)
u
(2)=1;u(3)=1;u(4)=0;step=32;st=512;
elseif(y>=1024&y<=2048)
u
(2)=1;u(3)=1;u(4)=1;step=64;st=1024;
end
if(y<2048)%段内码判断
t=floor((y-st)/step);
p=dec2bin(t,4)-48;
u(5:
8)=p(1:
4);
else
u(5:
8)=[1111]
end
c(i,1:
8)=u(1:
8);
end
m=c;%调制
m1=m.';m1=reshape(m1,2,400);m1=m1.';
m2=bi2de(m1,'left-msb');
m2(find(m2==0))=-1;m2(find(m2==2))=-3;
c1=c.';c7=c;
c1=reshape(c1,4,200);c1=c1.';%c1=200*4,前两行对应c第一行
c2=encode(c1,7,4,'hamming/binary');%(7,4)hamming信道编码200*7
c3=encode(c7,15,8,'cyclic/binary');%(15,8)循环码编码
tx1=c2;tx1(find(tx1==0))=-1;tx2=c3;tx2(find(tx2==0))=-1;%调制
errorbit=0;
dB=-25:
5:
25
forq=1:
11
biterrors=0;biterrors1=0;biterrors2=0;
r1=10.^(dB(q)/10);
r1=./(r1);
sigma=sqrt(r1);%标准差
qq2=m2+sigma*randn(400,1);%加噪声
qq2(find((qq2>=0)&(qq2<2)))=1;%判决,解调
qq2(find(qq2>=2))=3;
qq2(find((qq2>=-2)&(qq2<0)))=-1;
qq2(find(qq2<-2))=-3;
qq2(find(qq2==-3))=2;
qq2(find(qq2==-1))=0;
m3=de2bi(qq2,2,'left-msb');m3=m3.';
m3=reshape(m3,8,100);m3=m3.';%把m3变成8行100列的矩阵
errors=zeros(100,8);errors(find(m3~=c))=1;%发现错误让error为1
errors=reshape(errors,1,800);%把矩阵变成1行800列的矩阵
biterrors=sum(errors);
bit1(q)=biterrors/(100*8);
rx1=tx1+sigma*randn(200,7);%加噪声
rx2=tx2+sigma*randn(100,15);%加噪声
rx1(find(rx1>=0))=1;rx1(find(rx1<0))=0;%判决,解调
rx2(find(rx2>=0))=1;rx2(find(rx2<0))=0;
c22=decode(rx1,7,4,'hamming/binary');%hamming信道译码200*4
c33=decode(rx2,15,8,'cyclic/binary');%循环译码
errors1=zeros(200,4);
errors2=zeros(100,8);
errors1(find(c22~=c1))=1;%发现错误让其值为1
errors2(find(c33~=c7))=1;%发现错误让其值为1
errors1=reshape(errors1,1,800);%把矩阵变成1行800列的矩阵
errors2=reshape(errors2,1,800);%把矩阵变成1行800列的矩阵
biterrors1=sum(errors1);%统计错误
biterrors2=sum(errors2);%统计错误
errorbit(q)=biterrors1/(100*8);
errorbit2(q)=biterrors2/(100*8);%误码率
end
figure(3)
semilogy(dB,errorbit,':
ro');
hold
semilogy(dB,bit1,'--bs');
semilogy(dB,errorbit2,'*');
grid;
legend(':
ro汉明','--bs无信道编码','*循环码');
xlabel('dB');
ylabel('误码率');