Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Дробный sample rate converter
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
_Anatoliy
В одном из ЦАПов увидел вот такой дробный sample rate converter(см. рисунок).Коэффициент преобразования равен P/Q и может быть в диапазоне 0,5...1. Т.к. P и Q это 24-битные числа то ясно что в лоб,как на картинке,реализовать такой конвертер невозможно.Как же реализован такой конвертер?
soldat_shveyk
Работает черезвычайно просто.
Интерполянию надо реализовывать в виде полифазной фильтрации с ИХ ФНЧ.
Последующая децимация означает, что не требуется вычислять свертки сигнала со всеми полифазами, а только с одной.
Да и еще иногда делать пропуск, так как P < Q.


_Anatoliy
Цитата(soldat_shveyk @ Nov 11 2012, 21:19) *
Работает черезвычайно просто.
Интерполянию надо реализовывать в виде полифазной фильтрации с ИХ ФНЧ.
Последующая децимация означает, что не требуется вычислять свертки сигнала со всеми полифазами, а только с одной.
Да и еще иногда делать пропуск, так как P < Q.

Честно говоря с трудом представляю себе такой полифазник. А тот факт что P и Q могут иметь значения,например 1е6 и 1е6 + 1 соответственно не смущает?
des00
давеча сделал модем с перестраиваемой символьной частотой от 1 до 160МГц без использования интерполирующих фильтров, основанный на дробном ресамплинге. как бы ничего сложного %)
soldat_shveyk
Цитата
Честно говоря с трудом представляю себе такой полифазник

Да не надо бояться, карандашом на бумаге распишите - все поймете сразу.
Никаких хитростей и фокусов ЦОС здесь нет.

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

Допустим хотите преобразовать 25 кГц в 24 кГц.
Посчитали интерполяционный ФНЧ исходя из требуемого уровня подавления и реальной полосы сигнала и получили длину фильтра 768 отсчетов.
(Длину фильтра надо подгонять, чтобы была кратна 24).
В лобовой форме фильтр длиной 768 - это конечно жесть sm.gif
Но, после фильтра идет децимация на 25, значит с каждым входным отсчетом сигнала 25 кГц, надо вычислять свертку с одной полифазой длиной ВСЕГО 32 отсчета.
И то не каждый раз, так как на 25 входных отсчетов надо получить 24 выходных.




_Anatoliy
Цитата(soldat_shveyk @ Nov 12 2012, 09:54) *

Т.е. Вы сначала делаете децимацию в 25 раз,а потом интерполяцию в 24 раза?Это будет работать только для узкополосных сигналов.
Попробуйте взять отношение не 24/25, а 10000/10001 при полосе входного сигнала 0,25*Fs(реальные параметры для этого ЦАП).Тут такой фокус не удастся.
soldat_shveyk
Цитата
Т.е. Вы сначала делаете децимацию в 25 раз,а потом интерполяцию в 24 раза


Нет, как раз наоборот. Сначала интерполяция на 24, а затем децимация на 25.

Цитата
Попробуйте взять отношение не 24/25, а 10000/10001 при полосе входного сигнала 0,25*Fs(реальные параметры для этого ЦАП).Тут такой фокус не удастся.


Получится, абсолютно все тоже самое.
То, что получается 1000, да хоть 100000 полифаз фильтра-интерполятора абсолютно не важно, так как работаем всегда только с одной полифазой.
Еще раз повторюсь, нет тут ни каких фокусов. Распишите на бумаге - все увидите сами.
_Anatoliy
Цитата(soldat_shveyk @ Nov 12 2012, 12:28) *

Лады,как только выберу немного времени - порисую.
Спасибо!
des00
Цитата(soldat_shveyk @ Nov 12 2012, 04:28) *
Еще раз повторюсь, нет тут ни каких фокусов. Распишите на бумаге - все увидите сами.

глупый вопрос, с точки зрения математики и данных все верно, но как поступают в том случае, если отличаются еще и входные/выходые частоты ? 24/25 КГц плывут относительно друг друга (даже если идут с одной PLL) и имея рассчитанные верно отсчеты, возникает проблема перехода с частоты на частоту. Ее можно решить на небольшом фифо, но может быть есть другие способы решения ?

Спасибо.
soldat_shveyk
Цитата
если отличаются еще и входные/выходые частоты ? 24/25 КГц плывут относительно друг друга


Знакомо до боли sm.gif Регулярно возникающая на практике проблема.
Получается, что если потеряем отсчет или сделаем повтор, то происходит "трансформация времени", которую не переживет большинство модемов.
Я отталкиваюсь от того, какую максимальную фазовую нестабильность может "переварить" модем при требуемом SNR.
Пусть частота дискретизации сигнала 25 кГц. Потеряли/повторили отсчет - произошла сдвижка на 40 мкс - для модема это смерть.
Допустим, в результате экспериментов, или из теории и моделирования знаем, что модем может "переварить" сдвижки на 1 мкс, не более.
Тогда делаем полифазный интерполятор на 40 на входной частоте дискретизации, а децимацию на 40 делаем на второй частоте дискретизации
(которая скользит относительно первой). Тогда потери и вставки отсчетов будут иметь место на длительности 1 мкс. А это модем уже переварит.
ФИФО удобно поставить между интерполяцией и децимацией, при переходе с одного клока на другой.
Метод затратный, но работоспособный.
des00
Цитата(soldat_shveyk @ Nov 12 2012, 08:38) *
Знакомо до боли sm.gif Регулярно возникающая на практике проблема.....

спасибо за объяснение. ИМХО лучше уж дробным ресамплером, без слипов и проскальзываний. Правда там свои тонкости %)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.