通信原理II报告.docx

上传人:b****5 文档编号:28470568 上传时间:2023-07-14 格式:DOCX 页数:31 大小:163.17KB
下载 相关 举报
通信原理II报告.docx_第1页
第1页 / 共31页
通信原理II报告.docx_第2页
第2页 / 共31页
通信原理II报告.docx_第3页
第3页 / 共31页
通信原理II报告.docx_第4页
第4页 / 共31页
通信原理II报告.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

通信原理II报告.docx

《通信原理II报告.docx》由会员分享,可在线阅读,更多相关《通信原理II报告.docx(31页珍藏版)》请在冰豆网上搜索。

通信原理II报告.docx

通信原理II报告

通信原理II课程设计报告

基于MATLAB的数字基带传输系统

通信系统仿真平台各模块要求

序号

内容

基本要求

参考学时

1

实现输入信号的模拟

设计实现单频正弦波、方波、声波信号(以两个不同频率正弦波相加模拟)的仿真。

要求正弦波、方波的幅度和频率可按要求调整

4

2

实现模拟波形到数字波形的PCM编码变换

设计实现抽样、量化、编码。

要求抽样率可根据输入信号最大频率自动调整。

编码可采用均匀量化编码或A律13折线编码

3

数字基带传输系统的设计

设计实现AMI、AMI和数字双向码基带信号的编码传输,画出码形变换前后的信号波形

4

4

数字频带传输系统的设计

设计实现2ASK、2PSK、2FSK、2DPSK、QPSK调制解调系统,画出调制前后的信号波形

4

5

传输信道建模和设计和系统误码性能分析

设计实现AWGN信道、简单衰落信道、瑞利衰落信道;通过改变信道条件,仿真信道传输误码率性能,画出系统误码率曲线;分析不同调制方式、编码方式对系统传输性能的影响

2

6

采用信道编码系统的设计

设计实现汉明码的编译码;循环码的编译码;卷积码的编译码;正交编码的编译码系统

2

7

系统图形化界面的设计

运用Matlab图形界面开发工具设计并实现仿真系统的图形化界面

8

其他扩展功能

自行设计发挥

目录

1、实验目的和要求1

2、实验原理图2

3、实验程序设计2

4、实验结果17

5、实验心得20

摘要

输入:

首先输入模拟信号,给出此模拟信号的时域波形。

数字化:

将模拟信号进行数字化,得到数字信号,选择PCM编码。

信道编码:

实现简单的信道编译码(7,3)循环码

信源编码:

实现基带码形变换(AMI码)

信道:

采用加性高斯信道。

PCM解码:

给出解码后的模拟信号的时域波形,并与输入信号进行比较。

系统性能分析:

比较在不同调制方式下,该数字频带传输系统的性能指标,即该系统的输出误码率随输入信噪比的变化曲线。

1、实验目的和要求

1、目的:

通信原理II课程设计是《通信原理》课的辅助环节。

它以小型课题方式来加深、扩展通信原理所学知识,课程设计着重体现通信原理教学知识的运用,着重培养学生主动研究的能力。

通过课程设计,主要达到以下目的:

⑴使学生增进对通信系统的认识,加深对通信原理知识的理解。

⑵使学生掌握通信系统仿真设计方法。

2、要求:

根据所学知识独立完成基本设计任务,对于创新设计可以不受大纲限制,经老师审核同意并在条件允许的情况下,可以自行命题。

本课程设计以上机编写Matlab仿真程序为主,采取较为灵活的教学方式,大部分时间由学生上机操作,必要时配合少量的理论讲授。

主要完成系统设计与实现。

2、实验原理图

3、实验程序设计

closeall

clearall;

clc;

%--------------生成模拟信号----------------------

fudu=5;%模拟信号的振幅

fs=2800;%抽样频率

f=100;%模拟信号的频率Hz

N=64;%抽样个数

t=(0:

N-1)/fs;%采样时间s

moni=fudu*sin(2*pi*f*t);%生成了模拟信号

figure

(1);

%将第1个窗口分成2行2列,取第1个位置

subplot(3,1,1);

plot(t,moni);

gridon;

axis([01/f*2-fudufudu]);%输出2个周期的信号

title('输入模拟信号');

fori=1:

64;

%设计输入范围是-6~6V,对模拟信号抽取64个样本

%循环对每个样本进行归一化并计算出量化单位x

%设量化器最大分层电平是2048个量化单位.

x(i)=moni(i)/6*2048;

end

%----------------pcm编码部分--对每个样本进行编码-------------------

fori=1:

64;

ifx(i)>0

out

(1)=1;%抽样值大于0,极性码为1

else

out

(1)=0;%抽样值小于0,极性码为0

end

%确定段落码

ifabs(x(i))>=0&abs(x(i))<32

out

