Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: timing loop
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Kokos
Добрый вечер! Если я правильно понимаю то под этим определением имеется в виду тактовая синхронизация по клоку мастера? Может кто-нибудь объяснить "на пальцах" как это делается?

Передатчик передает OFDM сигнал с известной пилотной частотой. Нужно подстроить клок приемника АЦП. Как это делается?Допустим после БПФ по фазе сигнала на пилотном бине я могу определить смещение границы забора OFDM символа во времени, (это если я правильно понимаю timing recovery?). Далее по движению фазы во времени я могу определить разницу между номиналами тактовых частот приемника и передатчика. Но как подстроить фазу приемного клока по передающему?

Извиняюсь, если сумбурно. Буду благодарен за примеры.
quato_a
Перед БПФ должна быть реализована частотная и временная синхронизация по тренировочному символу (преамбула) либо по CP символов. На вход БПФ должны заходить синхронизованные по времени символы, т.е. Вы знаете начало символа в пределах CP. После БПФ по пилот-тонам можно оценить фазовое смещение символов, которое обусловлено:
- фазовым смещением от рассогласования синтезаторов передатчика/приёмника и канала,
- остаточным частотным рассогласованием после частотной синхронизации,
- остаточным временным смещением в пределах CP.
Это фазовое смещение в каждом символе компенсируется своими собственными пилотами и созвездия встают в свои квадратуры. Точность компенсации определяется таймингом сэмпла.
Это было, так сказать, оценка и компенсация целого фазового смещения.

Если подумать, то после этого можно оценить остаточное (дробное) фазовое смещение в символе и его завести, как обратную связь в дробный интерполятор (ресемплер, фильтр Фарроу), который поставить сразу же после АЦП и тем самым дробно сдвигать не сам клок, а находить значения сигнала между сэмплами.
http://www.ee.iitm.ac.in/~giri/pdfs/EE6002/book-cho.pdf
стр.178 - восстановление тактовой частоты

К слову, на практике не приходилось компенсировать дробное фазовое смещение. laughing.gif
Компенсации целого было достаточно (например, QAM64).
Kokos
Да так и есть, предварительно перед передачей данных там выполняется тренинг во время которого я определяю границы ofdm символа во времени по известному синхрофрейму, после чего по изменению фазы на пилоте от символа к символу получаю разность частот между генератором передающего устройства и моего приемника. Далее перестраиваю свой тактовый генератор (разница в частотах получается точнее чем +-50ppm предусмотренная в стандарте). Далее перед данными опять периодически передаются синхрофреймы по которым я перерассчитываю частотный эквалайзер при приеме. Созвездия хорошо различимы.

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

Вот у меня и возникает нехорошая мысль что передатчик слейва должен полностью синхронизироваться по тактовому клоку передатчика мастера. Такое вообще возможно?

During this state, the S shall do timing recovery and loop timing and may do other adaptive
AFE algorithms. Loop timing is defined as the combination of the slaving of the S ADC
clock to the received signal (i.e., to the M DAC clock), and tying the S DAC and ADC
clocks together.
quato_a
Ну у меня аналогичный принцип работы: мастер - слейв. Связь типа точка-точка. Транзакция обмена мастер-слейв разделена, например, 50/50 символов + таймауты между передачами для перестройки аналоговых трактов (усилители, коммутаторы и проч.).

Цитата(Kokos @ Dec 10 2016, 20:46) *
...после чего по изменению фазы на пилоте от символа к символу получаю разность частот между генератором передающего устройства и моего приемника.

Да, по пилотам можно определить частотное рассогласование CFO, но перед этим надо на самом первом этапе обработки оценить и скомпенсировать (грубо) CFO по автокорреляции. Без частотной синхры загонять сэмплы в FFT бессмысленно. По крайней мере, в моём случае оценка CFO показывает 20-30 кГц при том, что ширина одной поднесущей 60 кГц.
http://sdsu-dspace.calstate.edu/bitstream/....pdf?sequence=1
тут описан принцип long и short preamble
Оценить CFO через пилоты возможно только, если рассогласование в незначительных пределах.
Предыдущая книга по MIMO-OFDM: стр. 161, figure 5.7

Цитата(Kokos @ Dec 10 2016, 20:46) *
Далее перед данными опять периодически передаются синхрофреймы по которым я перерассчитываю частотный эквалайзер при приеме.

Не совсем понял, то есть у Вас для того, чтобы пройти все этапы синхронизации требуется принять несколько фреймов с синхросимволами?
По первому фрейму временная синхра ... таймаут ожидания ... по 2-му фрейму частотная синхра ... таймаут ожидания ... по 3-му фрейму эквалайзирование?

Kokos
Тут нужно отметить что у меня сигнал уже на нулевой частоте изначально. Полоса 1.104 МГц, частота дискретизации 2.208 МГц. Частотное разделение канала вверх и вниз. Вот, я подозреваю что нужно добиться полной синхронизации частот дискретизации передатчика мастера и приемника слейва.

Я оцениваю разницу и перестраиваю свою частоту дискретизации своего устройства (+-50ppm). И выполняю временную синхронизацию(по синхрофреймам корреляцией определяю место начала фреймов для БПФ). Это все происходит во время инициализации(тогда же настройка трактов усиления).

Когда передаются данные, 1 раз в 69 фреймов передается синхрофрейм, по нему перестраиваю эквалайзер чтобы компенсировать малые расхождения от разности частот дискретизации передатчика и приемника.
quato_a
Цитата(Kokos @ Dec 10 2016, 23:46) *
Я оцениваю разницу и перестраиваю свою частоту дискретизации своего устройства (+-50ppm).

На этапе частотной синхронизации не нужно перестравить дискретизацию устройства (это больше похоже на тактовую синхронизацию).
Пример:
Фаза в пике автокорреляции по преамбуле или CP покажет на разницу частот синтезаторов передатчика и приёмника. Это значение фазы заводим на cordic, который выдает гармонический сингал cos/sin, который комплексно умножаем на входной I/Q, тем самым компенсируем разницу частот.
В книге MIMO-OFDM в разделе CFO про это подробно рассказано.

Цитата(Kokos @ Dec 10 2016, 23:46) *
Тут нужно отметить что у меня сигнал уже на нулевой частоте изначально. Полоса 1.104 МГц, частота дискретизации 2.208 МГц. Частотное разделение канала вверх и вниз. Вот, я подозреваю что нужно добиться полной синхронизации частот дискретизации передатчика мастера и приемника слейва.

У меня в системе тоже оцифровывается сигнал на нулевой частоте. Правда, полоса 1.104 МГц прямо на самом краю fs/2; - опасно. У меня fs = 61.44 МГц, полоса 12 МГц. Повторюсь, работаю без синхронизации fs передатчика/приёмника.

rolleyes.gif
Kokos
Ой, я не так выразился прошу прощения. У меня в самой системе нет гетеродинирования, т.е. сигнал изначально на нулевой частоте, без переносов.
Т.о. частотную синхронизацию мне делать не нужно. Временная сделана корреляцией синхрофреймов. А тактовая - перестройкой задающего генератора (+-50ppm) по сдвигу фазы на пилоте за интервал времени. Вообще могут быть какие-нибудь вредные эффекты из-за несовпадения по фазе тактовых частот передатчика и приемника? Или мне следует искать проблемы в чем-то другом все же?
quato_a
Цитата(Kokos @ Dec 12 2016, 09:26) *
Вообще могут быть какие-нибудь вредные эффекты из-за несовпадения по фазе тактовых частот передатчика и приемника?


Тут вредные эффекты не сколько в несовпадение фаз тактовых генераторов, а сколько в несовпадении этих частот. Из-за 2-го фактора будет возникать межсимвольная интерференция.
Все относительно: период символа к периоду семплирования.

