GSM параметризация системы координат TDMA для генерации сигналов

В этом примере показано, как параметрировать и сгенерировать различный GSM системы координат TDMA и структуры сверхкадра.

Введение

Стандарт GSM [1] задает систему координат TDMA как комбинацию 8 временных интервалов. Каждый временной интервал имеет длительность 3/5200 секунд (приблизительно 0,577 мс) и номера временного интервала (TN) от 0 до 7. GSM структурирует модуляцию GMSK использования, где один символ эквивалентен одному биту. Каждый временной интервал 156,25 битов длиной. Содержимое временного интервала называется пакетом. Синхронизация передачи пакета в течение временного интервала задана в терминах битного номера. Битный номер (BN) относится к конкретному битному периоду в течение временного интервала. Бит с самым низким битным номером передается сначала. BN0 является первым битным периодом, и BN156 является последним битным четвертью периодом. Этот рисунок показывает периоды времени, временные интервалы, и разрывается для системы GSM [1].

TDMA содержит восемь временных интервалов с каждым временным интервалом, разделенным защитным периодом. Каждый временной интервал может нести только один тип пакета. Доступный пакетный тип: нормальный пакет (NB), пакет коррекции частоты (FB), пакет синхронизации (SB), пакет доступа (AB) или макет разрываются [2]. Различные пакетные типы и защитный период описаны в этих следующих разделах.

Нормальный пакет (NB)

Нормальный пакет состоит из этих битовых полей и может появиться в восходящем канале или передать в нисходящем направлении системы координат. Все биты хвоста являются нулем. На основе заданного кода обучающей последовательности (TSC) поле обучающей последовательности содержит одну из восьми возможных обучающих последовательностей.

normalBurstDescription()
ans=6×3 table
     BitNumber     LengthOfField        ContentsOfField     
    ___________    _____________    ________________________

    "0 - 2"         {[     3]}      "tail bits"             
    "3 - 60"        {[    58]}      "encrypted bits"        
    "61 - 86"       {[    26]}      "training sequence bits"
    "87 - 144"      {[    58]}      "encrypted bits"        
    "145 - 147"     {[     3]}      "tail bits"             
    "148 - 156"     {[8.2500]}      "guard period (bits)"   

Доступ к пакету (AB)

Пакет доступа состоит из этих битовых полей и может появиться в восходящих системах координат только. Все биты хвоста являются нулем.

accessBurstDescription()
ans=5×3 table
    BitNumber     LengthOfField       ContentsOfField    
    __________    _____________    ______________________

    "0 - 7"        {[      8]}     "extended tail bits"  
    "8 - 48"       {[     41]}     "synch. sequence bits"
    "49 - 84"      {[     36]}     "encrypted bits"      
    "85 - 87"      {[      3]}     "tail bits"           
    "88 - 156"     {[68.2500]}     "guard period (bits)" 

Пакет коррекции частоты (FB)

Пакет коррекции частоты состоит из этих битовых полей и может появиться в нисходящих системах координат только. Все биты хвоста и зафиксированные биты являются нулем. Модуляция всех нулей с модулятором GMSK приводит к постоянному вращению фазы-90 градусов на каждое время символа. Поэтому этот пакет генерирует немодулируемого поставщика услуг с положительным смещением частоты 1625/24 kHz.

frequencyCorrectionBurstDescription()
ans=4×3 table
     BitNumber     LengthOfField       ContentsOfField   
    ___________    _____________    _____________________

    "0 - 2"         {[     3]}      "tail bits"          
    "3 - 144"       {[   142]}      "fixed bits"         
    "145 - 147"     {[     3]}      "tail bits"          
    "148 - 156"     {[8.2500]}      "guard period (bits)"

Пакет синхронизации (SB)

Пакет синхронизации состоит из этих битовых полей и может появиться в нисходящих системах координат только. Все биты хвоста являются нулем.

