Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как не дать адаптивному эквалайзеру умереть (+)
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
des00
В процессе возни с разными эквалайзерами возникли следующие вопросы.

Непрерывный модем, модуляция КАМ16 и выше. Слепой эквалайзер.
При работе эквалайзера, если он инициализирован в оптимальном режиме {0,0...,1,0...0} , внесением разных искажений можно увести его до такого состояния что коэффициенты фильтра будут малы. Когда искажения пропадают эквалайзер уже не может найти решение из этого состояния. При этом если использовался слепой детектор на основе определения точки на выходе эквалайзера, то он дает не правильное созвездие, а если слепой детектор по методу CMA то он только собирает точки в кучку, но созвездия не дает или поворачивает его на некоторый угол.Решение в этом случае только заново инициализировать эквалайзер. Вопрос такой : как правильно поступают в таком случае ? Неужели сброс эквалайзера это единственная мера приведения его в чувство ?

я нашел пару решений в данной ситуации :
1. Ввести ассиметрию эквалайзер. Используя неравномерный mu явно выделив желаемый центральный коэффициент.
2. Использовать детектор PS-SAGA(POINT-CONTOUR STOP-AND-GO ALGORITHM), по крайней мере в моих моделях он ведет себя намного лучше комбинации CMA(Godard) + DD на основе аппроксимации точки и логики их переключения.

Эквалайзер с настройкой по обучающей последовательности/слепой.

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

Transform domain эквалайзер.
я хочу внести ассиметрию в настройку эквалайзера, но в эквалайзерах такого типа коэффициенты фильтра идут в пространстве состояний используемого преобразования(Hadamard/DCT/DFT). Каждый коэффициент фильтра в пространстве состояний содержит в себе информацию обо всех коэффициентах во временной области. Можно ли внести ассиметрию, без промежуточного переноса приращений коэффициентов во временную область?


Спасибо!!!
DRUID3
Цитата(des00 @ Jul 15 2009, 11:14) *
Когда искажения пропадают эквалайзер уже не может найти решение из этого состояния... Вопрос такой : как правильно поступают в таком случае ? ...Неужели сброс эквалайзера это единственная мера приведения его в чувство ?

Многие современные люди задаются вопросом "как не дать умереть адаптивному эквалайзеру". Думаю ответ драматически прост - нужно было его сделать бессмертным еще на этапе проектирования crying.gif ... (druid3 зевнув и потянувшись всем своим бренным телом с укоризной посмотрел в небеса - обитель богов-халтурщиков dry.gif )...

А если серьезно, то чем адаптивный эквалайзер отличается от адаптивного фильтра? Не знаю как в Ваших местах но в наших они работают так - есть интервал рассмотрения(блочный, скользящий), есть целевая функция(критеий изменения коэффициентов), есть, собственно, поле изменяемых коэффициентов. Работает все это так - происходя изменения на интервале рассмотрения - происходит пересчет коэффициентов фильтра соответственно правилу заданному целевой функцией. И в чем собственно вопрос? Я не хамлю, просто что-то не возьму в толк а что, собственно, спрашивают wacko.gif . Если у Вас фильтр берет сигнал со своего же выхода - то он спроектирован не грамотно.
Цитата(des00 @ Jul 15 2009, 11:14) *
Когда искажения пропадают эквалайзер уже не может найти решение из этого состояния.

А собственно почему? wacko.gif
Как часто обращаться к целевой функции для изменения коэффициентов зависит от свойства_сигнала->восприятие_разработчика->возможности_аппаратуры.

Если получать отчеты для работы ОС адаптации возможно только с выхода фильтра(непонятно правда почему) то есть повод вспомнить аналоговые SSB-приемники, а именно работу их системы АРУ с петлей по НЧ. Она тоже могла аттенюатором полностью перекрыть сигнальный тракт - но удивительным образом восстанавливалась благодаря наличию дифференциального звена в цепи детектор_мощности->..->аттенюатор. Заодно можно вспомнить и ТАУ.

Цитата(des00 @ Jul 15 2009, 11:14) *
Спасибо!!!

Наздоровье, мне не жалко... biggrin.gif
Oldring
Цитата(DRUID3 @ Jul 15 2009, 15:36) *
есть целевая функция


