直接序列扩频(DSSS)+8PSK 通信系统

一、理论基础    

扩展频谱通信系统是指将待传输信息的频谱用某个特定的扩频函数扩展成为宽频带信号后送入信道中传输,在接收端利用相应手段将信号解压缩,从而获取传输信息的通信系统。也就是说在传输同样信息时所需的射频带宽,远比我们已熟知的各种调制方式要求的带宽要宽得多。扩频带宽至少是信息带宽的几十倍甚至几万倍。信息不再是决定调制信号带宽的一个重要因素,其调制信号的带宽主要由扩频函数来决定。

 这一定义包括以下三方面的意思:

(1)信号频谱被展宽了。在常规通信中,为了提高频率利用率,通常都是采用大体相当带宽的信号来传输信息,即在无线电通信中射频信号的带宽和所传信息的带宽是属于同一个数量级的,但扩频通信的信号带宽与信息带宽之比则高达100~1000,属于宽带通信,原因是为了提高通信的抗干扰能力,这是扩频通信的基本思想和理论依据。扩频通信系统扩展的频谱越宽,处理增益越高,抗干扰能力就越强。

 (2)采用扩频码序列调制的方式来展宽信号频谱。由信号理论知道,脉冲信号宽度越窄,其频谱就越宽,信号的频带宽度和脉冲宽度近似成反比,因此,所传信息被越窄的脉冲序列调制,则可产生很宽频带的信号。扩频码序列就是很窄的脉冲序列。 

(3)在接收端用与发送端完全相同的扩频码序列来进行解扩。

扩频技术的理论依据定性的讨论有以下几点:首先,扩频技术的理论基础可用香农信道容量公式来描述:

式中:C为信道容量; W为系统传输带宽; S/N为传输系统的信噪比。

     该公式表明,在高斯信道中当传输系统的信噪比S/N下降时,可用增加系统传输带宽W的办法来保持信道容量C不变。对于任意给定的信噪比可以用增大传输带宽来获得较低的信息差错率。扩频技术正是利用这一原理,用高速率的扩频码来达到扩展待传输的数字信息带宽的目的。故在相同的信噪比条件下,具有较强的抗噪声干扰

    香农指出:在高斯噪声干扰下,在限平均功率的信道上,实现有效和可靠通信的最佳信号是具有白噪声统计特性的信号。目前人们找到的一些伪随机序列的统计特性逼近于高斯白噪声的统计特性。使用于扩频系统中,可以使得所传输信号的统计特性逼近于高斯信道要求的最佳信号形式。

  早在50年代,哈尔凯维奇就从理论上证明:要克服多径衰落干扰的影响,信道中传输的最佳信号形式也应该是具有白噪声统计特性的信号形式。由于扩频函数逼近白噪声的统计特性,因此扩频通信又具有抗多径干扰的能力。

       常用的扩展频谱方式可分为:

        a、直接序列扩频CDMA(DS-CDMA):用待传信息信号与高速率的伪随机码序列相乘后,去控制射频信号的某个参量而扩展频谱。

        b、跳频扩频CDMA(FH-CDMA):数字信息与二进制伪随机码序列模二相加后,去离散地控制射频载波振荡器的输出频率,使发射信号的频率随伪随机码的变化而跳变。

        c、跳时扩频CDMA(TH-CDMA):跳时是用伪随机码序列来启闭信号的发射时刻和持续时间。发射信号的“有”、“无”同伪随机序列一样是伪随机的。

        d、混合式:由以上三种基本扩频方式中的两种或多种结合起来,便构成了一些混合扩频体制,如FH/DS,DS/TH,FH/TH等

     其中,直接序列扩频通常采用PSK调制,适用于发送信号与接收信号之间的相位相干性可以在横跨几个符号区间内保持住。而跳频扩频通常采用FSK调制。

二、matlab代码

任务要求:搭建一个直接序列扩频的通信链路,要求进行8psk调制,扩频码长为64,经AWGN信道在频带传输,观察接收信号的频谱和星座图,画出Ec/N0,Eb/N0与误码率的曲线,并与理论误码率曲线进行对比

采用m序列进行直接序列扩频,利用移位寄存器生成64位的m序列,扩频因子为64

整体框图