synchronizationBurstDescription()
ans=6×3 table
     BitNumber     LengthOfField             ContentsOfField         
    ___________    _____________    _________________________________

    "0 - 2"         {[     3]}      "tail bits"                      
    "3 - 41"        {[    39]}      "encrypted bits"                 
    "42 - 105"      {[    64]}      "extended training sequence bits"
    "106 - 144"     {[    39]}      "encrypted bits"                 
    "145 - 147"     {[     3]}      "tail bits"                      
    "148 - 156"     {[8.2500]}      "guard period (bits)"            

Фиктивный пакет

Фиктивный пакетный пакет состоит из этих битовых полей и может появиться в нисходящих системах координат только. Все биты хвоста являются нулем. Смешанные биты содержат предопределенную последовательность единиц и нулей.

dummyBurstDescription()
ans=4×3 table
     BitNumber     LengthOfField       ContentsOfField   
    ___________    _____________    _____________________

    "0 - 2"         {[     3]}      "tail bits"          
    "3 - 144"       {[   142]}      "mixed bits"         
    "145 - 147"     {[     3]}      "tail bits"          
    "148 - 156"     {[8.2500]}      "guard period (bits)"

Период охраны

Стандарт GSM, [3], требует, чтобы мобильные станции ослабили свою передачу в период между пакетами. Наращивание и пандус вниз уровня мощности сигнала происходят в защитные периоды. Полезная часть пакета запускает половину пути через битный номер 0. Полезная часть заканчивается на полпути через BN87 для ABs и BN147 для NBS, FBs, SBs и фиктивных пакетов. Этот рисунок показывает полезные и активные части пакета.

Сгенерируйте одну восходящую систему координат

Сконфигурируйте восходящий GSM система координат TDMA с помощью gsmUplinkConfig объект.

cfg = gsmUplinkConfig()
cfg = 
  gsmUplinkConfig with properties:

           BurstType: [NB    NB    NB    NB    NB    NB    NB    NB]
    SamplesPerSymbol: 16
                 TSC: [0 1 2 3 4 5 6 7]
         Attenuation: [0 0 0 0 0 0 0 0]
            RiseTime: 2
           RiseDelay: 0
            FallTime: 2
           FallDelay: 0

Установите временные интервалы 2 и 5 нести пакеты доступа. Поскольку индексы массива MATLAB запускаются от 1, но временные интервалы запускаются от 0, устанавливают третьи и шестые элементы BurstType к "AB".

cfg.BurstType([2 5] +1) = "AB"
cfg = 
  gsmUplinkConfig with properties:

           BurstType: [NB    NB    AB    NB    NB    AB    NB    NB]
    SamplesPerSymbol: 16
                 TSC: [0 1 2 3 4 5 6 7]
         Attenuation: [0 0 0 0 0 0 0 0]
            RiseTime: 2
           RiseDelay: 0
            FallTime: 2
           FallDelay: 0

Присвойте коды 3, 5, 1, 7, 0 обучающей последовательности, и 2 к временным интервалам 0, 1, 3, 4, 6, и 7, соответственно.

cfg.TSC([0 1 3 4 6 7] +1) = [3 5 1 7 0 2]
cfg = 
  gsmUplinkConfig with properties:

           BurstType: [NB    NB    AB    NB    NB    AB    NB    NB]
    SamplesPerSymbol: 16
                 TSC: [3 5 2 1 7 5 0 2]
         Attenuation: [0 0 0 0 0 0 0 0]
            RiseTime: 2
           RiseDelay: 0
            FallTime: 2
           FallDelay: 0

Сгенерируйте основополосные выборки системы координат с помощью gsmFrame функция.

x = gsmFrame(cfg);

Постройте систему координат. Получите частоту дискретизации сгенерированной формы волны при помощи gsmInfo функция, и затем вычисляет значения оси времени в мс. График показывает 8 пакетов в системе координат с защитными периодами между каждым пакетом. Как описано в разделе Access Burst (AB) ABs является кратковременной вспышкой и имеет более широкий защитный период, чем другие пакеты.

