Этот пример показывает, как параметризовать и сгенерировать различные системы координат 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]. Различные типы пакетов и защитный период описаны в этих следующих разделах.
Нормальный пакет состоит из этих битовых полей и может появляться в системах координат восходящей или нисходящей линии связи. Все хвостовые биты равны нулю. Основываясь на указанном коде обучающей последовательности (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)"
Пакет доступа состоит из этих битовых полей и может появляться только в кадрах восходящей линии связи. Все хвостовые биты равны нулю.
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)"
Пакет коррекции частоты состоит из этих битовых полей и может появляться только в кадрах нисходящей линии связи. Все хвостовые биты и фиксированные биты равны нулю. Модулирование всех нулей с помощью 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)"
Пакет синхронизации состоит из этих битовых полей и может появляться только в нисходящих кадрах. Все хвостовые биты равны нулю.
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 spectrogram(x,500,[],[],Rs,'centered') title('GSM Uplink TDMA Frame - Spectrogram')
Сконфигурируйте нисходящую систему координат 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)')
Постройте график спектрограммы системы координат. Этот график показывает один тональный сигнал во время временного паза 0 из-за FB.
figure spectrogram(x,500,[],[],Rs,'centered') title('GSM Uplink TDMA Frame - Spectrogram')
Создайте многоадресную структуру с 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)')
Пакеты GSM должны увеличиваться и уменьшаться во время защитных периодов [2]. The gsmFrame
функция реализует характеристики роста и падения всплесков как синусоиды. Пакет растёт с нуля до полной амплитуды в количестве длительностей символов, заданных RiseTime
значение свойства. Разрешение RiseTime
равен 1/, где представляет 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)
Пакет падает с полной амплитуды на нуль в количестве длин символов, заданных Time
падения свойство. Разрешение
FallTime
равен 1/, где представляет SamplesPerSymbol
значение свойства gsmDownlinkConfig
объект. Задайте FallTime
до длительности 2,75 символов.
Переместите начало времени спада вправо на 0,25 длительности символов путем установки FallDelay
на 0.25
. Когда падают Delay
является 0
пакет начинает снижаться с полной амплитуды в конце полезной части пакета.
cfg = gsmDownlinkConfig; cfg.FallTime = 2.75; cfg.FallDelay = 0.25; gsmCheckTimeMask(cfg)
[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