Перейти к содержанию
    

структура модема при 8psk

я спрашивал о проблеме обнаружения преамбулы из-за большого разброса амплитуды входного сигнала. мне кажется, для решения этой проблемы стоит на входе приемника поставить систему АРУ. насколько это приемлемый метод? если это то, что мне нужно, посоветуйте, уважаемые знатоки, какой-нибудь приемлемый алгоритм, плиз.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если динамика цифровой части приемника позволяет, то лучше хотя бы часть AGC в цифре делать. (Т.е оцениваешь мощность сигнала и умножаешь сигнал на соответствующий множитель на входе СФ). Просто, неожиданные переключения внешней системы АРУ при приеме данных могут привести к сюрпризам. В модеме нужно знать, когда изменилось усиление приемника (особенно, если это происходит скачком). Конкретика зависит от проектируемой системы связи.

Есть еще алгоритмы поиска с адаптивным порогом, когда порог обнаружения преамбулы подстраивается в соответствии с наблюдаемым уровнем сигнала на входе СФ. Ключевые слова - adaptive threshold detection.

 

PS Тут все зависит от скорости замираний и инреционности системы АРУ. Если АРУ не успевает следить за федингом, то используется адаптивный порог.

Изменено пользователем andyp

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

продолжаю разрабатывать 8psk модем. тестирую различные типы эквалайзеров. столкнулся с проблемой при реализации эквалайзера, который бы настраивался по известной последовательности. как я понимаю, отличие его только в том, что он на каком-то определенному начальном участке времени, вычисляет сигнал ошибки не как разность значения исходного входного сигнала и наиболее подходящего значения точки идеального созвездия, а как разность исходного входного сигнала и текущего значения известной последовательности. вот в чем вопрос: мне не известна символьная фаза входного сигнала, как быть в таком случае? перебирать все 8 возможных значений фаз для настройки эквалайзера. либо мне нужно каким-то образом работать с разностью фазы текущего значения известной последовательности и предыдущего?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а как разность исходного входного сигнала и текущего значения известной последовательности.

 

Непонятно в чём проблема, берёте разность и всё?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подозреваю, что вопрос о совместной работе эквалайзера и фапч несущей. Если так, то нужно рассказать, как организовано это совместное оценивание.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вот в чем вопрос: мне не известна символьная фаза входного сигнала, как быть в таком случае? перебирать все 8 возможных значений фаз для настройки эквалайзера. либо мне нужно каким-то образом работать с разностью фазы текущего значения известной последовательности и предыдущего?

вы же как то ищите, где у вас стоит обучалка ? Тут возможны 2 варианта :

1. Подсовываете обучалку без учета поворота созвездия. Эквалайзер сам довернет созвездие, но в этом случае метод поиска обучалки должен быть инвариантен повороту фазы созвездия.

2. Подсовываете обучалку с учетом поворота созвездия. В этом случае метод поиска обучалки должен выдавать не только наличие последовательности в РК но и оценивать поворот созвездия.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вы же как то ищите, где у вас стоит обучалка ?

Подозреваю, что вопрос о совместной работе эквалайзера и фапч несущей. Если так, то нужно рассказать, как организовано это совместное оценивание.

 

как и описывалось выше в теме, я "ловлю" преамбулу с помощью банка фильтров, далее рассчитываю частотную отстройку с помощью комплексно-сопряженной свертки с преамублой, и последующий сигнал, с учетом этой отстройки, переношу на нулевую частоту. сразу же за преамбулой, по которой рассчитывается частотная расстройка, следует обучающая последовательность. таким образом я знаю ее начало. как я понимаю фазовое несоответствие между принятыми значениями обучающей последовательности и имеющей заранее известной последовательностью на приемной стороне может отличатся на pi.

 

1. Подсовываете обучалку без учета поворота созвездия. Эквалайзер сам довернет созвездие

сможет ли эквалайзер достаточно быстро довернуть фазу созвездия на максимальную отстройку равную pi? не повлияет ли это сильно на скорость сходимости?

 

2. Подсовываете обучалку с учетом поворота созвездия. В этом случае метод поиска обучалки должен выдавать не только наличие последовательности в РК но и оценивать поворот созвездия.

 

не совсем понятна идея, каким образом это делается?

 

