_sda 0 20 апреля, 2022 Опубликовано 20 апреля, 2022 · Жалоба Коллеги, понадобилось мне написать софтовый эквалайзер для записанных ранее в файл компонентов I,Q с модуляцией QPSK либо QAM16. На входе эквалайзера символьная частота восстановлена, ошибка несущей исправлена. Для этих картинок размер блока данных QPSK для обработки – 8К символов, четыре отсчёта на символ. Решение = +-500ед. Значение в файле задано +-100ед. Ошибка АЧХ входного сигнала отключена. Эквалайзер имеет 23 тапа, реализация ссылка на статью На картинке 3 выводится ошибка по решению, видно что процесс сходящийся, ошибка уменьшается. На картинке 2 выводятся отсчёты с выхода эквалайзера, сигналы плавно от значения дрейфуют к решению. В начале работы интеграторы инициализируются значением [zeros((nTAP-1)/2,1) 1 zeros((nTAP-1)/2,1)] Непонятное поведение видно на первой картинке, это модуль ИХ эквалайзера в конце обработки входных данных. Ожидалось что будет увеличиваться уровень центрального тапа от 1 до 5, но вместо этого почему-то увеличивается уровень первого тапа, а уровень центрального не меняется. Подскажите, знающие люди, почему так может происходить? Раньше делал модемы в «железе», там всегда за уровень отвечал центральный тап. Если на вход попробовать подать сигнал с небольшим искажением АЧХ – эквалайзер уходит в разнос. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
petrov 7 20 апреля, 2022 Опубликовано 20 апреля, 2022 · Жалоба _sda Подскажите, знающие люди, почему так может происходить? В коде быстро теряется обозримость, элементарная ошибка в индексации массивов и всё поехало, ведь даже в статье картинки для чего-то, а не кусок кода на C. Вы же уже делали всё это в виде блок схемы, где все задержки в явном виде. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 21 апреля, 2022 Опубликовано 21 апреля, 2022 · Жалоба 17 часов назад, petrov сказал: _sda Подскажите, знающие люди, почему так может происходить? В коде быстро теряется обозримость, элементарная ошибка в индексации массивов и всё поехало, ведь даже в статье картинки для чего-то, а не кусок кода на C. Вы же уже делали всё это в виде блок схемы, где все задержки в явном виде. Да, вы правы, нашёл одну ошибку, только стало ещё хуже. Цитата Вы же уже делали всё это в виде блок схемы, где все задержки в явном виде. Вы имеете ввиду модели в симулинке? А о каких задержках речь? Я пишу программную реализацию, здесь в отличие от FPGA латентность отсутствует. Или вы о другом? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
petrov 7 21 апреля, 2022 Опубликовано 21 апреля, 2022 · Жалоба _sda Вы имеете ввиду модели в симулинке? А о каких задержках речь? Я пишу программную реализацию, здесь в отличие от FPGA латентность отсутствует. Ну вот в картинках из журнала вижу задержки, они не зависят от реализации. Разработка алгоритма и перенос его на язык - разные задачи, если совмещать, то происходит самозапутывание. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 21 апреля, 2022 Опубликовано 21 апреля, 2022 · Жалоба 11 минут назад, petrov сказал: _sda Вы имеете ввиду модели в симулинке? А о каких задержках речь? Я пишу программную реализацию, здесь в отличие от FPGA латентность отсутствует. Ну вот в картинках из журнала вижу задержки, они не зависят от реализации. Разработка алгоритма и перенос его на язык - разные задачи, если совмещать, то происходит самозапутывание. Очень похоже что именно с этим я и столкнулся. Почитаю ещё раз статью, похоже что-то пропустил. Спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться