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

|
добрый день! Гуру симулинка просветите что я делаю не так. Стоит задача сделать простой кабельный модем. Функциональная схема следующая: плис передатчик (генератор потока - скремблер - формирователь фронтов - цап-фильтр) - кабель 100-300 метров - плис приемник (фильтр - ацп - дециматор - LMS эквалайзер - временной декодер - петля по тактовой/дескремблер - VCO/ИКО) в железе собрал проект за 1 день (кроме LMS эквалайзера), все работает данные передаются корректно, петля в захвате, полоса петли 1кгц. для не слепой разработки эквалайзера начал осваивать симулинк, перенес туда аппаратный проект как есть. сделал все на double типах, время дискретное фиксированное. Опорная частота работы 179.2МГц. Но модель 05 моделируется очень медленно(вот это не понятно) и контроль поведения модели в разных точках проекта идет в разнос с тем, что происходит в аппаратуре(этом может быть сам где накосячил). Если вам не сложно дайте ответ на следующие вопросы: 1. Почему модель моделируется очень медленно? 2. Как корректно в симулнике моделировать аналоговые цепи вида ЦАП-фильтр - модель кабеля (фильтр) - фильтр - АЦП? 3. Как корректно моделировать АЦП, который работает от подстаиваемого ГУН (Zero Order Hold в Enable Subsytem все равно требует задания Sample Time)? 4. Как перенести корректно типы в модели с double в типы, которые используются в проекте. Особенно интересуют петли, иначе такая модель не показательна. В модели 06 я изменил все типы на типы проекта, но так и не понял как корректно выкусить 12 старших бит из 32 на выходе петлевого фильтра, что бы матлаб считал результат как sint12? 5. Как корректно описывать временные декодеры, на подобие тех, что у меня в проекте? Копаюсь уже вторую неделю и все больше прихожу к мысли что для аппаратной разработки модемов нужно использовать мосты ХДЛ симулятор-симулинк, а не чистый симулинк. А то тривиальные временные вещи (тот же временной декодер) описываются через одно место. И ведь по сути модем разрабатывается 2 раза, сначала нарисовать все в симулинке, потом ручками перебить в хдл. Спасибо.
--------------------
|
|
|
|
2 страниц
< 1 2
|
 |
Ответов
(15 - 26)
|
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 раза больше(!!!). По сигналу и ошибкам все нормально, но вообще ситуация странная. Не могли бы вы объяснить данную ситуацию ? Или это как раз и есть пример влияния динамического диапазона эквалайзера на сходимость коэффициентов ? Спасибо.
Эскизы прикрепленных изображений
--------------------
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|