|
Непонятки с моделью в симулинке, Гуру прошу вашей помощи |
|
|
|
Mar 13 2009, 07:28
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Добрый день господа! собрал FSE эквалайзер в железе. В качестве декодера ошибок использую декодер по решениям. Внес в канал только амплитудные искажения (поставил делитель напряжения) и вижу принеприятнейшую картину, коэффициенты эквалайзера медленно, но постоянно плавают(интервал наблюдения минут 30). При этом эквалайзер сводит ошибку к нулю (т.е. по его мнению все нормально). Если пересчитать импульсную характеристику эквалайзера в частотную то видно что эквалайзер формирует провал в частной характеристике в диапазоне от Fs..2Fs (Fs символьная частота). Хотя по идее он должен был только пересчитать центральный коэффициент. Собрал похожую модель в симулинке (в атаче, матлаб 2007а), при работе с double коэффициенты не плавают, но с точки зрения частной характеристики видна та же картина. А имеено ассиметричность коэффициентов относительно центрального. Длинна эквалайзера 32 тапа, индекс центрального коэффициента 16. Мне не понятно следующее 1. Почему 15 ый коэффициент изменяется некорректно и асимметрично с 17 ым? 2. Откуда эквалайзер находит фазовые искажения в канале, в котором их нет? По моему мнению он должен был просто дотянуть центральный коэффициент, т.е. выступить в роли АРУ 3. в модели petrov qam_fb_symbol_sync_fb_phase_sync_agc_var_ch_delay_eq_2007_07_21.mdl используется два детектора ошибки, в моей модели только детектор по решению? Корректно ли это ? 4. Почему при сходимости эквалайзера(ошибка ~= 0), сигнал на его выходе, на частоте 2*Fs визуально "хуже" чем на входе? понятно что это из-за коэффициентов FIR, но мне не понятно является ли такая ситуация нормальной. Спасибо.
Эскизы прикрепленных изображений
--------------------
|
|
|
|
|
Mar 13 2009, 11:13
|
Гуру
     
Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937

|
Цитата(des00 @ Mar 13 2009, 10:28)  2. Откуда эквалайзер находит фазовые искажения в канале, в котором их нет? По моему мнению он должен был просто дотянуть центральный коэффициент, т.е. выступить в роли АРУ Не из любой начальной амплитуды сигнала критерий настройки может подстроить усиление, только в небольших пределах, поэтому у меня в модели есть АРУ. Цитата(des00 @ Mar 13 2009, 10:28)  3. в модели petrov qam_fb_symbol_sync_fb_phase_sync_agc_var_ch_delay_eq_2007_07_21.mdl используется два детектора ошибки, в моей модели только детектор по решению? Корректно ли это ? Критерий настройки по решению работает только если решения более-менее правильные, когда глазок полностью схлопнут он не будет работать, поэтому в моей модели при больших ошибках используется критерий слепой настройки Годарда. Ваша модель не открывается у меня.
|
|
|
|
|
Mar 13 2009, 13:09
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(petrov @ Mar 13 2009, 05:13)  Не из любой начальной амплитуды сигнала критерий настройки может подстроить усиление, только в небольших пределах, поэтому у меня в модели есть АРУ. коэффициенты эквалайзера изменяются в пределе от -2.0 до 1.99, решение принимается по точкам +-64, входной сигнал +-32. если я правильно понимаю от эквалайзер может усилить сигнал в 2 раза Цитата Ваша модель не открывается у меня. понял, перенесу на выходных модель в 7.0.1 матлаб и выложу
--------------------
|
|
|
|
|
Mar 13 2009, 13:29
|
Частый гость
 
Группа: Свой
Сообщений: 166
Регистрация: 7-09-05
Из: Москва
Пользователь №: 8 340

