基于MATLAB的通信系统仿真PCM系统仿真通信原理课程设计.doc

上传人:wj 文档编号:526803 上传时间:2023-04-29 格式:DOC 页数:24 大小:216KB
下载 相关 举报
基于MATLAB的通信系统仿真PCM系统仿真通信原理课程设计.doc_第1页
第1页 / 共24页
基于MATLAB的通信系统仿真PCM系统仿真通信原理课程设计.doc_第2页
第2页 / 共24页
基于MATLAB的通信系统仿真PCM系统仿真通信原理课程设计.doc_第3页
第3页 / 共24页
基于MATLAB的通信系统仿真PCM系统仿真通信原理课程设计.doc_第4页
第4页 / 共24页
基于MATLAB的通信系统仿真PCM系统仿真通信原理课程设计.doc_第5页
第5页 / 共24页
基于MATLAB的通信系统仿真PCM系统仿真通信原理课程设计.doc_第6页
第6页 / 共24页
基于MATLAB的通信系统仿真PCM系统仿真通信原理课程设计.doc_第7页
第7页 / 共24页
基于MATLAB的通信系统仿真PCM系统仿真通信原理课程设计.doc_第8页
第8页 / 共24页
基于MATLAB的通信系统仿真PCM系统仿真通信原理课程设计.doc_第9页
第9页 / 共24页
基于MATLAB的通信系统仿真PCM系统仿真通信原理课程设计.doc_第10页
第10页 / 共24页
基于MATLAB的通信系统仿真PCM系统仿真通信原理课程设计.doc_第11页
第11页 / 共24页
基于MATLAB的通信系统仿真PCM系统仿真通信原理课程设计.doc_第12页
第12页 / 共24页
基于MATLAB的通信系统仿真PCM系统仿真通信原理课程设计.doc_第13页
第13页 / 共24页
基于MATLAB的通信系统仿真PCM系统仿真通信原理课程设计.doc_第14页
第14页 / 共24页
基于MATLAB的通信系统仿真PCM系统仿真通信原理课程设计.doc_第15页
第15页 / 共24页
基于MATLAB的通信系统仿真PCM系统仿真通信原理课程设计.doc_第16页
第16页 / 共24页
基于MATLAB的通信系统仿真PCM系统仿真通信原理课程设计.doc_第17页
第17页 / 共24页
基于MATLAB的通信系统仿真PCM系统仿真通信原理课程设计.doc_第18页
第18页 / 共24页
基于MATLAB的通信系统仿真PCM系统仿真通信原理课程设计.doc_第19页
第19页 / 共24页
基于MATLAB的通信系统仿真PCM系统仿真通信原理课程设计.doc_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于MATLAB的通信系统仿真PCM系统仿真通信原理课程设计.doc

《基于MATLAB的通信系统仿真PCM系统仿真通信原理课程设计.doc》由会员分享,可在线阅读,更多相关《基于MATLAB的通信系统仿真PCM系统仿真通信原理课程设计.doc(24页珍藏版)》请在冰点文库上搜索。

基于MATLAB的通信系统仿真PCM系统仿真通信原理课程设计.doc

目录

一、课题内容

二、设计目的

三、设计要求

四、实验条件

五、系统设计

1、通信系统的原理

2.所设计子系统的原理

六、详细设计与编码

1.设计方案 

2.编程工具的选择

3.编码与测试 

4.运行结果及分析

七、设计心得 

八、参考文献……………………………….……………….22

一、课题内容

本课题是基于MATLAB的通信系统仿真—PCM系统仿真

二、设计目的

1、培养我综合得用多门课程知识的能力。

2、培养我熟练掌握MATLAB,运用此工具进行通信系统仿真的能力。

3、培养我查阅资料,解决问题的能力。

4、加深我对通信系统各部分的理解。

5、培养学生系统设计与系统开发的思想;

三、设计要求

1.独立完成自己的题目内容;

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

3.提出仿真方案;

4.完成仿真软件的编制;

5.仿真软件的演示;

6.提交详细的设计报告。

四、实验条件

计算机、Matlab软件

五、系统设计

1、通信系统的原理(阐述整个通信系统原理,最后之处你主要负责哪一部分)

通信的目的是传递消息,通信系统是一个以传递消息为目地的系统,通信系统的一般模型如下:

   图中,信源的作用是把待传输的消息转换成原始电信号,如电话系统中电话机可看成是信源。

信源输出的信号称为基带信号。

所谓基带信号是指没有经过调制(进行频谱搬移和变换)的原始电信号,其特点是信号频谱从零频附近开始,具有低通形式,。

根据原始电信号的特征,基带信号可分为数字基带信号和模拟基带信号,相应地,信源也分为数字信源和模拟信源。

   发送设备的基本功能是将信源和信道匹配起来,即将信源产生的原始电信号(基带信号)变换成适合在信道中传输的信号。

变换方式是多种多样的,在需要频谱搬移的场合,调制是最常见的变换方式;对传输数字信号来说,发送设备又常常包含信源编码和信道编码等。

    信道是指信号传输的通道,可以是有线的,也可以是无线的,甚至还可以包含某些设备。

图中的噪声源,是信道中的所有噪声以及分散在通信系统中其它各处噪声的集合。

    在接收端,接收设备的功能与发送设备相反,即进行解调、译码、解码等。

它的任务是从带有干扰的接收信号中恢复出相应的原始电信号来。

    信宿是将复原的原始电信号转换成相应的消息。

我做的是通信系统中的一种系统:

数字通信系统的仿真。

其基本框图如下:

数字调制

信源编码

信道编码

量化

抽样

模拟信号

信道

噪声

数字滤波器

模拟信号

抽样判决

信道译码

信源译码

我负责独立完成以上各部分。

2.所设计子系统的原理

现在更详细说明以上数字通信系统的原理。

(1)、模拟信号为原始的信原信号。

(2)、抽样是将上述的时间和幅值都连续的模拟信号转换成时间离散幅值连续的信号。

(3)、量化是将上述的时间离散幅值连续的抽样信号转换成时间离散幅值离散的信号。

(4)、信源编码是将上述量化后的值编码成0、1比特流的形式,并且可以减少冗余,提高效率。

(5)、信道纺码是为了提高传输可靠性。

(6)、数字调制是将上述0、1比特流转换成适合在通信信道中传输的波形。

(7)、信道是信号传输的通道,信号在信道中传输时经常会有噪声的干扰。

(8)、数字滤波器是将调制并加有噪声的信号,去除噪声,并且解调后形成方波形式的信号。

(9)、抽样判决是将方波形号转换成0、1比特流。

(10)、信道译码是信道编码的反过程。

(11)、信源译码是信道编曲码的反过程。

(12)、最后还原成模拟信号。

六、详细设计与编码

1.设计方案 (可以画出编程的流程图,阐述设计思路等)

经过我的思考,再加上查阅了大量资料后,有了以下编程设计思路。

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

线性分组码编码

通过13拆线得到转换后的值

数字调制

通过编码子函数进行量化和编码

主函数

数字滤波器

BPSK子函数

抽样判决

通过A侓公式反转成原始模拟信号

信道译码

在主函数中,先产生一个模拟信号,再经过抽样后得到抽样值,将抽样值通过13拆线法转换成对应值,将转换后的值经过量化和编码后得到0、1比特流,再经过信道译码,再经过BPSK调制,再人为加入一些噪声,再通过数字滤波器将噪声和载波滤掉,取出直流分量,得到方波波形。

再经过抽样判决后得到0、1比特流,再经过线性分组码译码,最后经过信源译码,再经过A侓公式反转成原始模拟信号,画出各阶段的波形。

2.编程工具的选择(本次仿真使用的工具软件,阐述为什么使用该软件,该软件的特点)

我这次选用的软件是MATLAB,因为这款软件的功能特很强大,学习方便,仿真容易实现。

MATLAB具有以下几个特点:

功能强大的数值运算功能

强大的图形处理能力

高级但简单的程序环境

丰富的工具箱

最重要的是MATLAB学习起来方便容易,以前有学C语言的基础,MATLAB与C语言有类似之处,编程流程大概差不多,但要注意的是MATLAB与C语言在程序代码上也有细微的差别,MATLAB是一种解释性语言,在写程序代码时容易方便,但是与C语言相比它的运算速度较慢,但功能强大。

3.编码与测试 (写出源代码,分析核心代码完成的功能)

编程序代码过程:

子函数1:

functiony1=zhexian(x)

x=x/max(x);

z=sign(x);

x=abs(x);

fori=1:

length(x)

if((x(i)>0)&(x(i)<1/64))

y(i)=16*x(i);

elseif((x(i)>=1/64)&(x(i)<1/32))

y(i)=x(i)*8+1/8;

elseif((x(i)>=1/32)&(x(i)<1/16))

y(i)=4*x(i)+2/8;

elseif((x(i)>=1/16)&(x(i)<1/8))

y(i)=2*x(i)+3/8;

elseif((x(i)>=1/8)&(x(i)<1/4))

y(i)=x(i)+1/2;

elseif((x(i)>=1/4)&(x(i)<1/2))

y(i)=1/2*x(i)+5/8;

elseif((x(i)>=1/2)&(x(i)<=1))

y(i)=1/4*x(i)+3/4;

end;

end;

end;

end;

end;

end;

end;

end;

y1=z.*y;

end

此子函数的功能是将抽样后得到的值用13拆线转换成对应的值。

子函数2:

functionbit=bianma(y4,n)

m=2/n;

fori=1:

n+1

q(i)=min(y4)+(i-1)*m;

end

%量化过程

t=length(q);

ttt=[];%存放将抽样信号量化后的值

tt=[];

e=1;

tt

(1)=-1;

forx=2:

length(q)

tt(x)=(q(x-1)+q(x))/2;%存放第几个电平段的电平值

end

tt=[tt,max(y4)];

b_duan=[];%存放电平段

forx=1:

length(y4)

ify4(x)==q(t)

b_duan(x)=length(tt);

else

ify4(x)==min(q)

b_duan(x)=1;

else

fory=1:

t-1