я думал, может быть первый принятый символ обучалки, довернуть до ближайшей точки фазового созвездия. далее сравнить эту точку с первым символом заведомо известной последовательности. оценить их разность, которая может принимать значения [-pi, -3/4pi,... +1/2pi, +3/4pi, +pi] и все дальнейшие входные символы обучалки доворачивать на эту фазу?! делается ли это так? или не до конца ясен мой вопрос?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

сможет ли эквалайзер достаточно быстро довернуть фазу созвездия на максимальную отстройку равную pi? не повлияет ли это сильно на скорость сходимости?

сможет, но в зависимости от метода адаптации. LMSу требуется большее время чем RLS. Скорость сходимости, если речь идет о работе в канале с ISI, не изменится. В тесте начального старта эквалайзера, если сравнивать с неповернутым созвездием, разница будет.

 

не совсем понятна идея, каким образом это делается?

Ну например, синхра 1, -1, 1 -1, 1 1 -1 1, а видите вы -1, 1, -1, 1, -1, -1, 1, 1 Логично предположить что фаза повернулась на 180 градусов.

 

я думал, может быть первый принятый символ обучалки, довернуть до ближайшей точки фазового созвездия. далее сравнить эту точку с первым символом заведомо известной последовательности. оценить их разность, которая может принимать значения [-pi, -3/4pi,... +1/2pi, +3/4pi, +pi] и все дальнейшие входные символы обучалки доворачивать на эту фазу?!

Можно и так сделать, но в шумах возможна ошибка определения поворота фазы.

 

Но судя по тому что вы описали, вам можно просто подсунуть обучалку, а эквалайзер все сделает как надо. Потеряете первые несколько сот символов (если речь идет про LMS) ну а дальше будет работать как надо.

 

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

Кстати, не забудьте что начало обучалки нужно искать на выходе эквалайзера, а не на его входе. Т.к. фильтр прямой ветви может двигать сигнал от 0 до количества тапов в дискретах домена в котором работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

сможет ли эквалайзер достаточно быстро довернуть фазу созвездия на максимальную отстройку равную pi? не повлияет ли это сильно на скорость сходимости?

 

Сможет, влияет, но нет смысла точно фазу доворачивать, эквалайзер в любом случае будет этим заниматься, так как вы принимаете несколько лучей с разными фазами. Ещё может быть ошибка в оценке частоты, и созвездие будет слишком быстро вращаться для адаптации эквалайзера, используйте совместную настройку ФАПЧ и эквалайзера.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

фазу доворачивать, эквалайзер в любом случае будет этим заниматься, так как вы принимаете несколько лучей с разными фазами. Ещё может быть ошибка в оценке частоты, и созвездие будет слишком быстро вращаться для адаптации эквалайзера, используйте совместную настройку ФАПЧ и эквалайзера.

у меня есть первоначальная грубая компенсация частоты, и затем еще реализован фапч, который работает совместно с эквалайзером, как вы и сказали.

 

Кстати, не забудьте что начало обучалки нужно искать на выходе эквалайзера, а не на его входе. Т.к. фильтр прямой ветви может двигать сигнал от 0 до количества тапов в дискретах домена в котором работает.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

как и описывалось выше в теме, я "ловлю" преамбулу с помощью банка фильтров, далее рассчитываю частотную отстройку с помощью комплексно-сопряженной свертки с преамублой, и последующий сигнал, с учетом этой отстройки, переношу на нулевую частоту. сразу же за преамбулой, по которой рассчитывается частотная расстройка, следует обучающая последовательность. таким образом я знаю ее начало. как я понимаю фазовое несоответствие между принятыми значениями обучающей последовательности и имеющей заранее известной последовательностью на приемной стороне может отличатся на pi.

 

Если Вы определили расстройку несущей с помощью банков фильтров, то можете определить не только скорость вращения созвездия, но и его начальную фазу.

После переноса преамбулы на нулевую частоту (естественно учитывая обнаруженную расстройку, умножением на exp(iwn)), фаза (как и амплитуда) комплексной синусоиды (со снятой модуляцией и несущей) определяется просто усреднением сигнала по преамбуле и взятием арктангенса (суммы квадратов для амплитуды, если нужно).

Это оценки максимального правдоподобия по преамбуле. ФАПЧ дальше можно запустить мгновенно с известных значений частоты и фазы, если, конечно ГУН у вас цифровой, а не аналоговый.

Ошибка измерения фазы не может быть в пределах pi, а небольшая и известно какая

 

сможет ли эквалайзер достаточно быстро довернуть фазу созвездия на максимальную отстройку равную pi? не повлияет ли это сильно на скорость сходимости?

 

