реклама на сайте
подробности

 
 
> Дробная передискретизация полифазным фильтром
tim_s80
сообщение Jul 17 2012, 09:40
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 11-08-10
Пользователь №: 58 866



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

Если делать не в режиме Фарроу, а просто как программную реализацию полифазного варианта, то по какому правилу следует выбирать момент и фазу выхода полифазного фильтра чтоб, например, передискретизировать с частоты 4*1/3 в частоту 2 при условии, что полифазный фильтр состоит из 16 ветвей и в каждой ветви 16 коэффициентов.
Go to the top of the page
 
+Quote Post
3 страниц V  < 1 2 3  
Start new topic
Ответов (30 - 38)
_Ivana
сообщение Jul 21 2012, 17:40
Сообщение #31


Местный
***

Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710



Детали тоже интересны, особенно если остальное более-менее понятно. Например, объединение в один полифазный фильтр двух с разным количеством фаз (в документе кратко описано, надо разобраться) и тот самый алгоритм трехкаскадного сабсемплинга от MDS (явно с документе не описан, только сказано что при количестве каскадов 4 и более ну нереально сложно сделать оптимальный алгоритм).

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

Это если исходный сигнал дискретизирован "впритык", то есть там есть спектр почти до Найквиста. А если дискретизирован с большим запасом, то имхо прямоугольность можно не обеспечивать, только большое подавление в полосе задержания, а переходную полосу можно растянуть насколько запас позволит. Здесь я чуть ли не в первый раз согласен с des00
Цитата
Качество фильтра определяется местоположением "зеркального" спектра после интерполяции и зависит от исходной ширины спектра сигнала и его тактовой частоты.


Сообщение отредактировал _Ivana - Jul 21 2012, 17:47
Go to the top of the page
 
+Quote Post
fontp
сообщение Jul 21 2012, 17:46
Сообщение #32


Эксперт
*****

Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183



QUOTE (_Ivana @ Jul 21 2012, 21:40) *
Детали тоже интересны, особенно если остальное более-менее понятно. Например, объединение в один полифазный фильтр двух с разным количеством фаз (в документе кратко описано, надо разобраться) и тот самый алгоритм трехкаскадного сабсемплинга от MDS (явно с документе не описан, только сказано что при количестве каскадов 4 и более ну нереально сложно сделать оптимальный алгоритм).


Там на каждой ступени фильтр оптимален (по Ремезу). А в целом возможен только перебор - перераспределяя количество тапов по каскадам ( с учетом заданной разрядности поскольку общая х-ка как раз страдает).
Если Вам такие детали интересны, я мог бы забросить программу для ознакомления на опыты))
У них, кстати, есть тоже неплохой AN но там более широко чем передискретизация, там фильтры multirate
http://mds.com/system/resources/BAhbBlsHOg...ate_article.pdf
Go to the top of the page
 
+Quote Post
_Ivana
сообщение Jul 21 2012, 18:01
Сообщение #33


Местный
***

Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710



Мне интересны такие детали. Только например если Вы забросите код на чем-нибудь типа VisualDSP++ или как её там или чем-то подобном, на хитром специальном скрипте, то вряд ли я смогу его посмотреть.
У меня много вопросов возникает по сабжу вообще и этому документу в частности (с учетом того что я только несколько часов назад узнал про метод расчета фильтров через синк с окном). Например - если это DSP, то есть готовая прошитая микросхема, которая больше ничего не делает (или там есть возможность дописать ещё исполняемый код?) то зачем оптимизация в каждом случае? Имхо достаточно оптимизировать самый затратный случай а остальное делать чтобы было не дольше.
Цитата
У них, кстати, есть тоже неплохой AN но там более широко чем передискретизация

Это очень хорошо! Может в документе было упоминание об этом, сейчас ещё просмотрю. Но этот AN весьма интересен.
UPD спасибо, скачал ПДФ с сайта MDS. Что мне мешало раньше зайти на их сайт (по ссылке из документа)?....
Есть несколько вопросов по этой теме, но думаю до изучения AN они преждевременны. Например, насчет полиномиальной или сплайновой интерполяции после двух каскадов сабсемплигна - не будет ли быстрее при той же точности? Хотя надо для начала узнать все ли отсчеты сабсемплируются.

Сообщение отредактировал _Ivana - Jul 21 2012, 18:19
Go to the top of the page
 
