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
spectrogram(x,500,[],[],Rs,'centered')
title('GSM Uplink TDMA Frame - Spectrogram')

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

Сконфигурируйте нисходящий 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)')

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

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

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

Создайте структуру сверхкадра с 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)')

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

Пакеты 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)

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

cfg.RiseDelay = -1.5;
gsmCheckTimeMask(cfg)

Пакет сползает вниз от полной амплитуды, чтобы обнулить в количестве длительности символа, заданной 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)

Ссылки

[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