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

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

1. В книгах по эквалайзерам (Бингхам, Прокис, Скляр и т.д.) описаны 3 метода адаптации Zero-Forced, LMS, DD. Но в том же матлабе алгоритмов больше (те же CMA, RLS). Есть ли книги в которых описаны эти методы адаптации коэффициентов и расписаны их достоинства и недостатки ?

Если проектировать фрактальный эквалайзер, то :

2. Обязательно ли его тактовая на выходе должна быть меньше в К раз чем тактовая на входе ?

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

4. У меня recovery работает на удвоенной символьной частоте. Можно ли, брать решения для адаптации эквалайзера не с его выхода, а с выхода recovery.


5. Какой, по вашему мнению, алгоритм адаптации дает большую скорость сходимости для коротких пакетов ?

6. Какой, по вашему мнению, эквалайзер линейный TSE/FSE или DFE вы посоветуете для TDMA систем.

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

Сам понимаю что вопросы ламерские, но вот пока не могу найти решение в книгах или плохо ищу. Решил спросить здесь.

Спасибо!!!
petrov
...

Цитата(des00 @ Oct 7 2008, 15:37) *
Есть задача сделать адаптивный эквалайзер для TDMA модема. Обложился бумажными и электронными книгами, перерыл форум и хелп матлаба в разделе эквалайзеры. Но все равно есть много вопросов, прошу помощи.


Непростая это задачка.

Цитата(des00 @ Oct 7 2008, 15:37) *
1. В книгах по эквалайзерам (Бингхам, Прокис, Скляр и т.д.) описаны 3 метода адаптации Zero-Forced, LMS, DD. Но в том же матлабе алгоритмов больше (те же CMA, RLS). Есть ли книги в которых описаны эти методы адаптации коэффициентов и расписаны их достоинства и недостатки ?


Тут у путаница некоторая, надо разделять алгоритмы адаптации Zero-Forced, LMS, RLS и критерии настройки DD, CMA, по известной последовательности и т. п. В книгах к сожалению как правило простые случаи рассматриваются. Для TDMA вам наверное потребуются самые быстрые алгоритмы адаптации с обучением по известной последовательности.


Цитата(des00 @ Oct 7 2008, 15:37) *
Если проектировать фрактальный эквалайзер, то :


Дробный наверное правильнее.

Цитата(des00 @ Oct 7 2008, 15:37) *
2. Обязательно ли его тактовая на выходе должна быть меньше в К раз чем тактовая на входе ?


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

Цитата(des00 @ Oct 7 2008, 15:37) *
3. Как в этом случае выбирается обучающая последовательность ? Ведь на стороне передатчика мы передаем ее на символьной частоте, а тут обрабатываем на более высокой частоте ?


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


Цитата(des00 @ Oct 7 2008, 15:37) *
4. У меня recovery работает на удвоенной символьной частоте. Можно ли, брать решения для адаптации эквалайзера не с его выхода, а с выхода recovery.


Непонятно о чём речь.

Цитата(des00 @ Oct 7 2008, 15:37) *
5. Какой, по вашему мнению, алгоритм адаптации дает большую скорость сходимости для коротких пакетов ?


Почитайте Adaptive_Filters_-_Ali_H_Sayed это типа справочника по различным алгоритмам адаптации.
Ортогонализация и нормализация делают процесс сходимости независимым от отношения максимального и минимального собственных чисел автокорреляционной матрицы входного сигнала.

Цитата(des00 @ Oct 7 2008, 15:37) *
6. Какой, по вашему мнению, эквалайзер линейный TSE/FSE или DFE вы посоветуете для TDMA систем.


Зависит от канала, линейный только для несильных искажений, если есть спектральные нули то только DFE.

Цитата(des00 @ Oct 7 2008, 15:37) *
7. Можно ли в матлабе смоделировать потоки данных со стартовой преамбулой, обучающей последовательностью и пакетом рандомных данных?


Можно всё и лучше в симулинке.
Serg76
Цитата(des00 @ Oct 7 2008, 14:37) *
Добрый день господа!

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


Посмотрите у Феера. (К.Феер. Безпроводная цифровая связь). Кстати там приведены также и алгоритмы восстановления несущей и тактовой частот для демодуляторов, работающих в пакетном режиме (время восстановления несущей менее 10 бит).
alex_os
Цитата(des00 @ Oct 7 2008, 15:37) *
Есть задача сделать адаптивный эквалайзер для TDMA модема...


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

Из корректоров лучшее из практически реализуемого это "turbo equalizer" (гуглом много всего находится, еще можно поискать по слову Tuchler - это автор многих статей на эту тему). Для турбо корректора (фактически это итеративный корректор - декодер) требуется наличие помехоустойчивого кодирования и перемежителя.

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