Есть, но во многих практических случаях она хреновая, с глубоким оврагом или даже кучей локальных минимумов. Весь вопрос в том, как сделать её не столь хреновой, или может быть какими хитрыми извратами обойти её хреновости?
Serg76
Цитата(des00 @ Jul 15 2009, 12:14) *
Решение в этом случае только заново инициализировать эквалайзер. Вопрос такой : как правильно поступают в таком случае ? Неужели сброс эквалайзера это единственная мера приведения его в чувство ?

Я делаю ресет эквалайзера, т.е. возвращаю начальное состояние коэффициентов. На мой взгляд другого решения нет.
des00
Цитата(DRUID3 @ Jul 15 2009, 05:36) *
А если серьезно, то чем адаптивный эквалайзер отличается от адаптивного фильтра? Не знаю как в Ваших местах но в наших они работают так - есть интервал рассмотрения(блочный, скользящий), есть целевая функция(критеий изменения коэффициентов), есть, собственно, поле изменяемых коэффициентов. Работает все это так - происходя изменения на интервале рассмотрения - происходит пересчет коэффициентов фильтра соответственно правилу заданному целевой функцией. И в чем собственно вопрос? Я не хамлю, просто что-то не возьму в толк а что, собственно, спрашивают wacko.gif .


как работает адаптивный эквалайзер я разобрался, спасибо.

Цитата
Если у Вас фильтр берет сигнал со своего же выхода - то он спроектирован не грамотно.


очень интересно, вы хотите сказать что в основных книгах по эквалайзерам Хайкин/Диниз/Сайед они приводят не рабочие схемы эквалайзеров ? smile.gif

Цитата
Если получать отчеты для работы ОС адаптации возможно только с выхода фильтра(непонятно правда почему) то есть повод вспомнить аналоговые SSB-приемники, а именно работу их системы АРУ с петлей по НЧ. Она тоже могла аттенюатором полностью перекрыть сигнальный тракт - но удивительным образом восстанавливалась благодаря наличию дифференциального звена в цепи детектор_мощности->..->аттенюатор. Заодно можно вспомнить и ТАУ.


В атаче приведен простой пример, старт двух слепых эквалайзеров с нулевых начальных условий. Один с годардом, второй DD, оба попадают в устойчивое состояние, из которого не могут выйти. Т.к. оценочная функция попадает в локальный минимум. Если я не правильно спроектировал эквалайзер покажите пожалуйста что имеено не так, если вам не сложно поправьте именно эту модель %)

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



Цитата(Oldring @ Jul 15 2009, 06:03) *
Есть, но во многих практических случаях она хреновая, с глубоким оврагом или даже кучей локальных минимумов. Весь вопрос в том, как сделать её не столь хреновой, или может быть какими хитрыми извратами обойти её хреновости?


попробовав алгоритм stop-and-go основанный на алгоритме Сато я был приятно удивлен качеством его работы %)

Цитата(Serg76 @ Jul 15 2009, 11:09) *
Я делаю ресет эквалайзера, т.е. возвращаю начальное состояние коэффициентов. На мой взгляд другого решения нет.


вот именно это мне и не нравиться, т.к. детектор разваливания эквалайзера быстрым делать нельзя и получается что канал связи будет лежать достаточно длительное время.
petrov
Цитата(des00 @ Jul 15 2009, 12:14) *
В процессе возни с разными эквалайзерами возникли следующие вопросы.

Непрерывный модем, модуляция КАМ16 и выше. Слепой эквалайзер.
При работе эквалайзера, если он инициализирован в оптимальном режиме {0,0...,1,0...0} , внесением разных искажений можно увести его до такого состояния что коэффициенты фильтра будут малы. Когда искажения пропадают эквалайзер уже не может найти решение из этого состояния. При этом если использовался слепой детектор на основе определения точки на выходе эквалайзера, то он дает не правильное созвездие, а если слепой детектор по методу CMA то он только собирает точки в кучку, но созвездия не дает или поворачивает его на некоторый угол.Решение в этом случае только заново инициализировать эквалайзер. Вопрос такой : как правильно поступают в таком случае ? Неужели сброс эквалайзера это единственная мера приведения его в чувство ?


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

Цитата(des00 @ Jul 15 2009, 12:14) *
1. Ввести ассиметрию эквалайзер. Используя неравномерный mu явно выделив желаемый центральный коэффициент.


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

Цитата(des00 @ Jul 15 2009, 12:14) *
2. Использовать детектор PS-SAGA(POINT-CONTOUR STOP-AND-GO ALGORITHM), по крайней мере в моих моделях он ведет себя намного лучше комбинации CMA(Godard) + DD на основе аппроксимации точки и логики их переключения.


