Flip-fl0p 0 Posted September 23, 2020 · Report post Добрый вечер уважаемые посетители форума. И снова я вынужден просить вашей помощи. Понадобился мне в работе фильтр нижних частот. Частота среза 25 Мгц. Частота поступающих данных от АЦП – 266 МГц. В качестве такого фильтра я применяю IP core FIR от Xilinx. Коэффициенты фильтра были получены от коллеги. Оказалось, что фильтр не работает. Стал разбирать причину почему не работает. Исключил некорректные коэффициенты фильтра. Для этого сам в Matlab сгенерировал коэффициенты фильтра. Результат не изменился совсем. В качестве теста подал одиночную синусоиду в полосе пропускания фильтра. И вот что я обнаружил: На картинке в качестве у меня эталонный выходной сигнал «Сигнал после фильтрации референс» полностью соответствует входному сигналу. Как и должно быть. А вот выходной сигнал с фильтра оказался с большим периодом. Ровно в два раза. Соответственно спектр сигнала тоже не тот, что я ожидаю. Хотя по логике работы выходной сигнал должен быть практически такой-же как и эталонный (или как входной). Помогите разобраться с проблемой. Quote Ответить с цитированием Share this post Link to post Share on other sites
likeasm 0 Posted September 23, 2020 · Report post 1. Попробуйте FIR симулировать в связке с DDS, может там чего-то отловите. 2. У вас 30 бит выходные данные, старшие разряды не потеряли? Quote Ответить с цитированием Share this post Link to post Share on other sites
Flip-fl0p 0 Posted September 23, 2020 · Report post 5 минут назад, likeasm сказал: 1. Попробуйте FIR симулировать в связке с DDS, может там чего-то отловите. 2. У вас 30 бит выходные данные, старшие разряды не потеряли? Не должен был. Я в modelsim подаю из текстового документа входной вектор. Выходные данные с фильтра (все биты) я также записываю в текстовый файл, который потом применяю в Matlab и по отсчетам из этого текстового файла делаю БПФ для анализа спектра. Quote Ответить с цитированием Share this post Link to post Share on other sites
likeasm 0 Posted September 23, 2020 · Report post COE файл хоть скиньте Quote Ответить с цитированием Share this post Link to post Share on other sites
Flip-fl0p 0 Posted September 23, 2020 · Report post 2 минуты назад, likeasm сказал: COE файл хоть скиньте Завтра только смогу... Quote Ответить с цитированием Share this post Link to post Share on other sites
des00 0 Posted September 24, 2020 · Report post что-то мне подсказывает(разные тактовая и входные частоты), что вход/выход фильтра стробируемый и не совсем корректно наблюдаются результаты) ЗЫ. инженер вашего уровня, напишет свой, подобный FIR, минут за 15, стоило оно того ;) Quote Ответить с цитированием Share this post Link to post Share on other sites
Flip-fl0p 0 Posted September 24, 2020 · Report post 6 часов назад, des00 сказал: что-то мне подсказывает(разные тактовая и входные частоты), что вход/выход фильтра стробируемый и не совсем корректно наблюдаются результаты) ЗЫ. инженер вашего уровня, напишет свой, подобный FIR, минут за 15, стоило оно того ;) К сожалению, Вы сильно переоцениваете мой уровень. В области ЦОС - я новичок. Я только-только понемногу начинаю осваивать эту область. А писать реализацию " в лоб" как-то не очень хочется. Мне показалось, что решение задачи на готовом ядре было бы более правильным, учитывая, что фильтр нужен был ещё "вчера". Всем ответившрм спасибо ! Проблему нашел. Оказалось, что в код, , который считывает тестовый вектор из файла закралась ошибка, что и привело к неожиданному результату. Исправил ошибку и тестовая(идеальная )модель практически полностью соответствует выходу FIR. Quote Ответить с цитированием Share this post Link to post Share on other sites
Nemos760 0 Posted October 3, 2020 · Report post Если я не ошибаюсь, fdatool в Mathlab давно умеет генерить фильтры в hdl по шаблону с возможностью выбора параллельной, последовательной или смешанной реализации. КИХ фильтр без расчёта импульсной характеристики, т. е. с готовыми коэффициентами очень прост. Это буфер как элемент задержки и умножители с сумматорами. В своё время пришлось самому писать только из-за того, что в используемом чипе не было аппаратных умножителей и пришлось их делать на логике и под них подстраивать модуль фильтра, правда ещё и места для отчётов не хватало для хранения в регистрах и пришлось ещё всё в озу переносить. Quote Ответить с цитированием Share this post Link to post Share on other sites
Strob 0 Posted October 4, 2020 · Report post Коэффициенты фильтра рассчитывались от частоты 266мгц? Quote Ответить с цитированием Share this post Link to post Share on other sites
Flip-fl0p 0 Posted October 4, 2020 · Report post 40 минут назад, Strob сказал: Коэффициенты фильтра рассчитывались от частоты 266мгц? Да. Проблема оказалось в том, что я некорректно считывал тестовые воздействия из файла (у меня закралась лишняя задержка) из-за чего - входной тестовый вектор был визуально похож на модель в Matlab. А фактически - это был совсем другой сигнал. Quote Ответить с цитированием Share this post Link to post Share on other sites