|
адаптивный эквалайзер - сходится или нет? |
|
|
|
May 14 2009, 12:14
|

Гуру
     
Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988

|
накидал модельку линейного эквалайзера в матлабе, он выполнен в арифметике с фикс. точкой и с точночтью до цикла соответствует его описанию на VHDL(и железу). эквалайзер слепой, MMA(multi modulus algorithm), похож на метод Годара. вначале смотрел на коротких интервалах времени (порядка 10 тыс. итераций) и вроде алгоритм сходится, а в железе - не работает. проблема в том, что в железе я могу посмотреть только короткие (порядка 1 тыс. выборок) фреймы с интервалом между фреймами порядка миллиона итераций и процесс как фильтр разваливается, я не вижу, только результат. сгенерил в матлабе 10млн отсчетов, подал на вход, и заметил, что после относительно быстрой начальной подстройки, коэффициенты начинают мееедленно дрейфовать (см. скриншоты). как мне кажется, это из-за целочисл. вычислений и округлений. так ли это и какие элементы наиболее чувствительны к ошибкам округления? сейчас у меня отсчеты 8-битные, коэффициенты 16-битные, сильно увеличивать разрядность не позволят ресурсы. хватит такой точности? скриншоты,модель в симулинке,генератор отсчетов - в приложении.
Эскизы прикрепленных изображений
|
|
|
|
3 страниц
1 2 3 >
|
 |
Ответов
(1 - 14)
|
May 14 2009, 13:02
|
Гуру
     
Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937

|
Цитата(vadimuzzz @ May 14 2009, 16:14)  сгенерил в матлабе 10млн отсчетов, подал на вход, и заметил, что после относительно быстрой начальной подстройки, коэффициенты начинают мееедленно дрейфовать (см. скриншоты). как мне кажется, это из-за целочисл. вычислений и округлений. так ли это и какие элементы наиболее чувствительны к ошибкам округления? сейчас у меня отсчеты 8-битные, коэффициенты 16-битные, сильно увеличивать разрядность не позволят ресурсы. хватит такой точности? скриншоты,модель в симулинке,генератор отсчетов - в приложении. Так сделайте модель на плавающей точке и смотрите из-за целочисленности или нет. Куча всяких причин может быть из-за чего коэффициенты разваливаются в том числе и из-за совместной работы со схемами синхронизации. Ещё надо следить чтобы при реализации на FPGA небыло переполнений и т. п. возможно недостаточно только округлений в модели.
|
|
|
|
|
May 14 2009, 13:29
|

Гуру
     
Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988

|
Цитата(petrov @ May 14 2009, 20:02)  Так сделайте модель на плавающей точке и смотрите из-за целочисленности или нет. Куча всяких причин может быть из-за чего коэффициенты разваливаются в том числе и из-за совместной работы со схемами синхронизации. Ещё надо следить чтобы при реализации на FPGA небыло переполнений и т. п. возможно недостаточно только округлений в модели. на плавающей точке есть модели, они работают. схемы синхронизации я пока исключил из рассмотрения, гоняю тесты в матлабе и моделсиме. контроля переполнений пока нет, но и самих переполнений пока тоже, крупные баги я выловил. а есть где-нибудь почитать про ошибки округления в таких схемах? да, еще по синхронизации вопрос, у меня тактовая частота не устанавливается точно, выбирается ближайший отсчет, ошибка ~1-2% от Ts. как эквалайзер реагирует на такие ошибки (теоретически)?
|
|
|
|
|
May 14 2009, 13:50
|
Гуру
     
Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937

|
Цитата(vadimuzzz @ May 14 2009, 17:29)  на плавающей точке есть модели, они работают. схемы синхронизации я пока исключил из рассмотрения, гоняю тесты в матлабе и моделсиме. контроля переполнений пока нет, но и самих переполнений пока тоже, крупные баги я выловил. а есть где-нибудь почитать про ошибки округления в таких схемах? Посмотрите в книжках по адаптивным фильтрам, но не факт что там всё до конца рассмотрено и подходит для вашего случая, на практике всёравно как-то прикидывать надо, может чисто экспериментально на модели подбирать разрядности и т. п. Цитата(vadimuzzz @ May 14 2009, 17:29)  да, еще по синхронизации вопрос, у меня тактовая частота не устанавливается точно, выбирается ближайший отсчет, ошибка ~1-2% от Ts. как эквалайзер реагирует на такие ошибки (теоретически)? В модели смотрите как реагирует.
|
|
|
|
|
May 14 2009, 14:11
|

Гуру
     
Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988

|
Цитата(petrov @ May 14 2009, 20:50)  Посмотрите в книжках по адаптивным фильтрам, но не факт что там всё до конца рассмотрено и подходит для вашего случая, на практике всёравно как-то прикидывать надо, может чисто экспериментально на модели подбирать разрядности и т. п. а примеры вам не встречались, типа "вот X коэфф. разрядность Y бит - работает", мож. статьи? Цитата(petrov @ May 14 2009, 20:50)  В модели смотрите как реагирует. не очень представляю как такую ошибку сымитировать, а делать детальную модель схемы смысла нет, слишком долго считать будет
|
|
|
|
|
May 14 2009, 14:29
|
Гуру
     
Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937

