基于MATLAB的通信系统仿真PCM系统仿真通信原理课程设计文档格式.doc
《基于MATLAB的通信系统仿真PCM系统仿真通信原理课程设计文档格式.doc》由会员分享,可在线阅读,更多相关《基于MATLAB的通信系统仿真PCM系统仿真通信原理课程设计文档格式.doc(24页珍藏版)》请在冰豆网上搜索。
2.对通信系统有整体的较深入的理解,深入理解自己仿真部分的原理的基础,画出对应的通信子系统的原理框图;
3.提出仿真方案;
4.完成仿真软件的编制;
5.仿真软件的演示;
6.提交详细的设计报告。
计算机、Matlab软件
1、通信系统的原理(阐述整个通信系统原理,最后之处你主要负责哪一部分)
通信的目的是传递消息,通信系统是一个以传递消息为目地的系统,通信系统的一般模型如下:
图中,信源的作用是把待传输的消息转换成原始电信号,如电话系统中电话机可看成是信源。
信源输出的信号称为基带信号。
所谓基带信号是指没有经过调制(进行频谱搬移和变换)的原始电信号,其特点是信号频谱从零频附近开始,具有低通形式,。
根据原始电信号的特征,基带信号可分为数字基带信号和模拟基带信号,相应地,信源也分为数字信源和模拟信源。
发送设备的基本功能是将信源和信道匹配起来,即将信源产生的原始电信号(基带信号)变换成适合在信道中传输的信号。
变换方式是多种多样的,在需要频谱搬移的场合,调制是最常见的变换方式;
对传输数字信号来说,发送设备又常常包含信源编码和信道编码等。
信道是指信号传输的通道,可以是有线的,也可以是无线的,甚至还可以包含某些设备。
图中的噪声源,是信道中的所有噪声以及分散在通信系统中其它各处噪声的集合。
在接收端,接收设备的功能与发送设备相反,即进行解调、译码、解码等。
它的任务是从带有干扰的接收信号中恢复出相应的原始电信号来。
信宿是将复原的原始电信号转换成相应的消息。
我做的是通信系统中的一种系统:
数字通信系统的仿真。
其基本框图如下:
数字调制
信源编码
信道编码
量化
抽样
模拟信号
抽
信道
噪声
数字滤波器
抽样判决
信道译码
信源译码
我负责独立完成以上各部分。
现在更详细说明以上数字通信系统的原理。
(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)&
1/32))
y(i)=x(i)*8+1/8;
elseif((x(i)>
=1/32)&
1/16))
y(i)=4*x(i)+2/8;
elseif((x(i)>
=1/16)&
1/8))
y(i)=2*x(i)+3/8;
elseif((x(i)>
=1/8)&
1/4))
y(i)=x(i)+1/2;
elseif((x(i)>
=1/4)&
1/2))
y(i)=1/2*x(i)+5/8;
elseif((x(i)>
=1/2)&
=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;
n+1
q(i)=min(y4)+(i-1)*m;
%量化过程
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)<
q(y+1))
b_duan(x)=y+1;
end
end
end
end
nu=ceil(log2(n));
%编码
code=zeros(length(y4),nu);
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;
code(i,(nu-j+1))=0;
end
end
bit=[];
bit=[bit,code(i,:
)];
此函数的功能是将抽样后的值量化后进行自然二进制
编码。
第个值采用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=[];
length(p)/7
R(i,[1:
7])=p((i-1)*7+1:
i*7);
1101