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

 
 
 
Reply to this topicStart new topic
> Дробный sample rate converter
_Anatoliy
сообщение Nov 11 2012, 18:50
Сообщение #1


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



В одном из ЦАПов увидел вот такой дробный sample rate converter(см. рисунок).Коэффициент преобразования равен P/Q и может быть в диапазоне 0,5...1. Т.к. P и Q это 24-битные числа то ясно что в лоб,как на картинке,реализовать такой конвертер невозможно.Как же реализован такой конвертер?
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
soldat_shveyk
сообщение Nov 11 2012, 19:19
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 454
Регистрация: 3-07-07
Из: С-Петербург
Пользователь №: 28 859



Работает черезвычайно просто.
Интерполянию надо реализовывать в виде полифазной фильтрации с ИХ ФНЧ.
Последующая децимация означает, что не требуется вычислять свертки сигнала со всеми полифазами, а только с одной.
Да и еще иногда делать пропуск, так как P < Q.


Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Nov 11 2012, 19:43
Сообщение #3


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



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

Честно говоря с трудом представляю себе такой полифазник. А тот факт что P и Q могут иметь значения,например 1е6 и 1е6 + 1 соответственно не смущает?
Go to the top of the page
 
+Quote Post
des00
сообщение Nov 12 2012, 06:24
Сообщение #4


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

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



давеча сделал модем с перестраиваемой символьной частотой от 1 до 160МГц без использования интерполирующих фильтров, основанный на дробном ресамплинге. как бы ничего сложного %)


--------------------
Go to the top of the page
 
+Quote Post
soldat_shveyk
сообщение Nov 12 2012, 07:54
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 454
Регистрация: 3-07-07
Из: С-Петербург
Пользователь №: 28 859



Цитата
Честно говоря с трудом представляю себе такой полифазник

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

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

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




Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Nov 12 2012, 10:08
Сообщение #6


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



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

Т.е. Вы сначала делаете децимацию в 25 раз,а потом интерполяцию в 24 раза?Это будет работать только для узкополосных сигналов.
Попробуйте взять отношение не 24/25, а 10000/10001 при полосе входного сигнала 0,25*Fs(реальные параметры для этого ЦАП).Тут такой фокус не удастся.
Go to the top of the page
 
+Quote Post
soldat_shveyk
сообщение Nov 12 2012, 10:28
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 454
Регистрация: 3-07-07
Из: С-Петербург
Пользователь №: 28 859



Цитата
Т.е. Вы сначала делаете децимацию в 25 раз,а потом интерполяцию в 24 раза


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

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


Получится, абсолютно все тоже самое.
То, что получается 1000, да хоть 100000 полифаз фильтра-интерполятора абсолютно не важно, так как работаем всегда только с одной полифазой.
Еще раз повторюсь, нет тут ни каких фокусов. Распишите на бумаге - все увидите сами.
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Nov 12 2012, 10:40
Сообщение #8


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Цитата(soldat_shveyk @ Nov 12 2012, 12:28) *

Лады,как только выберу немного времени - порисую.
Спасибо!
Go to the top of the page
 
+Quote Post
des00
сообщение Nov 12 2012, 11:31
Сообщение #9


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

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



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

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

Спасибо.


--------------------
Go to the top of the page
 
+Quote Post
soldat_shveyk
сообщение Nov 12 2012, 13:38
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 454
Регистрация: 3-07-07
Из: С-Петербург
Пользователь №: 28 859



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


Знакомо до боли sm.gif Регулярно возникающая на практике проблема.
Получается, что если потеряем отсчет или сделаем повтор, то происходит "трансформация времени", которую не переживет большинство модемов.
Я отталкиваюсь от того, какую максимальную фазовую нестабильность может "переварить" модем при требуемом SNR.
Пусть частота дискретизации сигнала 25 кГц. Потеряли/повторили отсчет - произошла сдвижка на 40 мкс - для модема это смерть.
Допустим, в результате экспериментов, или из теории и моделирования знаем, что модем может "переварить" сдвижки на 1 мкс, не более.
Тогда делаем полифазный интерполятор на 40 на входной частоте дискретизации, а децимацию на 40 делаем на второй частоте дискретизации
(которая скользит относительно первой). Тогда потери и вставки отсчетов будут иметь место на длительности 1 мкс. А это модем уже переварит.
ФИФО удобно поставить между интерполяцией и децимацией, при переходе с одного клока на другой.
Метод затратный, но работоспособный.
Go to the top of the page
 
+Quote Post
des00
сообщение Nov 12 2012, 18:17
Сообщение #11


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

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



Цитата(soldat_shveyk @ Nov 12 2012, 08:38) *
Знакомо до боли sm.gif Регулярно возникающая на практике проблема.....

спасибо за объяснение. ИМХО лучше уж дробным ресамплером, без слипов и проскальзываний. Правда там свои тонкости %)


--------------------
Go to the top of the page
 
+Quote Post

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

 


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


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