Выложите источник пожалуйста.

Цитата(des00 @ Jul 15 2009, 12:14) *
В процессе настройки центральный коэффициент может встать в любое место. Но при работе желательно что бы он был в центре эквалайзера. В одной книге прочитал что после настройки по обучающей последовательности, они предлагают определить местоположение центрального коэффициента и сдвинуть его в середину эквалайзера. Но в книге не было ни слова о том, как это реализовать на практике. Какими характеристиками должен обладать центральный коэффициент эквалайзера? Ведь при искажениях канала могут быть несколько коэффициентов приблизительно равной величины и явно выделить среди них главный нельзя.


Это из книги The Theory and Practice of Modem Design - Bingham? Я так понимаю в этой книге результаты работы которая привела к созданию обычных телефонных модемов, каналы там получше чем в радио, имхо плохо всё это будет работать в произвольном радиоканале.

Цитата(des00 @ Jul 15 2009, 12:14) *
Transform domain эквалайзер.
я хочу внести ассиметрию в настройку эквалайзера, но в эквалайзерах такого типа коэффициенты фильтра идут в пространстве состояний используемого преобразования(Hadamard/DCT/DFT). Каждый коэффициент фильтра в пространстве состояний содержит в себе информацию обо всех коэффициентах во временной области. Можно ли внести ассиметрию, без промежуточного переноса приращений коэффициентов во временную область?


Вроде как без преобразования туда и обратно не обойтись.

p. s. Если найдёте решения по этим вопросам напишите пожалуйста...
des00
Цитата(petrov @ Jul 16 2009, 00:52) *
Тоже думаю что от сброса в принципе не уйти, просто достаточно редко это должно происходить, также может периодически сбрасывать и настраивать по известной последовательности чтобы не дожидаться когда он деградирует окончательно. Ещё надо реальный канал смотреть, а то в модели может у вас слишком пессимистичный случай. CMA критерий не может поворот созвездия исправлять.


этот эффект я поймал чисто случайно, когда ради интереса собрал простой многолучевой канал. когда спросил коллег об этом они подтвердили что видели подобное в реальных модемах на реальных каналах и им интересно решение данной проблемы %)

Цитата
Тоже экспериментировал с этим, эффект есть, но гарантии что развалала не будет нет.


понятно, не все так просто значит.

Цитата
Выложите источник пожалуйста.


в атаче наиболее понятная и грамотная статья из всех что я нашел по stop-and-go алгоритмам.

Цитата
Это из книги The Theory and Practice of Modem Design - Bingham? Я так понимаю в этой книге результаты работы которая привела к созданию обычных телефонных модемов, каналы там получше чем в радио, имхо плохо всё это будет работать в произвольном радиоканале.


да из нее. меня интересует сам принцип, как они аппаратно распознают центральный коэффициент. если предположить телефонный канал, то как я понимаю проблема изменения задержки эквалайзера, при сдвиге коэффициента, в данном виде связи роли не играет.
petrov
Цитата(des00 @ Jul 16 2009, 11:11) *
в атаче наиболее понятная и грамотная статья из всех что я нашел по stop-and-go алгоритмам.


спасибо
DRUID3
Цитата(des00 @ Jul 16 2009, 06:20) *
как работает адаптивный эквалайзер я разобрался, спасибо.

уже радует...
Цитата(des00 @ Jul 16 2009, 06:20) *
очень интересно, вы хотите сказать что в основных книгах по эквалайзерам Хайкин/Диниз/Сайед они приводят не рабочие схемы эквалайзеров ? smile.gif

Да... В учебниках для педагогических целей очень часто пишут/приводят/печатают то чего в жизни не встречается за ненадобностью... Но все-таки - дайте страницу Хайкина, с какой Вы срисовали предмет своих нынешних переживаний. Тем более, что...

Цитата(des00 @ Jul 16 2009, 06:20) *
В атаче приведен простой пример, старт двух слепых эквалайзеров с нулевых начальных условий. Один с годардом, второй DD, оба попадают в устойчивое состояние, из которого не могут выйти. Т.к. оценочная функция попадает в локальный минимум. Если я не правильно спроектировал эквалайзер покажите пожалуйста что имеено не так, если вам не сложно поправьте именно эту модель %)

