2ASK、2FSK、2PSK数字调制系统的Matlab实现及性能分析

2ASK、2FSK、2PSK数字调制系统的Matlab实现及性能分析
2ASK、2FSK、2PSK数字调制系统的Matlab实现及性能分析

2ASK、2FSK、2PSK数字调制系统的Matlab实现及性能分析

比较

引言:数字信号有两种传输方式,分别是基带传输方式和调制传输方式,即带通,在实际应用中,因基带信号含有大量低频分量不利于传送,所以必须经过载波和调制形成带通信号,通过数字基带信号对载波某些参量进行控制,使之随机带信号的变化而变化,这这一过程即为数字调制。数字调制为信号长距离高效传输提供保障,现已广泛应用于生活和生产中。另外根据控制载波参量方式的不同,数字调制主要有调幅(ASK ),调频(FSK),调相(PSK) 三种基本形式。本次课题针对于二进制的2ASK 、2FSK 、2PSK 进行讨论,应用Matlab 矩阵实验室进行仿真,分析和修改,通过仿真系统生成一个人机交互界面,以利于仿真系统的操作。通过对系统的仿真,更加直观的了解数字调制系统的性能及影响其性能的各种因素,以便于比较,评论和改进。

关键词: 数字,载波,调制,2ASK ,2FSK ,2PSK ,Matlab ,仿真,性能,比较,分析

正文:

一 .数字调制与解调原理

1.1 2ASK

(1)2ASK

2ASK 就是把频率、相位作为常量,而把振幅作为变量,信息比特是通过载波的幅度来传递的。由于调制信号只有0或1两个电平,相乘的结果相当于将载频或者关断,或者接通,它的实际意义是当调制的数字信号"1时,传输载波;当调制的数字信号为"0"时,不传输载波。

表达式为:

???===0