Пояснения к моему сумбурном вопросу :

2 petrov

Цитата
Непонятно о чём речь.


Речь идет вот о чем следующем. В уже готовом модеме, для которого надо сделать эквалайзер, сигнал децимируется на частоту 2*fsymb, на ней обрабатывается и поступает на схему востановления (recovery). После нее уже на частоте fsymb идет на схему жесткого принятия решений и на блочный декодер.

Вопрос заключался вот в чем, если делать дробный эквалайзер, то его надо ставить на 2*fsymb до recovery, но взять отсчеты сигнала, для оценки ошибки, на выходе эквалайзера на 2*fsymb нельзя. Их можно взять только после того, как отчеты пройдут схему recovery на fsymb. Можно ли брать ошибки таким способом ?

Цитата
Почитайте Adaptive_Filters_-_Ali_H_Sayed это типа справочника по различным алгоритмам адаптации.


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

2 Serg76

Цитата
Посмотрите у Феера. (К.Феер. Безпроводная цифровая связь).


Вы имете в виду книгу "К.Феер. Беcпроводная цифровая связь. Методы модуляции и расширения спектра" ? Если да, то там теме адаптивных эквалайзеров посвещенно всего 5 страниц текста. smile.gif И дано все поверхностно.

2 alex_os

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


Канал гаусовский, с спектральными нулями. Индекс модуляции 2-5 (QPSK-QAM64). Диапазон частот 400МГц.

MLSE алгоритм это, как я понимаю, алгоритм с использованием мягкого решения. Он не подходит, как я уже писал используется жесткое решение и блочное кодирование.


Цитата
Из корректоров лучшее из практически реализуемого это "turbo equalizer" (гуглом много всего находится, еще можно поискать по слову Tuchler - это автор многих статей на эту тему). Для турбо корректора (фактически это итеративный корректор - декодер) требуется наличие помехоустойчивого кодирования и перемежителя.


Как я понял из обзорной статьи по турбо эквалайзерам в гугле, они все работают с использованием декодера витерби(мягкое решение) и в данный модем такое не закаладывалось.

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


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

А какой вариант будет лучше для реализации TSE/FSE или эти термины относятся только к линейным эквалайзерам ?

Спасибо
petrov
Книги по адаптивной фильтрации:

http://rapidshare.de/files/40635928/Adapti..._Sayed.pdf.html
http://rapidshare.de/files/39623696/Adapti..._Diniz.pdf.html
links
Цитата(des00 @ Oct 8 2008, 11:08) *
Если я ничего не путаю, то получается что надо рыть в сторону DFE эквалайзеров и алгоритмов быстрой сходимости.


DFE (или КРОС) потребуется при сильных искажениях АЧХ. Но он выдаёт ошибки пачками, чем больше длина ОС, тем длиннее пачка. Если провалы в АЧХ небольшие, лучше обойтись линейным корректором. Насчёт быстрой настройки. У вас канал с переменными параметрами? И если переменными, то насколько быстыми? Может можно обойтись одной длинной настройкой в начале соединения, потратить на неё, например, один пакет, а затем подстраивать корректор только по данным. В противном случае вам придётся каждый пакет начинать с длинной настроечной последовательности.

Цитата
А какой вариант будет лучше для реализации TSE/FSE или эти термины относятся только к линейным эквалайзерам ?


Линейный корректор лучше FSE. В фильтре прямой связи для КРОСа также лучше FSE. В фильтре обратной связи кроме TSE ничего поставить не получится, т.к. там находятся решения, которые вырабатываются со скоростью тактов.
petrov
Цитата(des00 @ Oct 8 2008, 11:08) *
Речь идет вот о чем следующем. В уже готовом модеме, для которого надо сделать эквалайзер, сигнал децимируется на частоту 2*fsymb, на ней обрабатывается и поступает на схему востановления (recovery). После нее уже на частоте fsymb идет на схему жесткого принятия решений и на блочный декодер.

Вопрос заключался вот в чем, если делать дробный эквалайзер, то его надо ставить на 2*fsymb до recovery, но взять отсчеты сигнала, для оценки ошибки, на выходе эквалайзера на 2*fsymb нельзя. Их можно взять только после того, как отчеты пройдут схему recovery на fsymb. Можно ли брать ошибки таким способом ?


Да ошибка вычисляется в клок домене одного отсчёта на символ, там же работает обратный фильтр DFE, прямой дробный фильтр ессно работает в клок домене нескольких отсчётов на символ. Выкладывал симулинк модели с эквалайзерами:
http://electronix.ru/forum/index.php?showtopic=23652
Кстати блочные коды с жёсткими решениями не дают выигрыша.