(2)=0;out(3)=0;out(4)=0;step=1;st=0;%x的绝对值在0到32之间,则落在第一段内,段落码为001,段落起始电平st为16,量化间隔step为1

elseif32<=abs(x(i))&abs(x(i))<64

out

(2)=0;out(3)=0;out(4)=1;step=2;st=32;%x的绝对值在32到64之间,则落在第二段内,段落码为010,段落起始电平st为32,量化间隔step为2

elseif64<=abs(x(i))&abs(x(i))<128

out

(2)=0;out(3)=1;out(4)=0;step=4;st=64;%x的绝对值在64到128之间,则落在第三段内,段落码为011,段落起始电平st为64,量化间隔step为4

elseif128<=abs(x(i))&abs(x(i))<256

out

(2)=0;out(3)=1;out(4)=1;step=8;st=128;%x的绝对值在128到256之间,则落在第四段内,段落码为100,段落起始电平st为128,量化间隔step为8

elseif256<=abs(x(i))&abs(x(i))<512

out

(2)=1;out(3)=0;out(4)=0;step=16;st=256;%x的绝对值在256到512之间,则落在第五段内,段落码为101,段落起始电平st为256,量化间隔step为16

elseif512<=abs(x(i))&abs(x(i))<1024

out

(2)=1;out(3)=0;out(4)=1;step=32;st=512;%x的绝对值在512到1024之间,则落在第六段内,段落码为110,段落起始电平st为512,量化间隔step为32

elseif1024<=abs(x(i))&abs(x(i))<2048

out

(2)=1;out(3)=1;out(4)=0;step=64;st=1024;%x的绝对值在1024到2048之间,则落在第七段内,段落码为111,段落起始电平st为1024,量化间隔step为64

else

out

(2)=1;out(3)=1;out(4)=1;step=64;st=1024;%x的绝对值超出了2048,则段落码为111,段落起始电平st为1024,量化间隔step为64

end

%确定段内码

if(abs(x(i))>=2048)

out(2:

8)=[1111111];%x的绝对值超出了2048,段落码和段内码均为1111111

else

tmp=floor((abs(x(i))-st)/step);%确定x落在某段的第tmp级内

t=dec2bin(tmp,4)-48;%将tmp转化为四位二进制码

out(5:

8)=t(1:

4);%段内码为t

end

g(i*8-7:

i*8)=out(1:

8);

end

%提取一小部分PCM在主界面上进行示范

jubuPCM=g(41:

44)

max=512;

%-------------------输出一下PCM编码作为演示-----------------

cp=[];

mod1=[];

f=2*2*pi;

t=0:

2*pi/199:

2*pi;

forn=1:

length(g);

ifg(n)==0;

A=zeros(1,200);%每个值200个点

elseg(n)==1;

A=ones(1,200);

end

cp=[cpA];%s(t),码元宽度200

c=cos(f*t);%载波信号

mod1=[mod1c];%与s(t)等长的载波信号,变为矩阵形式

end

 

figure

(1);subplot(3,1,2);plot(cp);gridon;

set(gca,'xtick',[38000:

400:

40000],'ytick',[-2,-1,0,1,2])

axis([3800040000-1.21.2]);title('PCM编码以后的信号(部分)');

%---------------------------------(7,4)汉明码编码-------------------------------

xinyuanU=g;%要编码的信源U=之前的PCM编码a矩阵

hmG=[1,0,0,0,1,1,0;0,1,0,0,1,1,1;0,0,1,0,0,1,1;0,0,0,1,1,0,1]%设置一个4行7列的生成矩阵

fori=1:

128

hmC(i*7-6:

i*7)=xinyuanU(i*4-3:

i*4)*hmG;%信息乘上监督矩阵,形成汉明码

end

hmC=rem(hmC,2);%对矩阵各项求余,以过滤成0或1

%----------------------------------汉明码编码结束--------------------------------

%提取一小部分PCM在主界面上进行示范

jubuC=hmC(71:

77)

%-------------------输出一下汉明码作为演示-----------------

cp=[];

mod1=[];

f=2*2*pi;

t=0:

2*pi/199:

2*pi;

forn=1:

length(hmC);

ifhmC(n)==0;

A=zeros(1,20);%每个值20个点

elsehmC(n)==1;

A=ones(1,20);

end

cp=[cpA];%s(t),码元宽度20

end

 

figure

(1);subplot(3,1,3);plot(cp);gridon;

set(gca,'xtick',[3800:

40:

4000],'ytick',[-2,-1,0,1,2])

axis([38004000-1.21.2]);title('转化为汉明码以后的信号(部分)');

%-------------------------------将汉明码变成AMI码--------------------------

temp=1;

one=0;

zero=0;

fori=1:

896

ifcp(i*20-10)==1

AMI(i*20-19:

i*20-10)=temp;%则前半部分得1或-1

