通信原理实验报告
更新时间:2024-04-09 19:40:01 阅读量: 综合文库 文档下载
学 院 专 业 学生姓名学 号 班级
通信原理实验报告
电子信息工程学院 通信工程
二〇一五年一月
实验一 FM 调制及解调
一、实验目的
1、运用所学知识实现对简单信号的调整和解调。
2、在对信号的幅度,频率等的调制中,掌握方法,观察调制波形。 3、了解MATLAB有关信号调用的子函数
二、基本原理
单音频信号
经FM调制后的表达式为 其中
同实验一中相仿,定义必要的仿真参数,在此基础上可得到载波信号和调制信号。根据
可得到频偏,由此可写出最终的FM信号的表达式进行仿真计
算。对FM信号进行傅里叶变换可得频谱特性,变换依旧使用实验一中给出的t2f.m函数。
三 仿真方案
四 、仿真代码
clear all
ts=0.001; %信号抽样时间间隔 t=0:ts:10-ts; %时间向量 fs=1/ts; %抽样频率
df=fs/length(t); ?t的频率分辨率
msg=randint(100,1,[-3,3],123); %生成消息序列,随机数种子为123 msg1=msg*ones(1,fs/10); %扩展成取样信号形式 msg2=reshape(msg1.',1,length(t)); Pm=fft(msg2)/fs; %求消息信号的频谱 f=-fs/2:df:fs/2-df; subplot(2,1,1)
plot(t,fftshift(abs(Pm))) title('消息信号频谱')
int_msg(1)=0; %消息信号积分 for ii=1:length(t)-1
int_msg(ii+1)=int_msg(ii)+msg2(ii)*ts; end kf=50;
fc=250; %载波频率
Sfm=cos(2*pi*fc*t+2*pi*kf*int_msg); %调频信号 Pfm=fft(Sfm)/fs; % FM信号频谱 subplot(2,1,2)
plot(f,fftshift(abs(Pfm))) % 画出已调信号频谱 title('FM信号频谱')
Pc=sum(abs(Sfm).^2)/length(Sfm) %已调信号功率 Ps=sum(abs(msg2).^2)/length(msg2) %消息信号功率 fm=50;
betaf=kf*max(msg)/fm % 调制指数 W=2*(betaf+1)*fm % 调制信号带宽
五、实验结果及分析
分析:Pc = 0.5000 Ps = 0.5000 betaf =1 W = 200
已调信号的功率:Pc =0.5007 消息信号的功率:Ps =0.4975 调制指数:betaf =1 调制信号的带宽:W =200
得出FM信号的解调采用的解调器是具有频率—电压转换特性的鉴频器,因而解调出的消息信号幅度是随着输入频率变化的。 如果调制信号通过AWGN信道,解调出的信号会叠加上噪声,而且是随着消息信号的幅度叠加的。
实验二 2PSK调制数字通信系统
一 、实验题目
设计一个采用2PSK调制的数字通信系统 1.设计系统整体框图及数学模型;
2.产生离散二进制信源,进行信道编码(汉明码),产生BPSK信号; 3.加入信道噪声(高斯白噪声); 4.BPSK信号相干解调,信道解码;
5.系统性能分析(信号波形、频谱,白噪声的波形、频谱,信道编解 二 实验基本原理
数字信号的传输方式分为基带传输和带通传输,在实际应用中,大多数信道具有带通特性而不能直接传输基带信号。为了使数字信号在带通信道中传输,必须使用数字基带信号对载波进行调制,以使信号与信道的特性相匹配。这种用数字基带信号控制载波,把数字基带信号变换为数字带通信号的过程称为数字调制。 数字调制技术的两种方法:①利用模拟调制的方法去实现数字式调制,即把数字调制看成是模拟调制的一个特例,把数字基带信号当做模拟信号的特殊情况处理;②利用数字信号的离散取值特点通过开关键控载波,从而实现数字调制。这种方法通常称为键控法,比如对载波的相位进行键控,便可获得相移键控(PSK)基本的调制方式。
图1 相应的信号波形的示例
调制原理
数字调相:如果两个频率相同的载波同时开始振荡,这两个频率同时达到正最大值,同时达到零值,同时达到负最大值,它们应处于\同相\状态;如果其中一个开始得迟了一点,就可能不相同了。如果一个达到正最大值时,另一个达到负最大值,则称为\反相\。一般把信号振荡一次(一周)作为360度。如果一个波比另一个波相差半个周期,我们说两个波的
相位差180度,也就是反相。当传输数字信号时,\码控制发0度相位,\码控制发180度相位。载波的初始相位就有了移动,也就带上了信息。
相移键控是利用载波的相位变化来传递数字信息,而振幅和频率保持不变。在2PSK中,通常用初始相位0和π分别表示二进制“1”和“0”。因此,2PSK信号的时域表达式为
解调原理
2PSK信号的解调方法是相干解调法。由于PSK信号本身就是利用相位传递信息的,所以在接收端必须利用信号的相位信息来解调信号。下图2-3中给出了一种2PSK信号相干接收设备的原理框图。图中经过带通滤波的信号在相乘器中与本地载波相乘,然后用低通滤波器滤除高频分量,在进行抽样判决。判决器是按极性来判决的。即正抽样值判为1,负抽样值判为0.
2PSK信号相干解调各点时间波形如图所示. 当恢复的相干载波产生180°倒相时,解调出的数字基带信号将与发送的数字基带信号正好是相反,解调器输出数字基带信号全部出错.
2PSK信号相干解调各点时间波形
这种现象通常称为\倒π\现象.由于在2PSK信号的载波恢复过程中存在着180°的相位模糊,所以2PSK信号的相干解调存在随机的\倒π\现象,从而使得2PSK方式在实际中很少采用.
三 、仿真边框图
四 、程序源代码
clear all; close all; clc;
max = 15;
s=randint(1,max); %长度为max的随机二进制序列 Sinput=[];
for n=1:length(s); if s(n)==0;
A=zeros(1,2000); else s(n)==1;
A=ones(1,2000); end
Sinput=[Sinput A]; end figure(1);
subplot(211); plot(Sinput); grid on
axis([0 2000*length(s) -2 2]); title('输入信号波形');
Sbianma=encode (s,7,4,'hamming'); %汉明码编码后序列 a1=[]; b1=[]; f=1000;
t=0:2*pi/1999:2*pi;
for n=1:length(Sbianma); if Sbianma(n)==0;
B=zeros(1,2000); %每个值2000个点 else Sbianma(n)==1;
B=ones(1,2000); end
a1=[a1 B]; %s(t),码元宽度2000 c=cos(2*pi*f*t); %载波信号
b1=[b1 c]; %与s(t)等长的载波信号,变为矩阵形式end
figure(2);
subplot(211) plot(a1); grid on;
axis([0 2000*length(Sbianma) -2 2]); title('编码后二进制信号序列'); a2=[]; b2=[];
for n = 1:length(Sbianma); if Sbianma(n) == 0;
C = ones(1,2000); %每个值2000点 d = cos(2*pi*f*t); %载波信号 else Sbianma(n) == 1; C = ones(1,2000);
d = cos(2*pi*f*t+pi); %载波信号 end
a2 = [a2 C]; %s(t),码元宽度2000 b2 = [b2 d]; %与s(t)等长的载波信号 end
tiaoz = a2.*b2; %e(t)调制 figure(3); subplot(211); plot(tiaoz); grid on;
axis([0 2000*length(Sbianma) -2 2]); title('2psk已调制信号'); figure(2); subplot(212); plot(abs(fft(a1)));
axis([0 2000*length(Sbianma) 0 400]); title('编码后二进制信号序列频谱');
figure(3); subplot(212);
plot(abs(fft(tiaoz)));
axis([0 2000*length(Sbianma) 0 400]); title('2psk信号频谱')
%-----------------带有高斯白噪声的信道----------------------
tz=awgn(tiaoz,10); %信号tiaoz加入白噪声,信噪比为10 figure(4);
subplot(211); plot(tz); grid on
axis([0 2000*length(Sbianma) -2 2]); title('通过高斯白噪声后的信号'); figure(4); subplot(212); plot(abs(fft(tz)));
axis([0 2000*length(Sbianma) 0 800]); title('加入白噪声的2psk信号频谱');
%-------------------同步解调----------------------------- jiet=2*b1.*tz; %同步解调 figure(5);
subplot(211);plot(jiet); grid on
axis([0 2000*length(Sbianma) -2 2]);title('相乘后的信号波形') figure(5);
subplot(212); plot(abs(fft(jiet)));
axis([0 2000*length(Sbianma) 0 800]); title('相乘后的信号频率');
%----------------------低通滤波器--------------------------- 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) figure(6);
freqz(b,a,1000,11025); subplot(211);
axis([0 40000 -100 3]) title('lpf频谱图'); jt=filter(b,a,jiet); figure(7); subplot(211); plot(jt); grid on
axis([0 2000*length(Sbianma) -2 2 ]); title('经低通滤波器后的信号波形'); figure(7);
subplot(212); plot(abs(fft(jt)));
axis([0 2000*length(Sbianma) 0 800]); title('经低通滤波器后的信号频率');
%-----------------------抽样判决-------------------------- for m=1:2000*length(Sbianma); if jt(m)<0; jt(m)=1; else jt(m)>0; jt(m)=0; end end figure(8);
subplot(211); plot(jt) grid on
axis([0 2000*length(Sbianma) -2 2]); title('经抽样判决后信号jt(t)波形') figure(8); subplot(212); plot(abs(fft(jt)));
axis([0 2000*length(Sbianma) 0 800]); title('经抽样判决后的信号频谱'); grid on;
n=500:2000:2000*length(Sbianma); a5=[];
a5=[a5 jt(n)];
s1=decode (a5,7,4,'hamming'); a6=[];
for n=1:length(s1); if s1(n)==0;
G=zeros(1,2000); else s1(n)==1; G=ones(1,2000); end
a6=[a6 G]; end figure(1);
subplot(212); plot(a6); grid on
axis([0 2000*length(s) -2 2]); title('汉明码译码后的波形') grid on
%------------------2psk误码率仿真-------------------------
snrdB_min=-10; snrdB_max=10;
snrdB=snrdB_min:1:snrdB_max; Nsymbols=200; snr=10.^(snrdB/10);
h=waitbar(0,'SNR Iteration'); len_snr=length(snrdB); for j=1:len_snr
waitbar(j/len_snr);
sigma=sqrt(1/(2*snr(j))); error_count=0; for k=1:Nsymbols
d=round(rand(1)); %随即数据
x_d=2*d-1; %0,1分别转化为-1,1 n_d=sigma*randn(1); %加噪
y_d=x_d+n_d; %加噪后接收 if y_d>0 d_est=1; else
d_est=0; end
if(d_est~=d)
error_count=error_count+1; end end
errors(j)=error_count; end ber_sim=errors/Nsymbols;
ber_theor=(erfc(sqrt(snr))).*(1-0.5*erfc(sqrt(snr))); figure(9);
semilogy(snrdB,ber_theor,'-',snrdB,ber_sim,'*'); axis([snrdB_min snrdB_max 0.0001 1]); xlabel('信噪比'); ylabel('误码率'); title('2psk信噪比误码率关系图'); legend('理论值','实际值') 五 、实验结果及分析
实验四 PCM实验
一、实验目的
1、 通过本课程设计,巩固通信原理PCM编码的有关知识; 2、 熟悉A 3、 确定PCM编码量化误差;
4、 学会用MATLAB来进行通信系统仿真。 二、实验原理
脉冲编码调制(PCM,Pulse Code Modulation)在通信系统中完成将语音信号数字化功能。是一种对模拟信号数字化的取样技术,将模拟信号变换为数字信号的编码方式,特别是对于音频信号。PCM 对信号每秒钟取样 8000 次;每次取样为8个位,总共64kbps。PCM的实现主要包括三个步骤完成:抽样、量化、编码。分别完成时间上离散、幅度上离散、及量化信号的二进制表示。根据CCITT的建议,为改善小信号量化性能,采用压扩非均匀量化,有两种建议方式,分别为AA律方式。
由于A律压缩实现复杂,常使用13折线法编码,采用非均匀量化PCM编码示意图如图1所示。
三、程序源代码
clear all; t=0:0.01:5;
m=sin(2*pi*t+2*pi*rand(1)); v=1; mm=m/v;
smm=floor(mm*2048); subplot(4,1,1); plot(t,m); ylim([-2 2]);
y1=pcm_encode(smm); y2=pcm_decode(y1,v) subplot(4,1,2); plot(t,y2); ylim([-1 1]);
x=6*0.5*sin(2*pi*t+2*pi*rand(1)); xx=x/(6*0.5); v=6*0.5;
sxx=floor(xx*2048); y=pcm_encode(sxx); yy=pcm_decode(y,v);
nq=sum((x-yy).*(x-yy))/length(x);
sq=mean(yy.^2); snr=(sq/nq);
snrq=10*log10(mean(snr)) subplot(4,1,3); plot(t,x);
subplot(4,1,4); plot(t,yy);
函数一
pcm_encode.m
function [out]=pcm_encode(x) %x encode to pcm code n=length(x); %-4096
out(i,1)=1;%符号位 else
out(i,1)=0;%符号位 end
if abs(x(i))>=0&abs(x(i))<32
out(i,2)=0;out(i,3)=0;out(i,4)=0;step=2;st=0; elseif 32<=abs(x(i))&abs(x(i))<64
out(i,2)=0;out(i,3)=0;out(i,4)=1;step=2;st=32; elseif 64<=abs(x(i))&abs(x(i))<128
out(i,2)=0;out(i,3)=1;out(i,4)=0;step=4;st=64; elseif 128<=abs(x(i))&abs(x(i))<256
out(i,2)=0;out(i,3)=1;out(i,4)=1;step=8;st=128; elseif 256<=abs(x(i))&abs(x(i))<512
out(i,2)=1;out(i,3)=0;out(i,4)=0;step=16;st=256; elseif 512<=abs(x(i))&abs(x(i))<1024
out(i,2)=1;out(i,3)=0;out(i,4)=1;step=32;st=512; elseif 1024<=abs(x(i))&abs(x(i))<2048
out(i,2)=1;out(i,3)=1;out(i,4)=0;step=64;st=1024; elseif 2048<=abs(x(i))&abs(x(i))<4096
out(i,2)=1;out(i,3)=1;out(i,4)=1;step=128;st=2048; else
out(i,2)=1;out(i,3)=1;out(i,4)=1;step=128;st=2048; end
if (abs(x(i))>=4096)
out(i,2:8)=[1 1 1 1 1 1 1]; else
tmp=floor((abs(x(i))-st)/step);
t=dec2bin(tmp,4)-48; %函数dec2bin输出的是ASCII字符串,48对应0
out(i,5:8)=t(1:4); end end
out=reshape(out',1,8*n);%行变列
函数二
pcm_decode.m
function [out]=pcm_decode(in,v) Tcode the input pcm code
%in:input the pcm code 8 bits sample %v:quantized level n=length(in);
in=reshape(in',8,n/8)';%列变行 slot(1)=0; slot(2)=32; slot(3)=64; slot(4)=128; slot(5)=256; slot(6)=512; slot(7)=1024; slot(8)=2048;
step(1)=2; step(2)=2; step(3)=4; step(4)=8;
step(5)=16; step(6)=32; step(7)=64; step(8)=128;
for i=1:n/8
ss=2*in(i,1)-1;%+1 -1
tmp=in(i,2)*4+in(i,3)*2+in(i,4)+1;%2进制转换10进制 st=slot(tmp);
dt=(in(i,5)*8+in(i,6)*4+in(i,7)*2+in(i,8))*step(tmp)+0.5*step(tmp); out(i)=ss*(st+dt)/4096*v; end
四、实验结果及分析
五、设计总结
通过本课程设计的学习,复习所学的专业知识,使课堂学习的理论知识应用于实践,通过本课程设计的实践使自己具有一定的实践操作能力;又掌握Matlab,并能熟练运用该软件设计并仿真通信系统;通过信息处理实践的课程设计的实践,掌握设计信息处理系统的思维方法和基本开发过程。通过Matlab仿真对PCM调制系统的采样、量化、编码的仿真与计算,使得分析PCM调制系统变得直观简单。
实验五 循环码实验
一、实验目的
1、通过实验了解循环码的工作原理。
2、深刻理解RS 码构造、RS 编译码等相关概念和算法。 二、实验原理
1、RS循环码编译码原理与特点 设C使
某
线性分组码的码字集合,如果对任它的
循环移位也属于C,则称该码为循环码。
该码在结构上有另外的限制,即一个码字任意循环移位的结果仍是一个有效码字。其特点是:(1)可以用反馈移位寄存器很容易实现编码和伴随式的计算;(2)由于循环码有很多固有的代数结构,从而可以找到各种简单使用的译码办法。 如果一个
线性码具有以下的属性,则称为循环码:如果n元组
是子空间S的一个码字,则经过循环移位得到的
中的一个码字;或者,一般来说,经过j次循环移位后得到的
也是S中的一个码字。
S
RS码的编码系统是建立在比特组基础上的,即字节,而不是单个的0和1,因此它是非二进制BCH码,这使得它处理突发错误的能力特别强。
循环码特点有:
1)循环码是线性分组码的一种,所以它具有线性分组的码的一般特性,且具有循环性,纠错能力强。
2)循环码是一种无权码,循环码编排的特点为相邻的两个数码之间符合卡诺中的邻接条件,即相邻数码间只有一位码元不同,因此它具有一个很好的优点是它满足邻接条件,没有瞬时错误(在数码变换过程中,在速度上会有快有慢,中间经过其他一些数码形式,即为瞬时错误)。
3)码字的循环特性,循环码中任一许用码经过牡环移位后,所得到的码组仍然是许用码组。 对所有的i=0,1,2,……k-1,用生成多项式g(x)
三、程序源代码
,有:
m = 3;
n = 2^m-1; %定义码长 k = n-m; %信息位长
msg = randint(k*4,1,2); %随机提取信号,引起一致地分布的任意整数矩阵 subplot(2,2,1) stem(msg)
title('编码器输入信号')
p=cyclpoly(n,k) %循环码生成多项式,n=7,k=4
code = encode(msg,n,k,'cyclic',p); %编码函数,对信号进行差错编码 subplot(2,2,2) stem(code)
title('编码器输出信号')
recode=decode(code,n,k,'cyclic',p) %对信号进行译码,对接收到的码字进行译码,恢复出原始的信息,译码参数和方式必须和编码时采用的严格相同 subplot(2,2,3)
stem(recode)
title('译码器输出信号') t=-1:0.01:1;
x=recode; %将recode赋值给x,并进行长度与fft设定 N=length(x); fx=fft(x); df=100/N; n=0:N/2; f=n*df;
subplot(2,2,4);
plot(f,abs(fx(n+1))*2/N); grid; title('频谱图')
四、实验结果及分析
以randint函数重新做一个输入信号并进行编码,结果与上例相似,输入与输出一致。 由上面所有的图可以发现,编码器输入信号并不完全相同,因为对信号的提取是随机的,所以码元也是随机的,信号经过编码器后,因为要加入监督码,所以波形变得更加密集了。信号经过译码后,波形和编码器输入信号大致相同,说明循环码的检错和纠错能力可以。
stem(recode)
title('译码器输出信号') t=-1:0.01:1;
x=recode; %将recode赋值给x,并进行长度与fft设定 N=length(x); fx=fft(x); df=100/N; n=0:N/2; f=n*df;
subplot(2,2,4);
plot(f,abs(fx(n+1))*2/N); grid; title('频谱图')
四、实验结果及分析
以randint函数重新做一个输入信号并进行编码,结果与上例相似,输入与输出一致。 由上面所有的图可以发现,编码器输入信号并不完全相同,因为对信号的提取是随机的,所以码元也是随机的,信号经过编码器后,因为要加入监督码,所以波形变得更加密集了。信号经过译码后,波形和编码器输入信号大致相同,说明循环码的检错和纠错能力可以。
正在阅读:
通信原理实验报告04-09
幼儿园灯谜活动02-17
建筑装饰工程施工管理分析11-17
婴幼儿营养与保育形考作业答案04-29
化学与环境污染论文12-18
感恩语录,英文02-17
《解直角三角形的应用》教案101-04
小学音乐五年级下册你好大自然教案分析04-09
城市经济学复习(南林)整合版01-04
毕业设计说明书(论文)撰写规范08-11
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 原理
- 实验
- 通信
- 报告
- 预防坍塌专项整治工作方案
- 测量考试试题
- 2017-2022年中国抗肿瘤药物行业市场深度调研报告(目录) - 图文
- 吉林毓文中学“中国梦 我的梦”英文演讲比赛
- 命理宝鉴乙
- 嵊州市基本医疗保险特殊病种门诊治疗建议书
- 2017-2018年河南省商丘市夏邑县八年级(上)数学期中试卷
- 五下15《埃及的金字塔》
- 管理案例:如何消除工作分析中员工恐惧心理
- 郭沫若《凤凰涅盘》赏析教案
- 三年级三位数连加连减
- 事业单位岗位类别与等级划分
- 政府财政
- 成本会计练习题及答案
- 一年级奥数:第18讲 付钱的方法- 教师版
- 坐标变换在matlab中的实现 - 图文
- 内蒙古荣信化工有限公司年产40万吨煤制乙二醇及30万吨聚甲氧基二
- 江苏省牛津高中英语高三英语周测
- 附件1:《浙江省道路运输营运车辆联网联控信息监管平台接
- 2015年广州最新版五年级英语下册知识点和练习 - 图文