ШутниГ, да? smile.gif Это чо вообще за файл? Я же GNU-адепт, я не пользуюсь всякими буржуинскими матлабами... не хватает 49 000$. Хотя-бы скриншоты выложите.
des00
Цитата(DRUID3 @ Jul 16 2009, 16:55) *
Да... В учебниках для педагогических целей очень часто пишут/приводят/печатают то чего в жизни не встречается за ненадобностью... Но все-таки - дайте страницу Хайкина, с какой Вы срисовали предмет своих нынешних переживаний.


Код
  Хайкин :  Adaptive Filter Theory Third Edition
            Introduction 1 -> 7. Applications 18 -> Adaptive Equelization 34
            PART 3 LINEAR ADAPTIVE FILTERING 338 -> CHAPTER 8 Method of Steepest Descent -> Figure 8.1 -> Structure of adaptive transversal filter.
  Diniz  : Adaptive Filtering Algorithms and Practical Implementation Third Edition
           3 THE LEAST-MEAN-SQUARE (LMS) ALGORITHM -> Figure 3.1 LMS adaptive FIR filter
           3 THE LEAST-MEAN-SQUARE (LMS) ALGORITHM -> Algorithm 3.1 LMS Algorithm
  Уидроу, ССтирнз : Адаптивная обработка сигналов -> Глава 2 АДАПТИВНЫЙ ЛИНЕЙНЫЙ СУММАТОР -> Полезный отклик и сигнал ошибки


думаю что ссылки на общие книги по ЦОС, где есть глава посвященная LMS фильтрам приводить не стоит.

Цитата
Я же GNU-адепт, я не пользуюсь всякими буржуинскими матлабами... не хватает 49 000$. Хотя-бы скриншоты выложите.


странно, в россии цены на сайте матлаба база 1 килобакс + 1 килобакс за тулбокс. для цос надо около 10 основных тулбоксов. в атаче основные скрины устройства фильтра.
des00
Цитата(des00 @ Jul 16 2009, 02:11) *
в атаче наиболее понятная и грамотная статья из всех что я нашел по stop-and-go алгоритмам.


Обнаружил пренеприятнейший эффект в работе SAGA алгоритма. Дело обстоит так :

Когда разрабатывал структуру эквалайзера в матлабе, мерой оценки было нормальные точки созвездия. Когда моменты были выяснены, разработал все на языке, потестировал на созвездиях и простых искажениях в симуляторе, все нормально. Взял эквалайзер в самой простой версии TSE, LMS, Point-Contour Stop-and-Go Algorithm, Sign Err update.

Эквалайзер работает, НО есть один очень тонкий момент, на который я в матлабе не обратил внимание. А именно SAGA детектор расширяет созвездие!!!, особенно это заметно на старших КАМах (QAM64/QAM256). Стоит отключить Stop-And-Go часть (убрать маскирование ошибок), как точки встают на место. Посмотрел в матлабе и точно так и есть. (см в атаче файл КАМ64) При прочих равных условиях эквалайзер с SAGA дает больший MSE, чем эквалайзер без него. Смотрю по MSE, т.к. вывести два луча на один блок просмотра созвездий у меня в матлабе не получилось.

