|
Upsampling |
|
|
|
Jul 30 2013, 20:45
|
Профессионал
    
Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775

|
Цитата(Allregia @ Jul 30 2013, 23:40)  Стандартный алгоритм апсемплинга прост - добиваем нулями промежуточные значения, затем ФНЧ.
Есть пара вопросов (предположим, что речь идет о кратном аспемлинге, т.е. х2, х4, этц.):
1) как узнать минимальные требования к ФНЧ? В смысле - минимальный порядок, нужет тут FIR или можно IIR или "скользящее среднее" (как самый быстрый фильтр) 2) По идее - чем меньше разность значения в добавляемом отсчете от того что там должно быть - тем "легче" фильтру (т.е. он может быть более низкого порядка). Может есть смысл добивать тогда не нулями а средним значением между имеющимися отсчетами (линейная интерполяция). добавлять надо нулями, а требования как к обычному фильтру - неравномерность в полосе пропускания, необходимый к-нт подавления в полосе заграждения, ну и плюс вопросы физической реализуемости. P.S. еще необходимо учитывать требования к линейности ФЧХ
Сообщение отредактировал Serg76 - Jul 30 2013, 20:49
|
|
|
|
|
Jul 31 2013, 10:49
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763

|
Цитата(Serg76 @ Jul 30 2013, 22:45)  добавлять надо нулями, Т.е. вариант с линейной интерполяцией не годится? Цитата а требования как к обычному фильтру - неравномерность в полосе пропускания, необходимый к-нт подавления в полосе заграждения, Как его узнать, этот "необходимый к-нт подавления"? Я пробовал с простым ФНЧ 2-го порядка - жуть, что на осциллографе, что на спектроанализаторе.
|
|
|
|
|
Jul 31 2013, 12:26
|
Участник

Группа: Участник
Сообщений: 21
Регистрация: 30-06-13
Из: Томск
Пользователь №: 77 321

|
Чем больше апсемплинг тем более узкополосным должен быть FIR фильтр, следовательно для обеспечения требуемого качества (скругление, подавление за полосой, неравномерность в полосе) потребуется увеличить его порядок. Если нужен апсемплинг 8х и более стоит задуматься о связке FIR + CIC. Цитата Я пробовал с простым ФНЧ 2-го порядка Если речь о FIR фильтре начните с 32 порядка... А если ресурс позволяет то с 64.
|
|
|
|
|
Jul 31 2013, 12:41
|
Участник

Группа: Участник
Сообщений: 21
Регистрация: 30-06-13
Из: Томск
Пользователь №: 77 321

|
У вас полоса какая? А делаете на чем? ПЛИС, ДСП?
|
|
|
|
|
Jul 31 2013, 13:54
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763

|
Цитата(serg1333 @ Jul 31 2013, 14:41)  У вас полоса какая? Звуковая. Цитата А делаете на чем? ПЛИС, ДСП? ДСП. Цитата(serg1333 @ Jul 31 2013, 14:26)  Чем больше апсемплинг тем более узкополосным должен быть FIR фильтр, х2, х4 и иногда х8 Цитата следовательно для обеспечения требуемого качества (скругление, подавление за полосой, неравномерность в полосе) потребуется увеличить его порядок. Если нужен апсемплинг 8х и более стоит задуматься о связке FIR + CIC.
Если речь о FIR фильтре начните с 32 порядка... А если ресурс позволяет то с 64. это порядок, или число тапов?
|
|
|
|
|
Jul 31 2013, 15:36
|
Участник

Группа: Участник
Сообщений: 21
Регистрация: 30-06-13
Из: Томск
Пользователь №: 77 321