Цитата(des00 @ Oct 8 2008, 11:08) *
Канал гаусовский, с спектральными нулями. Индекс модуляции 2-5 (QPSK-QAM64). Диапазон частот 400МГц.

MLSE алгоритм это, как я понимаю, алгоритм с использованием мягкого решения. Он не подходит, как я уже писал используется жесткое решение и блочное кодирование.


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

А какой вариант будет лучше для реализации TSE/FSE или эти термины относятся только к линейным эквалайзерам ?


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

Ко всем относится, дробный надо делать.
des00
2 petrov

Спасибо за книги !!!

2 links

Цитата
Если провалы в АЧХ небольшие, лучше обойтись линейным корректором. Насчёт быстрой настройки. У вас канал с переменными параметрами? И если переменными, то насколько быстыми? Может можно обойтись одной длинной настройкой в начале соединения, потратить на неё, например, один пакет, а затем подстраивать корректор только по данным. В противном случае вам придётся каждый пакет начинать с длинной настроечной последовательности.


Наблюдаемые на испытаниях провалы АЧХ составили 10дБ, по словам разработчиков модема если заложиться на провалы 20дБ это их удовлетворит полностью.

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

Цитата
В фильтре прямой связи для КРОСа также лучше FSE. В фильтре обратной связи кроме TSE ничего поставить не получится, т.к. там находятся решения, которые вырабатываются со скоростью тактов.

Да ошибка вычисляется в клок домене одного отсчёта на символ, там же работает обратный фильтр DFE, прямой дробный фильтр ессно работает в клок домене нескольких отсчётов на символ.


По FSE понял, спасибо за разъяснение.

Цитата
Выкладывал симулинк модели с эквалайзерами: Кстати блочные коды с жёсткими решениями не дают выигрыша.


Модели скачал, начинаю разбираться.

Про выигрыш вы имели в виду по SNR, ну в этом модеме сделано так %)
links
Цитата(des00 @ Oct 8 2008, 13:58) *
Наблюдаемые на испытаниях провалы АЧХ составили 10дБ, по словам разработчиков модема если заложиться на провалы 20дБ это их удовлетворит полностью.

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


20 дБ это много. Линейный корректор не спасёт. Если нужна подстройка под каждый пакет, то задача действительно сложная. Может поможет настройка по Калману (в файле). С другой стороны, почему бы вам не подумать о применении OFDM? Оно как раз и было придумано для того, чтобы уйти от нелинейной коррекции, заменив её линейной в каждом из подканалов.
des00
Цитата(links @ Oct 8 2008, 06:29) *
20 дБ это много. Линейный корректор не спасёт. Если нужна подстройка под каждый пакет, то задача действительно сложная. Может поможет настройка по Калману (в файле). С другой стороны, почему бы вам не подумать о применении OFDM? Оно как раз и было придумано для того, чтобы уйти от нелинейной коррекции, заменив её линейной в каждом из подканалов.


Спасибо посмотрю. Насчет OFDM это будет следующая итерация модема, пока нужно улучшить текущую %)
alex_os
Цитата(des00 @ Oct 8 2008, 11:08) *
Канал гаусовский, с спектральными нулями. Индекс модуляции 2-5 (QPSK-QAM64). Диапазон частот 400МГц.

MLSE алгоритм это, как я понимаю, алгоритм с использованием мягкого решения. Он не подходит, как я уже писал используется жесткое решение и блочное кодирование.

MLSE = maximum likelihood sequence estimator не связан с наличием или отсутствием помехоустойчивого кодирования. Этот алгоритм производит оценку символов на входе канала с памятью по зашумленным отсчетам с выхода канала. Поскольку индекс модуляции у Вас больше 2 число состояний канала будет скорее всего огромное = (индекс модуляции )^(память_канала - 1 ),
т.е. практически не реализуем.

Цитата(des00 @ Oct 8 2008, 11:08) *
Как я понял из обзорной статьи по турбо эквалайзерам в гугле, они все работают с использованием декодера витерби(мягкое решение) и в данный модем такое не закаладывалось.
Если я ничего не путаю, то получается что надо рыть в сторону DFE эквалайзеров и алгоритмов быстрой сходимости.

Вообще "жесткий" декодер не есть гуд, классики пишут о 3х децибельных потерях у жесткого декодера vs мягкого. Для быстрой настройки DFE нужна преамбула, c хорошими автокорреляционными свойствами. Быстро посчитать коэффициенты корректоров прямого и обратного можно примерно так.
По известной преамбуле находите импульсную характеристику канала h, это не сложно. Далее по в лоб рассчитываются коэффициенты прямого фильтра корректора и фильтра обратной связи. Это самая затратная операция, приходится решать систему линейных уравнений L x L (L длина прямого фильтра корректора ). Для Т интервального корректора матрица системы становится теплицевой, уже немного легче.
fontp
Цитата(alex_os @ Oct 9 2008, 11:47) *
По известной преамбуле находите импульсную характеристику канала h, это не сложно. Далее по в лоб рассчитываются коэффициенты прямого фильтра корректора и фильтра обратной связи. Это самая затратная операция, приходится решать систему линейных уравнений L x L (L длина прямого фильтра корректора ). Для Т интервального корректора матрица системы становится теплицевой, уже немного легче.