Как так получается и откуда берется эта нелинейность мне не понятно %( По логике работы детектор всего лишь игнорирует ошибки в определенном диапазоне и он никак не может влиять на линейность созвездия или его расширение. Может быть у кого нить будут какие либо идеи ?

Проверил все еще на раз, почитал доки и обнаружил вот еще какое расхождение.

В книгах (например Adaptive_Filtering_-_Algorithms_and_Practical_Implementation_-_Diniz.pdf -> стр 541 Sato Algorithm) написано что в алгоритме Sato порог вычисляется как R = E[|s|^2] / E[|s|]. Насколько я понимаю E это усреднение. Если рассмотреть созвездие QAM16, с точками 0.25/0.75 то получиться следующее

sum([(2*0.25^2) 2*(0.25^2+0.75^2) (2*0.75^2)]) / sum([sqrt(2*0.25^2) 2*sqrt(0.25^2+0.75^2) sqrt(2*0.75^2)]) = 0.8346.

Но при таком пороге и методе обновления коэффициентов в алгоритме SATO, даже без моделирования очевидно, что точки созвездия на выходе эквалайзера будет шире чем на его входе. Но при этом во всех материалах показаны созвездия где эти точки стоят на нужных местах. Но в статье про SAGA в детекторе SATO используют пороги SQRT(M)-1, т.е. берут максимальную точку 0.75.

Гуру поясните этот момент, во всех материалах формула расчета порога одна и та же, но вот с мой логикой и матлабом (см аттач КАМ16) как то не вяжется.

ЗЫ. Причем уменьшение mu в SATO и SAGA на расширение созвездия не влияет, всего лишь уменьшается скорость сходимости.

Спасибо.
alex_os
Цитата(des00 @ Oct 9 2009, 11:26) *
Обнаружил пренеприятнейший эффект в работе SAGA алгоритма. Дело обстоит так :


Когда-то использовал stop&go для камов, кажется, порог выбирался, как средне-арифметическое между максимальным значением амплитуды квадратуры созвездия и следующим(меньшим) значением амплитуды квадратуры.

Делал по статье
G. Picchi and G. Prati, "Blind Equalization and Carrier Recovery Using a Stop-and-Go Decision-Directed Algorithm", IEEE Transactions on Communications, Vol. 35, No. 9, pp. 877-887, 1987.
petrov
Цитата(des00 @ Oct 9 2009, 11:26) *
Обнаружил пренеприятнейший эффект в работе SAGA алгоритма. Дело обстоит так :


Всё же лучше использовать критерий Годарда, если хочется сэкономить на вычислениях то можно взять в критерии Годарда знак после разности квадрата модуля и константы(можно также использовать разность модуля и корня квадратного из константы), при этом созвездие так же разъедется, это легко лечится подбором константы.

Ещё после умножения входного вектора на знак разности квадрата модуля и константы так же можно только знаки квадратур оставить избавившись тем самым от умножения.
des00
Цитата(alex_os @ Oct 9 2009, 03:16) *
Когда-то использовал stop&go для камов, кажется, порог выбирался, как средне-арифметическое между максимальным значением амплитуды квадратуры созвездия и следующим(меньшим) значением амплитуды квадратуры.


но ведь в этом случае на камах появляется дополнительный полигон, ошибки в котором маскируются, причем этот полигон не входит в логически обоснованную концепцию PC-SAGA алгоритма, описанного в статье, которую я выкладывал. Кроме того ошибка в SAGA считается по DD методу, т.е. точно, а второй критерий только определяет использовать ее или нет. За идею спасибо, надо попробывать.

Цитата
G. Picchi and G. Prati, "Blind Equalization and Carrier Recovery Using a Stop-and-Go Decision-Directed Algorithm", IEEE Transactions on Communications, Vol. 35, No. 9, pp. 877-887, 1987.


у вас случайно этой статьи не осталось? у меня нет подписки на IEEE sad.gif


Цитата(petrov @ Oct 9 2009, 03:19) *
Всё же лучше использовать критерий Годарда, если хочется сэкономить на вычислениях то можно взять в критерии Годарда знак после разности квадрата модуля и константы(можно также использовать разность модуля и корня квадратного из константы), при этом созвездие так же разъедется, это легко лечится подбором константы.

Ещё после умножения входного вектора на знак разности квадрата модуля и константы так же можно только знаки квадратур оставить избавившись тем самым от умножения.


Это то все понятно. Такой простой эквалайзер я привел для того, что бы подчеркнуть что этот эффект не вызван переполнением коэффициентов и/или их некорректным вычислением %)

Но первый мой вопрос был не в том как сэкономить, а почему так происходит. Ведь по физике работы PC-SAGA такого быть не должно, но оно есть %)

По второму вопросу (критерий SATO) что то мне подсказывает что нужно брать не комплексные точки, а проекции точек на оси. В таком случае критерий будет

sum([(0.25^2) (0.75^2)]) / sum([0.25 0.75]) = 0.625

ведь по идее сам Сато рассматривал вещественные сигналы

PS. Нашел что то вроде кандидатской + еще пару док про слепое эквалайзирование, так вот алгоритм Годдара/CMA уже не айс, а айс это Multi-modulus algorithm (MMA)/Modified Constant Modulus Algorithm (MCMA) %) Если интересно выложу.

ЗЗЫ.
Цитата
Ещё после умножения входного вектора на знак разности квадрата модуля и константы так же можно только знаки квадратур оставить избавившись тем самым от умножения.


