|
Дробная передискретизация полифазным фильтром |
|
|
|
Jul 17 2012, 09:40
|
Участник

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

|
При программной реализации Фарроу интерполяции при работе с разными частотами ищешь нужную базовую точку в старой шкале времени, как целая часть отношения текущего момента времени новой шкалы к старому шагу, берешь относительно нее нужное число отсчетов и с учетом дробной части рассчитываешь текущий выходной отсчет на новой частоте дискретизации.
Если делать не в режиме Фарроу, а просто как программную реализацию полифазного варианта, то по какому правилу следует выбирать момент и фазу выхода полифазного фильтра чтоб, например, передискретизировать с частоты 4*1/3 в частоту 2 при условии, что полифазный фильтр состоит из 16 ветвей и в каждой ветви 16 коэффициентов.
|
|
|
|
|
Jul 18 2012, 02:49
|
Участник

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

|
Цитата(des00 @ Jul 17 2012, 20:23)  ничего не понял, особенно что за режим Фарроу (Farrow это структура построения интерполятора, а не какой то алгоритм) %) Режим Фарроу -эта структура, которая просто была реализована чисто программно.
|
|
|
|
|
Jul 18 2012, 10:58
|
Участник

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

|
Цитата(des00 @ Jul 18 2012, 08:59)  ну вот и какое отношение может имеет эта структура, к алгоритму расчета дробной ошибки на основе биения частот ? Да сам Фарроу не имеет, и полифазник не имеет. X1-X100 отсчеты сигнала h1-h4 отсчеты ИХ первой фазы h5-h8 отсчеты ИХ второй фазы h9-h12 отсчеты ИХ третьей фазы h13-h16 отсчеты ИХ четвертой фазы На первую фазу идут Х1 Х5 ... На вторую фазу идут Х2 Х6 ... На третью фазу идут Х3 Х7 ... На четвертую фазу идут Х4 Х8 ... Если мне надо выход иметь на входной частоте, но сдвинутый по фазе, то тупо выбираю подходящую фазу. Но меня клинит как организовать съем данных в случае, когда мне надо перейти от входной частоты 4*1/3 к выходной 2.
|
|
|
|
|
Jul 18 2012, 12:26
|
Участник

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

|
Цитата(des00 @ Jul 18 2012, 14:51)  ну дык так бы и спросили сразу, а не описывая структуры и подчеркивая что у вас другой интерполятор %)
Полифазник как был так и остался, его задача получить сдвиги базового сигнала. А вот из частоты 4*1/3 частоту 2 получить элементарно. собираете NCO на тактовой частоте 4*1/3 и на нем генерируете частоту 2. получаете моменты отчета в дискретах частоты 4*1/3 и дробные ошибки. Интервал дискретизации входной - 1/(4*1/3)=0.75 Интервал дискретизации выходной - 1/2=0.5 Педположим необходим 5й отсчет выходного интервала, т.е. в новой шкале времени это момент времени 5*0.5=2.5 Вопрос - при каком номере входного отсчета и с какой фазы брать отсчет? Когда я работаю интерполятором в виде Фарроу, то нахожу базовый индекс как целая часть отношения 2.5/0.75, определяю дробную часть, рассчитываю коэффициенты и по 4м отсчетам относительно базовой точки рассчитываю выход. А при полифазнике я должен снимать его выход в момент времени, когда в него зашел соответствующий базовый отсчет? Когда схема нарисована в железе, там понятно вроде бы. Но я делаю чисто программно, поэтому для меня как программиста фраза типа "собираете NCO на тактовой частоте 4*1/3..." требует осмысление в программной реализации, особенно с учетом того, модель делается в Матлабе, где достаточно применяется подход обработки блоком, а не поотсчетно.
|
|
|
|
|
Jul 18 2012, 16:48
|

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

|
Цитата(tim_s80 @ Jul 17 2012, 13:40)  Если делать не в режиме Фарроу, а просто как программную реализацию полифазного варианта, то по какому правилу следует выбирать момент и фазу выхода полифазного фильтра чтоб, например, передискретизировать с частоты 4*1/3 в частоту 2 при условии, что полифазный фильтр состоит из 16 ветвей и в каждой ветви 16 коэффициентов. Полифазная реализация — это всего лишь оптимизация прямого алгоритма, которой делает апсэмплинг до частоты 4 (в вашем случае), фильтрует и прореживает. Забудьте про полифазные компоненты, рассмотрите единый фильтр, работающий на частоте 4, и уже через это рассмотрение выведите формулу для "фаз" в полифазной реализации. Она будет примерно такой: phase := (phase + D) % U, где U и D — коэффициенты интерполяции и прореживания.
Сообщение отредактировал Alexey Lukin - Jul 18 2012, 17:33
|
|
|
|
|
Jul 18 2012, 17:10
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(tim_s80 @ Jul 18 2012, 06:26)  Педположим необходим 5й отсчет выходного интервала, т.е. в новой шкале времени это момент времени 5*0.5=2.5 Вопрос - при каком номере входного отсчета и с какой фазы брать отсчет? простой рисунок входной/выходной тактовой, сделанный на коленке вам в этом не поможет ? Все же очевидно и не зависит от реализации интерполятора  UPD. в данном случае вам необходимо интерполировать входной сигнал на интервале между третьим и четвертым отсчетом, посчитать дробную ошибку (в вашем случае, судя по рисунку ее абсолютное значение 0.25, знак зависит от реализации интерполятора), и т.к. интерполяция у вас будет с определенным дискретом (как я понял вы делаете на банке фильтров) выбрать наиболее близкую фазу (в лагранжевых это решается расчетом полинома). как бы все %) UPD2. Вы интерполируете в 1,5 раза, ИМХО потребуется достаточно хороший интерполятор, что бы не вылезло ничего левого в выходном спектре выше ~70дБ
Эскизы прикрепленных изображений
--------------------
|
|
|
|
|
Jul 18 2012, 20:10
|
Местный
  
Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710

|
Пользуясь случаем, хочу спросить - почему в любезно выложенном fontp файле для ресемплинга используется алгоритм "повышение частоты в L раз - фильтрация - фильтрация - понижение частоты в M раз" вместо имхо простого варианта рассчитать на лету и применить полифазный фильтр с нужной фазой? В документе написано Цитата The polyphase filters for interpolation-only and decimation-only filters have a simpler structure than the polyphase filter used between an interpolator and a decimator. Или "на лету" это займет больше машинного времени? А там DSP, поэтому это важно? А если на ПЛИС, где можно параллелить процессы, проще будет рассчитать коэффициенты честного полифазного интерполятора без апсемплинга/децимации?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|