Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Дробные интерполяторы (+)
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
des00
Добрый день!

Гуру просвятите вот такой момент. Возможно ли создание ресамплера(интерполятор + NCO) в приемнике, на основе структур фарроу с преобразованием именно тактовой частоты.

Я всегда считал что ресамплер работает на одной тактовой частоте, кратной/не кратной символьной частоте потока. И на выходе ресамплера идут данные с частотой кратной символьной(пусть она и дрожит), но на той же тактовой частоте. А коллега утверждает что можно сделать ресамплер, на выходе которого будет частота кратная символьной, но на тактовой частоте != частоте нарезки АЦП(а также работе фильтров фарроу и т.д.). Я не могу представить как можно реализовать такой ресамплер полностью в цифре. Но может быть я ошибаюсь.

Спасибо.
petrov
Чёта как-то сумбурно, можно попроще поконкретнее?
des00
Цитата(petrov @ May 29 2009, 07:49) *
Чёта как-то сумбурно, можно попроще поконкретнее?


конкретнее будет так

есть модем с символьной частотой 25 МГц(1/8*200МГц), есть АЦП который работает на 180 МГц. Коллега хочет ресамплер на входе которого сигнал на тактовой частоте 180МГц, а на выходе 2sps клок домен на тактовой частоте 200МГц. По моему это не реализуемо. Я думаю что в таком случае нужно делать ресамплер на 180МГц, на выходе которого будет 2sps клок домен на тактовой частоте 180. Или я ошибаюсь?
petrov
Очевидно что чистый тактовый сигнал без джиттера в 200 100 50 25 МГц без аналоговых цепей не получить, но в 2sps домене будет тактовый сигнал в 50 МГц с джиттером определяемым тактовой 180 МГц, если подать енаблы 2sps домена на частотомер то он конечно же покажет 50 МГц, можно и в явном виде сделать не через енаблы а через управление CLK регистров, будет буквально тактовый сигнал в 50 МГц но от джиттера ессно в цифре никак не избавиться.
des00
Цитата(petrov @ May 30 2009, 12:33) *
Очевидно что чистый тактовый сигнал без джиттера в 200 100 50 25 МГц без аналоговых цепей не получить, но в 2sps домене будет тактовый сигнал в 50 МГц с джиттером определяемым тактовой 180 МГц, если подать енаблы 2sps домена на частотомер то он конечно же покажет 50 МГц, можно и в явном виде сделать не через енаблы а через управление CLK регистров, будет буквально тактовый сигнал в 50 МГц но от джиттера ессно в цифре никак не избавиться.


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

Похоже что мой коллега ошибается, спасибо за помощь!!!
SM
Если я правильно понимаю суть, то 180 -> 20 MHz легко (делить на 9), при этом 10 выборок хранить. Это уже полностью эквивалентно - пачка в 10 выборок на 20 МГц, или по одной, но на 200.
sup-sup
Сейчас нечто подобное пытаюсь сделать в LabVIEW с помощью поочередной децимации и интерполяции.
То есть, перегнать несколько раз оцифровку через фильтры с разной тактовой частотой.
Ограничения такие, не зафильтровать сигнал (для децимации) и не поднять сильно тактовую частоту (возможность реализации интерполятора)
В заданном примере это выглядело бы так:
децимация на 3: 180 --> 60 (полоса сигнала не более 30 МГц)
интерполяция на 5: 60 --> 300
децимация на 3: 300 --> 100
интерполяция на 2: 100 --> 200
Можно бы сразу сделать интерполяцию на 10 и децимацию на 9, но железо должно потянуть на 1800, а так только полуторная частота (300 МГц)
SM
А вот как получить 200 МГц из 180 физически, если нельзя использовать аналоговую PLL, а 1800 железо не тянет?
des00
Цитата(SM @ Jun 1 2009, 17:25) *
Если я правильно понимаю суть, то 180 -> 20 MHz легко (делить на 9), при этом 10 выборок хранить. Это уже полностью эквивалентно - пачка в 10 выборок на 20 МГц, или по одной, но на 200.


в принципе при указанных мной частотах это можно было бы сделать, но в этом приемнике мне нужны не только данные, но и темп их следования. В общем буду делать на двух генераторах. Цифровой приемник будет на одном фиксированном генераторе, а за ним деджитер по данным на ГУНе.
SM
Цитата(des00 @ Jun 3 2009, 07:18) *
в принципе при указанных мной частотах это можно было бы сделать, но в этом приемнике мне нужны не только данные, но и темп их следования. В общем буду делать на двух генераторах. Цифровой приемник будет на одном фиксированном генераторе, а за ним деджитер по данным на ГУНе.

а PLL 20 -> 200? Есть же PLL-и с отменным джитетром.
des00
Цитата(SM @ Jun 3 2009, 00:25) *
а PLL 20 -> 200? Есть же PLL-и с отменным джитетром.


думаю что в контексте приемников так сделать не получиться. генератор на 180 независимый, отвязанный по фазе генератор. Восстановление символьной частоты идет в цифровом виде, поэтому поток отсчетов идет не равномерный. А мне нужно сделать из этого потока равномерный на таковой в 200. Как я понимаю для этого нужно привязать генератор тактовой 200 МГц, к восстановленной символьной на 180МГц. Это можно сделать на деджитере по данным с аналоговым гуном и узкой петлей.
SM
Цитата(des00 @ Jun 5 2009, 06:54) *
Это можно сделать на деджитере по данным с аналоговым гуном и узкой петлей.

