MLDesign Technologies, Inc.

Mainnavigation

Subnavigation

BORDER

 
 
 

Pagecontent

Link Analysis with the Irridium System

The se plots and map come from an end-to-end link analysis for an Iridium system satellite-based link between an Francisco and Berlin.

%function demoLink
%
% demoLink
%
% This demo simulates the Iridium system. During the simulation
% the routing path between Berlin and SanFrancisco is calculated.
% For uplink, crosslink, and downlink channel Eb/N0, delay, C/N,
% and the biterror rate are calculated. In the next step Eb/N0
% delay, C/N, and the biterror rate for the whole link is
% computed and shown.
%

1; % Not a function file, since the first command is not the function 
   % keyword
   %


function [EbN0, DELAY, BEP, CN, CN0] 
    = UpDownChannel(DIST, ELEV, ALT,LAT)

    % DIST  [km] Distance vector from groundstation to satellite
    % ELEV  [deg] Elevation angle vector from groundstation to satellite
    % ALT   [km] Altitude of groundstation over NN
    % LAT   [deg] Latitude of groundstation (deg)
    %
    % EbN0  [dB] Bit energy Eb/N0 (dB)
    % DELAY [sec] Delays
    % BEP   [] Bit error rate
    % CN    [dB] Carrier-to-noise ratio
    % CN0   [dB] Carrier-to-noise density ratio (dB)

    % user setting variables for downlink
    F     = 1.62e9; % Carrier Frequency [Hz]
    Pol   = 45;     % Polarization 45-circ., 0-horiz., 90-vert.
    B     = 75e3;   % Channel Bandwidth [Hz]
    Rb    = 50e3;   % Data bit rate [bps]
    Eta   = 0.55;   % Antenna efficiency
    D     = 1;      % Antenna diameter [m]
    Pt    = 10;     % Transmitter Power [W]
    Lp    = 3;      % Pointing Loss [dB]
    T     = 18;     % Temperature [deg C]
    Rho   = 5;      % Water vapour [g/m^3]
    R001  = 31;     % Rain rate 0.01 % [mm/h]
    ISI   = 0.5;    % Intersymbol Interference Loss [dB]
    Lm    = 3;      % Link Margin [dB]
    Fomr  = -24.8;  % Figure of Merit [dB]
    Coder = 4;      % ConvolutionCode4
    M     = 0;      % ASK modulation

    Gt    = G_antenna(F, D, Eta);             % Antenna gain maximum
    EIRP  = dB(Pt) + Gt;                      % EIRP
    Lg    = L_gas (ALT, ELEV, F, Rho, T);     % Gas Loss
    Lr    = L_rain (ALT, ELEV, F, LAT, R001); % Rain Loss
    Lfs   = L_fs (DIST, F);                   % Free space Loss
    L     = Lfs + Lg + Lr + Lp + ISI;         % Overall Losses
    Gc    = G_coding (Coder);
    DELAY = Delay (DIST, Lr);
    BEP   = BER (EbN0, M);
    [EbN0, CN0, CN] = LinkBudget(EIRP, L, Lm, Gc, Fomr, Rb, B);

    % inverse dB
    EbN0A = exp10(EbN0/10);
endfunction