а вот этот метод (использовать знаки данных, а не сами данные) гуру (diniz и saied) не рекомендуют, я к ним присоединяюсь с практической точки зрения %)
petrov
Цитата(des00 @ Oct 9 2009, 13:54) *
PS. Нашел что то вроде кандидатской + еще пару док про слепое эквалайзирование, так вот алгоритм Годдара/CMA уже не айс, а айс это Multi-modulus algorithm (MMA)/Modified Constant Modulus Algorithm (MCMA) %) Если интересно выложу.


Конечно выкладывайте. Ясное дело что это фактически решения по амплитуде круче чем Годард.


Цитата(des00 @ Oct 9 2009, 13:54) *
а вот этот метод (использовать знаки данных, а не сами данные) гуру (diniz и saied) не рекомендуют, я к ним присоединяюсь с практической точки зрения %)


Разумеется будет хуже работать, ИМХО сато то же самое.
des00
Цитата(petrov @ Oct 9 2009, 05:08) *
Конечно выкладывайте. Ясное дело что это фактически решения по амплитуде круче чем Годард.


выложил на местный файлообменник, который имеет выход в мир

http://disk.tom.ru/upc1u2s


Цитата
Разумеется будет хуже работать, ИМХО сато то же самое.


ИМХО не совсем то, т.к. метод Сато это метод вычисления ошибки в стандартном LMS алгоритме, а в stop and go это метод вычисления признака, а не ошибки (!!!). А замена данных на знаки в LMS алгоритме ИМХО приводит к поломке основ LMS, но это к данной теме не относиться smile.gif
alex_os
Во! Нашел гадкого качества скан:

G. Picchi and G. Prati, "Blind Equalization and Carrier Recovery Using a Stop-and-Go Decision-Directed Algorithm
des00
Цитата(alex_os @ Oct 9 2009, 08:25) *


спасибо, попрошу еще скачать доку в нормальном качестве с ieee smile.gif
des00
статья с ieee шным качеством http://electronix.ru/forum/index.php?act=a...st&id=37139
Ковылин_Константин
Предлагаю сделать 2 адаптивных фильтра - один падает (в минимум), другой работает - упавший сбрасывается. На более высоком уровне выбирается непобитый молью (или поддавшийся восстановлению) пакет от рабочего фильтра.

Ещё интересны японские статьи, где они используют полтора адаптивных LMS фильтра - один подстраивается, а другой копирует эту подстройку только когда уверен, что она годная...
des00
Цитата(Ковылин_Константин @ Oct 14 2009, 02:21) *
Предлагаю сделать 2 адаптивных фильтра - один падает (в минимум), другой работает - упавший сбрасывается. На более высоком уровне выбирается непобитый молью (или поддавшийся восстановлению) пакет от рабочего фильтра.

Ещё интересны японские статьи, где они используют полтора адаптивных LMS фильтра - один подстраивается, а другой копирует эту подстройку только когда уверен, что она годная...


для узкополосной связи может быть и вариант, но для широкополосной, на фпга среднего объема (средние сыклоны) не катит. тут эквалайзер весит полфпга, а что будет когда их будет два.... %)
des00
Цитата(petrov @ Oct 9 2009, 03:19) *
Всё же лучше использовать критерий Годарда, если хочется сэкономить на вычислениях то можно взять в критерии Годарда знак после разности квадрата модуля и константы(можно также использовать разность модуля и корня квадратного из константы), при этом созвездие так же разъедется, это легко лечится подбором константы.

Ещё после умножения входного вектора на знак разности квадрата модуля и константы так же можно только знаки квадратур оставить избавившись тем самым от умножения.


поковырялся тут с эквалайзерами в матлабе и железе, если интересно вот мои выкладки (часть основана только на матлабе, часть на матлабе и железе). Использовался канал со спектральным нулем в 15дБ и не равномерностью в полосе пропускания ~5Дб.

проанализировал следующие детекторы

Код
1. Goddard

  E = y*(|y|^2 - R), где

    y = y_re + j*y_im

    R = E[|const|^4]/E[|const|^2]

2. Simplify Goddard

  E = sign_y*(|y|^2 - R), где

    sign_y  = sign(y_re) + j*sign(y_im)

    R       = E[|const|^4]/E[|const|^2]

3. Sign Goddard

  E = sign_y*(|y_re| + |y_im| - R), где

    sign_y  = sign(y_re) + j*sign(y_im)

    R       = sqrt(Ymax^2 + Xmax^2)