+Quote Post
fontp
сообщение Jul 21 2012, 18:15
Сообщение #34


Эксперт
*****

Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183



QUOTE (_Ivana @ Jul 21 2012, 22:01) *
Мне интересны такие детали. Только например если Вы забросите код на чем-нибудь типа VisualDSP++ или как её там или чем-то подобном, на хитром специальном скрипте, то вряд ли я смогу его посмотреть.
У меня много вопросов возникает по сабжу вообще и этому документу в частности (с учетом того что я только несколько часов назад узнал про метод расчета фильтров через синк с окном). Например - если это DSP, то есть готовая прошитая микросхема, которая больше ничего не делает (или там есть возможность дописать ещё исполняемый код?) то зачем оптимизация в каждом случае? Имхо достаточно оптимизировать самый затратный случай а остальное делать чтобы было не дольше.

Это очень хорошо! Может в документе было упоминание об этом, сейчас ещё просмотрю. Но этот AN весьма интересен.



Вы как-то странно, будто не носитель языка, интерпретируете слова.

Речь шла о коммерческих программах синтеза фильтров для Виндуз, упомянутых в статье. Это экзешники а не скрипты))
Предполагается, что фильтры конструируются однажды заранее, а не налету.
Программы довольно старые и когда-то были доступны в Сети, они должны быть в закромах.
Оптимизация там делается в обоих возможных смыслах.
Если это DSP то нужно минимизировать число операций. Процессор один и он должен последовательно выполнить все фильтры разных каскадов, естественно с разной частотой.
Если это FPGA то делается попытка минимизировать число арифметических устройств в конвейере каскадов(т.е. в каком-то смысле вентилей при некоторых предположениях о сложности умножителей)
Go to the top of the page
 
+Quote Post
_Ivana
сообщение Jul 21 2012, 18:29
Сообщение #35


Местный
***

Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710



Цитата
Вы как-то странно интерпретируете слова.
Речь шла о коммерческих программах синтеза фильтров для Виндуз, упомянутых в статье. Это экзешники а не скрипты))

Простите, нет опыта правильной контекстной интерпретации некоторых слов. Если Вам не трудно, поделитесь пожалуйста экзешниками. Доступа в "Свои" нет, к FTP соответственно тоже. Есть мыло Ivana_2004 на мэйлру sm.gif

Скачал демки с сайта MDS, вникаю. И продолжаю задавать глупые вопросы: допустим мы делаем полифазный ресемплинг из 44100 в 48000. Фильтр каждой фазы считаем с оптимальнейшим соотношением прямоугольность/подавление чтобы и полезный сигнал не испортить и отражения подавить. Но в итоге у нас в выходном сигнале полоса "лишнего" будет максимум 20000-24000. Так почему бы не сделать так: считать относительно короткие полифазные фильтры с достаточным подавлением и плохой прямоугольностью (широкой переходной полосой) а потом "вытянуть" получившийся плавный спад результирующей АЧХ ВЧ фильтром выходного сигнала?

Сообщение отредактировал _Ivana - Jul 21 2012, 21:56
Go to the top of the page
 
+Quote Post
fontp
сообщение Jul 22 2012, 07:38
Сообщение #36


Эксперт
*****

Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183



QUOTE (_Ivana @ Jul 21 2012, 22:29) *
Скачал демки с сайта MDS, вникаю. И продолжаю задавать глупые вопросы: допустим мы делаем полифазный ресемплинг из 44100 в 48000. Фильтр каждой фазы считаем с оптимальнейшим соотношением прямоугольность/подавление чтобы и полезный сигнал не испортить и отражения подавить. Но в итоге у нас в выходном сигнале полоса "лишнего" будет максимум 20000-24000. Так почему бы не сделать так: считать относительно короткие полифазные фильтры с достаточным подавлением и плохой прямоугольностью (широкой переходной полосой) а потом "вытянуть" получившийся плавный спад результирующей АЧХ ВЧ фильтром выходного сигнала?


Так и делают во всех аппаратных ddc. Одна-две ступени скользящего среднего и на выходе fir.Последний с хорошей прямоугольностью, учитывая искажения cic-фильтров первых ступеней. И оптимизация перебором по параметрам - вариантам распределения коэффициентов сабсэмплинга и возможной длины фильтров по каскадам. Analog дает программы такого расчета для своих ddc. Только до -100 db они не тянут, а для других приложений , радиочастотных например,получаются вполне адекватные фильтры
Go to the top of the page
 