Во к примеру решил для себя подсчитать:
fs tx = 61.44 МГц
Ts tx = 16.276 нс
длина символа len = 1024 + 64 (CP) = 1088 сэмплов fs
Tsym tx = 17.708 мкс

Предположим, что генератор передатчика идеальный, а нестабилен генератор приёмника на +50ppm.
fs rx = fs tx * (1 + ppm) = 61.443072 МГц
Ts rx = Ts tx / (1 + ppm) = 16.275 нс

N = len * (1 + ppm) = 1088.0544
Т.е. за 1088 тактов на приёмнике оцифруется более, чем один символ: 1-й символ + 0.0544 части такта следующего.

Верно ли?
Kokos
Да все верно, возникает вопрос приемник мастера сам должен компенсировать это расхождение, либо передатчик слейва должен как-то "предискажать сигнал" (не знаю как это назвать по-научному)?
quato_a
Цитата(Kokos @ Dec 12 2016, 13:51) *
Да все верно, возникает вопрос приемник мастера сам должен компенсировать это расхождение, либо передатчик слейва должен как-то "предискажать сигнал" (не знаю как это назвать по-научному)?


Если пакетные транзакции.
Допустим, синхронизировались по синхросимволу, далее от символа к символу расхождение возрастает, а тут и фрейм закончился. Все результаты синхронизации, оценки и прочего сбрасываем; оставляем только уровень АРУ. И по новой синхронизируемся по новому синхросимволу, причем предыдущие расхождение нивелируется, начнет заново расходиться.

Ну а если бесконечный поток, то можно дробно передискретизировать сам входной сигнал через ресемплер.
http://ru.dsplib.org/content/resampling_lagrange.html
Kokos
Статья полезная, спасибо. С приемной стороны слейва я понимаю как сделать обработку. Меня беспокоит возможно ли такое что с выходным сигналом для мастера нужно делать что-то подобное?
quato_a
Цитата(Kokos @ Dec 13 2016, 15:42) *
Статья полезная, спасибо. С приемной стороны слейва я понимаю как сделать обработку. Меня беспокоит возможно ли такое что с выходным сигналом для мастера нужно делать что-то подобное?


Ресемплер на входе приемников мастера и слейва.

Ранее Вы упоминали, что используется частотное разделение каналов uplink/downlink.
Как вы это реализуете без переноса на несущую. Переносите в цифровом виде: перед ЦАПом и после АЦП ставите up/downconverter?
Kokos
Там просто не перекрывающиеся частотные каналы используются "вверх" 1-31 бин полосы, "вверх" - 32-255 бин полосы. На ОБПФ и в линию.
quato_a
Цитата(Kokos @ Dec 13 2016, 21:32) *
Там просто не перекрывающиеся частотные каналы используются "вверх" 1-31 бин полосы, "вверх" - 32-255 бин полосы. На ОБПФ и в линию.


В теории про такой способ не находил, но размышлял.
Получается, если модемы мастера и слейва постоянно и одновременно фигачат, то у Вас хорошая межканальная интерференция от CFO, так что поднесущие в тракте друг на друга полезут. rolleyes.gif
stealth-coder
Цитата(Kokos @ Dec 12 2016, 13:51) *
Да все верно, возникает вопрос приемник мастера сам должен компенсировать это расхождение, либо передатчик слейва должен как-то "предискажать сигнал" (не знаю как это назвать по-научному)?


Обычно слейв подстраивается под мастер. Как правило это делают аппаратно, изменяя частоту опорного генератора с помощью ЦАП (в частности таким образом функционируют все мобильные телефоны, имеющие собственный низкостабильный опорник из-за ограниченных габаритов и потребления и использующие сигнал базовой станции в качестве референсного для подстройки). Если возможности такой подстройки у Вас нет, то это можно сделать программно с помощью передискретизации.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.