function [EbN0, DELAY, BEP, CN, CN0] = CrossLinkChannel(DIST)
    % DIST  [km]  Distance vector from groundstation to satellite
    % ELEV  [deg] Elevation angle vector from groundstation to satellite
    % ALT   [km]  Altitude of groundstation over NN
    % LAT   [deg] Latitude of groundstation (deg)
    %
    % EbN0  [dB]  Bit energy Eb/N0 (dB)
    % DELAY [sec] Delays
    % BEP   []    Bit error rate
    % CN    [dB]  Carrier-to-noise ratio
    % CN0   [dB]  Carrier-to-noise density ratio (dB)

    % user setting variables for downlink
    F     = 1.62e9;  % Carrier Frequency [Hz]
    B     = 10e6;    % Channel Bandwidth [Hz]
    Rb    = 12e6;    % Data bit rate [bps]
    Eta   = 0.55;    % Antenna efficiency
    D     = 2;       % Antenna diameter [m]
    Pt    = 30;      % Transmitter Power [W]
    Lp    = 3;       % Pointing Loss [dB]
    ISI   = 0.5;     % Intersymbol Interference Loss [dB]
    Lm    = 3;       % Link Margin [dB]
    Fomr  = -10;     % Figure of Merit [dB]
    Coder = 4;       % ConvolutionCode4
    M     = 17;      % QPSK modulation
    Gt    = G_antenna(F, D, Eta); % Antenna gain maximum
    EIRP  = dB(Pt) + Gt;          % EIRP
    Lfs   = L_fs (DIST, F);       % Free space Loss
    L     = Lfs + Lp + ISI;       % Overall Losses
    Gc    = G_coding (Coder);
    DELAY = Delay (DIST);
    BEP   = BER (EbN0, M);
    [EbN0, CN0, CN] = LinkBudget(EIRP, L, Lm, Gc, Fomr, Rb, B);

    EbN0A = exp10(EbN0/10);    % inverse dB
endfunction


loadreplaceAll("./IR66.data");

% initialize values for Iridium
Node1 = getNodeNumber('SanFrancisco')+1;
Node2 = getNodeNumber('Berlin')+1;
SatsPerOrbit=11;

% other values
[lat(1), alt(1)] = getNodeParameter (Node1-1, P_lat, P_alt);
[lat(2), alt(2)] = getNodeParameter (Node2-1, P_lat, P_alt);

% set start time
setSimEpoch(1992,7,30,10,30,0);

% time steps
t=0:10:600;
for i=1:max(size(t))
    tnow=t(i);
    setSimTime(tnow);
    [d,r,a,e,v] = RelPosition ();
    D = RoutingCorrection
    (d,v,SatsPerOrbit,NumberOfStations+NumberOfMobiles);
    Route= RoutingDijkstra (D,Node1,Node2);
    UsedNodes=prod(size(Route));
    
    % uplink
    [EbN0(1), Delay(1),Ber(1),CN(1),CN0(1)]
        =UpDownChannel(d(Node1,
                       Route(2)),
                       e(Node1,
                       Route(2)),
                       alt(Node1),
                       lat(Node1));

    % crosslink
    for i2 = 2:(UsedNodes-2)
        distance(i2)=d(Route(i2),Route(i2+1));
        [EbN0(i2),Delay(i2),Ber(i2),CN(i2),CN0(i2)]
            =CrossLinkChannel(distance(i2));
    endfor

    % downlink
    i2 = UsedNodes-1;
    [EbN0(i2),Delay(i2),Ber(i2),CN(i2),CN0(i2)]
        =UpDownChannel(d(Node2,
                       Route(i2)),
                       e(Node2,
                       Route(i2)),
                       alt(Node2),
                       lat(Node2));

    % all links
    Delay_g(i) = 0;
    for i2 = 1:(UsedNodes-1)
        if (i2==1)
            Delay_g(i) = Delay(i2);
            CN_g(i) = CN(i2);
            Ber_g(i)=Ber(i2);
        else
            Delay_g(i)=Delay_g(i)+Delay(i2);
            zw1 = exp10(CN_g(i)/10.0);
            zw2 = exp10(CN(i2) /10.0);
            CN_g(i)=10*log10(1/((1/zw1) + (1/zw2)));
            Ber_g(i)=Ber_g(i)*(1-Ber(i2)) + (1-Ber_g(i))*Ber(i2);
        endif
    endfor

    EbN0_g(i)=CN_g(i)-10.0*log(12.0/10.0);
endfor

erase
title('SanFrancisco to Berlin');
window('221');
plot(t,EbN0_g,'grid','red');
xlabel('t [sec]');
ylabel('Eb/N0 [dB]');

window('222');
plot(t,Delay_g,'grid','red');
xlabel('t [sec]');
ylabel('Delay [sec]');

window('223')
plot(t,CN_g,'grid','green');
xlabel('t [sec]');
ylabel('C/N [dB]');

window('224')
plot(t,log10(Ber_g),'grid','green');
xlabel('t [sec]');
ylabel('log10(BER)');

%demos
%endfunction