wfInfo = gsmInfo(cfg); 
Rs = wfInfo.SampleRate;
t = (0:length(x) - 1)/Rs*1e3;
subplot(2,1,1)
plot(t,abs(x))
grid on
axis([0 5 0 1.2])
title('GSM Uplink TDMA Frame - Amplitude')
xlabel('Time (ms)')
ylabel('Amplitude')
subplot(2,1,2)
plot(t,unwrap(angle(x)))
grid on
title('GSM Uplink TDMA Frame - Phase')
xlabel('Time (ms)')
ylabel('Phase (rad)')

Figure contains 2 axes. Axes 1 with title GSM Uplink TDMA Frame - Amplitude contains an object of type line. Axes 2 with title GSM Uplink TDMA Frame - Phase contains an object of type line.

Постройте спектрограмму системы координат.

figure
spectrogram(x,500,[],[],Rs,'centered')
title('GSM Uplink TDMA Frame - Spectrogram')

Figure contains an axes. The axes with title GSM Uplink TDMA Frame - Spectrogram contains an object of type image.

Сгенерируйте одну нисходящую систему координат

Сконфигурируйте нисходящий GSM система координат TDMA с помощью gsmDownlinkConfig объект.

cfg = gsmDownlinkConfig
cfg = 
  gsmDownlinkConfig with properties:

           BurstType: [NB    NB    NB    NB    NB    NB    NB    NB]
    SamplesPerSymbol: 16
                 TSC: [0 1 2 3 4 5 6 7]
         Attenuation: [0 0 0 0 0 0 0 0]
            RiseTime: 2
           RiseDelay: 0
            FallTime: 2
           FallDelay: 0

Установите временные интервалы 0 нести пакет коррекции частоты, устанавливать временные интервалы 4 и 6 нести фиктивные пакеты и устанавливать временной интервал 2 быть пустым.

cfg.BurstType(0 +1) = "FB";
cfg.BurstType([4 6] +1) = "Dummy";
cfg.BurstType(2 +1) = "Off"
cfg = 
  gsmDownlinkConfig with properties:

           BurstType: [FB    NB    Off    NB    Dummy    NB    Dummy    NB]
    SamplesPerSymbol: 16
                 TSC: [0 1 2 3 4 5 6 7]
         Attenuation: [0 0 0 0 0 0 0 0]
            RiseTime: 2
           RiseDelay: 0
            FallTime: 2
           FallDelay: 0

Сгенерируйте основополосные выборки системы координат с помощью gsmFrame функция. Эта функция вставляет случайные биты вместо зашифрованных битов.

x = gsmFrame(cfg);

Постройте систему координат.

wfInfo = gsmInfo(cfg); 
Rs = wfInfo.SampleRate;
t = (0:length(x) - 1)/Rs*1e3;
subplot(2,1,1)
plot(t,abs(x))
grid on
axis([0 5 0 1.2])
title('GSM Uplink TDMA Frame - Amplitude')
xlabel('Time (ms)');ylabel('Amplitude')
subplot(2,1,2)
plot(t,unwrap(angle(x)))
grid on
title('GSM Uplink TDMA Frame - Phase')
xlabel('Time (ms)')
ylabel('Phase (rad)')

Figure contains 2 axes. Axes 1 with title GSM Uplink TDMA Frame - Amplitude contains an object of type line. Axes 2 with title GSM Uplink TDMA Frame - Phase contains an object of type line.

Постройте спектрограмму системы координат. Этот график показывает один тон в течение временного интервала 0 должных к FB.

figure
spectrogram(x,500,[],[],Rs,'centered')
title('GSM Uplink TDMA Frame - Spectrogram')

Figure contains an axes. The axes with title GSM Uplink TDMA Frame - Spectrogram contains an object of type image.

Сгенерируйте структуру сверхкадра

Создайте структуру сверхкадра с 51 системой координат, как показано на рисунке в разделе Introduction. Создайте три gsmDownlinkConfig объекты с заданными пакетными настройками. К блоку сверхкадр с 51 системой координат используйте первый и второй gsmDownlinkConfig объекты однажды и повторение третий gsmDownlinkConfig объекты для следующих 49 систем координат. Повторите структуру сверхкадра 3 раза.