|
Цитата(des00 @ Mar 5 2009, 08:56)  Если вам не сложно дайте ответ на следующие вопросы: 1. Почему модель моделируется очень медленно? 2. Как корректно в симулнике моделировать аналоговые цепи вида ЦАП-фильтр - модель кабеля (фильтр) - фильтр - АЦП? 3. Как корректно моделировать АЦП, который работает от подстаиваемого ГУН (Zero Order Hold в Enable Subsytem все равно требует задания Sample Time)? 4. Как перенести корректно типы в модели с double в типы, которые используются в проекте. Особенно интересуют петли, иначе такая модель не показательна. В модели 06 я изменил все типы на типы проекта, но так и не понял как корректно выкусить 12 старших бит из 32 на выходе петлевого фильтра, что бы матлаб считал результат как sint12? 5. Как корректно описывать временные декодеры, на подобие тех, что у меня в проекте? 1. Моделируется медленно из-за того, что очень малый расчетный шаг. Я обычно борюсь с этим следующим образом: компилирую модель в Real-Time Workshop - он создает исполняемый .exe файл, запускаю его на выполнение, на выходе которого формируется .mat файл с данными, которые выводятся на Scope'ы. Дальше просто загружаю этот файл в рабочее пространство Матлаба и уже на график. Бывает, что .mat файл формируется уж неприлично большим. Тогда можно поступить чуть хитрее. Выводить на Scope'ы сигналы не все время, а только когда он изменяется - размер .mat файла уменьшается на порядок. У Real-Time Workshop'a есть опции для настройки (быстрее компилировать модель и медленее выполнять ее, или медленнее компилировать и быстрее выполнять). Также советую для компилирования моделей поставить какой-нибудь компилятор поновее (не встроенный в матлаб) и настроить Real-Time Workshop на него. Я использую компилятор от Microsoft Visual Studio 2005. В целом, использование такого метода уменьшает время ожидания результатов моделирования по сравнению с традиционным на порядки. 2-3 не очень понятны вопросы (что конкретно не понятно), все зависит от глубины моделирования. Если вы не особо знакомы с Симулинком, лучше наверное начать с изучения и понимания разницы между Discrete Signal и Continuous Signal в Симулинке. Искать примеры моделей по интересующей вас теме на сайте матлабовцев. 4. Это лучше посмотреть демки пакета Simulink Fixed Point. Например "Double to Fixed-Point Conversion", "Fixed-Point to Fixed-Point Conversion" 5. Ничего не могу сказать, не моя тема.
|
|
|
|
|
Mar 14 2009, 09:02
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
выкладываю проект под матлаб 7.0.1 ( модели уважаемого petrov я запускал именно в нем). Поправил петлю по тактовой, конечно в ней не хватает аналогового фильтра на 1кгц, но как его применить в данной модели мне не понятно. Design Filter Tool валиться на требуемой АЧХ RC фильтра второго порядка  . если я правильно трактую что я виду, то после переходного процесса петля устаканивается. но вот эквалайзер все равно работает странно. Передатчик выдает сигнал +-128, эквалайзер настроен на +-64, пробывал разные ампилитудные искажения 1/2, 2/3, 1/3, во всех случаях эквалайзер начинает тянуть соседние от центрального коэффициенты и если я правильно понимаю то находит частотные искажения в канале, в котором их нет. При этом сигнал на выходе эквалайзера визуально хуже чем на входе. 2 petrov Цитата Дело не в том что центральный коэфициент может или не может какие-то значения принимать, а в том что рабочая функция при выбранном критерии настройки имеет локальные минимумы отличные от глобального. хмм, я думал что в методе наименьших квадратов только один минимум, а как тогда определить что попал имеено в тот минимум который нужен ? 2 _Anatoliy Цитата Кстати,как Вы делаете цветные модели?У меня все чёрно-белые Format -> Port/Signals -> Sample Time Colors без этого как без рук, мне философию матлаба с разными тактовыми и сигналами разрешения на этих тактовых (та же модель АЦП на другом клоке) пока не понять. 2 Tue спасибо за советы
--------------------
|
|
|
|
|
Mar 19 2009, 14:16
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(petrov @ Mar 16 2009, 16:03)  Проблема не в эквалайзере а в символьной синхронизации, если отключить петлю символьной синхронизации и подобрать правильную фазу задержкой, то эквалайзер подстраивает усиление, не только центральным коэффициентом, другие тоже немного меняются. В вашем простом случае действительно усиление можно подстраивать одним лишь эквалайзером, но соответственно увеличиваются требования к его разрядности. спасибо большое, та модель была сделана тяп ляп, я посмотрел по ИКО увидел что ошибок нет и занялся эквалайзером. сейчас переработал модель, добавил антиалайзинговый фильтр по выходу, настроил петлю по тактовой (переходный процесс хорошо видно в начале старта модели), убрал 8 ми битное масштабирование (т.е. поставил точки в [-0.5 0.5]). эквалайзер стал вести себя более корректно (пока вносил только амплитудные искажения), но вот что интересно. Вношу искажения 3/4(equ_coe_3_4.jpg, слева), коэффициенты ведут себя корректно, ИХ эквалайзера идет по sin(x)/x, а когда вношу искажения 1/4 (equ_coe_1_4.jpg, справа)то ИХ тоже идет по sin(x)/x но с периодом в 2 раза больше(!!!). По сигналу и ошибкам все нормально, но вообще ситуация странная. Не могли бы вы объяснить данную ситуацию ? Или это как раз и есть пример влияния динамического диапазона эквалайзера на сходимость коэффициентов ? Спасибо.
Эскизы прикрепленных изображений
--------------------
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|