С.А. Милованов

Локальная сеть GSM на основе OpenBTS

 

Часть 6. Обеспечение требуемого качества

тактовой синхронизации (Clock Tamer)

 

 

Обеспечение требуемого качества тактовой синхронизации в проектируемой сети может быть достигнуто путем использования в USRP высокоточного тактового генератора с частотой 52 МГц. Целесообразность использования данной тактовой частоты была описана в статье 3.

 

Весь процесс обеспечения необходимой тактовой синхронизации состоит из ряда этапов:

1.            изменение программного кода GNU Radio;

2.            коррекция аппаратной части USRP;

3.            установка на USRP внешнего тактового генератора;

4.            калибровка тактового генератора до требуемого уровня точности.

 

Изменение программного кода GNU Radio является начальным этапом, который необходим в процессе компиляции самой среды, и был описан в статье 3.

 

2.            Коррекция аппаратной части USRP

 

На плате USRP необходимо сделать изменения, показанные на рисунке 1 [2]:

 

1.            Припаять SMA разъем в J2001. Это вход тактового генератора. При пайке SMA разъема необходимо быть осторожным, чтобы не повредить тонкую «дорожку» от J2001 к C927;

2.            Переместить R2029 в R2030. Это отключает «бортовой» тактовый генератор. R2029/R2030 – резисторы с номиналом в 0 Ом. Данный шаг не является строго обязательным;

3.            Переместить C925 в C926;

4.            Удалить C924;

 


 

Рисунок 1. Коррекция аппаратной части USRP

 

3.            Установка на USRP внешнего тактового генератора

 

В настоящее время в проектах OpenBTS широко используются два варианта тактовых генераторов: продукт под названием «ClockTamer» фирмы «Fairwaves» и «FA-SYS1» фирмы «Funkamatuer» [1]. Для проектируемой сети следует остановить свой выбор на варианте «ClockTamer», так как он имеется в наличии, к тому же «FA-SYS1» требует модификации с целью уменьшения выходного напряжения для предотвращения выгорания входа USRP.

ClockTamer представляет собой устройство, изготовленное фирмой Fairwaves с целью создания недорогого малогабаритного конфигурируемого тактового генератора. Он был специально разработан для использования с USRP, но так же совместим с любым другим устройством, имеющим вход внешнего тактового генератора [3].

 

Технические характеристики ClockTamer-1.2 приведены в таблице 1 [4].

 

Таблица 1. Технические характеристики ClockTamer-1.2

 

Так как в состав используемого USRP входит новая модификация дочерней RFX-платы, отсутствует 16-контактный разъем J24. Для надежной фиксации ClockTamer внутри USRP, данный разъем можно припаять, но этот шаг не обязателен [3].

 

Обычно ClockTamer поставляется в следующей комплектации (рис.2):

 

1.            Плоский кабель (шлейф). Он может быть использован для удаленного подключения ClockTamer к RFX-разъему дочерней платы USRP. В рамках данного проекта плоский кабель использоваться не будет, так как нормальным способом размещения ClockTamer в USRP является его непосредственная установка в разъем RFX-платы (см. рис.3);

2.            Собственно ClockTamer;

3.            Соединительный кабель U.FL. Используется для подключения ClockTamer к входу тактового сигнала USRP;

4.            2-проводной кабель питания;

5.            16-контактный разъем для установки на дочерней RFX-плате;

6.            SMA разъем для установки на входе тактового сигнала USRP;

7.            GPS антенна (только если ClockTamer настроен на использование в GPS).

 

 

Рисунок 2. Стандартная комплектация ClockTamer

 

Способ подключения ClockTamer к USRP показан на рисунке 3 [3].

 


 

Рисунок 3. Способ подключения ClockTamer к USRP

 

 

После установки на USRP внешнего тактового генератора, необходимо убедиться в правильности подключения и корректности работы устройства:

 

1.            Подать питание на USRP;

2.            Если ClockTamer не подключен к компьютеру через MiniUSB-порт, то светодиод на нем не должен светиться, если подключен - индикатор должен моргнуть один раз и затем гореть постоянно;

3.            Один из светодиодов на USRP должен быстро мигать;

4.            Необходимо воспользоваться приложениями GNU Radio (например, usrp_fft.py) и убедиться, что USRP передает и получает данные в обычном режиме.

 

4.            Калибровка тактового генератора до требуемого уровня точности

 

Для того чтобы гарантировать максимально возможную точность, внешний тактовый генератор должен быть откалиброван. Вероятно, лучшим способом определить точность генератора является использование осциллографа, который представляет собой довольно дорогостоящее оборудование. Есть и другие способы для калибровки тактового генератора, например – использование сигналов соседних базовых станций GSM. Тактовые генераторы, установленные на базовых станциях, обычно имеют точность до 0.05 ppm, поэтому их сигналы можно использовать в качестве эталонной точности.

