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

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

Введение

Стандарт 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 кГц.

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 для AB и BN147 для NB, FB, SB и фиктивных пакетов. Этот рисунок показывает полезные и активные части пакета.

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

Сконфигурируйте систему координат TDMA GSM восходящей линии связи с помощью 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 функция, а затем вычислите значения временной оси в ms. График показывает 8 пакетов в системе координат с защитными периодами между каждым пакетом. Как описано в разделе «Пакет доступа» (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.

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

Сконфигурируйте нисходящую систему координат TDMA GSM с помощью 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 кадром, как показано на рисунке в разделе Введение. Создайте три 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]. The 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.

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

Переместите начало времени спада вправо на 0,25 длительности символов путем установки FallDelay на 0.25. Когда падают Delay является 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 Physical слоя на радио- путь. Общее описание "3rd Генерация Partnership Project; Группа технических спецификаций Радиосеть доступ.

[2] 3GPP TS 45.002, «GSM/EDGE Multiplexing and multiple access on the radio path». Техническая спецификация Группа Радио Доступа Сеть

[3] 3GPP TS 45.004, «Модуляция GSM/EDGE». Общее описание "3rd Генерация Partnership Project; Техническая спецификация Группа Радио Доступа Сеть

Вспомогательные функции

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
Для просмотра документации необходимо авторизоваться на сайте