重 庆 交 通 大 学
学 生 实 验 报 告
实验课程名称
开课实验室
学 院 2012 年级 通信工程 专业 2班
学 生 姓 名 周丙相 学 号
《MATLAB编程与系统仿真》评分标准
目录
实验一 随机信号峰均功率的求法及其比较 .......................................... 4
一、 实验内容及要求 ........................................................................ 4
二、 程序仿真流程图 ........................................................................ 4
三、 实验主要步骤 ............................................................................ 4
实验主要步骤: ............................................................................ 4
实验主要步骤伪码: .................................................................... 5
四、 实验结果及结果分析 ................................................................ 6
实验结果: .................................................................................... 6
实验结果分析: ............................................................................ 8
五、 实验心得 .................................................................................... 8
实验二 BPSK调制设计 ........................................................................... 9
一、 实验题目内容及要求 ................................................................ 9
二、 程序仿真流程图 ........................................................................ 9
三、 实验主要步骤 .......................................................................... 11
实验主要步骤: .......................................................................... 11
实验程序流程伪码: .................................................................. 12
四、 实验结果以及结果分析 .......................................................... 19
实验结果: .................................................................................. 19
实验结果分析: .......................................................................... 22
180度相位模糊: ....................................................................... 23
五、 实验心得体会 .......................................................................... 24
实验一:随机信号峰均功率的求法及其比较
一、实验内容及要求
随机生成四个长度为64的序列,分别为s1,s2,s3,s4,对每个序列乘上
[1,-1,j,-j]中的任意一个因子后求和.求所有可能的和序列中峰均功率比最低的序列及相应的因子.
二、程序仿真流程图
三、实验主要步骤
实验主要步骤:
(一)、利用rand函数生成长度为64的随机序列s1,s2,s3,s4。
(二)、生成矩阵com=[1,-1,j,-j],并利用for循环将其与s1,s2,s3,s4分别相乘之后相加,并将相加后的结果存入矩阵temp中。将每一次循环中
[1,-1,j,-j]的组合情况存入矩阵comb中,其中每一行代表一种组合情况。
(三)、对矩阵temp的每一行求其峰均功率比,并将结果存入矩阵comp中。
(四)、对comp矩阵中的元素取最小值,找出最小值所在的行,从而找到该最小值的数据来源以及[1,-1,j,-j]的组合情况。
实验主要步骤伪码:
clc
clear all
%利用函数rand生成长度为64的随机序列s1,s2,s3,s4.
s1=rand(1,64);
s2=rand(1,64);
s3=rand(1,64);
s4=rand(1,64);
%定义相乘矩阵com=[1,-1,j,-j].
com=[1,-1,j,-j];
%定义空矩阵temp以及comb,分别用于存放四个随机序列与矩阵com %相乘再相加后的结果以及每一次循环com矩阵的组合情况。
temp=[];
comb=[];
comp=[];
%定义矩阵comp用于存放比较后的结果。
%利用for循环实现矩阵com与四个随机序列的相乘以及求和,并将
%结果存入矩阵temp中,并将每一种com组合存入矩阵comb中。
for a=1:4
s11=s1.*com(a);
for b=1:4
s22=s2.*com(b);
for c=1:4
s33=s3.*com(c);
for d=1:4
s44=s4.*com(d);
s1234=s11+s22+s33+s44;
temp=[temp;s1234];
comb=[comb;com(a),com(b),com(c),com(d)]; end
end
end
end
%分别求矩阵temp的每一行的峰均功率比,并将结果存入矩阵comp中。 comp=[(max((abs(temp')).^2))./(mean((abs(temp')).^2))]; %找出峰均功率最小的组合所在的行,并将行号存入变量m中。 [m,n]=min(comp);
%利用行号找出最小均功率比的组合和矩阵因子组合,并将其输出。 display('峰均功率比最小的组合是:'); combine=temp(n,:)
display('峰均功率比最小的矩阵元素组合是:'); common=comb(n,:)
四、实验结果及结果分析 实验结果:
峰均功率比最小的组合是:
combine =
Columns 1 through 10
1.2609 + 1.3492i 1.0015 + 0.2775i 1.2545 + 0.4176i 0.1648 + 1.1245i 0.8250 + 0.7866i 1.0383 + 0.7960i 1.0406 + 0.9069i 1.4978 + 0.8676i
Columns 11 through 20
1.7509 + 1.0762i 0.6036 + 0.0976i 1.6600 + 0.6788i 0.7510 + 0.5544i 1.6309 + 0.5355i 0.9172 + 1.2574i 1.0375 + 1.2880i 0.5073 + 0.8610i
Columns 21 through 30
0.6857 + 0.5973i 1.3604 + 0.7914i 0.8109 + 1.4873i 1.2976 + 0.2220i 0.6324 + 1.2593i 0.4135 + 0.6342i 0.9800 + 0.4648i 0.8418 + 0.9277i
Columns 31 through 40
0.2686 + 1.6330i 1.1341 + 1.3455i 0.7649 + 0.6056i 0.3227 + 0.1872i 0.8807 + 1.4295i 0.3647 + 1.1553i 0.3627 + 1.9019i 1.0116 + 0.8086i 1.1793 + 0.9756i 0.4317 + 0.5870i
1.4422 + 0.9065i 1.5818 + 1.4732i 1.6908 + 1.2468i 1.3081 + 1.5401i 0.7432 + 1.0712i 1.1759 + 0.7090i
Columns 41 through 50
0.9899 + 1.0101i 1.7023 + 0.4311i 1.0257 + 0.8551i 0.7416 + 1.5760i
1.2293 + 1.5925i 0.7461 + 0.9095i 0.8145 + 1.4685i 0.6115 + 1.1051i 1.0402 + 0.7081i 0.1792 + 1.4641i
Columns 51 through 60
1.1201 + 1.0263i 1.3549 + 0.9208i 1.4387 + 1.1332i 0.7437 + 1.5610i 0.5395 + 1.6497i 0.2495 + 0.0272i 0.5079 + 0.5703i 1.2363 + 1.4874i
1.5164 + 1.3148i 1.1933 + 1.1143i
Columns 61 through 64
1.3821 + 1.3111i 1.3531 + 1.0720i 1.2209 + 0.7495i 0.7422 + 1.3990i
峰均功率比最小的矩阵元素组合是:
common =
1.0000 0 + 1.0000i 0 + 1.0000i 1.0000
>>
图2 部分实验结果图
实验结果分析:
该题目主要考察我们对matlab的一些基本的矩阵运算规则的了解和掌Matlab的突出特点就是强大的矩阵运算功能。在学习的过程中,我们不仅要学习matlab中矩阵的运算规则,还要对matlab的系统函数进行学习和使用。通过使用其提供的系统函数,可以使我们的许多难题迎刃而解。
该题目首先使用的系统函数是rand函数,他的作用就是随机产生指定元素个数的随机序列。元素的取值范围为0-1,当然,你也可以利用此函数产生取值区间位于0-1之外的随机序列。如:利用rand函数生成取值区间位于0-100的随机序列:stream=100*rand(1,100)。
利用rand函数生成随机序列s1,s2,s3,s4后,利用for循环将每一组随机序列与矩阵com中的任意一个元素,再将其结果进行相加。具体实现原理如下:for循环共有4层,第一层用于将随机序列s1与矩阵com中的任意元素相乘,其循环变量的取值为1:4,其含义就是将随机序列s1与矩阵com中的每一个元素相乘;第二层循环完成随机序列s2与矩阵com中的各元素相乘;同理,第三层循环即完成随机序列s3与矩阵元素相乘;第四层循环与前三层循环略有不同,其不仅完成随机序列s4与矩阵com的元素相乘,还包含将每次循环的结果进行相加之后存入矩阵temp,此外,这层循环还完成将每次循环的com矩阵元素取值送存到矩阵combine中,以便后续程序查找。
完成随机序列与矩阵相乘相加送存矩阵temp后,接下来的工作就是求矩阵temp中每一行的最大值的平方与每一行元素取值的平方后的平均值的比值。对于每一行中的最大值的平方,我们采取的方法是利用函数abs求元素的模,之后利用max函数求出每一行的最大值,并将其平方。在此,需要特别注意的一点是temp中的元素存取规律是按行划分才有实际意义,然而max函数求的是每一列的最大值,因此,在此之前,我们先将temp进行转置,再求每一列元素的最大值及其平均值,并将最大值与平均值的比值存入矩阵comp中;注意,在此,我将每一次求得的值作为新的行存入到矩阵comp中。
最后,利用函数min求得峰均功率比最小的元素的位置以及取值,利用位置值带入到矩阵temp和矩阵comb中,即可找出峰均功率比最小的行所有的元素值及其矩阵com的元素组合情况。
五、实验心得
刚看到题目时,对题目中的峰均功率,任意因子求和等关键字不理解,通过和同学讨论、老师的讲解及在网上查找最终明白题目的含义和要求,然后开始整理思路。思路确定之后便是一步步去实现。在实现过程中遇到的第一个问题就是如何对序列进行全排列。起初写了一个全排列函数,但运行结果不太理想,总是报错。后经查阅相关资料,发现perms函数可以实现该功能。第二个遇到的问题就是如何求相乘后的和序列及通过最小峰均功率比找出相应因子。经认真思考,可以通过矩阵相乘,并对矩阵的每行求和即可得到相应的和序列,然后再用一个for循环求得每个峰均功率比,再通过矩阵的下标找到相应因子和峰值功率比最低的序列,这才解决了问题,完成了实验。
通过这次实验,加强了对matlab软件的了解和应用。同时也明白了在学习的过程中如有遇到难题,最好不过的解决方法就是与同学交流,因为同学之间能够很快地理解到彼此的意思,从而使问题在较短时间内得到解决。因此,在以后
的学习过程中,我们遇到问题时,可以找自己的同学一起讨论,共同进步。
实验二 BPSK调制设计
一、实验题目内容及要求
用一个双极性基带数据信号对载波进行角度调制产生BPSK信号s(t)=10cos[Wct+Dpm(t)]。式中m(t)=+1,-1为n位01随机序列(n为学号后3位),Tb=0.0025
秒,Wc=1000π
要求画出调制指数为下述值时对应的BPSK信号波形及其FFT频谱
H=0.2,h=0.5,h=1 h=2Dp/π
当h=1时,用相干检测法对生成的BPSK信号进行解调
思考题:
可以用那些方法对产生的信号进行解调(给出解调框图)?是否会出现180度相位模糊?
二、程序仿真流程图
三、实验主要步骤
实验主要步骤:
(一)、利用系统函数rand生成长度为220的1、-1随机序列。 function signal=signal_source(stu_num)
%this function use to produce the 1 and -1 random signal of number of
%stu_num.
%for instance:when you use this function like
%this:signal=signal_source(10),this function will return like this: %1 -1 -1 1 1 1 -1 -1 1 -1.
signal=2*round(rand(1,stu_num))-1;
end
(二)、利用1、-1的随机序列对载波进行角度调制,得到BPSK信号。 function BPSK_signal=BPSK_modu(signal,Fc,h,Bitrate,N)
%this function modulate the sourcesignal
%we call this way of modulation as BPSK(宽带调频)
Dp=h*pi/2;
t=linspace(0,1/Bitrate,N);
carrier1=10*cos(2*pi*Fc*t-Dp);
carrier2=10*cos(2*pi*Fc*t+Dp);
BPSK_signal=[];
m=length(signal);
for i=1:m
if(signal(i)==1)
BPSK_signal=[BPSK_signal,carrier2];
else
BPSK_signal=[BPSK_signal,carrier1];
end
end
end
(三)、在Dp取不同的值的条件下,分别生成不同的BPSK信号,并画出信号波形。
(四)、画出Dp取不同的值的条件下的信号的频谱图。
function Channel_signal=channel_noise(BPSK_signal,p)
%this function use to simulate the signal channel
%include channel noise.
noise=sqrt(p)/sqrt(2)*randn(1,length(BPSK_signal));
Channel_signal=BPSK_signal+noise;
end
(五)、当Dp=pi/2时,利用相干解调的方法对BPSK信号进行解调。
(六)、回答有关题目要求的问题以及在程序设计中遇到的相关问题。 实验程序流程伪码:
clc
clear all
%常数Fc=500Hz,学号stu_num=220,采样点N=100,比特率Bitrate=400bps;Tb=0.0025
Fc=500;
Bitrate=400;
stu_num=220;
N=100;
Tb=0.0025;
Bitstreamtemp=[];
Bitstreamtemp1=[];
%产生随机-1,+1序列
signal=signal_source(stu_num);
%画出原始信号波形 其中Tb=0.0025s,即1s的时间内包含400个bit.
%在一个bit的时间周期内 共取500个点作为模拟信号的数据
for b=1:length(signal)
if(signal(b)==1)
Bitstreamtemp=[Bitstreamtemp,ones(1,100)];
else
Bitstreamtemp=[Bitstreamtemp,-1*ones(1,100)];
end
end
%画出原始信号波形图 将横坐标设为时间轴
%由于一个Bit的持续时间为0.0025s 则可以计出220个Bit持续的时间长度为 %220*0.0025=0.55s
%又由于一个Bit的时间内抽样点数为10,因此在一个Bit持续的时间内应取10 %个时间点
t=linspace(0,10*Tb,100*10);
%在此仅仅画出前10个Bit的波形
%利用随机信号对载波进行调制 s(t)=10cos[Wct+Dpm(t)] 其中Wc=100*pi; %Dp=h*pi/2 其中h的取值有:0.2、0.5、1.
%即Dp的取值为:0.1*pi、0.25*pi、0.5*pi.
%当Dp=0.1*pi时:
figure(1);
subplot(3,1,1);
plot(t(1:1000),Bitstreamtemp(1:1000),'b')
title('原始信号波形图(前10个Bit)');
xlabel('时间/T');
ylabel('信号强度/V');
axis([0,0.025,-1.5,1.5]);
s1=BPSK_modu(signal,Fc,0.2,Bitrate,N);
subplot(3,1,2);
plot(t(1:1000),s1(1:1000),'y');
axis([0,10*Tb,-10,10]);
title('Dp=0.1*pi时的BPSK信号');
xlabel('时间/T');
ylabel('信号强度/V');
%对Dp=0.1*pi的时候的信号求其频谱图,并画出其频谱图
subplot(3,1,3);
%将横轴转化为频率轴
%将调制信号频谱横轴转化为频率轴
BPSK_signal_len=length(s1);
BPSK_signal_f=Bitrate/stu_num;
f=-fix((BPSK_signal_len-1)/2)*BPSK_signal_f:BPSK_signal_f:(fix(BPSK_signal_len/2))*BPSK_signal_f;
plot(f,abs(fftshift((fft(s1)))),'r');
title('当Dp=0.1*pi时的信号的频谱图');
xlabel('频率/HZ');
ylabel('频谱密度');
figure(2);
subplot(3,1,1);
plot(t(1:1000),Bitstreamtemp(1:1000),'b')
title('原始信号波形图(前10个Bit)');
xlabel('时间/T');
ylabel('信号强度/V');
axis([0,0.025,-1.5,1.5]);
s2=BPSK_modu(signal,Fc,0.5,Bitrate,N);
subplot(3,1,2);
plot(t(1:1000),s2(1:1000),'r');
axis([0,10*Tb,-10,10]);
title('Dp=0.5*pi时的BPSK信号');
xlabel('时间/T');
ylabel('信号强度/V');
%对Dp=0.5*pi的时候的信号求其频谱图,并画出其频谱图
subplot(3,1,3);
%将横轴转化为频率轴
%将调制信号频谱横轴转化为频率轴
BPSK_signal_len=length(s2);
BPSK_signal_f=Bitrate/stu_num;
f=-fix((BPSK_signal_len-1)/2)*BPSK_signal_f:BPSK_signal_f:(fix(BPSK_signal_len/2))*BPSK_signal_f;
plot(f,abs(fftshift((fft(s2)))),'y');
title('当Dp=0.5*pi时的信号的频谱图');
xlabel('频率/HZ');
ylabel('频谱密度');
figure(3);
subplot(3,1,1);
plot(t(1:1000),Bitstreamtemp(1:1000),'r')
title('原始信号波形图(前10个Bit)');
xlabel('时间/T');
ylabel('信号强度/V');
axis([0,0.025,-1.5,1.5]);
s3=BPSK_modu(signal,Fc,1,Bitrate,N);
subplot(3,1,2);
plot(t(1:1000),s3(1:1000),'b');
axis([0,10*Tb,-10,10]);
title('Dp=pi时的BPSK信号');
xlabel('时间/T');
ylabel('信号强度/V');
%对Dp=pi的时候的信号求其频谱图,并画出其频谱图
subplot(3,1,3);
%将横轴转化为频率轴
%将调制信号频谱横轴转化为频率轴
BPSK_signal_len=length(s3);
BPSK_signal_f=Bitrate/stu_num;
f=-fix((BPSK_signal_len-1)/2)*BPSK_signal_f:BPSK_signal_f:(fix(BPSK_signal_len/2))*BPSK_signal_f;
plot(f,abs(fftshift((fft(s3)))),'g');
title('当Dp=pi时的信号的频谱图');
xlabel('频率/HZ');
ylabel('频谱密度');
figure(4);
%当Dp=1时,为了更加真实地模拟信道,给调制后的信号加上平均功率为0.5的噪声。 channel_signal=channel_noise(s3,0.5);
%画出加上噪声的信号波形图(前10个Bit)
subplot(3,1,1);
plot(t(1:1000),Bitstreamtemp(1:1000),'b')
title('原始信号波形图(前10个Bit)');
xlabel('时间/T');
ylabel('信号强度/V');
axis([0,0.025,-1.5,1.5]);
%将原始信号与信道里的信号进行比较,找出不同之处。
subplot(3,1,2);
plot(t(1:1000),s3(1:1000),'b');
axis([0,10*Tb,-10,10]);
title('Dp=pi时的BPSK信号');
xlabel('时间/T');
ylabel('信号强度/V');
subplot(3,1,3);
plot(t(1:1000),channel_signal(1:1000),'b');
title('模拟信道加上平均功率为0.5的噪声后的信号波形');
xlabel('时间/T');
ylabel('信号强度/V');
axis([0,0.025,-12,12]);
%将已调信号的频谱图与信道里的信号的频谱图进行比较,找出不同之处
figure(5);
subplot(2,1,1);
BPSK_signal_len=length(s3);
BPSK_signal_f=Bitrate/stu_num;
f=-fix((BPSK_signal_len-1)/2)*BPSK_signal_f:BPSK_signal_f:(fix(BPSK_signal_len/2))*BPSK_signal_f;
plot(f,abs(fftshift((fft(s3)))),'g');
title('当Dp=pi时的信号的频谱图');
xlabel('频率/HZ');
ylabel('频谱密度');
subplot(2,1,2);
BPSK_signal_len=length(channel_signal);
BPSK_signal_f=Bitrate/stu_num;
f=-fix((BPSK_signal_len-1)/2)*BPSK_signal_f:BPSK_signal_f:(fix(BPSK_signal_len/2))*BPSK_signal_f;
plot(f,abs(fftshift((fft(channel_signal)))),'g');
title('模拟信道加上平均功率为0.5的噪声后的信号的频谱图');
xlabel('频率/HZ');
ylabel('频谱密度');
%当h=1时,用相干检测法对生成的BPSK信号进行解调
%设计带通滤波器,滤除信道里的噪声,以便后续解调
%从信号的频谱图可以知道,低通滤波器的截止频率设为:0.5*10的4次方HZ。 % %载入低通滤波器,滤除带外噪声 %低通滤波器参数:Fs=40kHz
%pass=4KHZ,Astop1=5.1KHZ,
load bandpassfilter;
save NumB;
BPF_delay=fix(length(NumB)/2);
channel_signal1=[channel_signal,zeros(1,BPF_delay)];
BPF_signal=filter(NumB,1,channel_signal1);%滤波
%消除低通延时
BPF_signal=BPF_signal(BPF_delay+1:end);
%画出低通滤波后的信号波形及其频谱图
figure(6);
subplot(3,1,1);
plot(t(1:1000),s3(1:1000),'b');
axis([0,10*Tb,-10,10]);
title('Dp=pi时的BPSK信号');
xlabel('时间/T');
ylabel('信号强度/V');
subplot(3,1,2);
plot(t(1:1000),channel_signal(1:1000),'b');
title('模拟信道加上平均功率为0.5的噪声后的信号波形');
xlabel('时间/T');
ylabel('信号强度/V');
axis([0,0.025,-11,11]);
subplot(3,1,3);
plot(t(1:1000),BPF_signal(1:1000),'b')
title('带通滤波后信号波形图(前10个Bit)');
xlabel('时间/T');
ylabel('信号强度/V');
axis([0,10*Tb,-11,11]);
%乘以相干载波
temp=[];
t1=linspace(0,1/Fc,N);
for i=1:stu_num
temp=[temp,10*sin(2*pi*Fc*t1)];
end
signaltemp=temp.*BPF_signal;
%载入低通滤波器,滤除高频分量
load Lowpassfilter;
save NumL;
LPF_delay=fix(length(NumL)/2);
signaltemp=[signaltemp,zeros(1,LPF_delay)]; LPF_signal=filter(NumL,1,signaltemp);%滤波 %消除低通延时
LPF_signal=LPF_signal(LPF_delay+1:end); signaltemp=signaltemp(LPF_delay+1:end); %设置抽样判决点为judgepoint,最佳判决门限为0 bitstream=[];
judgepoint=N;
k=fix(judgepoint/2);
while(k<length(LPF_signal))
if(LPF_signal(k)>=0)
bitstream=[bitstream,1];
else
bitstream=[bitstream,-1];
end
k=k+judgepoint;
end
figure(8);
%画出乘以相干载波后前10个波形的图形
subplot(3,1,1)
plot(t(1:1000),signaltemp(1:1000));
title('乘以相干载波后信号前10个图形');
xlabel('传输时间 T/s');
ylabel('信号幅值 V ');
%画出乘以相干载波后信号的频谱图
subplot(3,1,2);
plot(f,abs(fftshift((fft(signaltemp)))),'g'); title('乘以相干载波后信号的频谱图');
xlabel('频率 F/HZ');
ylabel('频谱值');
%画出低通滤波后的图形
subplot(3,1,3);
plot(t(1:1000),LPF_signal(1:1000),'g');
title('乘以相干载波后低通滤波后信号图');
xlabel('传输时间 T/s');
ylabel('信号电压值Value/V');
figure(9);
subplot(3,1,1);
plot(t(1:1000),Bitstreamtemp(1:1000),'r')
title('原始信号波形图(前10个Bit)');
xlabel('时间/T');
ylabel('信号强度/V');
axis([0,0.025,-1.5,1.5]);
%画出解调后的信号波形
for b=1:length(bitstream)
if(bitstream(b)==1)
Bitstreamtemp1=[Bitstreamtemp1,ones(1,100)]; else
Bitstreamtemp1=[Bitstreamtemp1,-1*ones(1,100)]; end
end
subplot(3,1,2);
plot(t(1:1000),Bitstreamtemp1(1:1000));
title('相干解调后的输出波形');
xlabel('传输时间T/s');
ylabel('信号幅值Value/V');
axis([0,0.025,-1.5,1.5]);
带通滤波器以及低通滤波器的设计
四、实验结果以及结果分析 实验结果:
实验结果分析:
该实验主要工作就是完成对随机信号的调制以及解调;对信号的调制在发送端完成,已调信号发到随参信道中进行传输,难免会有随机噪声的干扰。因此,
在这次实验中,我们考虑到了这样的情况。利用系统函数产生随机高斯白噪声模拟信道中产生的随机噪声,使整个实验过程更加完整,同时也是实验结果更加具有说服力。在信号的接收端,我们进行的主要工作就是对信号的解调,恢复出原始信号。在进行解调之前,我们还需要做的工作就是将噪声的功率降到最小,从而增大信噪比,这样将更有利于解调后对原始信号的恢复。降低噪声的功率主要的方法就是将接收到的信号通过一个带通滤波器,从而滤除掉处于带外的噪声,可以大大地减小噪声的功率,增大了信噪比。在完成噪声的滤除之后,我们采用相干解调的方法对接收到的信号进行解调。相干解调之后再将信号通过一个低通滤波器,即可滤除信号中的高频分量。还原原始信号。在完成低通滤波之后,我们就得对信号进行抽样判决,抽样间隔为一个Bit的传输时间,抽样点选在Bit传输时间的中点。同时,综合考虑信号的特性,我们将最佳判别门限选为0V,即当抽样信号的幅值大于0V时,我们认为这个点就是1;反之就是-1.通过这些方法,即可恢复出原始信号。 移相键控分为绝对移相和相对移相两种。以未调载波的相位作为基准的相位调制叫作绝对移相。以二进制调相为例,取码元为“1”时,调制后载波与未调载波同相;取码元为“0”时,调制后载波与未调载波反相;“1”和“0”时调制后载波相位差180° 绝对相移是利用载波的相位(指初相)直接表示数字信号的相移方式。二进制相移键控中,通常用相位0和π来分别表示“0”或“1”。就模拟调制法而言,与产生2ASK信号的方法比较,只是对s(t)要求不同,因此BPSK信号可以看作是双极性基带信号作用下的DSB调幅信号。而就键控法来说,用数字基带信号s(t)控制开关电路,选择不同相位的载波输出,这时s(t)为单极性NRZ或双极性NRZ脉冲序列信号均可。BPSK信号属于DSB信号,它的解调,不再能采用包络检测的方法,只能进行相干解调。可见,BPSK信号相干解调的过程实际上是输入已调信号与本地载波信号进行极性比较的过程,故常称为极性比较法解调。由于BPSK信号实际上是以一个固定初相的未调载波为参考的,因此,解调时必须有与此同频同相的同步载波。如果同步载波的相位发生变化,如0相位变为π相位或π相位变为0相位,则恢复的数字信息就会发生“0”变“1”或“1”变“0”,从而造成错误的恢复。这种因为本地参考载波倒相,而在接收端发生错误恢复的现象称为“倒π”现象或“反向工作”现象。绝对移相的主要缺点是容易产生相位模糊,造成反向工作。这也是它实际应用较少的主要原因。
180度相位模糊:
如果采用绝对移相方式,由于发送端是以某一个相位作基准的,因而在接收端也必须有这样一个固定基准相位作参考。如果这个参考相位发生变化(0相位变π相位或π相位变0相位),则恢复的数字信息就会发生0变为π或π变为0,从而造成错误的恢复。考虑到实际通信时参考基准相位的随机跳变(由温度漂移或噪声引起)时可能的,而且在通信过程中不易被发觉。比如,由于某种突然的干扰,系统中的分频器可能发生状态的转移、锁相环路的稳定状态也可能发生转移。这样,采用BPSK方式就会在接收端发生完全相反的恢复。这种现象,常称为BPSK方式的倒π现象。
2DPSK方式是利用前后相邻码元的相对载波相位值去表示数字信息的一种方式。即用前后两个码元之间相差来表示码元的值“0”和“1”。例如,假设相差值“π”表示符号“1”,相差为“0”表示符号“0可以看出2DPSK的波形与
BPSK的不同,他们的同一相位并不对应相同的数字信息符号,而前后码元相对相位差才表示信息符号。这说明,解调2DPSK信号是并不依赖于某一固定的载波相位参考值,只要前后码元的相对相位关系不破坏,则只要鉴别这个相差关系就可正确恢复数字信息,这就避免了BPSK中的倒π现象发生。
五、实验心得体会
本次实验涉及到的BPSK调制解调,为《通信原理》学科内容,虽然还未学习,但通过查阅课本和上网搜索资料,再结合MATLAB课程的学习,最终实现了过程的仿真,画出各点的波形。该实验不仅仅涉及原理方框图的简单实现,还有滤波器如何实现,所以不得不查阅相关资料,最终找到通过FDATOOL可以设计低通滤波器,并可以导出相应代码。
通过这次实验使我对通信理论和MATLAB软件有了更深的了解,对其中很多函数的使用有了更深一步的掌握,加强了自己动手能力和学习技能的提升。
让随机产生的二进制比特流在已知载波频率的情况下进行调制,获得的调制信号能很好的反应出在真实的通信系统中对数字信号进行的调制效果。不过在真实的通信系统中,因为调制的环境里存在很多电磁干扰,因为仪器的精密程度原因,导致调制信道达不到理想的状态,会存在一些失真。
调制信号通过低通滤波器后还不是我们所要的二进制波形,是模拟的波形数据,因此必须对模拟波形进行抽样判决。抽样判决的条件根据调制时的“0”,“π”相位来确定。在本实验仿真情况下,模拟系统成功的恢复了发送的二进制基带信号。但是在实际的通信系统中,往往会有各种电磁干扰,导致调制解调不能全部正确。本实验还考虑到噪声对信号传输的干扰,以及噪声所产生的影响。
总之,通过这次实验,使我对通信技术有了更加深层次的理解。同时也增强了我对本专业的学习兴趣。无论从技术上还是实践上来说,通信似乎都是比较难的过程。不过,只要我们认真学习理论知识,并在今后的日子里多加实践和训练,我相信,我们可以将通信这门高深的技术学到手。