|
В общем случае порядок FIR фильтра и количество отводов с умножителями совпадают, хотя если фильтр проектируется с симметричной импульсной, то можно сделать фильтр с N/2+1 умножителями. Для такой узкой полосы можно сделать фильтр большого порядка. В случае вещественного входного сигнала для фильтра 128 порядка потребуется на каждый сэмпл делать 65 вещественных умножений, так же потребуется 512 байт на линию задержки (если используется 32-битная логика). Сам пишу на ПЛИС, там ресурс считается по-другому, но не думаю, что фильтрация полосы менее 22 кГц составит для процессора проблему.
Чтобы сделать 3 варианта фильтрации одним фильтром, можно сделать три набора коэффициентов, соответствующих, например 128 порядку. Порядок будет определяться по худшему случаю, т.е. когда апсемплинг равен 8. Для 4 и 2 просто уменьшайте скругление. Не забудьте нормализовать усиление коэффициентов фильтра для разных полос, иначе при переключении апсемплинга будете наблюдать разную мощность на выходе фильтра.
|
|
|
|
|
Jul 31 2013, 17:09
|

Профессионал
    
Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955

|
Цитата(Allregia @ Jul 31 2013, 22:37)  Ммм да, слишком дикие цифры получаются. Осталось понять, как это делают "в железе" за достаточно невысокую стоимость. Вообще-то прежде чем плодить длинное обсуждение, стоило знать спектр сигнала, дополненного нулями. Из него проистекают требования к ФНЧ. Т.к. спектр модулированной импульсной последовательности однозначен и понятен (бесконечно размноженные копии спектра исходного сигнала на гармониках СТАРОЙ частоты дискретизации), ФНЧ должен убивать до уровня шумов эти копии. Т.е. в общем случае все, что выше половины старой частоты дискретизации. А предварительную интерполяцию отсчетов не применяют, т.к. она породит непредсказуемую форму спектра нового сигнала, и требования к ФНЧ невозможно будет формализовать.
|
|
|
|
|
Jul 31 2013, 17:20
|
Участник

Группа: Участник
Сообщений: 61
Регистрация: 13-02-12
Пользователь №: 70 242

|
Цитата(Allregia @ Jul 31 2013, 16:37)  Ммм да, слишком дикие цифры получаются. Осталось понять, как это делают "в железе" за достаточно невысокую стоимость. Попробуйте кубическую интерполяцию фильтром Фарроу. Дает отличные результаты при очень незначительных ресурсах. Большим преимуществом является так же то, что этим способом так же легко делается даже дробный ресемплинг с переменным коэффициентом.
|
|
|
|
|
Jul 31 2013, 18:04
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763

|
ОК, спасибо, я проверю насчет Фарроу. Цитата Линия задержки не проблема, памяти хватает, но вот насчет 65 вещественных умножений двух 32b и потом сложение 64b - сильно сомневаюсь, проц у меня слабенкий. Ну не получится - не страшно, я хотел просто дополнительные возможности сделать, в ТЗ их нет и без них можно и обойтись. Без х8 - 100% можно обойтись, даже и без х4 - хватило бы одного х2, но скорее всего по нормальному - и его не успею. Цитата(V_G @ Jul 31 2013, 19:09)  Вообще-то прежде чем плодить длинное обсуждение, стоило знать спектр сигнала, дополненного нулями. Из него проистекают требования к ФНЧ. Спектр я знаю, видел на анализаторе что получается приодном только дополнении без фильтрации - ужас  Что при линейной интерполяции происходит - тоже видел, не меньший ужас, но я думал может можно как-то улучшить интерполяцию (правда я не уверен, что какой-нибудь сплайн будет менее ресурсоемкий чем длинный FIR). Цитата Т.к. спектр модулированной импульсной последовательности однозначен и понятен (бесконечно размноженные копии спектра исходного сигнала на гармониках СТАРОЙ частоты дискретизации), ФНЧ должен убивать до уровня шумов эти копии. Т.е. в общем случае все, что выше половины старой частоты дискретизации.
А предварительную интерполяцию отсчетов не применяют, т.к. она породит непредсказуемую форму спектра нового сигнала, и требования к ФНЧ невозможно будет формализовать. Понятно. При слабом фильтре (2-4 порядок) как только частота сигнала выше четверти старой частоты дискретизации (ниже - все более-менее приемлимо) - начинают плодиться паразиты, амплитудой не сильно меньше амплитуды самого сигнала (синус) на частотах 0.5-0.75 от старой частоты дискретизации.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|