Цитата(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