SergeyAB 0 22 апреля, 2013 Опубликовано 22 апреля, 2013 · Жалоба Здравствуйте! Мне нужно отфильтровать сигнал в полосе 300Гц. АЦП офифровывает сигнал с частотой 700кГц. В ADSP-21489 програмно осуществляется предварительная фильтрация путем взитие среднего по 128 отсчетам. После этой фильтрации частота дискретизации равна 700/128=5,468 кГц. Далее я выполняю фильтрацию с помощью аппаратного БИХ фильтра на 6 биквадах. Коэффициенты расчитал с помощью матлаб-скрипта, приложенного к примеру кода с сайта AD. Полоса фильтра 300Гц. Я накапливаю 512 усредненных отсчетов и фильтрую их с помощью БИХ фильтра. При фильтрации сигнала большой амплитуды, находящегося вне полосы пропускания, например 2кГц в местах склейки окон наблюдаются затухающие синусоидальные выбросы. Причем при уменьшенииамплитуды входного сигнала выбросы постепенно пропадают. Подскажите пожалуйста что это такое и как с этим бороться! У меня пока появилась такая идея: при окончании фильтрации окна, сохраняется внутреннее состояние фильтра(dk1,dk2), но не сохраняется последнее выходное значение сигнала, из которого после первого шага фильтрации должно было бы сформироваться внутреннее состояние последней биквады. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lmx2315 2 23 апреля, 2013 Опубликовано 23 апреля, 2013 · Жалоба Здравствуйте! Мне нужно отфильтровать сигнал в полосе 300Гц. АЦП офифровывает сигнал с частотой 700кГц. В ADSP-21489 програмно осуществляется предварительная фильтрация путем взитие среднего по 128 отсчетам. После этой фильтрации частота дискретизации равна 700/128=5,468 кГц. Далее я выполняю фильтрацию .... ..простите, может я не в теме - но разве "взятие среднего по 128 отсчётам" вам обеспечивает достаточное подавление альясинга при такой большой децимации начальной тактовой частоты? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SergeyAB 0 23 апреля, 2013 Опубликовано 23 апреля, 2013 · Жалоба Взятие среднего в цифровой форме не устранит наложение спектров) Перед АЦП стоит активный фильтр на операционном усилителе с полосой 2,5кГц. С учетом того что частота дискретизации АЦП 700kSPS, наложения спектров нет(ну практически нет). Микросхема MAX274, вне полосы пропускания подавление до 80 дБ. Возможно я действительно чтото забыл указать, спасибо за уточняющие вопросы! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
litv 0 23 апреля, 2013 Опубликовано 23 апреля, 2013 · Жалоба У Вас не хватает разрядности в БИХ реализации звена. Ограничен либо умножитель - например его надо расширить в 1.5 - 2 раза. Как Вы вообще работаете. Надо делать модель с учетом разрядности , нарисовать в simulink matlab. И сами увидите при моделировании когда ограничение наступит (при какой входно амплитуде) и где. Потом расширите умножитель и сумматоры - и заработает. p.s. КИХ фильтры моделировать и предсказывать значительно проще. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SergeyAB 0 23 апреля, 2013 Опубликовано 23 апреля, 2013 · Жалоба В процессоре ADSP-21489 есть режим работы аппаратного БИХ-фильтра в режиме 40бит. Если я использую эту возможность, то есть вероятность что выбросы в начале окна появляться не будут? Вообще сейчас все работает с 32 битами, причем разрядность АЦП 14бит. Данный на фильтр подаются с типом float. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
shf_05 0 23 апреля, 2013 Опубликовано 23 апреля, 2013 · Жалоба коэффициенты БИХ матлаб выдал целочисленные или флоат нигде ничего не отбросили и точность не потеряли? попробуйте в fdatool позадавать опции арифметики. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SergeyAB 0 23 апреля, 2013 Опубликовано 23 апреля, 2013 · Жалоба Матлаб выдал коэффициенты в формате float Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
shf_05 0 24 апреля, 2013 Опубликовано 24 апреля, 2013 · Жалоба Матлаб выдал коэффициенты в формате float а в вашем фильтре флоат? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SergeyAB 0 24 апреля, 2013 Опубликовано 24 апреля, 2013 · Жалоба Да, везде float используется. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
shf_05 0 25 апреля, 2013 Опубликовано 25 апреля, 2013 · Жалоба остается одно - проверить в матлабе как будет работать фильтр при тех же разрядностях сумматоров и умножителей, как вам написал litv, только я использовал fdatool а не симулинк. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SergeyAB 0 25 апреля, 2013 Опубликовано 25 апреля, 2013 (изменено) · Жалоба Спасибо! У меня воникла еще одна проблема, та децимация которую я делаю в начале, из 700кГц делая 5,5кГц, беря среднее окнами по 128 отсчетов приводит к наложению спектров! Мне следовало бы брать простое скользящее среднее, а потом делать децимацию, в соответствии с АЧХ полученного фильтра скользящего среднего. В результате я бы получал гораздо больше децимированных отсчетов чем прежде и фильтровал их с помощью БИХ фильтра. Не подскажите как бы мне поэффективнее провести первоначальную фильтрацию, возможно не используя скользящее среднее? PS понял что надо к делу подходить основательнее, серьзно занялся проверкой всех фильтров в матлабе, и именно там пришло просветление про наложение спектров. Изменено 25 апреля, 2013 пользователем SergeyAB Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SergeyAB 0 17 мая, 2013 Опубликовано 17 мая, 2013 (изменено) · Жалоба Я пришел к выводу что это не возбуждение фильтра, а так называемый "звон". И у меня складывается мнение что его причина в методе фильтрации, я использую аппаратную фильтрацию на БИХ. Причем я пробывал перейти на КИХ но получил такой же звон, только он был в середине окна (окно=числу коэффициентов в моем случае для КИХ) При аппаратной цифровой фильтрации на SHARC через фильтр прогоняется одно окно входных отсчетов, потом второе и т.д. А в идеале данные должны идти подряд, непрерывно, т.е. лишь при поступлении нового входного отсчета из фильтра должен выйти новый выходной отсчет. При оконной фильтрации в конце фильтрации окна начальные ступени фильтра начинают освобождаться, не получая новых отсчетов, которые находяться в буфере следующего окна. Знатоки DSP от AD помогите пожалуйста! Как сделать так чтобы только при поступлении нового отсчета фильтр делал "шаг"??? Или моя проблема в чем то другом? Я приложил график отфильтрованного окна в 512 отсчетов, БИХ фильтр на 6 биквадах. Звон(выброс) в начале! PS для уменьшения звона я попытался использовать фильтр с пологой АЧХ Window-Gaussian в fdatool, но это слегка уменьшило звон, но недостаточно. Изменено 17 мая, 2013 пользователем SergeyAB Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
polyakovav 0 18 мая, 2013 Опубликовано 18 мая, 2013 (изменено) · Жалоба Я пришел к выводу что это не возбуждение фильтра, а так называемый "звон". И у меня складывается мнение что его причина в методе фильтрации, я использую аппаратную фильтрацию на БИХ. Причем я пробывал перейти на КИХ но получил такой же звон, только он был в середине окна (окно=числу коэффициентов в моем случае для КИХ) При аппаратной цифровой фильтрации на SHARC через фильтр прогоняется одно окно входных отсчетов, потом второе и т.д. А в идеале данные должны идти подряд, непрерывно, т.е. лишь при поступлении нового входного отсчета из фильтра должен выйти новый выходной отсчет. При оконной фильтрации в конце фильтрации окна начальные ступени фильтра начинают освобождаться, не получая новых отсчетов, которые находяться в буфере следующего окна. Знатоки DSP от AD помогите пожалуйста! Как сделать так чтобы только при поступлении нового отсчета фильтр делал "шаг"??? Или моя проблема в чем то другом? Я приложил график отфильтрованного окна в 512 отсчетов, БИХ фильтр на 6 биквадах. Звон(выброс) в начале! PS для уменьшения звона я попытался использовать фильтр с пологой АЧХ Window-Gaussian в fdatool, но это слегка уменьшило звон, но недостаточно. Все как-то странно... Против алиазинга в Вашем случае хорошо бы CIC-фильтр с децимацией на 128 (в матлабе и симулинке есть), необходимое подавление проверяйте за полосой 5468/2-300= 2400 Гц. Основной фильтр проще будет сделать КИХ. Но проблема, похоже, не в самом фильтре, а в блоковой обработке. SHARC сам не программировал, но у AD, помнится, были примеры кода для непрерывной фильтрации. Изменено 18 мая, 2013 пользователем polyakovav Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться