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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> Дробная передискретизация полифазным фильтром
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
des00
сообщение Jul 17 2012, 17:23
Сообщение #2


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(tim_s80 @ Jul 17 2012, 03:40) *
Если делать не в режиме Фарроу, а просто как программную реализацию полифазного варианта, то по какому правилу следует выбирать момент и фазу выхода полифазного фильтра чтоб, например, передискретизировать с частоты 4*1/3 в частоту 2 при условии, что полифазный фильтр состоит из 16 ветвей и в каждой ветви 16 коэффициентов.

ничего не понял, особенно что за режим Фарроу (Farrow это структура построения интерполятора, а не какой то алгоритм) %)


--------------------
Go to the top of the page
 
+Quote Post
tim_s80
сообщение Jul 18 2012, 02:49
Сообщение #3


Участник
*

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



Цитата(des00 @ Jul 17 2012, 20:23) *
ничего не понял, особенно что за режим Фарроу (Farrow это структура построения интерполятора, а не какой то алгоритм) %)


Режим Фарроу -эта структура, которая просто была реализована чисто программно.
Go to the top of the page
 
+Quote Post
des00
сообщение Jul 18 2012, 05:59
Сообщение #4


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(tim_s80 @ Jul 17 2012, 21:49) *
Режим Фарроу -эта структура, которая просто была реализована чисто программно.

ну вот и какое отношение может имеет эта структура, к алгоритму расчета дробной ошибки на основе биения частот ?


--------------------
Go to the top of the page
 
+Quote Post
tim_s80
сообщение Jul 18 2012, 10:58
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 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.
Go to the top of the page
 
+Quote Post
des00
сообщение Jul 18 2012, 11:51
Сообщение #6


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(tim_s80 @ Jul 18 2012, 05:58) *
Но меня клинит как организовать съем данных в случае, когда мне надо перейти от входной частоты 4*1/3 к выходной 2.

ну дык так бы и спросили сразу, а не описывая структуры и подчеркивая что у вас другой интерполятор %)

Полифазник как был так и остался, его задача получить сдвиги базового сигнала. А вот из частоты 4*1/3 частоту 2 получить элементарно. собираете NCO на тактовой частоте 4*1/3 и на нем генерируете частоту 2.
получаете моменты отчета в дискретах частоты 4*1/3 и дробные ошибки.


--------------------
Go to the top of the page
 
+Quote Post
tim_s80
сообщение Jul 18 2012, 12:26
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 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..." требует осмысление в программной реализации, особенно с учетом того, модель делается в Матлабе, где достаточно применяется подход обработки блоком, а не поотсчетно.
Go to the top of the page
 
+Quote Post
fontp
сообщение Jul 18 2012, 13:57
Сообщение #8


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

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



QUOTE (tim_s80 @ Jul 18 2012, 15:26) *
Интервал дискретизации входной - 1/(4*1/3)=0.75

Когда схема нарисована в железе, там понятно вроде бы. Но я делаю чисто программно, поэтому для меня как программиста фраза типа "собираете NCO на тактовой частоте 4*1/3..." требует осмысление в программной реализации, особенно с учетом того, модель делается в Матлабе, где достаточно применяется подход обработки блоком, а не поотсчетно.


Как программист почитайте
http://www.analog.com/static/imported-file...s/EE183Rev5.pdf

Они там строят передискретизацию с 32-разрядной точностью для акустики ( используя программы MDS для синтеза НЧ-фильтров)
Go to the top of the page
 
+Quote Post
Alexey Lukin
сообщение Jul 18 2012, 16:48
Сообщение #9


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

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
des00
сообщение Jul 18 2012, 17:10
Сообщение #10


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(tim_s80 @ Jul 18 2012, 06:26) *
Педположим необходим 5й отсчет выходного интервала, т.е. в новой шкале времени это момент времени 5*0.5=2.5
Вопрос - при каком номере входного отсчета и с какой фазы брать отсчет?

простой рисунок входной/выходной тактовой, сделанный на коленке вам в этом не поможет ? Все же очевидно и не зависит от реализации интерполятора sm.gif

UPD. в данном случае вам необходимо интерполировать входной сигнал на интервале между третьим и четвертым отсчетом, посчитать дробную ошибку (в вашем случае, судя по рисунку ее абсолютное значение 0.25, знак зависит от реализации интерполятора), и т.к. интерполяция у вас будет с определенным дискретом (как я понял вы делаете на банке фильтров) выбрать наиболее близкую фазу (в лагранжевых это решается расчетом полинома). как бы все %)

UPD2. Вы интерполируете в 1,5 раза, ИМХО потребуется достаточно хороший интерполятор, что бы не вылезло ничего левого в выходном спектре выше ~70дБ
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Go to the top of the page
 
+Quote Post
_Ivana
сообщение Jul 18 2012, 20:10
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 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, поэтому это важно? А если на ПЛИС, где можно параллелить процессы, проще будет рассчитать коэффициенты честного полифазного интерполятора без апсемплинга/децимации?
Go to the top of the page
 
+Quote Post
Alexey Lukin
сообщение Jul 18 2012, 21:25
Сообщение #12


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

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



Непонятно, что такое "на лету", "честный полифазный интерполятор без апсэмплинга" и т.д...

Документ вполне справедлив.
Go to the top of the page
 
+Quote Post
_Ivana
сообщение Jul 18 2012, 21:36
Сообщение #13


Местный
***

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



Буквально сейчас играюсь - считаю в своем симуляторе полифазные интерполяционные КИХ фильтры из 160 коэффициентов. Рассчитал на середину интервала = 1/2, получился апсемплинг в 2 раза. По тому же правилу рассчитываю коэффициенты для любой другой точки интервала - 1/3, 0.99 и т.п. Может будет понятнее если я употреблю термин "смещенный синк", хотя у меня не совсем синк. Смотрю - величина ошибки интерполяции та же. Вот я и думаю, почему не пошли по пути - получили точку внутри интервала (допустим 0.3766535484757473093947447656), рассчитали для нее нужное количество коэффициентов и сделали свертку (так это называется, кажется)? Как быстро рассчитывать коэффициенты для каждой точки - отдельный вопрос, но у меня есть некоторые имхи. Но в принципе то это должно хорошо работать. А на ПЛИС так ещё и быстро (достаточно для реалтайма).
Go to the top of the page
 
+Quote Post
Alexey Lukin
сообщение Jul 18 2012, 21:45
Сообщение #14


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

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



Для каждой точки считать свои коэффициенты долго, да и не нужно. Именно поэтому и созданы полифазные фильтры: в них всё посчитано заранее.
Go to the top of the page
 
+Quote Post
_Ivana
сообщение Jul 18 2012, 21:53
Сообщение #15


Местный
***

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



Видимо я не понимаю что такое полифазные фильтры - я считал что это именно то что я описал, "синк со смещенной фазой". Придется разобраться. Но неужели апсемплировать сигнал в несколько десятков-сотен раз, потом фильтровать его на этой частоте и выкидывать из результата 99% отсчетов будет проще по объему вычислений? В отстаиваемом мной варианте весь вопрос упирается в оптимальную процедуру получения коэффициентов на каждом шаге.
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 - 14:58
Рейтинг@Mail.ru


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