搜索
您的当前位置:首页正文

MATLABpsk通信系统仿真报告

来源:年旅网
实验一 2PSK调制数字通信系统

一 实验题目

设计一个采用2PSK调制的数字通信系统 

➢设计系统整体框图及数学模型;

➢产生离散二进制信源,进行信道编码(汉明码),产生BPSK信号; ➢加入信道噪声(高斯白噪声); ➢BPSK信号相干解调,信道解码;

➢系统性能分析(信号波形、频谱,白噪声的波形、频谱,信道编解

二 实验基本原理

数字信号的传输方式分为基带传输和带通传输,在实际应用中,大多数信道具有带通特性而不能直接传输基带信号。为了使数字信号在带通信道中传输,必须使用数字基带信号对载波进行调制,以使信号与信道的特性相匹配。这种用数字基带信号控制载波,把数字基带信号变换为数字带通信号的过程称为数字调制。

数字调制技术的两种方法:①利用模拟调制的方法去实现数字式调制,即把数字调制看成是模拟调制的一个特例,把数字基带信号当做模拟信号的特殊情况处理;②利用数字信号的离散取值特点通过开关键控载波,从而实现数字调制。这种方法通常称为键控法,比如对载波的相位进行键控,便可获得相移键控(PSK)基本的调制方式。

图1 相应的信号波形的示例

1 0 1

调制原理

数字调相:如果两个频率相同的载波同时开始振荡,这两个频率同时达到正最大值,同时达到零值,同时达到负最大值,它们应处于\"同相\"状态;如果其中一个开始得迟了一点,就可能不相同了。如果一个达到正最大值时,另一个达到负最大值,则称为\"反相\"。一般把信号振荡一次(一周)作为360度。如果一个波比另一个波相差半个周期,我们说两个波的

相位差180度,也就是反相。当传输数字信号时,\"1\"码控制发0度相位,\"0\"码控制发180度相位。载波的初始相位就有了移动,也就带上了信息。

相移键控是利用载波的相位变化来传递数字信息,而振幅和频率保持不变。在2PSK中,通常用初始相位0和π分别表示二进制“1”和“0”。因此,2PSK信号的时域表达式为其中,

(t)=Acos

t+

)

表示第n个符号的绝对相位:

=

因此,上式可以改写为

图2 2PSK信号波形

解调原理

2PSK信号的解调方法是相干解调法。由于PSK信号本身就是利用相位传递信息的,所以在接收端必须利用信号的相位信息来解调信号。下图2-3中给出了一种2PSK信号相干接收设备的原理框图。图中经过带通滤波的信号在相乘器中与本地载波相乘,然后用低通滤波器滤除高频分量,在进行抽样判决。判决器是按极性来判决的。即正抽样值判为1,负抽样值判为0.

2PSK信号相干解调各点时间波形如图 3 所示. 当恢复的相干载波产生180°倒相时,解调出的数字基带信号将与发送的数字基带信号正好是相反,解调器输出数字基带信号全部出错.

图 32PSK信号相干解调各点时间波形

这种现象通常称为\"倒π\"现象.由于在2PSK信号的载波恢复过程中存在着180°的相位模糊,所以2PSK信号的相干解调存在随机的\"倒π\"现象,从而使得2PSK方式在实际中很少采用.

三 仿真方真

产生随机n位二进制码元 输 出 2PSK 误码率 仿真 抽 样 判 决 低 通 滤 波 低 通 滤 波 加性AWGN 汉 明 码 编 码 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('理论值','实际值')、

五 实验结果及分析

图1.随机产生的15位二进制序列波形

图2.汉明码编码后的序列波形极其频谱

由图2可看出输入信号经过汉明码编码后的波形与理论推出的序列相同

图3.经过2psk调制后的信号波形及其频谱

图3中显示的2psk由于显示幅度限制已叠在一起,放大看可得到以理论相同的正弦波波形,在0,1变换出有π的相位变化,并且信号的频谱图符合信号频率被载波搬移的解释。

图4.信号通过信道加入白噪声后的波形极其频谱

图4所示是信号加入高斯白噪声后的波形,其中信噪比可调,实验中信噪比为10dB。在频谱图下方可以看到高斯白噪声的频谱密度,和理论的高斯白噪声频谱密度相同。

图5.经过相干解调后的信号波形及其频谱

经过调制的2psk信号只能通过相干解调。实验中当信号与载波相乘后与实验原理中的推导相符。

图6.经过低通滤波器后的信号波形及其频谱

经过低通滤波后,除去信号中的高频成分和大部分高斯白噪声

图7.低通滤波器的传输函数的频谱及相谱图

图8.经过抽样判决后的信号极其频谱

经过抽样判决后输出的波形与编码后的波形一致

图9.判决后的信号经过汉明码译码后的波形

将上一步中的信号经过汉明码译码后得到与输入波形相同的信号。

可得出这个2psk通信系统可实现。

图10.2psk信噪比与误码率关系图

六 心得体会

通过这次通信原理实验,我发现自己的基础知识和应用能力都很差。刚拿到题目时,在如何实现汉明码编码处就卡住,再后来的译码,由于程序有问题,每次都进入死循环。最后通过各种网上的资料解决了种种问题。通过了这次实验,我加深了课堂上所学的理论知识,提高了知识的应用能力。熟悉了MATLAB的运行环境,掌握了一些MATLAB语言和函数的调用,很大程度上提高了自己的能力。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top