Базовая станция передает пакет частотной коррекции по соответствующему каналу (Frequency Correction CHannel - FCCH) в фиксированных позициях. FCCH повторяется каждые 51 TDMA-кадр, пакет частотной коррекции находится в нулевом временном слоте 0, 10, 20, 30 и 40 кадров.

Пакет частотной коррекции состоит из определенной битовой последовательности, которая после модуляции становится синусоидальным сигналом с частотой, равной одной четверти битовой скорости GSM, т.е. (1625000/6) / 4 = 67708,3 Гц. Обнаружив канал с данным чистым тоном, мобильная станция может определить смещение частоты собственного тактового генератора относительно принятой несущей 67708,3 Гц.

Существует множество способов идентификации чистого тона. Например, можно принять пакет данных и исследовать его с помощью преобразования Фурье, что позволит оценить распределение мощности сигнала по определенным частотам. Кроме того, можно использовать полосовой фильтр на 67708,3 Гц, а затем сравнить мощность сигнала до и после прохождения через фильтр. Однако оба описанных метода имеют недостатки. Метод БПФ требует значительных ресурсов и не может легко обнаружить края пакета частотной коррекции. Метод фильтрации либо не точен, либо не позволяет обнаружить большие смещения [5].

 

Для калибровки тактового генератора ClockTamer в проектируемой сети применяется ранее установленная и используемая в разделе 4.2. программа «Kalibrate», в которой реализован гибрид БПФ и метода адаптивной фильтрации [6]. «Kalibrate» работает по следующему принципу. Адаптивный эквалайзер (ALE) пытается предсказать входной сигнал путем адаптации коэффициентов своего фильтра. Предсказание фактического сигнала и коэффициенты настроены таким образом, что ошибка сведена к минимуму. Если на входе мощный узкополосный сигнал на фоне широкополосного шума, на выходе фильтра будет чистая синусоидальная несущая той же частоты, почти свободная от широкополосного шума. «Kalibrate» вычисляет ошибку между предсказанием ALE и входным сигналом в каждой его точке, после чего вычисляет среднее значение всех ошибок. Когда ошибка падает ниже средней по длине пакета частотной коррекции, это указывает на обнаружение данного пакета. После обнаружения пакета частотной коррекции, необходимо входной сигнал, соответствующий низкому уровню ошибки, пропустить через БПФ. Наибольший пик на выходе БПФ соответствует частоте обнаруженного пакета частотной коррекции. Полученный пик затем используется для определения частотного рассогласования [5].

 

Необходимо просканировать частотный диапазон для обнаружения каналов, занятых соседними BTS, а так же уровня их сигналов:

 

cd /home/melsp/projects/openbts/kal-v0.4.1/src

./kal -s 900 -F 52000000

 

Результат сканирования представляется в следующем виде:

 

kal: Scanning for GSM-900 base stations.

 

chan: 2 (935.4MHz + 722Hz)      power: 2395.33

chan: 5 (936.0MHz + 728Hz)      power: 3476.62

chan: 7 (936.4MHz + 631Hz)      power: 9503.83

chan: 9 (936.8MHz + 771Hz)      power: 4149.82

chan: 11 (937.2MHz + 724Hz)     power: 11580.14

chan: 12 (937.4MHz + 753Hz)     power: 7086.56

chan: 13 (937.6MHz + 764Hz)     power: 3402.56

chan: 19 (938.8MHz + 708Hz)     power: 4644.85

chan: 22 (939.4MHz + 711Hz)     power: 7934.10

chan: 24 (939.8MHz + 711Hz)     power: 4682.00

chan: 26 (940.2MHz + 712Hz)     power: 63218.39

chan: 27 (940.4MHz + 742Hz)     power: 31892.24

chan: 32 (941.4MHz + 776Hz)     power: 47903.01

chan: 35 (942.0MHz + 625Hz)     power: 3882.72

chan: 38 (942.6MHz + 637Hz)     power: 7385.61

chan: 63 (947.6MHz + 775Hz)     power: 3060.62

chan: 86 (952.2MHz + 723Hz)     power: 7473.38

chan: 89 (952.8MHz + 757Hz)     power: 5371.93

chan: 91 (953.2MHz + 757Hz)     power: 29049.97

chan: 95 (954.0MHz + 766Hz)     power: 6224.59

chan: 108 (956.6MHz + 761Hz)    power: 6604.87

chan: 114 (957.8MHz + 771Hz)    power: 4993.58

 

Из отображенного списка используемых каналов, необходимо выбрать канал с самой высокой мощностью (в данном случае – это «chan: 26», «power: 63218.39») и ввести команду для вычисления частотного рассогласования:

 

./kal -c 26 -F 52000000

 

Результат вычислений представляется в следующем виде:

 

