Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Upsampling
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Allregia
Стандартный алгоритм апсемплинга прост - добиваем нулями промежуточные значения, затем ФНЧ.

Есть пара вопросов (предположим, что речь идет о кратном аспемлинге, т.е. х2, х4, этц.):

1) как узнать минимальные требования к ФНЧ? В смысле - минимальный порядок, нужет тут FIR или можно IIR или "скользящее среднее" (как самый быстрый фильтр)
2) По идее - чем меньше разность значения в добавляемом отсчете от того что там должно быть - тем "легче" фильтру (т.е. он может быть более низкого порядка). Может есть смысл добивать тогда не нулями а средним значением между имеющимися отсчетами (линейная интерполяция).
Serg76
Цитата(Allregia @ Jul 30 2013, 23:40) *
Стандартный алгоритм апсемплинга прост - добиваем нулями промежуточные значения, затем ФНЧ.

Есть пара вопросов (предположим, что речь идет о кратном аспемлинге, т.е. х2, х4, этц.):

1) как узнать минимальные требования к ФНЧ? В смысле - минимальный порядок, нужет тут FIR или можно IIR или "скользящее среднее" (как самый быстрый фильтр)
2) По идее - чем меньше разность значения в добавляемом отсчете от того что там должно быть - тем "легче" фильтру (т.е. он может быть более низкого порядка). Может есть смысл добивать тогда не нулями а средним значением между имеющимися отсчетами (линейная интерполяция).

добавлять надо нулями, а требования как к обычному фильтру - неравномерность в полосе пропускания, необходимый к-нт подавления в полосе заграждения, ну и плюс вопросы физической реализуемости.
P.S. еще необходимо учитывать требования к линейности ФЧХ
Allregia
Цитата(Serg76 @ Jul 30 2013, 22:45) *
добавлять надо нулями,


Т.е. вариант с линейной интерполяцией не годится?

Цитата
а требования как к обычному фильтру - неравномерность в полосе пропускания, необходимый к-нт подавления в полосе заграждения,


Как его узнать, этот "необходимый к-нт подавления"? Я пробовал с простым ФНЧ 2-го порядка - жуть, что на осциллографе, что на спектроанализаторе.
Lmx2315
QUOTE (Allregia @ Jul 31 2013, 14:49) *
Как его узнать, этот "необходимый к-нт подавления"? Я пробовал с простым ФНЧ 2-го порядка - жуть, что на осциллографе, что на спектроанализаторе.

..у вас есть требования по соотношению полезный сигнал/спуры ? - вот примените это требование к фильтру.
Надо например чтобы спуры давились на 70 Дб , значит это подавление в полосе заграждения, потому как от туда всё копируется в рабочую полосу.
serg1333
Чем больше апсемплинг тем более узкополосным должен быть FIR фильтр, следовательно для обеспечения требуемого качества (скругление, подавление за полосой, неравномерность в полосе) потребуется увеличить его порядок. Если нужен апсемплинг 8х и более стоит задуматься о связке FIR + CIC.

Цитата
Я пробовал с простым ФНЧ 2-го порядка

Если речь о FIR фильтре начните с 32 порядка... А если ресурс позволяет то с 64.
Allregia
Ммм да, слишком дикие цифры получаются. Осталось понять, как это делают "в железе" за достаточно невысокую стоимость.
serg1333
У вас полоса какая? А делаете на чем? ПЛИС, ДСП?
Allregia
Цитата(serg1333 @ Jul 31 2013, 14:41) *
У вас полоса какая?


Звуковая.

Цитата
А делаете на чем? ПЛИС, ДСП?


ДСП.

Цитата(serg1333 @ Jul 31 2013, 14:26) *
Чем больше апсемплинг тем более узкополосным должен быть FIR фильтр,


х2, х4 и иногда х8

Цитата
следовательно для обеспечения требуемого качества (скругление, подавление за полосой, неравномерность в полосе) потребуется увеличить его порядок. Если нужен апсемплинг 8х и более стоит задуматься о связке FIR + CIC.


Если речь о FIR фильтре начните с 32 порядка... А если ресурс позволяет то с 64.


это порядок, или число тапов?
serg1333
В общем случае порядок FIR фильтра и количество отводов с умножителями совпадают, хотя если фильтр проектируется с симметричной импульсной, то можно сделать фильтр с N/2+1 умножителями. Для такой узкой полосы можно сделать фильтр большого порядка. В случае вещественного входного сигнала для фильтра 128 порядка потребуется на каждый сэмпл делать 65 вещественных умножений, так же потребуется 512 байт на линию задержки (если используется 32-битная логика). Сам пишу на ПЛИС, там ресурс считается по-другому, но не думаю, что фильтрация полосы менее 22 кГц составит для процессора проблему.

Чтобы сделать 3 варианта фильтрации одним фильтром, можно сделать три набора коэффициентов, соответствующих, например 128 порядку. Порядок будет определяться по худшему случаю, т.е. когда апсемплинг равен 8. Для 4 и 2 просто уменьшайте скругление. Не забудьте нормализовать усиление коэффициентов фильтра для разных полос, иначе при переключении апсемплинга будете наблюдать разную мощность на выходе фильтра.
V_G
Цитата(Allregia @ Jul 31 2013, 22:37) *
Ммм да, слишком дикие цифры получаются. Осталось понять, как это делают "в железе" за достаточно невысокую стоимость.