не совсем понятна идея, каким образом это делается?

 

Ошибка фазы, если доделать оценку её по преамбуле вовсе не в пределах pi, а задается критерием Крамера-Рао для фазы.

http://electronix.ru/forum/index.php?act=A...st&id=39182

var(Teta)=1/(SNR*N), т.е. если, например, N=32, SNR=10 (наверное же не 2 для 8psk), то стандартное отклонение - градусов где-то 5 (на вскидку 1/17 радиана), не больше

 

Она небольшая, но возможно для приема и недостаточная (как и ошибка оценки частоты несущей и фазы символьной, определенных по реакции банка фильтров). По преамбуле измеряются грубые оценки всех параметров, что обеспечивает хорошие условия для сходимости адаптивным следящим подсистемам.

 

Как дальше совместно настраивать и ФАПЧ и эквалайзер, словами не описать. Это уже не наука, а искусство- наука решает проблемы отдельно, разделяя переменные

В первом приближении запускайте ФАПЧ и эквалайзер независимо, но одновременно. Все будет очень нелинейно, чтобы заценить, но есть надежда, что все сойдется само.

Дальше задача состоит в том, чтобы наворотить такую блок-схему с перекрестными связями между подсистемами (ФАПЧ несущей, эквалайзер, ФАПЧ символьной), чтобы обеспечить одновременную сходимость всех ошибок к минимуму по короткой траектории. Понятно, что оптимальной блок-схемы на все случаи жизни не существует

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

как и было предложено в данной теме, я оцениваю начальную растройку фазы по преамбуле, следующим образом(matlab):

t =inSignal(i)*conj(preamble(i));

phiError =atan(imag(t)/real(t))/(2*pi);

 

таким образом у меня фазавая ошибка вычисляется как бы по модулю pi. т.е. например если реальная фазовая ошибка pi+pi/4, то phiError будет равно pi/4.

так как символьная фаза может быть сдвинута на произвольный угол, мне нужно чтобы phiError в результате вычисления равнялось именно pi+pi/4, а не просто pi/4. не могу сообразить, как это можно написать в матлабе.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

как и было предложено в данной теме, я оцениваю начальную растройку фазы по преамбуле, следующим образом(matlab):

t =inSignal(i)*conj(preamble(i));

phiError =atan(imag(t)/real(t))/(2*pi);

 

таким образом у меня фазавая ошибка вычисляется как бы по модулю pi. т.е. например если реальная фазовая ошибка pi+pi/4, то phiError будет равно pi/4.

так как символьная фаза может быть сдвинута на произвольный угол, мне нужно чтобы phiError в результате вычисления равнялось именно pi+pi/4, а не просто pi/4. не могу сообразить, как это можно написать в матлабе.

 

 

http://cens.ioc.ee/local/man/matlab/techdoc/ref/atan2.html

 

P = atan2(Y,X) returns an array P the same size as X and Y containing the element-by-element, four-quadrant inverse tangent (arctangent) of the real parts of Y and X.

 

Только нужно убрать ещё и найденную частотную расстройку w

 

t(n) =inSignal(n)*conj(preamble(n))*exp(iwn);

P = atan2(mean(Imag(t)),mean(Real(t)))

A = Abs(mean(t));

 

и не перепутать к какому моменту времени относится фаза - для запуска ФАПЧ фазу нужно оценить для первого отсчета после преамбулы

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

t(n) =inSignal(n)*conj(preamble(n))*exp(iwn);

P = atan2(mean(Imag(t)),mean(Real(t)))

спасибо за atan2.

 

1)в разрабатываемом модеме использую Гарднер по тактовой, tanlock по несущей и TSE RLS DFE эквалайзер, + предварительную частотную и фазовую корректировки по преамбуле. вопрос в обучении эквалайзера. правильно ли я понимаю, обучалку нужно запускать в тот момент, когда первый символ принимаемой обучающий последовательности при свертке с весовыми коэффициентами, попадает на центральный коэффициент, изначально равный единице? получается задержка, на половину длины фильтра. и только начиная с этого момента стоит начинать корректировку весовых коэффициентов?

 

2)кто-нибудь может сказать что либо доброе или плохое про алгоритм Калмана по сравнению с RLS и LMS?

 

3) я понимаю, что все очень относительно, но какой длинны обучающие последовательности рекомендуется использовать?

Изменено пользователем Виктор39

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...