(注:这个框图是根据通信原理书上简化而来,但csdn上很多帖子都是先扩频再调制

clc;
clear all;
close all;
% 参数设置
sps = 8;             % 每个符号的采样点数
Symbols = 6000;      % 总仿真符号数
bit_error_ratio=[];
spread_factor=64;    %扩频码长
Ts=100;              %每个码元的宽度,即码元的持续时间
Rs=1/Ts;             %码元速率
Rc=spread_factor*Rs; %码片速率
fc=2.5*Rc;           %载波频率
%产生基带信号
data = randi([0 1],1,Symbols);             % 生成随机比特序列
%生成m序列(双极性)
X1=0;X2=0;X3=1; 
for i=1:spread_factor  
   Y3=X3;  Y2=X2;   Y1=X1;
   X3=Y2;   X2=Y1;  
   X1=xor(Y3,Y1);
   L(i)=Y1;
end
for i=1:spread_factor
    m(i)=1-2*L(i);	%将单极性m序列变为双极性m序列
end 
m=m';
%8PSK调制
%将基带信号转换为八进制
tx_data2= reshape(data,3,[])';            %以每组3比特进行分组
tx_data10= bi2de(tx_data2);                 %二进制转化为十进制
data_8psk=pskmod(tx_data10,8,0,'gray');
% % 扩频
% kron函数相当于两个矩阵相乘
 spread_signal = kron(data_8psk, m);%将每个8PSK符号扩展为64个码片
% 定义脉冲成型滤波器
roll_off = 0.25;    % 滚降系数
span = 8; % 截断数
fir_rcos_trans = rcosdesign(roll_off, span, sps, 'sqrt'); % 定义根升余弦滤波器
% % 上采样
data_upsample = upsample(spread_signal, sps);
% 脉冲成型滤波器
rcos_data_upsample =conv(data_upsample,fir_rcos_trans,'same');
% tx_data=rcos_data_upsample;
t = (0:length(rcos_data_upsample)-1)/sps; %时间向量
carrier_I = cos(2*pi*fc*t).'; % I路载波
carrier_Q = -sin(2*pi*fc*t).'; % Q路载波
%因为是一个行向量和一个列向量,所以要转置
tx_data_I = real(rcos_data_upsample) .* carrier_I; % I路载波信号
tx_data_Q = imag(rcos_data_upsample) .* carrier_Q; % Q路载波信号
tx_data = tx_data_I + tx_data_Q;
figure();
plot(t,abs(fft(tx_data)));
title('载波调制频域波形');
scatterplot(rcos_data_upsample);
%经过AWGN信道
snr=-30:-5;
% % esn0与ebn0公式
%此时基带(无载波)为sps,频带(*载波后)为0.5*sps
EsN0=snr+10*log10(0.5*sps)+10*log10(spread_factor);
EbN0=snr+10*log10(0.5*sps)-10*log10(3)+10*log10(spread_factor);
for i = 1:length(snr)
data_8psk_addnoise = awgn(tx_data, snr(i), 'measured','dB');% 经过awgn信道
rx_data_I = data_8psk_addnoise .* carrier_I; %去除I路载波
rx_data_Q = data_8psk_addnoise .* carrier_Q; %去除Q路载波
rx_data = rx_data_I + 1i*rx_data_Q;  %接收信号
% rx_data=data_8psk_addnoise;
% 经过匹配滤波器
y_demod_MF=conv(rx_data,fir_rcos_trans,'same');
% 下采样
m_rx_data = y_demod_MF(1:sps:end);
% 解扩
    %将 m_rx_data 重新整形为一个二维矩阵,每列有 64 个元素,列数由 out_signal 的长度决定
    despread_signal = reshape(m_rx_data, spread_factor, []);
    despread_signal1 = sum(despread_signal .* m).';
    demodulated_signal = pskdemod(despread_signal1,8,0,'gray');
    %de2bi函数转换为二进制时默认最右边为最高位,因此data_out不能直接与data进行误码率比较,需要经过相同的方式转换为二进制后再进行比较
    data_bin = de2bi(tx_data10);  %转换为二进制
    data_in = reshape(data_bin, Symbols, 1);
    demodulated_bit = de2bi(demodulated_signal);
    data_out = reshape(demodulated_bit,Symbols,1);
 %%%% 误码率性能比较
    error = 0;
    for k = 1 : length(data_in )
        if(data_out(k) ~= data_in (k))
            error = error + 1;
        end
    end
        bit_error_ratio(i)= error / length(data_in );
end
ber_8psk = berawgn(EbN0, 'psk', 8, 'nondiff');
figure();
semilogy(EbN0, bit_error_ratio,'-*', EsN0, bit_error_ratio, '-+',EbN0,ber_8psk,'-O',EsN0,ber_8psk,'-O');
legend('EbN0','EsN0','理论');
xlabel('EbNo');
ylabel('BER');
axis([-10,20 , 10e-5, 1]);
title('不同信噪比下的误码率仿真曲线');
grid on

三、仿真结果

1.接收信号的频谱

2.星座图

3.误码率曲线及对比

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hhh.Danko

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值