资源简介

物理层DBPSK的MATLAB仿真,可运行!注释为英文标注。

资源截图

代码片段和文件信息

%% 802.11b 1Mbps PHY link.
% This M code simulates DBPSK modulation and barker code spreading
% on a perfectly synchonized 802.11b link. It calculates the BER
% rate at each EsNo (EbNo) and plots the result.

%% Simulation parameters
% For each BER loop we specify the number of packets to transmit the packet size and
% the range of channel EsNo values to test.

EsNoRange=[0:2:10]; % Range of noice levels to calculate BER
NumPackets=2;
PacketSizeBytes=1024;
PacketSizeBits=PacketSizeBytes*8; % Here we ignore preamble and sync bits
clear BERResults;

%% System parameters and constants
% Specify a number of system constants.

% Spreading parameters
Barker=[1 -1  1  1 -1  1  1  1 -1 -1 -1]‘; % Barker sequence
SpreadingRate=length(Barker);              % Spreading rate

% Upsampling rate
SamplesPerChip=8;

% Filter order and coefficients - root raised cosine
FilterOrder=40; % Set to multiple of SamplesPerChip to make delay calculation easy
h=firrcos(FilterOrder7e6.788e6‘rolloff‘‘sqrt‘FilterOrder/2kaiser(FilterOrder+11));

%% Delay calculation
% Calclate (specify) the net number of bits delay in the link due
% to the filtering.
%
% * samples_delay = 2 filters x (40 coeffs / 2) = 40 samples
% * chips_delay = sample_delay/SamplesPerChip = 40/8 = 5 chips
% *  Must recalculate delay if you change any of these parameters
% We must delay the signal 6 more chips to align it with the 11 chip
% boundary. This results in an 11 chip delay or one symbol/bit delay.
% You must recalculate total and additional delay if you change any of these
% parameters

BitDelay=1;
ChipDelayAdd=6;

%% Main BER loop
% Calculates the BER for each EsNo level. 

NumEsNos=length(EsNoRange);

disp(‘ ‘);disp(‘Start Simulation‘);
for EsNoIndex =1:NumEsNos
    
    EsNo=EsNoRange(EsNoIndex);
    disp([‘Simulating: EsNo=‘ num2str(EsNo) ‘dB‘]);
    SNR=EsNo+10*log10(1/SpreadingRate)+10*log10(1/SamplesPerChip);

    % Initialize system and simulation measurements state

    % Bits
    TotalBits=logical(0); % Bit count for BER calculation
    ErrorBits=logical(0); % Error count for BER calculation
    LastTxSymbol=1;       % Set DBPKS Modulator state
    LastRxSymbol=1;       % Set DBPKS Demodulator state

    % Filters
    Rx_chips_delayed_store=zeros(ChipDelayAdd1);
    Tx_bits_delayed_store=logical(zeros(BitDelay1));

    Tx_Filter_State=h(1:end-1); % Fill filter with a +1 symbol
    Rx_Filter_State=h(1:end-1); % Fill filter with a +1 symbol

    % Main simulation loop
    % Each packet is transmitted and the recieved bits compared with the
    % transmitted bits to calculate the BER.
    for Packet=1:NumPackets

        % Construct frame of bits
        Tx_bits=rand(PacketSizeBits1)>.5;           % Random bits

        % Modulate
        Tx_bits_bp=(1-2*Tx_bits);                    % Convert to bipolar 01 --> 1 -1
        Tx_symbols=LastTxSymbol*cumprod(Tx_bits_bp); % New DBPSK sym

评论

共有 条评论