4. Sign Goddard Stop And Go

  E = sign_y*f*(|y_re| + |y_im| - R), где

    sign_y  = sign(y_re) + j*sign(y_im)

    R = sqrt(Ymin^2 + Xmin^2), if  |y_re| + |y_im| <  sqrt(Ymid^2 + Xmid^2)
      = sqrt(Ymax^2 + Xmax^2), if  |y_re| + |y_im| >= sqrt(Ymid^2 + Xmid^2)

    f = 0, if sqrt(Ymin^2 + Xmin^2)< |y_re| + |y_im| < sqrt(Ymid^2 + Xmid^2)
      = 1, else

5. MMA (Multi Modulus Algorithm)

    E = y_re*(y_re^2 - R_re) + j*y_im*(y_im^2 - R_im), где

    R_re = E[const_re^4]/E[const_re^2]
    R_im = E[const_im^4]/E[const_im^2]

6. Simplify MMA

    E = sign(y_re)*(y_re^2 - R_re) + j*sign(y_im)*(y_im^2 - R_im)), где

    R_re = E[const_re^4]/E[const_re^2]
    R_im = E[const_im^4]/E[const_im^2]

7. SMMA (Sliced Multi Modulus Algorithm)

    E = y_re*(y_re^2 - a_re^c*R_re) + j*y_im*(y_im^2 - a_im^c*cR_im), где

    a_re - оценка сигнала y_re
    a_im - оценка сигнала y_im

    R_re = E[const_re^4]/E[const_re^(2+c)]
    R_im = E[const_im^4]/E[const_im^(2+c)]

8. Simplify SMMA

    E = sign(y_re)*(y_re^2 - a_re^c*R_re) + j*sign(y_im)*(y_im^2 - a_im^c*cR_im), где

    a_re - оценка сигнала y_re
    a_im - оценка сигнала y_im

    R_re = E[const_re^4]/E[const_re^(2+c)]
    R_im = E[const_im^4]/E[const_im^(2+c)]

9. PC-SGA

    DD детектор + Stop And Go алгоритм на основе детектора SATO


Все слепые методы требуют уменьшения mu если используются только они, но лучше при достижении определенного MSE включать DD детектор. Порог включения уровень ~50% от интервала принятия жесткого решения.

Код
Для QAM16   :

Goddard, Sign Goddard       : качество работы нормальное
Simplify Goddard            : поворачивает созвездие
Sign Goddard Stop And Go    : сжимает и поворачивает созвездие

MMA, Simplify MMA   : качество работы хорошее, остаточный MSE немного меньше чем у Goddard
SMMA, Simplify SMMA : для c = 0.5/1 качество работы хорошее, остаточный MSE раза в 2 меньше чем у MMA

PC-SGA  не смог развернуть созвездие, хотя квадрат созвездия как то держал
DD      не смог развернуть созвездие


Код
Goddard                     : качество работы нормальное
Sign Goddard                : качество работы хуже чем Goddard
Simplify Goddard            : поворачивает созвездие

Sign Goddard Stop And Go    : даже не проверялся

MMA, Simplify MMA   : качество работы хорошее, остаточный MSE немного меньше чем у Goddard
SMMA, Simplify SMMA : для c = 0.5/1 качество работы хорошее, остаточный MSE раза в 2 меньше чем у MMA

PC-SGA  не смог развернуть созвездие, хотя квадрат созвездия как то держал
DD      не смог развернуть созвездие


Для всех алгоритмов где используется знак надо уменьшать mu, т.к. это уменьшает дрожание коэффициентов, дает меньший mse и это дает более хорошие характеристики переключения между детекторами. Также у таких алгоритмов есть особенность в том, что остаточный MSE много выше чем у базового алгоритма. Это надо учитывать при работе: Например Simplify MMA на кам16 не дает MSE меньше чем 0.004. Но при работе в канале с сильными искажениями данный недостаток не мешает выходить на уровень, достаточный для включения DD детектора. Но при работе на КАМ64 выяснилась следующая неприятность : созвездие расширяется, особенно это заметно при знаковых методах. Настолько что предложенный метод переключения алгоритмов адаптации при знаковом методе вообще не работает.