if(q(y)<=y4(x))&&(y4(x)

b_duan(x)=y+1;

end

end

end

end

end

nu=ceil(log2(n));%编码

code=zeros(length(y4),nu);

fori=1:

length(y4)

forj=nu:

-1:

0

if(fix(b_duan(i)/(2^j))==1)

code(i,(nu-j+1))=1;

b_duan(i)=b_duan(i)-2^j;

else

code(i,(nu-j+1))=0;

end

end

end

bit=[];

fori=1:

length(y4)

bit=[bit,code(i,:

)];

end

此函数的功能是将抽样后的值量化后进行自然二进制

编码。

第个值采用8位二进制编码。

子函数3:

functionbit2=xianxi(m)

H=[0111100;

1011010;

1101001];

G=[1000011;

0100101;

0010110;

0001111];%生成矩阵

C=rem(m*G,2);

[c,z]=size(C);

bit2=[];

fori=1:

c

bit2=[bit2,C(i,[1:

7])];

end

此函数的功能是进行信道编码即:

将每四位二进制后加三位监督位,比特流的总长度除以四余下的则不进行加监督位。

子函数4:

functionbit3=xianxiyima(gg)

p=gg;

R=[];

S=[];

fori=1:

length(p)/7

R(i,[1:

7])=p((i-1)*7+1:

i*7);

end

H=[0111100;

1011010;

1101001];

[c,z]=size(R);

S=rem(R*H',2);

fori=1:

c%伴随式的行次

forj=1:

7

b=all(S(i,:

)==H(:

j)');

ifb==1

R(i,j)=~R(i,j);

break;

end

end

end

R(:

[5:

7])=[];

[c,z]=size(R);

bit3=[];

fori=1:

c

bit3=[bit3,R(i,[1:

4])];

end

子函数5:

functionbb=BPSK(bit)

fs=30000;

Ts=0.1;

m=fs*Ts;%一个码无所占宽度

High=ones(1,m);

Low=zeros(1,m);

U=rem(length(bit),4);

sheng=[bit(length(bit))-U+1:

bit(length(bit))];

w=300;%角频率

fori=1:

length(bit)/4

decode(i,[1:

4])=bit((i-1)*4+1:

i*4);

end

bit2=xianxi(decode);%线性分组码编码

Sign=[bit2,sheng];

L=length(Sign);%信号长度

st=zeros(1,m*L);

sign1=zeros(1,m*L);

t=0:

1/fs:

Ts*L-1/fs;

fori=1:

L

ifSign(i)==1

sign1((i-1)*m+1:

i*m)=High;

else

sign1((i-1)*m+1:

i*m)=Low;

end

end

fori=1:

L

ifSign(i)==1

st((i-1)*m+1:

i*m)=cos(2*pi*w*t((i-1)*m+1:

i*m)+(pi/2));

else

st((i-1)*m+1:

i*m)=cos(2*pi*w*t((i-1)*m+1:

i*m));

end

end

st1=st;

st1=st1+cos(3000*t);

figure

plot(t,sign1);

axis([0,Ts*(L+1),-(1/2),3/2]);

title('编码后的信号');

grid

figure

subplot(2,1,1);

plot(t,st);

axis([0,Ts*(L+1),-3/2,3/2]);

title('数字调制后的信号');

grid

subplot(2,1,2);

plot(t,st1);

axis([0,Ts*(L+1)+1,-5/2,5/2]);

title('加噪后的信号');

grid

dt=st1.*cos(2*pi*w*t);

figure

plot(t,dt);

axis([0,Ts*(L+1),-2,5/2]);

title('与相干波相乘后的波形');

grid

[N,Wn]=buttord(2*pi*50,2*pi*100,3,25,'s');%临界频率采用角频率表示

[b,a]=butter(N,Wn,'s');

[bz,az]=impinvar(b,a,fs);%映射为数字的

dt=filter(bz,az,dt);

figure

plot(t,dt);

axis([0,Ts*(L+1),-3/2,3/2]);

title('低通滤波后的波形');

ss=dt;%存放抽样判决后的值

bit1=[];

tt=length(ss)/L;

fori=tt/2:

tt:

length(ss)

ifss(i)>(1/4)

ss((i-tt/2+1):

(i+tt/2))=zeros(1,3000);

bit1=[bit1,0];

else

ss((i-tt/2+1):

(i+tt/2))=ones(1,3000);

bit1=[bit1,1];

end

end

figure

plot(t,ss,'r-');

axis([0,Ts*(L+1),-1/2,3/2]);

title('信道译码信号');

grid

bb=[];

U1=rem(length(bit1),7);

l=length(bit1);

sheng1=[bit1(length(bit1))-U1+1:

bit1(length(bit1))];

bit1([l-U1+1:

bit1(l)])=[];

bb=xianxiyima(bit1);%线性分组码译码;

bb=[bb,sheng1];

此函数的功能是将信源编码后的0、1序列再经过信道编码(7,4)线性分组码编码,将信道编码后的信号进行BPSK调制,由于考虑到在信道中传输是会有噪声的影响,所以在仿真时我人为的加入一定的噪声。

在接收端进行相干解调,用一个与调制信号同频的信号与接收到的信号(加入噪声后的已调信号)相乘,再用一个数字滤波器进行滤波,去掉了信号中的高频成份和噪声,取出直流分量,得到方波信号,对这个信号进行抽样判决将其转换成0、1比特流后,再经过信道译码。

子函数5:

functiona3=yima(y,n)

m=2/n;

fori=1:

n+1

q(i)=(-1)+(i-1)*m;

end

tt=[];

tt

(1)=-1;

forx=2:

length(q)

tt(x)=(q(x-1)+q(x))/2;%存放第几个电平段的电平值

end

tt=[tt,1];

nu=ceil(log2(n));

decode=[];

fori=1:

length(y)/(nu+1)

decode(i,[1:

(nu+1)])=y((i-1)*(nu+1)+1:

i*(nu+1));

end

ab=[];%存放的十进制数,到tt中去找对应值

[w,z]=size(decode);

forj=1:

w

L=nu;

value=0;

fori=0:

L

value=decode(j,i+1)*(2^(L-i))+value;

end

ab(j)=value;

end

decode;

w;

a3=[];%存放信源译码值

fori=1:

w

a3(i)=tt(ab(i));

end

此函数的功能是将接收到的0、1比特流分为八位二进制一组一组的,再将每八位二进制转换为十进制数,再到每段中去寻到与发关端有相同约定段号值。

即可恢复原信号的量化值。

子函数6:

functiony5=Ayi(y,A)

fori=1:

length(y)

if((abs(y(i))>=0)&(abs(y(i))<=(1/(1+log(A)))))

y1(i)=y(i)*(1+log(A))/A;

elseif((abs(y(i))<=1)&(abs(y(i))>(1/(1+log(A)))))

y1(i)=(1/A)*sign(y(i))*exp(abs(y(i))*(1+log(A))-1);

end

end

end

y5=y1;

end

此函数的功能是将恢复的量化值通过A律反转换公式得到对应的值,是用13拆线转换的反过程。

因为在当A=86.5时,可以用13折线用13条折线近似A律的平滑曲线,在实际工程中A律的平滑曲线不易实现,而用13折线法可以降低工程实现中的难度。

主函数:

clc

clearall

t=0:

0.1:

6*pi;

a1=sin(t);%模拟信源

figure

(1)

plot(t,a1);

title('原始模拟信号');

t1=0:

2*pi/32:

6*pi;%抽样

a=sin(t1);

figure

plot(t1,a);

stem(t1,a);

title('抽样信号');

y4=zhexian(a);%13折线

n=256;%量化电平数;

bitstream=bianma(y4,n);

bit1=BPSK(bitstream);

y2=yima(bit1,n);

y5=Ayi(y2,87.65);

figure

plot(y5);

stem(y5,'r')

axis([0,100,-1,1.01])

figure

plot(y5,'r');

holdon

plot(y5,'.b');

axis([0,100,-1,1.01])

主函数的功能是是产生模拟信号并且进行抽样得到抽样值,然后将各个子函数衔接到一块,形成一个比较完整的通信系统,进行仿真画出各个阶段重要的图形,以便观察和分析。

调试过程:

将各个子程序和主程序都放入MATLAB的工作空间中,双击main.m文件后,点击DebugRun运行程序。

在这次通信系统仿真编程中,我遇到了很多问题,例如在利用13折线进行数值变转时,需要考虑归一化问题,并且考虑到在第一像限和第三像限的情况基本相同,只是符号相反,所以只需考虑一段,那么在进行运算是得先把原来的值的符号位保存,再在变换后的值上添加符号值。

还有在对连续幅值进行量化时,我也犯了一些思路上的混乱,导致我在调试的时候出现错误,但当我反复一遍遍检查,发现只是在取值端点上没有弄好,当我改后就好了。

还有在编码时,一开始不知怎么的老是前几个数编出来只有六位,我又上那块去找原因,发现又是在取值边界上的问题,我改后这个问题也解决了。

进行BPSK调制时,出现了相位模糊的问题,我在抽样判决后,人为的进行取反,就得到了正确的0、1比特流。

在信源译码的时候要注意的是,取的量化电平及值要和发送端事约定好,以便在接收到0、1比特流后能够正确译出量化值,在量化值恢复成原始抽样值时,我采用的是A律反解法,因为在我设计的程序中令A的值为87.65,此时的A律曲线和13拆线很接进,为了观查它们的近似度,我在发送端和接收端分别用了13折线和A律公试。

5. 运行结果及分析

先得到原始模拟信号如下图:

将此模拟信号按每周期取32个点抽样,得到以下图形:

将抽样后的量化值进行二进制编码,第八位二进制数表示一个量化值,将得到的二进制数进行信道编曲码,得到如下图形:

经过BPSK调制后的信号和在调制后的信号中加入噪声有如下图形:

(值得引起注意的是,我用0.1的宽度来表示一个比特,所以如果在0.1的整数倍的地方才能看到有0比特的相位表示用0相位,1比特的相位表示用pi/2)

在接收端用一个与调制后的波同频的相干波与接收到的信号相乘后得到以下图形:

经过数字低通滤波器滤除噪声和载波后的波形如下图

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2