cfg1 = gsmDownlinkConfig('BurstType',["FB" "NB" "NB" "NB" "NB" "Dummy" "NB" "NB"]);
cfg2 = gsmDownlinkConfig('BurstType',["SB" "NB" "NB" "NB" "NB" "Dummy" "NB" "NB"]);
cfg3 = gsmDownlinkConfig('BurstType',["NB" "NB" "NB" "NB" "NB" "Dummy" "NB" "NB"]);
wfInfo = gsmInfo(cfg); 
frameLength = wfInfo.FrameLengthInSamples;
x = zeros(frameLength*51*3,1);
for p=1:3
    x1 = gsmFrame(cfg1);
    x2 = gsmFrame(cfg2);
    x3 = gsmFrame(cfg3,49);
    x((p-1)*frameLength*51+1:p*frameLength*51) = [x1;x2;x3];
end

Симулируйте эффекты управления и распространения степени потерь

Из-за управления степенью и уникальной потери распространения для каждого пользователя, степень каждого временного интервала в системе координат может отличаться. Установите затухание степени в течение многих временных интервалов 0, 3, и от 7 до 2, 6, и 10 дБ, соответственно.

cfg = gsmUplinkConfig;
cfg.Attenuation([0 3 7] +1) = [2 6 10]
cfg = 
  gsmUplinkConfig with properties:

           BurstType: [NB    NB    NB    NB    NB    NB    NB    NB]
    SamplesPerSymbol: 16
                 TSC: [0 1 2 3 4 5 6 7]
         Attenuation: [2 0 0 6 0 0 0 10]
            RiseTime: 2
           RiseDelay: 0
            FallTime: 2
           FallDelay: 0

x = gsmFrame(cfg);
wfInfo = gsmInfo(cfg);
Rs = wfInfo.SampleRate;
t = (0:length(x) - 1)/Rs*1e3;
plot(t, 20*log10(abs(x)))
axis([0 5 -20 5])
grid on
title('GSM Uplink TDMA Frame Power')
xlabel('Time (ms)')
ylabel('Power (dB)')

Figure contains an axes. The axes with title GSM Uplink TDMA Frame Power contains an object of type line.

Настройте поведение наращивания и пандуса вниз

Пакеты GSM должны подъем и сползать вниз в защитные периоды [2]. gsmFrame функционируйте реализует характеристики взлета и падения пакетов как синусоида. Пакетные подъемы от нуля до полной амплитуды в количестве длительности символа заданы RiseTime значение свойства. Разрешение RiseTime 1/Nsps, где Nsps представляет SamplesPerSymbol значение свойства gsmDownlinkConfig объект.

Настройте характеристики наращивания пакетов. Начиная с SamplesPerFrame 16, можно задать RiseTime с разрешением длительности символа 0,0625. Установите RiseTime к длительности 3,125 символов.

cfg = gsmDownlinkConfig;
cfg.RiseTime = 3.125;

Визуализируйте и проверяйте, ли характеристики времени нарастания в рамках технических требований GSM при помощи gsmCheckTimeMask функция.

gsmCheckTimeMask(cfg)

Figure contains an axes. The axes with title Transmitted Power Level Versus Time (TN=0) contains 5 objects of type line, patch.

Переместите запуск длительности времени нарастания налево 1,5 символами путем установки RiseDelay к -1.5. Когда RiseDelay 0, пакет достигает полной амплитуды в начале полезной части пакета.

cfg.RiseDelay = -1.5;
gsmCheckTimeMask(cfg)

Figure contains an axes. The axes with title Transmitted Power Level Versus Time (TN=0) contains 5 objects of type line, patch.

Пакет сползает вниз от полной амплитуды, чтобы обнулить в количестве длительности символа, заданной FallTime свойство. Разрешение FallTime 1/Nsps, где Nsps представляет SamplesPerSymbol значение свойства gsmDownlinkConfig объект. Установите FallTime к длительности 2,75 символов.