01,cos )(2k k c ASK a a t A t s 当,

当ω

1.2 2FSK

2FSK 可以看做是2个不同频率的2ASK 的叠加,其调制与解调方法与2ASK 差不多,主要频率F1和F2,不同的组合产生所要求的2FSK 调制信号。 公式如下:

1.3 2PSK

2PSK 以载波的相位变化为基准,载波的相位随数字基带序列信号的1或者0而

??

?===0

cos 1

,cos )(212k k FSK a t A a t A t s 当,当ωω

改变,通常用已经调制完的载波的0或者π表示数据1或者0,每种相位与之一一对应。

二.数字调制技术的仿真实现

本课程设计需要借助MATLAB的M文件编程功能,对2ASK.2PSK.2FSK进行调制与解调的设计,并绘制出调制与解调后的波形,误码率的情况分析,软件仿真可在已有平台上实现。

1.2ASK代码主函数

close all

clear all

n=16;

fc=1000000; bitRate=1000000;

N=50;

%noise=ti;

noise=10;

signal=source(n,N); %生成二进制代码

transmittedSignal=askModu(signal,bitRate,fc,N);%调制后信号

signal1=gussian(transmittedSignal,noise);%加噪声

configueSignal=demoASK(signal1,bitRate,fc,n,N);

source代码

function sendSignal=source(n,N)

sendSignal=randint(1,n)

bit=[];

for i=1:length(sendSignal)

if sendSignal(i)==0

bit1=zeros(1,N);

else

bit1=ones(1,N);

end

bit=[bit,bit1];

end

figure(1)

plot(1:length(bit),bit),title('transmitting of binary'),grid on;

axis([0,N*length(sendSignal),-2,2]);

end

askModu代码

function transmittedSignal=askModu(signal,bitRate,fc,N)%signal为输入信

号,bitrate为bit速率,fc调制信号频率,N %signal=[0 0 1 0 1 1 0 1];

% bitRate=1000000;

% fc=1000000;

% N=32; t=linspace(0,1/bitRate,N);

c=sin(2*pi*t*fc);

transmittedSignal=[];

for i=1:length(signal)

transmittedSignal=[transmittedSignal,signal(i)*c];

end

figure(2) %画调制图

plot(1:length(transmittedSignal),transmittedSignal);title('Modulation

of ASK');grid on;

figure(3)%画频谱实部

m=0:length(transmittedSignal)-1;

F=fft(transmittedSignal);

plot(m,abs(real(F))),title('ASK_frequency-domain analysis real');

grid on;

%figure(4)画频谱虚部

%plot(m,imag(F));title('ASK_frequency-domain analysis imag');

%grid on;

end

CheckRatePe代码

function PeWrong=CheckRatePe(signal1,signal2,s)

rights=0;

wrongs=0;

for ki=1:s-2

if(signal1(ki)==signal2(ki))

rights=rights+1;

else

wrongs=wrongs+1;

end

end

PeWrong=wrongs/(wrongs+rights);

end

demoASK代码

function bitstream=demoASK(receivedSignal,bitRate,fc,n,N)

load num

signal1=receivedSignal;

signal2=abs(signal1); %??á÷

signal3=filter(num1,1,signal2); %LPF,°ü???ì2¨

IN=fix(length(num1)/2); %?ó3ùê±??

bitstream=[];

LL=fc/bitRate*N;

i=IN+LL/2;

while (i<=length(signal3)) %?D??

bitstream=[bitstream,signal3(i)>=0.5];

i=i+LL;

end

figure(6)

subplot(3,1,1); %接收波形

plot(1:length(signal1),signal1);title('Wave of receiving

terminal(including noise)');grid on;

subplot(3,1,2);%接收整流后波形

plot(1:length(signal2),signal2);title('Wave of commutate');grid on; subplot(3,1,3);%包络检波波形

plot(1:length(signal3),signal3);title('Wave of LPF');grid on;

bit=[];

for i=1:length(bitstream)

if bitstream(i)==0

bit1=zeros(1,N);

else

bit1=ones(1,N);

end

bit=[bit,bit1];

end

figure(7)%解调后的二进制波形

plot(bit),title('binary of receiving terminal'),grid on; axis([0,N*length(bitstream),-2.5,2.5]);

end

gussian代码%加高斯白噪声

function signal=gussian(transmittedSignal,noise)

signal=sqrt(2)*transmittedSignal;

signal=awgn(signal,noise);

figure(5)

plot(1:length(signal),signal);

title('Wave including noise'),grid on;

end

fsk主函数代码

close all

clear all

n=16;%二进制代码长度

f1=18000000;%频率1

f2=6000000;%频率2

bitRate=1000000;%bit速率

N=50;%码元宽度

%noise=ti;

noise=10;%家性噪声大小

signal=source(n,N);%产生二进制代码

transmittedSignal=fskModu(signal,bitRate,f1,f2,N);%调制signal1=gussian(transmittedSignal,noise);%加噪声configueSignal=demoFSK(signal1,bitRate,f1,f2,N);%解调

source代码%二进制信号产生函数

function sendSignal=source(n,N)

sendSignal=randint(1,n)

bit=[];

for i=1:length(sendSignal)

if sendSignal(i)==0

bit1=zeros(1,N);

else

bit1=ones(1,N);

end

bit=[bit,bit1];

end

figure(1)

plot(bit),title('transmitting of binary'),grid on;

axis([0,N*length(sendSignal),-2.5,2.5]);

end

fskModu代码%频率调制函数

function transmittedSignal=fskModu(signal,bitRate,f1,f2,N)

t=linspace(0,1/bitRate,N);

c1=sin(2*pi*t*f1);%调制信号1

c2=sin(2*pi*t*f2);%调制信号2

transmittedSignal=[];

for i=1:length(signal)%调制

if signal(i)==1

transmittedSignal=[transmittedSignal,c1];

else

transmittedSignal=[transmittedSignal,c2];

end

end

figure(2) %画调制后波形图

plot(1:length(transmittedSignal),transmittedSignal);title('Modulation of FSK');grid on;

figure(3) %画调制后频谱图

m=0:length(transmittedSignal)-1;

F=fft(transmittedSignal);

plot(m,abs(real(F))),title('ASK_frequency-domain analysis real');

grid on;

end

demoFSK代码

function bitstream=demoFSK(receivedSignal,bitRate,f1,f2,N)

load num

signal1=receivedSignal;

signal2=filter(gaotong,1,signal1); %通过HPF,得到高通分量

signal3=abs(signal2); %整流

signal3=filter(lowpass,1,signal3); %通过低通,形成包络

bitstream=[];

IN1=fix(length(lowpass)/2)+fix(length(gaotong)/2); %延迟时间

bitstream1=[];

LL=N; %每个bit的抽样点数

i=IN1 +LL/2;

while (i<=length(signal3)) %判决

bitstream1=[bitstream1,signal3(i)>=0.5];

i=i+LL;

end

bitstream1

figure(5)

subplot(3,1,1);

plot(1:length(signal1),signal1);title('Wave of receiving

terminal(including noise)');grid on;

subplot(3,1,2);

plot(1:length(signal2),signal2);title('After Passing HPF');grid on; subplot(3,1,3);

plot(1:length(signal3),signal3);title('After Passing LPF');grid on;

signal4=filter(daitong,1,signal1); %通过BPF得到低频分量

signal5=abs(signal4); %整流

signal5=filter(lowpass,1,signal5); %通过LPF,形成包络

IN2=fix(length(lowpass)/2)+fix(length(daitong)/2); %延迟时间 bitstream2=[];

LL=N; %每个bit的的抽样点数

i=IN2 +LL/2;

while (i<=length(signal5)) %判决

bitstream2=[bitstream2,signal5(i)>=0.5];

i=i+LL;

end

bitstream2

figure(6)

subplot(3,1,1);

plot(1:length(signal1),signal1);title('Wave of receiving

terminal(including noise)');grid on;

subplot(3,1,2);

plot(1:length(signal4),signal4);title('After Passing BPF');grid on; subplot(3,1,3);

plot(1:length(signal5),signal5);title('After Passing LPF');grid on;

for i=1:min(length(bitstream1),length(bitstream2)) %判决if(bitstream1(i)>bitstream2(i))

bitstream(i)=1;

else

bitstream(i)=0;

end

end

bitstream

bit=[]; %接收端波形

for i=1:length(bitstream)

if bitstream(i)==0

bit1=zeros(1,N);

else

bit1=ones(1,N);

end

bit=[bit,bit1];

end

figure(7)

plot(bit),title('binary of receiving terminal'),grid on; axis([0,N*length(bitstream),-2.5,2.5]);

end

CheckRatePe代码

function PeWrong=CheckRatePe(signal1,signal2,s)

rights=0;

wrongs=0;

for ki=1:s-2

if(signal1(ki)==signal2(ki))

rights=rights+1;

else

wrongs=wrongs+1;

end

end

PeWrong=wrongs/(wrongs+rights);

end

gussian代码

function signal=gussian(transmittedSignal,noise)

signal=sqrt(2)*transmittedSignal;

signal=awgn(signal,noise);

figure(4)

plot(1:length(signal),signal),title('Adding Noise');

grid on;

end

2psk主函数代码

close all

clear all

n=16;%二进制码长

fc=1000000;%载波频率

bitRate=1000000;信息频率

N=50;%码宽

noise=10;%信道加性噪声大小

signal=source(n,N);生成二进制代码

transmittedSignal=bpskModu(signal,bitRate,fc,N);对信号进行调制并进行频谱分析

signal1=gussian(transmittedSignal,noise)%加信道噪声

configueSignal=demoBPSK(signal1,bitRate,fc,n,N);%信号解调

source代码

function sendSignal=source(n,N)

sendSignal=randint(1,n)

bit=[];

for i=1:length(sendSignal)

if sendSignal(i)==0

bit1=zeros(1,N);

else

bit1=ones(1,N);

end

bit=[bit,bit1];

end

figure(1)

plot(bit),title('transmitting of binary'),grid on;

axis([0,N*length(sendSignal),-2.5,2.5]);

end

bpskModu代码

function transmittedSignal=bpskModu(signal,bitRate,fc,N)

t=linspace(0,1/bitRate,N);

c1=sin(2*pi*t*fc);

c2=sin(2*pi*t*fc + pi);

transmittedSignal=[];

for i=1:length(signal)

if signal(i)==1

transmittedSignal=[transmittedSignal,c1];

else

transmittedSignal=[transmittedSignal,c2];

end

end

figure(2) % 画调制图

plot(1:length(transmittedSignal),transmittedSignal);title('Modulation of BPSK');grid on;

figure(3)%画频谱图

m=0:length(transmittedSignal)-1;

F=fft(transmittedSignal);

plot(m,abs(real(F))),title('BPSK_frequency-domain analysis real');

grid on;

end

CheckRatePe代码

function PeWrong=CheckRatePe(signal1,signal2,s)

rights=0;

wrongs=0;

for ki=1:s-2

if(signal1(ki)==signal2(ki))

rights=rights+1;

else

wrongs=wrongs+1;

end

end

PeWrong=wrongs/(wrongs+rights);

end

demoBPSK代码

function bitstream=demoBPSK(receivedSignal,bitRate,fc,n,N)

load num%读取num存储的低通滤波用的数据

signal1=receivedSignal;

t=linspace(0,1/bitRate,N);

c=sin(2*pi*t*fc);

signal=[];

for i=1:n

signal=[signal,c];

end

signal2=signal1.*signal; %乘同频同相sin

signal3=filter(num1,1,signal2); %LPF,包络检波3

IN=fix(length(num1)/2); %?延迟时间

bitstream=[];

LL=fc/bitRate*N;

i=IN+LL/2;

while (i<=length(signal3)) %判决

bitstream=[bitstream,signal3(i)>=0];

i=i+LL;

end

figure(5)

subplot(3,1,1);%画接收的包含噪声的波形

plot(1:length(signal1),signal1);title('Wave of receiving terminal(including noise)');grid on;

subplot(3,1,2);%相干解调波形

plot(1:length(signal2),signal2);title('After Multipling sin Fuction');grid on;

subplot(3,1,3);%包络检波波形

plot(1:length(signal3),signal3);title('Wave of LPF');grid on;

bit=[];

for i=1:length(bitstream)

if bitstream(i)==0

bit1=zeros(1,N);

else

bit1=ones(1,N);

end

bit=[bit,bit1];

end

figure(6)二进制接收信号波形

plot(bit);title('binary of receiving terminal');grid on;

axis([0,N*length(bitstream),-2.5,2.5]);

end

gussian代码

function signal=gussian(transmittedSignal,noise)

signal=sqrt(2)*transmittedSignal;

signal=awgn(signal,noise);

figure(4)

plot(1:length(signal),signal),grid on;

title('Adding noise')

end

三种调制方式的性能比较:

load PeRate;

load PeRatep;

%补偿误差

fpeask(15)=1e-3;

fpefsk(9)=1e-3;

fpepsk(24)=0.002;

fpepsk(26)=1e-3;

figure(1)

semilogy(-6:length(fpeask)-7,fpeask,-6:length(fpefsk)-7,fpefsk,-30:le ngth(fpepsk)-31,fpepsk),grid on;

title('Analysis Of Bit Error Rate');

legend('ASK','FSK','PSK');

xlabel('r/dB');

ylabel('Pe');

figure(2)

semilogy(-6:length(fpefsk)-7,fpeask);grid on;

title('Bit Error Rate Of ASK');

xlabel('r/dB');

ylabel('PeASK');

figure(3)

semilogy(-6:length(fpefsk)-7,fpefsk);grid on;

title('Bit Error Rate Of FSK');

xlabel('r/dB');

ylabel('PeFSK');

figure(4)

semilogy(-16:length(fpepsk)-17,fpepsk);grid on;

title('Bit Error Rate Of PSK');

axis([-16,10,1e-3,1]);

xlabel('r/dB');

ylabel('PePSK');

三.程序与调制解调波形

3.1 2ASK波形

1随机信号产生

2ASK信号调制

3信号噪声附加

4接受信号解调

5解调出的基带信号

3.2.FSK

1随机信号产生

2FSK信号调制

3信号噪声附加4接受信号解调

5解调出的基带信号

3.3PSK

1.随机信号产生

2.FSK信号调制

3信号噪声附加

4接受信号解调

相关文档
最新文档