Не только теплицевой, у ковариационной матрицы есть и другие симметрии, поэтому для MMSE-DFE есть быстрые рекурсивные алгоритмы даже для фрактальных эквалайзеров (когда матрица не является даже теплицевой)
Трудно только все это осилить с непривычки smile.gif)
des00
Цитата(alex_os @ Oct 9 2008, 02:47) *
MLSE = maximum likelihood sequence estimator не связан с наличием или отсутствием помехоустойчивого кодирования. Этот алгоритм производит оценку символов на входе канала с памятью по зашумленным отсчетам с выхода канала. Поскольку индекс модуляции у Вас больше 2 число состояний канала будет скорее всего огромное = (индекс модуляции )^(память_канала - 1 ),
т.е. практически не реализуем.


Спасибо буду знать, до этого раздела я еще не дошел, сосредоточился на DFE эквалайзерах.

Цитата
Вообще "жесткий" декодер не есть гуд, классики пишут о 3х децибельных потерях у жесткого декодера vs мягкого. Для быстрой настройки DFE нужна преамбула, c хорошими автокорреляционными свойствами. Быстро посчитать коэффициенты корректоров прямого и обратного можно примерно так.
По известной преамбуле находите импульсную характеристику канала h, это не сложно. Далее по в лоб рассчитываются коэффициенты прямого фильтра корректора и фильтра обратной связи. Это самая затратная операция, приходится решать систему линейных уравнений L x L (L длина прямого фильтра корректора ). Для Т интервального корректора матрица системы становится теплицевой, уже немного легче.


Про декодер это понятно, но модем заложили таким. Сейчас нужно только в него интегрировать эквалайзер. В качестве преамбулы используется последовательность Хаффмана. Предложенный вами алгоритм понятен, буду курить книги, что бы все свести воедино %)



Цитата(fontp @ Oct 9 2008, 05:36) *
Не только теплицевой, у ковариационной матрицы есть и другие симметрии, поэтому для MMSE-DFE есть быстрые рекурсивные алгоритмы даже для фрактальных эквалайзеров (когда матрица не является даже теплицевой)
Трудно только все это осилить с непривычки smile.gif)


спасибо за статью почитаю.
fontp
Цитата(des00 @ Oct 9 2008, 17:10) *
спасибо за статью почитаю.


Есть ещё первородная статья Марпла по поводу быстрого метода а-ля рекурсии Шура решения ковариационных уравнений
для FIR-identification
c программой на FORTRANe
это решение можно использовать для Т-эквалайзера работающего на символьной скорости

В случае фрактального эквалйзера решения того же типа, только более сложная блочная матричная алгебра. Впрочем, это всё быстрые реализации, не касающиеся проблемы качества эквалайзера
AVR
Цитата(des00 @ Oct 8 2008, 17:52) *
Спасибо посмотрю. Насчет OFDM это будет следующая итерация модема, пока нужно улучшить текущую %)
Судя по требованиям к модему, с OFDM надо было вообще _начинать_ wink.gif
des00
Цитата(AVR @ Oct 13 2008, 08:40) *
Судя по требованиям к модему, с OFDM надо было вообще _начинать_ wink.gif


Это следующая итерация %)

Господа прошу помощи вот в таком вопросе.

Положим есть линейный адаптивный эквалайзер с 8 мю тапами. Коэффициент тапа изменяется в пределах -2.000 ... 1.999. Т.е. максимальное усиление данного фильтра 2*8 == + 4 бита разрядности что бы фильтр всегда работал без переполнений. При разрядности данных/коэффициентов 16 бит требуемая разрядность фильтра 36 бит. Положим что на выходе требуется те же 16 бит.

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

Мне не понятно вот что : у эквалайзера работающего в режиме захвата, совокупное усиление фильтра порядка 1, по этому отчеты сигнала нужно брать без учета дополнительных старших бит, т.е. в данном примере [29:14]. Но если эквалайзер пошел в "разнос", то ИМХО при таком взятии данных возникнут ошибки переполнения разрядной сетки.