Using GSM-900 channel 26 (940.2MHz)

 

average     [min, max]   (range, stddev)

+ 763Hz     [733, 786]   (53, 13.260225)

overruns: 25

not found: 0

 

Соответственно, среднее частотное рассогласование равно + 763 Гц.

 

После вычисления частотного рассогласования, необходимо устранить данную погрешность, программным способом изменив тактовую частоту ClockTamer. Для удобства, целесообразно воспользоваться простой программой, представляющей графический интерфейс по управлению ClockTamer – «ClockTamer control GUI» [7].

 

Для правильной работы «ClockTamer control GUI» необходимо установить ряд вспомогательных пакетов:

 

sudo aptitude install mercurial python-qt4-dev pyqt4-dev-tools python-numeric

 

После этого необходимо скачать, установить и запустить непосредственно «ClockTamer control GUI»:

 

hg clone https://code.google.com/p/clock-tamer/clock-tamer

cd clock-tamer/host/tamer-gui
./mk.sh

./tb.py

 

В окне настроек запустившейся программы имеется два важных поля:

 

 

Параметр «Fosc» должен соответствовать реальной частоте опорного TCXO/VCTCXO генератора, а в качестве параметра «Fout» должна быть установлена выходная тактовая частота ClockTamer – 52 МГц.

 

Зачастую, даже если частота TCXO изначально определена в программе, как 20 МГц, ее реальное значение может быть 20'000'005 Гц. Данное смещение на 5 Гц на частоте 20 МГц соответствуют 5/20e6 = 0,25 ppm (частей на миллион) и на частоте 900 МГц будет приводить к частотному рассогласованию, равному (5Гц/20МГц) * 900 = 225 Гц.

Стандарт GSM устанавливает точность опорной частоты для макро-BTS, равную 50 ppb = 0.05 ppm, и равную 100ppb = 0,1 ppm для фемтосот. Опыты показали, что смещение до 500 Гц на частоте 900 МГц приемлемо для более 90% телефонов, но все же рекомендуется откалибровать ClockTamer до 100ppb, чтобы гарантировать стабильную работу [8].

 

Итак, программа «Kalibrate» вычислила частотное рассогласование, равное +763 Гц. В качестве эталона использовался сигнал с частотой 940,2 МГц, а частота опорного TCXO генератора была определена в программе как 20 МГц. Исходя из полученных данных, можно вычислить погрешность опорного TCXO генератора: 763 Гц / 940,2 МГц * 20 МГц = 16 Гц. Необходимо скорректировать параметр «Fosc» на полученное значение погрешности: 20'000'000 – 16 = 19'999'984 (Гц).

 

Для сохранения калибровочного значения в памяти необходимо воспользоваться кнопкой «Store to EEPROM». Для установки внесенных изменений в параметры ClockTamer, необходимо воспользоваться кнопкой «SET»:

 

 

На этом процесс обеспечения требуемого качества тактовой синхронизации можно считать выполненным.  Если проверить частотное смещение с помощью «Kalibrate» снова, средний результат не должен превышать 20-30 Гц.

 

 

Использованная литература:

 

1. Сайт проекта GNU Radio [Электронный ресурс]. URL: http://gnuradio.org/redmine/projects/gnuradio/wiki/OpenBTSClockModifications (дата обращения: 17.04.2013);

2. Сайт проекта «Clock-Tamer» [Электронный ресурс]. URL: http://code.google.com/p/clock-tamer/wiki/ClockTamerUSRPInstallation (дата обращения: 22.04.2013);

3. Сайт компании «Fairwawes» [Электронный ресурс]. URL: http://shop.fairwaves.ru/clock-tamer/ClockTamer-1.2%20CMOS%20LVDS%20half-LVDS%20single-output%20LVDS (дата обращения: 22.04.2013);

4. Сайт проекта «Clock-Tamer» [Электронный ресурс]. URL: http://code.google.com/p/clock-tamer/wiki/FeaturesAndTechnicalSpecification?ts=1278865824&updated=FeaturesAndTechnicalSpecification#ClockTamer_-1.2 (дата обращения: 22.04.2013);

5. Сайт проекта «Kalibrate» [Электронный ресурс]. URL: http://thre.at/kalibrate/ (дата обращения: 22.04.2013);

6. G. Narendra Varma, Usha Sahu, G. Prabhu Charan, Robust Frequency Burst Detection Algorithm for GSM/GPRS

7. Сайт проекта «Clock-Tamer» [Электронный ресурс]. URL: http://code.google.com/p/clock-tamer/wiki/GUI (дата обращения: 22.04.2013);

8. Сайт проекта «Clock-Tamer» [Электронный ресурс]. URL: http://code.google.com/p/clock-tamer/wiki/ClockTamerCalibration (дата обращения: 22.04.2013).