PCM通信系统性能分析与MATLAB仿真.docx
《PCM通信系统性能分析与MATLAB仿真.docx》由会员分享,可在线阅读,更多相关《PCM通信系统性能分析与MATLAB仿真.docx(17页珍藏版)》请在冰豆网上搜索。
PCM通信系统性能分析与MATLAB仿真
淮海工学院
课程设计报告书
课程名称:
通信系统的计算机仿真设计
题目:
PCM通信系统性能分析与MATLAB仿真
系(院):
电子工程学院
学期:
10-11-2
专业班级:
通信工程
姓名:
学号:
评语:
成绩:
签名:
日期:
1绪论···························································3
1.1研究背景与研究意义···········································3
1.2课程设计的目的和任务·········································3
····················································3
2PCM通信系统···················································4
2.1PCM通信系统的基本模型········································4
2.2PCM通信系统的编码(基于13折线法)····························5
3PCM通信系统的主要模块·······································6
3.1信源···························································6
3.2基带信号的处理················································6
时域信号的抽样················································6
量化与编码····················································6
信道编码·····················································6
3.3调制/解调·····················································7
3.4信道··························································7
···················································7
4MATLAB对PCM通信系统的仿真··································7
4.1MATLAB主要模块及参数设置·····································7
4.2PCM的仿真图和结果分析········································8
已抽样信号时域图··············································8
已抽样信号频谱图···············································9
误码率——信噪比曲线图········································10
5结论····························································10
6附录····························································11
1绪论
1.1研究背景与研究意义
PCM,中文称脉冲编码调制,由A.里弗斯于1973年提出的,这一概念为数字通信奠定了基础,60年代它开始应用于市内电话网以扩充容量,使已有音频电缆的大部分芯片的传输容量扩大24~48倍。
到70年代中、末期,各国相继把脉冲编码调制成功地应用于同轴电缆通信、微波接力通信、卫星通信和光纤通信等中、大容量传输系统。
80年代初,脉冲编码调制已用于市话中继传输和大容量干线传输以及数字程控交换机,并在用户话机中采用。
现在的数字传输系统都是采用脉冲编码调制体制。
PCM最初并非传输计算机数据用的,而是使交换机之间有一条中继线不是只传送一条电话信号。
PCM有两个标准(表现形式)即E1和T1。
中国采用的是欧洲的E1标准。
T1的速率是1.544Mbit/s,E1的速率是2.048Mbit/s。
脉冲编码调制可以向用户提供多种业务,既可以提供从2M到155M速率的数字数据专线业务,也可以提供话音、图像传送、远程教学等其他业务。
特别适用于对数据传输速率要求较高,需要更高带宽的用户使用。
1.2课程设计的目的和任务
本次课程设计是根据“通信工程专业培养计划”要求而制定的。
通信系统的计算机仿真设计课程设计是通信工程专业的学生在学完通信工程专业基础课、通信工程专业主干课及科学计算与仿真专业课后进行的综合性课程设计。
其目的在于使学生在课程设计过程中能够理论联系实际,在实践中充分利用所学理论知识分析和研究设计过程中出现的各类技术问题,巩固和扩大所学知识面,为以后走向工作岗位进行设计打下一定的基础。
课程设计的任务是:
(1)掌握一般通信系统设计的过程、步骤、要求、工作内容及设计方法;掌握用计算机仿真通信系统的方法。
(2)训练学生网络设计能力。
(3)训练学生综合运用专业知识的能力,提高学生进行通信工程设计的能力。
1.3可行性分析
本次课程设计采用MATLAB对PCM通信系统进行仿真模拟,因此设计的内容应该围绕主干专业课程,如:
通信原理、程控交换技术、传输设备,通信网等。
根据掌握的知识和资料,针对系统提出的任务、要求和条件,完成系统功能设计。
从多个方案中选择出设计合理、可靠、满足要求的一个方案。
并且对方案要不断进行可行性和优缺点的分析,最后设计出一个完整框图。
2PCM通信系统
2.1PCM通信系统基本模型
PCM系统的原理方框图如图1所示。
在编码器(图1(a))中由冲激脉冲对模拟信号抽样,得到在抽样时刻上的信号抽样值。
这个抽样值仍是模拟量。
在它量化之前,通常用保持电路将其作短暂保存,以便电路有时间对其进行量化。
在实际电路中,常把抽样和保持电路作在一起,称为抽样保持电路。
图中的量化器把模拟抽样信号变成离散的数字量,然后在编码器中进行二进制编码。
这样,每个二进制码组就代表一个量化后的信号抽样值。
图1(b)中译码器的原理和编码过程相反,这里不再赘述。
本次课程设计应用Matlab进行仿真,仿真采用蒙特卡罗模型。
仿真基本框图如下:
其中:
—3.4kHZ。
抽样:
低通连续信号采样,采用8k的抽样频率。
量化:
均匀量化或非均匀量化,这里是13折线法,为非均匀量化。
编码:
实现A律PCM编码。
信道编码:
为了提高系统的可靠性,必须经过信道编码,信道编码的方式有线性分组码,循环码,卷积码等。
调制:
为了使信号发送出去,必须经过调制,此次课程设计采用了双极性不归零2ASK调制方式。
信道:
信号经过调制以后,通过信道,信道选择高斯加性白噪声信道。
解调:
根据调制方式,选择对应的解调方式。
译码:
根据信道编码方式,选择对应的信道解码方式。
性能分析:
信号经过调制、信道、解调过程。
在接收端,将得到的数据与原始PCM码组数据比较,得到在特定信噪比下的误码率。
改变系统信噪比,从而得到系统的误码率曲线图。
2.2PCM通信系统的编码(基于13折线法)
本次设计是基于A律来实现的,由于A律表示式是一条连续的平滑曲线,用电子线路很难准确地实现。
现在由于数字电路技术的发展,这种特性很容易用数字电路来近似实现。
13折线特性就是近似于A律的特性。
在图3中显示出了这种特性曲线。
图3:
13折线特性曲线图
在13折线法中采用的折叠码有8位。
其中第一位c1表示量化值的极性正负。
(c2c3c4)是段落码,共计3位,表示图中8中斜率的段落;其他4位(c5~c8)为段内码,可以表示每一段的16种量化电平。
段落的量化间隔是不同的,段内的16个量化电平时均匀划分的。
所以这7位码共能表示128种量化值。
其中,第1和2段最短,斜率最大,横坐标的归一化范围只有1/128,再将其等分16小段后,每一小段只有1/2048,这就是最小量化间隔,也就是一个量化单位。
3PCM通信系统主要模块
3.1信源
话音信号的频率在300HZ~3.4kHZ,这里采用的是单音频正弦信号,信号频率f=0.8kHZ,即角频率w=2*pi*f,幅度值A=5,所以信源的单音频信号为y=5sin(w*t)。
3.2基带信号处理
此处对于基带信号的处理可分为三个部分
时域信号的抽样
我们知道~3.4kHz之间,而根据奈奎斯特抽样定理:
若频带宽度有限的,要从抽样信号中无失真地恢复原信号,抽样频率应大于2倍信号最高频率。
所以在实际中话音的抽样频率为8kHz。
在此次仿真模拟中我们也采用抽样频率fs=8kHz。
抽样周期T=1/fs。
所以由音频信号和抽样函数可得抽样后的信号为:
S=Asin(w*n*T),其中抽样200个值,即n=[1,200]。
量化与编码
模拟信号抽样后变成在时间上离散的信号,但仍然是模拟信号。
这个抽样信号必须经过量化才成为数字信号。
而量化后的信号虽然是数字信号,但是还要经过编码之后才利于传输。
在这里我们采用的是A律PCM编码,A律编码为非均匀量化。
在非均匀量化时,量化间隔是随信号抽样值的不同而变化的。
信号抽样值小时,量化间隔ΔV也小;信号抽样值大时,量化间隔ΔV也变大。
实际中,非均匀量化的实现方法通常是在进行量化之前,先将信号抽样值压缩,在进行均匀量化。
在本次设计中我们采用13折线法来进行PCM编码,程序(见附录)中PCM编码的实现函数是自己编写的PCMcode,一个抽样值编码为8位的码字,第一位是极性位,二三四位是段落码,后四位是段内码。
信道编码
有人可能会有疑问,前面已经讲了编码,为什么这里还要来一个信道编码呢?
这个信道编码是为了提高系统传输的可靠性,即降低误码率而专门提出来的,信道编码可分为两类:
一类信道编码是对传输信号的码型进行变换,使之更适合于信道特性或满足接收端对恢复信号的要求,从而减少信息损失;另一类信道编码是在信息序列中人为地增加冗余位,使之具有相关特性,在接收端利用相关性进行检错或纠错,从而达到可靠通信的目的。
在这里我们采用的是纠错编码,属于第二类信道编码。
常见的纠错编码有线性分组码、循环码、卷积码等等。
这里采用了线性分组码中的一个典型编码方式(7,4)汉明码和(15,8)循环编码。
程序(见附录)中这两种编码方式均调用了系统自带的“encode”函数;对收到的信号还要进行译码,译码也均调用了系统自带的“decode”函数。
3.3调制/解调
前面已经讲到对信号进行了编码,但是编码之后的信息序列还不能在信道中传输,还要对信号进行调制后才能发送出去,对数字信号调制的方式有很多种,例如ASK、FSK、PSK、GMSK、16QAM、64QAM等等。
在本次设计中采用的是最经典的双极性不归零2ASK调制方式,先将0、1序列变换成双极性不归零码,然后进行2ASK调制。
所谓的解调即为调制的反过程,此处就不再赘述了。
3.4信道
为了模拟真实信道,我们在信道中加入了高斯随机白噪声,白噪声随信噪比变化而变化,也即信噪比的变化将引起信道传输质量的变化,这一变化由误码率来显示,通过误码率随信噪比的变化而变化,可以看出噪声对信道传输质量的影响。
3.5传输质量分析
通过前面的一系列抽样、量化、编码以及调制解调等传输后再对信号进行译码,还原出来的信号序列可以和信道编码之前的信号序列进行对比,统计出传输之后的错误比特数,进而得出误码率。
然后再在不同的信噪比之下,观察误码率,进而得出误码率——信噪比曲线图。
4MATLAB对PCM通信系统的仿真
4.1MATLAB主要模块及参数设置
构建PCM通信系统,其中包括PCM编码、译码,采用均匀量化、A律、
律非均匀量化编码。
经过传输后,接收端进行PCM译码。
抽样:
低通连续信号采样,绘出信号时、频域图形。
量化:
均匀量化及非均匀量化,给出编码器的输出码组序列。
编码:
实现A律PCM编码。
画出经过PCM编码、译码后的波形与未编码波形;画出输入信号不同幅度情况下,PCM译码后的量化信噪比。
能够演示,测试其波形及量化信噪比。
编写M文件。
在程序中,依次改变信噪比,得到在特定信噪比下的误码率。
信噪比范围是可以是-25dB~25dB之间,步长为5dB。
根据得到的误码率数据,绘出误码率-信噪比曲线图。
4.2PCM通信系统的仿真图和结果分析
已抽样信号时域图
图4:
原始音频信号图
。
图5:
抽样脉冲仿真图
本图显示的是抽样脉冲序列图,为了便于观察,只显示了60个抽样脉冲序列。
图6:
时域已抽样信号仿真图
如上图所示,此信号的幅值为5,频率为800Hz,用8kHz抽样脉冲对此单音频信号抽样,抽样数为200,此处只显示了50个抽样脉冲,以便于观察波形。
已抽样信号频谱图
图7:
频域已抽样信号仿真图
已知时域相乘即为频域卷积,而本次设计中原始音频信号为800Hz,抽样频率为8kHz。
两信号相乘即为已抽样信号,且本信号为周期离散的频谱,在一个周期内取值则应该在800Hz和7200Hz时有值,由图7可以看到在800Hz和7200Hz时正好有值,与理论计算相符。
误码率——信噪比曲线图
图8:
PCM系统误码率——信噪比仿真图
由上图看到,信噪比取值范围为-25dB~25dB,步长为5。
但是误码率在信噪比为5的时候误码率已经趋近于零了,三条曲线分别代表无信道编码、汉明编码、循环码,三条曲线都显示了信噪比越大,误码率越低,但是无信道编码的误码率下降没有汉明编码和循环码的下降明显,且在此传输系统中汉明编码和循环码的性能几乎没有什么差别。
5结论
本次课程设计采用MATLAB对PCM通信系统仿真,对原始单音频信号的量化采用A律13折线法,对信号的编码采用PCM脉冲编码调制,对信道的编码采用纠错编码里面比较常用的(7,4)汉明编码和(15,8)循环码,通过对比无信道编码的误码率——信噪比曲线,可以看出在数字通信系统中,采用信道编码比未采用信道编码的误码率明显减少,效果明显。
附录
总程序
clear
A=5;f=0.8*10^3;w=2*pi*f;
fs=8*10^3;T=1/fs;
t=0:
0.00000001:
0.005;
y=A*sin(w*t);
figure
(1)
plot(t,y)%原始音频信号图
legend('时域信号');
n=1:
200;
qq(n)=1;
figure
(2)
stem(n,qq(n));%抽样脉冲序列图
legend('抽样脉冲');
axis([06001]);
s=A*sin(w*n*T);
figure(3)
stem(n,s);%时域抽样后的信号图
axis([050-55]);
legend('时域已抽样信号图');
grid;
f=n./(200*T);
y1=fft(s);
figure(4)
plot(f,y1);
xlabel('抽样频率');
ylabel('幅频特性');
legend('已抽样信号频谱');
s1=s./max(s);%归一化
s2=s1./(1/2048);
fori=1:
200
c(i,1:
8)=PCMcodefunction(s2(i));%c是pcm码200*8
end
m=c;
m=2*m-1;%调制%无信道编码
c1=c.';c7=c;
c1=reshape(c1,4,400);c1=c1.';%c1=400*4,前两行对应c的第一行c2=encode(c1,7,4,'hamming/binary');%(7,4)汉明编码400*7
c3=encode(c7,15,8,'cyclic/binary');%(15,8)循环编码
tx1=2*c2-1;tx2=2*c3-1;%2ASKBNRZ调制
errorbit=0;
dB=-25:
5:
25
forq=1:
11
biterrors=0;biterrors1=0;biterrors2=0;
r1=10.^(dB(q)/10);
r1=0.5./(r1);
sigma=sqrt(r1);
ee=m+sigma*randn(200,8);
ee(find(ee>=0))=1;ee(find(ee<0))=0;
errors=zeros(200,8);errors(find(ee~=c))=1;
errors=reshape(errors,1,1600);
biterrors=sum(errors);
bit1(q)=biterrors/(200*8);
rx1=tx1+sigma*randn(400,7);%加噪声
rx1(find(rx1>=0))=1;rx1(find(rx1<0))=0;%判决,解调
c22=decode(rx1,7,4,'hamming/binary');%汉明信道译码400*4
errors1=zeros(400,4);
errors1(find(c22~=c1))=1;
errors1=reshape(errors1,1,1600);
biterrors1=sum(errors1);%统计错误
errorbit(q)=biterrors1/(200*8);%误码率
rx2=tx2+sigma*randn(200,15);%加噪声
rx2(find(rx2>=0))=1;rx2(find(rx2<0))=0;%判决,解调
c33=decode(rx2,15,8,'cyclic/binary');%循环译码
errors2=zeros(200,8);
errors2(find(c33~=c7))=1;
errors2=reshape(errors2,1,1600);
biterrors2=sum(errors2);%统计错误
errorbit2(q)=biterrors2/(200*8);%误码率
end
figure(5)
semilogy(dB,errorbit,':
bs');
hold
semilogy(dB,bit1,'--mo');
semilogy(dB,errorbit2,'-.r*');
grid;
legend(':
bs汉明','—mo无信道编码','-.r*循环码');
xlabel('dB');
ylabel('误码率');
PCM编码
function[c]=PCMcode(y)
c=[00000000]
if(y>0)
c
(1)=1;
else
c
(1)=0;
end
y=abs(y);
if(y>=0&y<16)
c
(2)=0;c(3)=0;c(4)=0;step=1;st=0;
elseif(y>=16&y<32)
c
(2)=0;c(3)=0;c(4)=1;step=1;st=16;
elseif(y>=32&y<64)
c
(2)=0;c(3)=1;c(4)=0;step=2;st=32;
elseif(y>=64&y<128)
c
(2)=0;c(3)=1;c(4)=1;step=4;st=64;
elseif(y>=128&y<256)
c
(2)=1;c(3)=0;c(4)=0;step=8;st=128;
elseif(y>=256&y<512)
c
(2)=1;c(3)=0;c(4)=1;step=16;st=256;
elseif(y>=512&y<1024)
c
(2)=1;c(3)=1;c(4)=0;step=32;st=512;
elseif(y>=1024&y<=2048)
c
(2)=1;c(3)=1;c(4)=1;step=64;st=1024;
end
if(y<2048)
t=floor((y-st)/step);
p=dec2bin(t,4)-48;
c(5:
8)=p(1:
4);
else
c(5:
8)=[1111]
end