Как правильно поступают в этом случае ? В случае TSE эквалайзера перед блоком принятия решений можно взять биты [35:14] и поставить ограничитель, а как поступают для FSE эквалайзеров, ведь после него отчеты пойдут на схему recovery и такое ограничение может вызвать не корректную работу схемы восстановления частоты ?

Или я неправильно понимаю картину мира ? В каком месте модема обычно ставят FSE эквалайзеры. Понятно что его ставят после RRC фильтра, но куда ставить если у меня после RRC фильтра стоит ару(до него или после?

Спасибо.
petrov
Ограничитель не вызывает некорректной работы, не забывайте ещё ограничители на сами коэффициенты эквалайзера, ару ессно перед эквалайзером.
alex_os
Цитата(petrov @ Nov 18 2008, 11:06) *
Ограничитель не вызывает некорректной работы, не забывайте ещё ограничители на сами коэффициенты эквалайзера, ару ессно перед эквалайзером.

+1
Мне кажется , что ограничитель он даже полезен, если в канале проскочила какая-нибудь импульсная помеха корректор без ограничения сильно идет в разнос, коэф. устремляются в бесконечность и все умирает на всегда. По меньшей мере это верно для LMS подобных корректоров.
des00
2 petrov alex_os

Для усвоения сделал слепой LMS TSE с ограничителями все работает, теперь хочу сделать слепой LMS FSE есть пара вопросов.

2 petrov

смотрю вашу модель qam_fb_symbol_sync_fb_phase_sync_agc_var_ch_delay_eq_2007_07_21

я правильно понимаю что для работы LMS алгоритма (Ck+1 = Ck + error*V, где V - отчеты сигнала), вы переносите отчеты в домен половинной частоты и они участвуют в обновлении коэффициентов.

Не могли бы вы сказать сколько раз за символьный такт в блоке one_sps_clock_domain/coeff_update запускается процедура обновления коэффициентов ? Как я понимаю коэффициенты должны пересчитываться 1 раз на ошибку.

Если следовать вашей схеме то в реальном модеме возможна разбежка отчетов и сигнала ошибки по времени, как я понимаю нужна схема их синхронизации ?

Спасибо!!
petrov
Цитата(des00 @ Nov 25 2008, 15:39) *
2 petrov

смотрю вашу модель qam_fb_symbol_sync_fb_phase_sync_agc_var_ch_delay_eq_2007_07_21

я правильно понимаю что для работы LMS алгоритма (Ck+1 = Ck + error*V, где V - отчеты сигнала), вы переносите отчеты в домен половинной частоты и они участвуют в обновлении коэффициентов.

Не могли бы вы сказать сколько раз за символьный такт в блоке one_sps_clock_domain/coeff_update запускается процедура обновления коэффициентов ? Как я понимаю коэффициенты должны пересчитываться 1 раз на ошибку.

Если следовать вашей схеме то в реальном модеме возможна разбежка отчетов и сигнала ошибки по времени, как я понимаю нужна схема их синхронизации ?

Спасибо!!


Один раз за символьный интервал коэффициенты обновляются. Про разбежку не понял, там же ещё символьная синхронизация есть(кстати в символьной синхронизации там есть ошибка:
http://electronix.ru/forum/index.php?showtopic=54766).
des00
Цитата(petrov @ Nov 25 2008, 08:17) *
Один раз за символьный интервал коэффициенты обновляются.


я так и думал, спасибо

Цитата
Про разбежку не понял


я к тому что при аппаратной реализации, есть временная задержка между моментом вычисления отчета на выходе FIR эквалайзера и вычисления ошибки созвездия этого отчета на некоторое кол-во тактов(в зависимости от схемы recovery).

Я правильно понимаю, что контекст V вычисления отчета на выходе FIR должен относиться к ошибке вычисленной по этому выходу, что требует логики временной привязки V на выходе эквалайзера к ошибке на выходе recovery ?
petrov
Цитата(des00 @ Nov 26 2008, 08:10) *
я так и думал, спасибо
я к тому что при аппаратной реализации, есть временная задержка между моментом вычисления отчета на выходе FIR эквалайзера и вычисления ошибки созвездия этого отчета на некоторое кол-во тактов(в зависимости от схемы recovery).

Я правильно понимаю, что контекст V вычисления отчета на выходе FIR должен относиться к ошибке вычисленной по этому выходу, что требует логики временной привязки V на выходе эквалайзера к ошибке на выходе recovery ?


Да выходной сигнал с адаптивного фильтра и входной сигнал который учавствует в вычислении коэффициентов должны через одинаковые цепи проходить. Вообще очень осторожно надо с задержками например если не в том месте поставить перестанет сходиться.
des00
Добрый день!!!

Эту тему немного отложил, но сейчас опять к ней вернулся.

Прочитал книгу Хайкина по адаптивной фильтрации и наметил следующие темы, которые имеет смысл копать для реализации быстрого эквалайзера на ФПГА. Это

FFT-LMS
Gradient Adaptive Lattice (GAL)
QR decomposition-based RLS algorithm (QR-RLS)
inverse QR-RLS
QR-decomposition-based least-squares lattice (QRD-LLS)

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

Есть следующие вопросы :

1. Правильный ли я сделал выбор алгоритмов адаптации или тут в каком то из них есть подводные камни, о которых Хайкин умалчивает?
2. Хайкин рассматривает все эти алгоритмы в применении к TSE эквалайзеру основанному на трансверсальном фильтре, сохраняться ли все свойства этих алгоритмов для FSE и DFE эквалайзеров?
3. Может быть кто то уже реализовывал эти алгоритмы, тогда поделитесь своими выводами об эффективности этих алгоритмов.

Спасибо.
petrov
Цитата(des00 @ Jun 25 2009, 14:48) *
1. Правильный ли я сделал выбор алгоритмов адаптации или тут в каком то из них есть подводные камни, о которых Хайкин умалчивает?


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

Цитата(des00 @ Jun 25 2009, 14:48) *
2. Хайкин рассматривает все эти алгоритмы в применении к TSE эквалайзеру основанному на трансверсальном фильтре, сохраняться ли все свойства этих алгоритмов для FSE и DFE эквалайзеров?


Да вроде сохраняются.

Цитата(des00 @ Jun 25 2009, 14:48) *
3. Может быть кто то уже реализовывал эти алгоритмы, тогда поделитесь своими выводами об эффективности этих алгоритмов.


Делал в модели transform domain с нормализацией, настраивается намного быстрее, достаточно наверное этого + по известной последовательности настраивать, вычислений только много.
des00
Цитата(petrov @ Jun 25 2009, 06:32) *
Сложность не алгоритмах адаптации а в совместной работе эквалайзера со всеми синхронизациями, особенно для плохих кналов, о чём в книжках не пишут. Подводные камни например всякие паразитные устойчивые состояния. Проще сделать OFDM.


хотелось бы опыт полученный в TDMA модеме использовать и для не TDMA модемов. Про OFDM уже писал %)

Цитата
Делал в модели transform domain с нормализацией, настраивается намного быстрее, достаточно наверное этого + по известной последовательности настраивать, вычислений только много.


вы делали FFT-LMS + FSE ? Мне такая сборка показалась не совсем оптимальной, т.к. FFT-LMS требует пакетной обработки, что вызывает задержку сигнала и в случае FSE напрямую влияет на задержку в петлях ОС по тактовой и несущей частоте (хотя зависит от способа восстановления частот). Для TSE эквалайзера таких проблем нет, т.к. все петли уже отработали, правда в этом случае петли работают по искаженному сигналу. Потому то мне и интересны решетчатые эквалайзеры и эквалайзеры на systolic array, т.к. они могут работать посимвольно, кроме того они должны хорошо ложиться на ФПГА структуры, правда вытащить из них АЧХ чтобы посмотреть что нашел эквалайзер сложнее.
petrov
Цитата(des00 @ Jun 26 2009, 09:01) *
вы делали FFT-LMS + FSE ? Мне такая сборка показалась не совсем оптимальной, т.к. FFT-LMS требует пакетной обработки, что вызывает задержку сигнала и в случае FSE напрямую влияет на задержку в петлях ОС по тактовой и несущей частоте (хотя зависит от способа восстановления частот). Для TSE эквалайзера таких проблем нет, т.к. все петли уже отработали, правда в этом случае петли работают по искаженному сигналу. Потому то мне и интересны решетчатые эквалайзеры и эквалайзеры на systolic array, т.к. они могут работать посимвольно, кроме того они должны хорошо ложиться на ФПГА структуры, правда вытащить из них АЧХ чтобы посмотреть что нашел эквалайзер сложнее.


Вот пример FSE DFE:

http://electronix.ru/forum/index.php?s=&am...st&p=614446

На каждом отсчёте вычисляется ортогональное преобразование Адамара, никакой блочной задержки нету, коэффициенты настраиваются независимо друг от друга гораздо быстрее, можно наблюдать импульсную характеристику эквивалентного фильтра как для обычного эквалайзера.
des00
Цитата(petrov @ Jun 27 2009, 10:48) *
Вот пример FSE DFE:

http://electronix.ru/forum/index.php?s=&am...st&p=614446

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


спасибо, посмотрю

как то про адамара я забыл, хотя мне это преобразование известно из обработки изображений %)
des00
Цитата(petrov @ Jun 27 2009, 09:48) *