Вообще-то прежде чем плодить длинное обсуждение, стоило знать спектр сигнала, дополненного нулями. Из него проистекают требования к ФНЧ.
Т.к. спектр модулированной импульсной последовательности однозначен и понятен (бесконечно размноженные копии спектра исходного сигнала на гармониках СТАРОЙ частоты дискретизации), ФНЧ должен убивать до уровня шумов эти копии. Т.е. в общем случае все, что выше половины старой частоты дискретизации.

А предварительную интерполяцию отсчетов не применяют, т.к. она породит непредсказуемую форму спектра нового сигнала, и требования к ФНЧ невозможно будет формализовать.
Sekat
Цитата(Allregia @ Jul 31 2013, 16:37) *
Ммм да, слишком дикие цифры получаются. Осталось понять, как это делают "в железе" за достаточно невысокую стоимость.

Попробуйте кубическую интерполяцию фильтром Фарроу. Дает отличные результаты при очень незначительных ресурсах. Большим преимуществом является так же то, что этим способом так же легко делается даже дробный ресемплинг с переменным коэффициентом.

Allregia
ОК, спасибо, я проверю насчет Фарроу.

Цитата


Линия задержки не проблема, памяти хватает, но вот насчет 65 вещественных умножений двух 32b и потом сложение 64b - сильно сомневаюсь, проц у меня слабенкий. Ну не получится - не страшно, я хотел просто дополнительные возможности сделать, в ТЗ их нет и без них можно и обойтись. Без х8 - 100% можно обойтись, даже и без х4 - хватило бы одного х2, но скорее всего по нормальному - и его не успею.

Цитата(V_G @ Jul 31 2013, 19:09) *
Вообще-то прежде чем плодить длинное обсуждение, стоило знать спектр сигнала, дополненного нулями. Из него проистекают требования к ФНЧ.


Спектр я знаю, видел на анализаторе что получается приодном только дополнении без фильтрации - ужас sad.gif
Что при линейной интерполяции происходит - тоже видел, не меньший ужас, но я думал может можно как-то улучшить интерполяцию (правда я не уверен, что какой-нибудь сплайн будет менее ресурсоемкий чем длинный FIR).

Цитата
Т.к. спектр модулированной импульсной последовательности однозначен и понятен (бесконечно размноженные копии спектра исходного сигнала на гармониках СТАРОЙ частоты дискретизации), ФНЧ должен убивать до уровня шумов эти копии. Т.е. в общем случае все, что выше половины старой частоты дискретизации.

А предварительную интерполяцию отсчетов не применяют, т.к. она породит непредсказуемую форму спектра нового сигнала, и требования к ФНЧ невозможно будет формализовать.


Понятно.
При слабом фильтре (2-4 порядок) как только частота сигнала выше четверти старой частоты дискретизации (ниже - все более-менее приемлимо) - начинают плодиться паразиты, амплитудой не сильно меньше амплитуды самого сигнала (синус) на частотах 0.5-0.75 от старой частоты дискретизации.
V_G
Цитата(Allregia @ Aug 1 2013, 04:04) *
При слабом фильтре (2-4 порядок) как только частота сигнала выше четверти старой частоты дискретизации (ниже - все более-менее приемлимо) - начинают плодиться паразиты, амплитудой не сильно меньше амплитуды самого сигнала (синус) на частотах 0.5-0.75 от старой частоты дискретизации.

Так на этих частотах и имеется зеркальный образ основного спектра. Поэтому если спектр заранее ограничен (например, третью или четвертью частоты дискретизации), построить ФНЧ после интерполяции легче. Если есть возможность, можно ДО интерполяции поставить ФНЧ, ограничивающий спектр сигнала. Его порядок будет меньше порядка аналогичного ФНЧ после интерполяции.
Allregia
Цитата(V_G @ Jul 31 2013, 23:33) *
Так на этих частотах и имеется зеркальный образ основного спектра. Поэтому если спектр заранее ограничен (например, третью или четвертью частоты дискретизации),


К сожалению не получится - есть два варианта входного сигнала, в первом он почти до половины ЧД, во втором - до четверти, но первый вариант как раз наиболее интересный.
Corner
Я чего-то не понимаю, но CIC фильтры как раз для этого и придуманы.
В данном случае можно применить каскадный вариант x2-CIC-x2-CIC... до нужного коэффициента децимации. Правда если он не степень двойки, то потребуется на 1... 2 каскадов больше. Особенно удобно если у вас сигнальник, тогда вся процедура строится в виде рекурсивной функции.
Михаил_K
Цитата(Allregia @ Jul 31 2013, 16:37) *
Ммм да, слишком дикие цифры получаются. Осталось понять, как это делают "в железе" за достаточно невысокую стоимость.


В железе это делается достаточно просто - путем использования полифазных фильтров. Не знаю, что для вас невысокая стоимость. Но для коэффициента подавления в районе 40 дБ часто достаточно 15 порядка FIR. Тут правда все еще зависит от переходной полосы. Т.е. 15 умножителей + 15 банков памяти для хранения коэффициентов.
Alexey_Rostov
Буквально на днях решил подобную задачу: Радиолокационный цифровой приемник, лчм с дев 4 МГц на видеочастоте, после децимации. Сделал интерполяцию, дополнив нулями между соседними отсчетами, из расчета повышения fs в 4 раза. Далее поставил low БИХ, порядок 4, срез чуть больше ширины спектра ЛЧМ
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.