AMI(i*20-9:

i*20)=0;%后半部分归0

temp=-temp;

one=one+1;

zero=0;

else

AMI(i*20-19:

i*20)=0;

zero=zero+1;

end

ifzero==4%判断是否出现了连续4个0码

ifrem(one,2)==1%如果之前的B有奇数个

AMI(i*20-19:

i*20-10)=-temp;%则将第4个0码变成+V或-V,形成"000V"

else%如果之前的B有偶数个

AMI(i*20-79:

i*20-70)=temp;%则第i-3个电平变成B或-B

temp=-temp;

AMI(i*20-19:

i*20-10)=-temp;%第i个电平变成V或-V,形成"B00V"

end

end

end

figure

(2);subplot(3,1,1);plot(AMI);gridon;

set(gca,'xtick',[3800:

40:

4000],'ytick',[-2,-1,0,1,2])

axis([38004000-1.21.2]);title('AMI码(部分)');

%加高斯噪声

gAMI=awgn(AMI,20);

figure

(2);subplot(3,1,2);plot(gAMI);gridon;

set(gca,'xtick',[3800:

40:

4000],'ytick',[-2,-1,0,1,2])

axis([38004000-1.21.2]);title('加高斯以后的AMI码(部分)');

%%接收端

%%低通滤波器

%fp=500;fs=700;rp=3;rs=20;fn=11025;

%ws=fs/(fn/2);wp=fp/(fn/2);%计算归一化角频率

%[n,wn]=buttord(wp,ws,rp,rs);%计算阶数和截止频率

%[b,a]=butter(n,wn);%计算H(z)

%

%dAMI=filter(b,a,gAMI);

%

%figure(3);subplot(2,1,1);plot(dAMI);gridon;

%set(gca,'xtick',[3800:

40:

4000],'ytick',[-2,-1,0,1,2])

%axis([38004000-1.21.2]);title('通过了低通滤波器后的AMI码(部分)');

 

dAMI=gAMI;

%抽样判决

%AMI码

fori=1:

length(dAMI);

ifdAMI(i)>0.5;

pAMI(i)=1;

elseifdAMI(i)<-0.5;

pAMI(i)=-1;

else

pAMI(i)=0;

end

end

figure

(2);subplot(3,1,3);plot(pAMI);gridon;

set(gca,'xtick',[3800:

40:

4000],'ytick',[-2,-1,0,1,2])

axis([38004000-1.21.2]);title('抽样判决后的AMI码(部分)');

%--------------------AMI转化回汉明码--------------------------

%先解决B00V和000V

temp1=0;

temp2=0.1;

j=0;

fori=1:

896

ifpAMI(i*20-15)~=0

j=j+1;

ifrem(j,2)==1

temp1=pAMI(i*20-15);

biaoji1=i;

else

temp2=pAMI(i*20-15);

biaoji2=i;

end

end

iftemp1==temp2%如果两次非0码的极性相同,就可能是B00V或000V

ifabs(biaoji1-biaoji2)==3%如果两个码之间的间隔是3,就是B00V

pAMI(biaoji1*20-19:

biaoji1*20)=0;

pAMI(biaoji2*20-19:

biaoji2*20)=0;

temp1=0;

temp2=0.1;

else

pAMI(i*20-19:

i*20)=0;

temp1=0;

temp2=0.1;

end

end

end

%然后变回汉明码

hmcm=zeros(1,17920);

temp=1;

fori=1:

length(pAMI)

ifhmcm(i)==0

ifabs(pAMI(i))==1

hmcm(i:

i+20)=1;

end

end

end

figure(3);subplot(3,1,1);plot(hmcm);gridon;

set(gca,'xtick',[3800:

40:

4000],'ytick',[-2,-1,0,1,2])

axis([38004000-1.21.2]);title('由AMI码转化后的汉明码');

%------------------------(7,4)汉明码--解码------------------------

%抽取其中的汉明码序列

fori=1:

896

pdst2(i)=hmcm(i*20-10);

end

%提取一小部分PCM在主界面上进行示范

JIEjubuC=pdst2(71:

77)

 

hmH=[1,1,0,1,1,0,0;1,1,1,0,0,1,0;0,1,1,1,0,0,1]%定义监督矩阵H

fori=1:

3%将监督矩阵H转置成为HT

forj=1:

7

hmHT(j,i)=hmH(i,j);

end

end

hmHT

fori=1:

128%利用转置了的监督矩阵HT进行解码

hmS=pdst2(i*7-6:

i*7)*hmHT;%将接收到的信号与监督矩阵的转置矩阵相乘

hmS=rem(hmS,2);%将所有数求余,以变成0或1

 

%hmS从000-111这八种情况,分别对应可纠正的错误图样

forj=1:

1

ifhmS

(1)==0&hmS

(2)==0&hmS(3)==0