|
Цитата(vadimuzzz @ May 14 2009, 18:11)  а примеры вам не встречались, типа "вот X коэфф. разрядность Y бит - работает", мож. статьи? Думаю нет простых ответов нигде. Цитата(vadimuzzz @ May 14 2009, 18:11)  не очень представляю как такую ошибку сымитировать, а делать детальную модель схемы смысла нет, слишком долго считать будет Наверняка можно всё сымитировать и с приемлемой скоростью даже в симулинке, а какие ещё варианты если в железки не видны нюансы.
|
|
|
|
|
May 14 2009, 16:02
|

Гуру
     
Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874

|
Цитата(vadimuzzz @ May 14 2009, 16:14)  как мне кажется, это из-за целочисл. вычислений и округлений. так ли это и какие элементы наиболее чувствительны к ошибкам округления? Сомневаюсь что ошибки округления могут давать такие эффекты. В устойчивой системе со временем их влияние ослабляется, а не накапливается. У Вас два отсчета на символ? Наверное в этом дело. Посмотрните на свои графики где уезжает эквалайзер - вблизи Найквиста. Там нет полезного сигнала, поэтому характеристика эквалайзера может скользить как угодно. Думаю дело в этом. Впрочем про особенности слепых эквалайзеров не знаю - до сих пор не сталкивался, так что может быть чего-то не понимаю.
--------------------
Пишите в личку.
|
|
|
|
|
May 15 2009, 04:47
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(vadimuzzz @ May 14 2009, 07:14)  накидал модельку линейного эквалайзера в матлабе, он выполнен в арифметике с фикс. точкой и с точночтью до цикла соответствует его описанию на VHDL(и железу). эквалайзер слепой, MMA(multi modulus algorithm), похож на метод Годара. вначале смотрел на коротких интервалах времени (порядка 10 тыс. итераций) и вроде алгоритм сходится, а в железе - не работает. проблема в том, что в железе я могу посмотреть только короткие (порядка 1 тыс. выборок) фреймы с интервалом между фреймами порядка миллиона итераций и процесс как фильтр разваливается, я не вижу, только результат. сгенерил в матлабе 10млн отсчетов, подал на вход, и заметил, что после относительно быстрой начальной подстройки, коэффициенты начинают мееедленно дрейфовать (см. скриншоты). как мне кажется, это из-за целочисл. вычислений и округлений. так ли это и какие элементы наиболее чувствительны к ошибкам округления? сейчас у меня отсчеты 8-битные, коэффициенты 16-битные, сильно увеличивать разрядность не позволят ресурсы. хватит такой точности? скриншоты,модель в симулинке,генератор отсчетов - в приложении. Недавно закончил похожий проект, FSE 2sps. Видел абсолютно тоже самое что и у вас. Мучал Матлаб/Моделсим/Железку иногда доходило до битья головой о стену. Эффект выглядел в точности как Цитата(Oldring @ May 14 2009, 11:52)  Это не важно сколько раз на символ вычисляются ошибки. Свертка с FIR эквалайзера есть перемножение в частнотной области. Со временем Ваш эквалайзер дрейфует в сторону задирания высоких частот вблизи частоты Найквиста, где обычно при использовании RRC нет вообще полезного сигнала. Эквалайзер вытаскивал частоты в районе Найквиста (где RRC вырезал все до уровня 70дБ!!!), см рисунок. на этом рисунке развитие эквалайзера в железке на интервале времени порядка 30 минут. Что и главное как эквалайзер что-то находит в этой полосе, так и осталось для меня загадкой, точное объяснение этого эффекта я не нашёл. В моей реализации причина была в ограничении коэффициентов эквалайзера с фиксированной точкой в диапазоне -2.0/+1.99, когда я расширил рабочий диапазон коэффициентов до -4.0/+3.99 все стало работать нормально. Дополнительно "нарыл" в литературе такой способ стабилизации эквалайзера как утечка. Правда при этом эквалайзер не находит оптимального решения и в зависимости от разного mu влияние утечки на решение эквалайзера разное, тут надо смотреть на допустимую ошибку настройки эквалайзера. ЗЫ. В моей системе использовались данные/коэффициенты 9 бит, метод вычисления ошибки по решению 9 бит, метод адаптации signed error LMS (хотя пробывал все), аккумуляторы коэффициентов 24 бита, mu = 1/2^12. в рабочей системе оставил утечку с коэффициентом 0.9999997615814208984375
Эскизы прикрепленных изображений
--------------------
|
|
|
|
|
May 15 2009, 05:15
|
Знающий
   
Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030

|
Цитата(des00 @ May 15 2009, 08:47)  Эффект выглядел в точности как Эквалайзер вытаскивал частоты в районе Найквиста (где RRC вырезал все до уровня 70дБ!!!), см рисунок. на этом рисунке развитие эквалайзера в железке на интервале времени порядка 30 минут. Что и главное как эквалайзер что-то находит в этой полосе, так и осталось для меня загадкой, точное объяснение этого эффекта я не нашёл. Немножко белого шума нужно было добавить на вход эквалайзера  , тогда бы LMS не уплывал бы фиг знает куда..
--------------------
ну не художники мы...
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|