Переместите запуск времени спада направо 0,25 длительностью символов путем установки FallDelay к 0.25. Когда FallDelay 0, пакет начинает сползать вниз от полной амплитуды в конце полезной части пакета.

cfg = gsmDownlinkConfig;
cfg.FallTime = 2.75;
cfg.FallDelay = 0.25;
gsmCheckTimeMask(cfg)

Figure contains an axes. The axes with title Transmitted Power Level Versus Time (TN=0) contains 5 objects of type line, patch.

Ссылки

[1] 3GPP TS 45.001. "Физический уровень GSM/EDGE на радио-пути. Общее описание". Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.

[2] 3GPP TS 45.002, "Мультиплексирование GSM/EDGE и несколько получают доступ на радио-пути". Проект Партнерства третьего поколения; Сеть радиодоступа Группы Технической характеристики

[3] 3GPP TS 45.004, "Модуляция GSM/EDGE". Общее описание". Проект Партнерства третьего поколения; Сеть радиодоступа Группы Технической характеристики

Функции помощника

normalBurstDescription

Этот функциональные форматы таблица, чтобы показать информацию о нормальных пакетных полях.

function d = normalBurstDescription()
BitNumber = ["0 - 2";"3 - 60";"61 - 86";...
    "87 - 144";"145 - 147";"148 - 156"];
LengthOfField = {3;58;26;58;3;8.25};
ContentsOfField = [...
    "tail bits";...
    "encrypted bits";...
    "training sequence bits";...
    "encrypted bits";...
    "tail bits";...
    "guard period (bits)"...
    ];
d = table(BitNumber,LengthOfField,ContentsOfField);
end

frequencyCorrectionBurstDescription

Этот функциональные форматы таблица, чтобы показать информацию о пакетных полях коррекции частоты.

function d = frequencyCorrectionBurstDescription()
BitNumber = ["0 - 2";"3 - 144";"145 - 147";"148 - 156"];
LengthOfField = {3;142;3;8.25};
ContentsOfField = [...
    "tail bits";...
    "fixed bits";...
    "tail bits";...
    "guard period (bits)"...
    ];
d = table(BitNumber,LengthOfField,ContentsOfField);
end

synchronizationBurstDescription

Этот функциональные форматы таблица, чтобы показать информацию о пакетных полях синхронизации.

function d = synchronizationBurstDescription()
BitNumber = ["0 - 2";"3 - 41";"42 - 105";...
    "106 - 144";"145 - 147";"148 - 156"];
LengthOfField = {3;39;64;39;3;8.25};
ContentsOfField = [...
    "tail bits";...
    "encrypted bits";...
    "extended training sequence bits";...
    "encrypted bits";...
    "tail bits";...
    "guard period (bits)"...
    ];
d = table(BitNumber,LengthOfField,ContentsOfField);
end

dummyBurstDescription

Этот функциональные форматы таблица, чтобы показать информацию о фиктивных пакетных полях.

function d = dummyBurstDescription()
BitNumber = ["0 - 2";"3 - 144";"145 - 147";"148 - 156"];
LengthOfField = {3;142;3;8.25};
ContentsOfField = [...
    "tail bits";...
    "mixed bits";...
    "tail bits";...
    "guard period (bits)"...
    ];
d = table(BitNumber,LengthOfField,ContentsOfField);
end

accessBurstDescription

Этот функциональные форматы таблица, чтобы показать информацию о пакетных полях доступа.

function d = accessBurstDescription()
BitNumber = ["0 - 7";"8 - 48";"49 - 84";...
    "85 - 87";"88 - 156"];
LengthOfField = {8;41;36;3;68.25};
ContentsOfField = [...
    "extended tail bits";...
    "synch. sequence bits";...
    "encrypted bits";...
    "tail bits";...
    "guard period (bits)"...
    ];
d = table(BitNumber,LengthOfField,ContentsOfField);
end