hmE=[0,0,0,0,0,0,0];

break;

end

ifhmS

(1)==0&hmS

(2)==0&hmS(3)==1

hmE=[0,0,0,0,0,0,1];

break;

end

ifhmS

(1)==0&hmS

(2)==1&hmS(3)==0

hmE=[0,0,0,0,0,1,0];

break;

end

ifhmS

(1)==0&hmS

(2)==1&hmS(3)==1

hmE=[0,0,1,0,0,0,0];

break;

end

ifhmS

(1)==1&hmS

(2)==0&hmS(3)==0

hmE=[0,0,0,0,1,0,0];

break;

end

ifhmS

(1)==1&hmS

(2)==0&hmS(3)==1

hmE=[0,0,0,1,0,0,0];

break;

end

ifhmS

(1)==1&hmS

(2)==1&hmS(3)==0

hmE=[1,0,0,0,0,0,0];

break;

end

ifhmS

(1)==1&hmS

(2)==1&hmS(3)==1

hmE=[0,1,0,0,0,0,0];

break;

end

end

hmjmC=pdst2(i*7-6:

i*7)+hmE;%将接收到的码,加上hmE这错误图样,最多可纠正1位错误(dmin》2t+1)

pcm(i*4-3:

i*4)=hmjmC(1:

4);%最后得到汉明码的译码结果--恢复为PCM编码

end

%-----------------------汉明码解码结束------------------------

%提取一小部分解码后的汉明码在主界面上进行示范

JIEjubuPCM=pcm(41:

44)

%-------------------输出一下解出来的PCM编码作为演示-----------------

cp=[];

mod1=[];

f=2*2*pi;

t=0:

2*pi/199:

2*pi;

forn=1:

length(pcm);

ifpcm(n)==0;

A=zeros(1,200);%每个值200个点

elsepcm(n)==1;

A=ones(1,200);

end

cp=[cpA];%s(t),码元宽度200

c=cos(f*t);%载波信号

mod1=[mod1c];%与s(t)等长的载波信号,变为矩阵形式

end

 

figure(3);subplot(3,1,2);plot(cp);gridon;

set(gca,'xtick',[38000:

400:

40000],'ytick',[-2,-1,0,1,2])

axis([3800040000-1.21.2]);title('汉明码转化回PCM后的信号(部分)');

%---------------------PCM解码--------------------------

%循环将PCM编码变成量化电平数

fori=1:

64;

%初始化计算参数

dlm=0;

dp=0;

%将2-4位段落码换算成起始电平

ifpcm(i*8-6)==1;

dlm=dlm+4;

end

ifpcm(i*8-5)==1;

dlm=dlm+2;

end

ifpcm(i*8-4)==1;

dlm=dlm+1;

end

%得到由段落码换算来的起始电平

dp=2^(dlm+4);

%先加上最小量化电平的一半

dp=dp+2^(dlm)/2;

%将5-8位段内码结合段落码一起转换成电平数

%第5位

ifpcm(i*8-3)==1;

dp=dp+2^(dlm+3);

end

%第6位

ifpcm(i*8-2)==1;

dp=dp+2^(dlm+2);

end

%第7位

ifpcm(i*8-1)==1;

dp=dp+2^(dlm+1);

end

%第8位

ifpcm(i*8)==1;

dp=dp+2^(dlm);

end

%最后判断第1位码,决定正负

ifpcm(i*8-7)==0;

dp=-dp;

end

jiedp(i)=dp;

end

%将量化电平数变成电压

fori=1:

64;

dianya(i)=jiedp(i)/2048*6;

end

fs=2800;%抽样频率

t=(0:

N-1)/fs;%采样时间s

f=100;%模拟信号的频率Hz

figure(3);subplot(3,1,3);plot(t,dianya);gridon

axis([01/f*2-55]);title('PCM解码后的模拟信号')

%误码率仿真

forsnr=1:

40

snn=2*snr-40;

snnr(snr)=snn;

%假设信源就是这个

a=randint(1,128,[0,1]);

%(7,4)汉明码编码

xinyuanU=a;%要编码的信源U=之前的PCM编码a矩阵

hmG=[1,0,0,0,1,1,0;0,1,0,0,1,1,1;0,0,1,0,0,1,1;0,0,0,1,1,0,1];%设置一个4行7列的生成矩阵

fori=1:

32

hmC(i*7-6:

i*7)=xinyuanU(i*4-3:

i*4)*hmG;%信息乘上监督矩阵,形成汉明码

end

hmC=rem(hmC,2);%对矩阵各项求余,以过滤成0或1

cp=[];

mod1=[];

f=2*2*pi;

t=0:

2*pi/199:

2*pi;

forn=1:

length(hmC);

ifhmC(n)==0;

A=zeros(1,20);%每个值20个点

elsehmC(n)==1;

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

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1