+Quote Post
_Ivana
сообщение Jul 22 2012, 09:14
Сообщение #37


Местный
***

Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710



Спасибо, буду пытаться осознать.
Продолжаю, в попытках прояснить картину. Ответ на этот вопрос я наверное могу получить самостоятельно, но нужен соответствующий софт (Матлаб и т.п.) и умение с ним работать, к тому же мне хочется прояснить теоретические аспекты: есть сигнал с равномерным (или почти) спектром, представляющий из себя шумоподобный или шум, дискретизирован с 44100. Значимый спектр тянется вплоть до 22050. Производится его ресемплинг в 48000 с помощью некоего ресемплера - пусть полифазного фильтра. Полоса пропускания фильтра берется 0-20000. Вопрос: какой (спасенный) спектр будет у ресемплированного сигнала (значимый, не считая тихих шумов)? Варианты ответа:
1) 0-24000 - врядли, частоты 22050-24000 не должны никак присутствовать при адекватном ресемплинге
2) 0-22050 - очень вероятно, если НЕ умножаем на бывшие нули при полифазной фильтрации
3) 0-20000 - очень вероятно, если умножаем на бывшие нули при полифазной фильтрации
4) свой вариант ответа sm.gif
В данный момент я предполагаю, что в зависимости от реализации ресемплера будет или 2) или 3). Причем, если мы сделаем ресемплер по принципу минимального количества операций (не умножая на бывшие нули), то будет 2).

UPD простите за суету, постепенно приходит понимание sm.gif Просто к теме фильтрации пришел из аппроксимации, поэтому некоторые сложности.
С "умножаем на бывшие нули" - это я сглупил, перепутал с БИХ-фильтром (кстати, почему бы их не применить?)
А с полосой - все верно, если мы рассчитываем фильтр 0-20000 то у нас эта полоса и останется при любой децимации до частоты дискретизации не ниже 40000. Просто можно мыслить в категориях что мы считаем НЧ фильтр 0-20000 на высокой частоте а потом разбивать его на разные фазы соответствующие ненулевым отсчетам входного сигнала на этой высокой частоте. А если оставаться на исходной частоте (44100), то можно:
1) рассчитывать интерполяционный фильтр, т.е. фильтр 0-22050 - но для любой фазы (что я и делал) - и тогда это аналогично расчету 0-22050 на высокой частоте и по идее должно приводить к тем же самым коэффициентам полифазного фильтра
2) рассчитывать ШП НЧ фильтр 0-20000 - но тут пока непонятно откуда брать разные его фазы для последующего получения 48000 (если это вообще возможно при такой постановке задачи).

Сообщение отредактировал _Ivana - Jul 22 2012, 10:30
Go to the top of the page
 
+Quote Post
_Ivana
сообщение Jul 22 2012, 11:37
Сообщение #38


Местный
***

Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710



Читаю Multirate Filter Design и думаю: какая красивая идея - делать узкополосный НЧ фильтр не в лоб, а сначала отрезать побольше с широкой переходной полосой, заменить сколько можно отсчетов нулями и финально фильтровать на той же частоте экономя операции на этих нулях!...
Go to the top of the page
 
+Quote Post
Alexey Lukin
сообщение Jul 22 2012, 14:41
Сообщение #39


Частый гость
**

Группа: Участник
Сообщений: 159
Регистрация: 3-01-11
Пользователь №: 62 000



Цитата(_Ivana @ Jul 22 2012, 13:14) *
...представляющий из себя шумоподобный или шум, дискретизирован с 44100. Значимый спектр тянется вплоть до 22050. Производится его ресемплинг в 48000 с помощью некоего ресемплера - пусть полифазного фильтра. Полоса пропускания фильтра берется 0-20000. Вопрос: какой (спасенный) спектр будет у ресемплированного сигнала (значимый, не считая тихих шумов)?

Если у фильтра передискретизации полоса пропускания 0–20000, а переходная полоса 20000–22050, то сигнал от 0 до 20000 будет передан практически без искажений, сигнал от 20000 до 22050 можно при желании восстановить корректирующим фильтром, а частот выше 22050 в исходном сигнале и не было — непонятно, что там "спасать".
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 08:38
Рейтинг@Mail.ru


Страница сгенерированна за 0.01416 секунд с 7
ELECTRONIX ©2004-2016