В этом примере показано, как параметрировать и сгенерировать различный 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]. Различные пакетные типы и защитный период описаны в этих следующих разделах.
Нормальный пакет состоит из этих битовых полей и может появиться в восходящем канале или передать в нисходящем направлении системы координат. Все биты хвоста являются нулем. На основе заданного кода обучающей последовательности (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 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)"
Пакет синхронизации состоит из этих битовых полей и может появиться в нисходящих системах координат только. Все биты хвоста являются нулем.
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 Read-only properties: No properties.
Установите временные интервалы 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 Read-only properties: No properties.
Присвойте коды 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 Read-only properties: No properties.
Сгенерируйте основополосные выборки системы координат с помощью 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 Read-only properties: No properties.
Установите временные интервалы 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 Read-only properties: No properties.
Сгенерируйте основополосные выборки системы координат с помощью 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 Read-only properties: No properties.
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/, где представляет 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/, где представляет 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