Так именно об этом и речь. Поделить имеющиеся дрожащие 180 на 9, получить 20, затолкав в фифо например 20 выборок, или 40 (чтобы никакое дрожание не привело к проскальзыванию, а просто к +- по кол-ву данных). Затем эти 20 на вход PLL 20->200. PLL же имеет в себе именно аналоговый ГУН и вроде как вполне узкую петлю. Ну а уже в домене 200 просто тупо читать из фифо. Другое дело, справится ли с этим внутренняя PLL ПЛИС (вряд-ли, у альтеры специфицирован входной джиттер 650 пс, а в лэтисе и того меньше, 300), или нужна внешняя - вот это вопрос открытый. Но случае это все равно PLL 20->200.
petrov
А зачем этот деджиттер, данные приняли, записали в FIFO, местным клоком их считывать и следить чтобы переполнений опустошений небыло, в чём нужда обрабатывать их именно на клоке передатчика?
des00
Цитата(petrov @ Jun 5 2009, 02:51) *
местным клоком их считывать и следить чтобы переполнений опустошений небыло


как это можно сделать в полностью цифровом виде, при условии что поток данных на чтение должен быть равномерным ? Т.е. время между обновлением данных на выходе было постоянно и фиксированно ?
_Anatoliy
Цитата(des00 @ Jun 5 2009, 09:33) *
как это можно сделать в полностью цифровом виде, при условии что поток данных на чтение должен быть равномерным ? Т.е. время между обновлением данных на выходе было постоянно и фиксированно ?


Делал я так.Тут хорошо помогает эластичный буфер.Но он работает когда средняя скорость записи равна скорости чтения(которая постоянна).Для вашей задачи это подойдёт?
des00
Цитата(_Anatoliy @ Jun 5 2009, 04:43) *
Делал я так.Тут хорошо помогает эластичный буфер.Но он работает когда средняя скорость записи равна скорости чтения(которая постоянна).Для вашей задачи это подойдёт?


вот именно для моей задачи это не сильно подходит %)

а вот как вы решали в вашей системе проблему расстройки передающего и приемного генераторов ? Ведь даже если они будут расстроены на 10ppm, все равно скорости чтения/записи будут не равны. Или вы использовали бит стаффинг для выравнивания цифрового потока? Мне такое точно не нужно %)
_Anatoliy
Цитата(des00 @ Jun 5 2009, 10:54) *
вот именно для моей задачи это не сильно подходит %)

а вот как вы решали в вашей системе проблему расстройки передающего и приемного генераторов ? Ведь даже если они будут расстроены на 10ppm, все равно скорости чтения/записи будут не равны. Или вы использовали бит стаффинг для выравнивания цифрового потока? Мне такое точно не нужно %)

Никакого бит стаффинга не требуется.Мне нужно было из рваного входного потока сделать непрерывный выходной поток.Разницу между указателем адреса записи и указателем адреса чтения буфера использовал для подстройки аналогового ГУН,тактирующего входную часть(большой подстройки не нужно,мне хватило несколько ppm).Подзабыл,или выходную...Таким образом среднее расстояние между указателями адреса поддерживалось равным половине буфера.
des00
Цитата(_Anatoliy @ Jun 5 2009, 04:16) *
Разницу между указателем адреса записи и указателем адреса чтения буфера использовал для подстройки аналогового ГУН,тактирующего входную часть(большой подстройки не нужно,мне хватило несколько ppm).Подзабыл,или выходную...Таким образом среднее расстояние между указателями адреса поддерживалось равным половине буфера.


Так это и есть деджитер по данным с аналоговым ГУНом, который я еще в начале темы упоминал smile.gif
_Anatoliy
Цитата(des00 @ Jun 5 2009, 12:22) *
Так это и есть деджитер по данным с аналоговым ГУНом, который я еще в начале темы упоминал smile.gif


А... значит я не так понял.
petrov
Цитата(des00 @ Jun 5 2009, 12:33) *
как это можно сделать в полностью цифровом виде, при условии что поток данных на чтение должен быть равномерным ? Т.е. время между обновлением данных на выходе было постоянно и фиксированно ?


Вы собираетесь потом к примеру тактировать другой передатчик от этого клока, синхронную сеть строить какую-то?

В чём необходимость равномерности? Весь инетернет работает на несинхронной передаче. ИМХО неравномерность надо решать на уровне протокола, и работать на местном клоке, а не тащить его фиг знает откуда, создавая кучу проблем.
_Anatoliy
Цитата(des00 @ Jun 5 2009, 12:22) *
Так это и есть деджитер по данным с аналоговым ГУНом, который я еще в начале темы упоминал smile.gif

А джиттер +-1такт много?Это можно и в цифре.
des00
Цитата(petrov @ Jun 5 2009, 07:30) *
Вы собираетесь потом к примеру тактировать другой передатчик от этого клока, синхронную сеть строить какую-то?

В чём необходимость равномерности? Весь инетернет работает на несинхронной передаче. ИМХО неравномерность надо решать на уровне протокола, и работать на местном клоке, а не тащить его фиг знает откуда, создавая кучу проблем.


был бы асинхрон или пакетная передача проблем бы не было. но надо SDH. Собственно вопрос решен, всем спасибо.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.