для LMS алгоритма уменьшение mu для знаковых алгоритмов вообще не дает результата на MSE, а для честных алгоритмов созвездие немного расширяется, но при этом MSE остается достаточно низким. для знакового LMS алгоритма (sign err LMS) детекторы одинаковые(как и должно быть по логике вещей), созвездие сильно расширяется, остаточный mse очень высокий, но высокий он не из-за того что с созвездием все плохо, а из-за того что созвездия шире. Варианты либо делать честный LMS и честные алгоритмы, либо немного подрихтовать пороги в алгоритме. Рихтовка порогов помогает но не сильно, все равно созвездите сильно раздувает.

ДЛЯ SMMA АЛГОРИТМА : чем С ближе к единице тем MSE после сходимости меньше (сравнивал с MMA), но кривая сходимости идет более плавно. Т.е. время сходимости увеличивается. При с = 0.5 сходимость схожа с MMA, а MSE меньше

MMS и SMMA не имеют проблемы поворота созвездия, в отличие от годдарда

PS. Для метода PC SGA пороги надо выбирать как у авторов Picchi & Prati, в приведенной выше статье пороги для старших камов выбираются не верно, и созвездие раздувает !!!

PPS. MSE считается по ошибке DD детектора с фиксированным патерном созвездия.
petrov
Цитата(des00 @ Nov 9 2009, 13:49) *
поковырялся тут с эквалайзерами в матлабе и железе, если интересно вот мои выкладки...


Конечно интересно!!!

Цитата(des00 @ Nov 9 2009, 13:49) *
MMS и SMMA не имеют проблемы поворота созвездия, в отличие от годдарда


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


К чему в итоге пришли с проблемой совместной работы эквалайзера(дрейф максимального коэффициента и т. п.) и символьной синхронизации?
des00
Цитата(petrov @ Nov 9 2009, 07:00) *
Не считаю это проблемой, наоборот, в детекторе годарда нету фазовой информации и поворот он исправить не может, но это не мешает ему исправлять канал при вращающемся созвездии, поворот исправляет фазовая синхронизация и с годардом они развязаны и это плюс, например Прокис об этом пишет.


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

Цитата
К чему в итоге пришли с проблемой совместной работы эквалайзера(дрейф максимального коэффициента и т. п.) и символьной синхронизации?


Хмм, уже немного подзабыл %) это проблема с тем что FSE эквалайзер сдвигал центральный коэффициент на несколько тапов ? Если да то проблему я давно решил, даже на форуме об этом писал. Все вылечилось после того как я расширил диапазон перестройки коэффициентов FSE эквалайзера до [-8:8], как это влияло незнаю, но эффект был. Плюс добавил небольшую утечку, т.к. канал был слишком малошумящий (не радио).
petrov
Цитата(des00 @ Nov 9 2009, 16:14) *
Хмм, уже немного подзабыл %) это проблема с тем что FSE эквалайзер сдвигал центральный коэффициент на несколько тапов ? Если да то проблему я давно решил, даже на форуме об этом писал. Все вылечилось после того как я расширил диапазон перестройки коэффициентов FSE эквалайзера до [-8:8], как это влияло незнаю, но эффект был. Плюс добавил небольшую утечку, т.к. канал был слишком малошумящий (не радио).


Ясно.

Есть такая проблема например из-за помехи эквалайзер может разваливаться так что требуется сброс коэффициентов в начальное состояние, хотелось бы чтобы схема сама восстанавливала работу без сброса.
des00
Цитата(petrov @ Nov 9 2009, 07:33) *
Есть такая проблема например из-за помехи эквалайзер может разваливаться так что требуется сброс коэффициентов в начальное состояние, хотелось бы чтобы схема сама восстанавливала работу без сброса.


по этому вопросу есть пара идей, как выношу и проверю сделаю пост %) времени нет, модем надо доделывать, пока стоит схема анализа потери синхры декодера и сброс эквалайзера в случае если синхра легла.
des00
Цитата(des00 @ Nov 9 2009, 20:14) *
это проблема с тем что FSE эквалайзер сдвигал центральный коэффициент на несколько тапов ?

Кому интересно.
Недавно в бреду нашел решение для фиксации коэффициентов эквалайзера на пороге красоты простых решений : выделям фреймовую синхронизацию до FSE эквалайзера на 2sps и формируем обучающую последовательность с задержкой на половину фильтра. Всё. Центральный коэфициент эквалайзера останеться там где был и будет стоять. А что бы не выделить синхронизацию по BPSK преамбуле хотя бы 31 символ нужно столкнуться с очень большими искажениями sm.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.