по мотивам вашего примера решил сделать небольшой тест, сделал 3 TSE эквалайзера LMS, NLMS, Adamar TD LMS. Но вот результат очень странный. Я взял два канала со спектральными нулями, QPSK, метод подстройки слепой DD. Видно что график среднеквадратичной ошибки (MSE) LMS и ATD-LMS практически идентичен, за небольшим исключением, как по скорости, так и по величине ошибки. LMS эквалайзер при этом настроен на средний mu. А вот с ATD-LMS получилось не понятное, несмотря на нормировку по мощности, для того что бы алгоритм работал потребовалось ввести достаточно малый mu, такой что как такового эффекта нормировки не видно sad.gif

Я собрал не адекватный тест? или в условиях стационарного окружения выигрыша от ATD-LMS нет ?
petrov
Цитата(des00 @ Jun 29 2009, 17:11) *
...


Нету у меня такого архиватора... :(
des00
Цитата(petrov @ Jun 29 2009, 07:18) *
Нету у меня такого архиватора... sad.gif


Выложил в zipе
petrov
Цитата(des00 @ Jun 29 2009, 17:11) *
по мотивам вашего примера решил сделать небольшой тест, сделал 3 TSE эквалайзера LMS, NLMS, Adamar TD LMS. Но вот результат очень странный. Я взял два канала со спектральными нулями, QPSK, метод подстройки слепой DD. Видно что график среднеквадратичной ошибки (MSE) LMS и ATD-LMS практически идентичен, за небольшим исключением, как по скорости, так и по величине ошибки. LMS эквалайзер при этом настроен на средний mu. А вот с ATD-LMS получилось не понятное, несмотря на нормировку по мощности, для того что бы алгоритм работал потребовалось ввести достаточно малый mu, такой что как такового эффекта нормировки не видно sad.gif

Я собрал не адекватный тест? или в условиях стационарного окружения выигрыша от ATD-LMS нет ?


Не работает у вас Adamar TD LMS, он просто улетает куда-то пока сигнал фильтры заполняет, посмотрите в моей модели есть задержка включения эквалайзера, уберите её и эквалайзер сразу же будет разваливаться.
des00
Цитата(petrov @ Jun 29 2009, 14:27) *
Не работает у вас Adamar TD LMS, он просто улетает куда-то пока сигнал фильтры заполняет, посмотрите в моей модели есть задержка включения эквалайзера, уберите её и эквалайзер сразу же будет разваливаться.


проверил модельку еще раз, сверился с грандами хайкин/диниц/саиед вроде ошибок нет. Единственный недостаток был в том что в NLMS алгоритм при использовании фильтра по мощности работает лучше. Выяснил еще интересные подробности :

1. При одновременном старте эквалайзеров LMS/NLMS/ATD-LMS при стартовой точке с использованием априорной информации о канале ATD-LMS сходиться медленнее
2. При одновременном старте эквалайзеров LMS/NLMS/ATD-LMS при нулевой стартовой точке ATD-LMS сходиться много быстрее.

при этом график MSE для ATD-LMS ведет себя очень интересно, в моих наблюдениях он всегда двух-ступенчатый. Идет быстрый переход на какое то среднее решение, потом он идет горизонтально и резкий переход на минимальную MSE. Если бы этого горизонтального участка не было, тогда сходимость ATD-LMS была бы хорошей. Но вообще у меня появляется ощущение что адамар не подходящий вариант преобразования комплексных сигналов, как то все с ним не однозначно.


ЗЫ. Все эти выводы для слепой настройки эквалайзера, если использовать обучающую последовательность, то ATD-LMS дает чуть большую скорость сходимости
petrov
Цитата(des00 @ Jun 30 2009, 12:06) *
1. При одновременном старте эквалайзеров LMS/NLMS/ATD-LMS при стартовой точке с использованием априорной информации о канале ATD-LMS сходиться медленнее


Непонятно что имеется ввиду, скорее всего где-то ошибка.

Цитата(des00 @ Jun 30 2009, 12:06) *
2. При одновременном старте эквалайзеров LMS/NLMS/ATD-LMS при нулевой стартовой точке ATD-LMS сходиться много быстрее.

при этом график MSE для ATD-LMS ведет себя очень интересно, в моих наблюдениях он всегда двух-ступенчатый. Идет быстрый переход на какое то среднее решение, потом он идет горизонтально и резкий переход на минимальную MSE. Если бы этого горизонтального участка не было, тогда сходимость ATD-LMS была бы хорошей. Но вообще у меня появляется ощущение что адамар не подходящий вариант преобразования комплексных сигналов, как то все с ним не однозначно.


Это всё из-за слепого критерия. Попробуйте DFT для ортогонализации, думаю не имеет это решающего значения.

Цитата(des00 @ Jun 30 2009, 12:06) *
ЗЫ. Все эти выводы для слепой настройки эквалайзера, если использовать обучающую последовательность, то ATD-LMS дает чуть большую скорость сходимости


Ну не знаю как вы смотрите, гораздо быстрее этот алгоритм в принципе.
des00
Цитата(petrov @ Jun 30 2009, 03:03) *
Ну не знаю как вы смотрите, гораздо быстрее этот алгоритм в принципе.


в модели вывожу на один график кривые mse для 3-х эквалайзеров. вот например результат эксперимента для канала с одним спектральным нулем. В названиях файлов train/blind - обучение по последовательности/слепой, zero/one - нулевые/не нулевые (центральный коэфф. равен 1) начальные условия. По шкале времени одно деление 1000 символов. Слева на право : blind_one.jpg/blind_zero.jpg/train_one.jpg/train_zero.jpg

Видно что для слепой настройки с нуля только адамар смог найти решение, но при настройке не с нуля, он настраивался дольше. Вот мне не понятна эта "ступенька" у адамара при слепой настройке.

При настройке по последовательности я не могу сказать что он гораздо быстрее, если смотреть по уровню 0.05 то адамар сошелся за 1000 символов, а другие эквалайзеры за 1500. т.е. выигрыш по скорости всего в 1.5 раза.


ЗЫ. Или для меня ламера максималиста это "всего в 1.5 раза", а для умудренных опытом людей "целых в 1.5 раза" ? smile.gif
petrov
Цитата(des00 @ Jun 30 2009, 14:39) *
в модели вывожу на один график кривые mse для 3-х эквалайзеров. вот например результат эксперимента для канала с одним спектральным нулем. В названиях файлов train/blind - обучение по последовательности/слепой, zero/one - нулевые/не нулевые (центральный коэфф. равен 1) начальные условия. По шкале времени одно деление 1000 символов. Слева на право : blind_one.jpg/blind_zero.jpg/train_one.jpg/train_zero.jpg

Видно что для слепой настройки с нуля только адамар смог найти решение, но при настройке не с нуля, он настраивался дольше. Вот мне не понятна эта "ступенька" у адамара при слепой настройке.

При настройке по последовательности я не могу сказать что он гораздо быстрее, если смотреть по уровню 0.05 то адамар сошелся за 1000 символов, а другие эквалайзеры за 1500. т.е. выигрыш по скорости всего в 1.5 раза.


ЗЫ. Или для меня ламера максималиста это "всего в 1.5 раза", а для умудренных опытом людей "целых в 1.5 раза" ? smile.gif


Что-то сам уже запутался. smile.gif На счёт ступеньки, наблюдал такое что со слепым критерием настройка может не запускаться в течении какого-то случайного времени. На счёт скорости надо подробнее думать, может действительно в этом конкретном случае выигрыш небольшой.
des00
Цитата(petrov @ Jun 30 2009, 06:57) *
На счёт скорости надо подробнее думать, может действительно в этом конкретном случае выигрыш небольшой.


немного ввел в заблуждение, в эксперименте эквалайзеры стартуют на 500 ом отсчете, таки образом выигрыш адамара 2 раза 500 против 1000 символов smile.gif
des00
Цитата(des00 @ Jun 30 2009, 21:17) *
немного ввел в заблуждение, в эксперименте эквалайзеры стартуют на 500 ом отсчете, таки образом выигрыш адамара 2 раза 500 против 1000 символов smile.gif


собрал в модели канонический RLS, на данном сигнале он сходиться до уровня 0.05 где то за 250-300 символов.

Сейчас проверяю идею с GAL эквалайзером (Gradient Adaptive Lattice), правда ни у кого из грандов он нормально не описан %(, в сети я тоже не нашел его внятного описания и схемы построения. За сим спрошу здесь:

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

Спасибо.
des00
Цитата(des00 @ Jul 1 2009, 08:03) *
Сейчас проверяю идею с GAL эквалайзером (Gradient Adaptive Lattice), правда ни у кого из грандов он нормально не описан %(, в сети я тоже не нашел его внятного описания и схемы построения. За сим спрошу здесь:


собрал GAL-NLMS эквалайзер, скорость сходимости сравнима с каноническим RLS алгоритмом. И больше чем у адамара. При этом у решетки зависимость сходимости от mu в LMS части меньше чем у адамара. Кому интересно 8 ми таповый GAL c решеткой L=7 в атаче.


ЗЫ. Вот только фпга ресурса такой комплексный эквалайзер требует......
des00
Не рекламы ради, а пользы дела для. Появилась неплохая литература по адаптивной фильтрации http://www.technosphera.ru/lib/book/333 на русском языке, от автора который давно занимается адаптивной обработкой (знаком лично). Книга только только вышла %)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.