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

Добрый день!

Проектирую систему связи на QAM.

В первом приближении стоит задача сделать работоспособную систему на QAM16, c последующим переходом на QAM64.
Разбираюсь с timing_recovery

Насколько я понял можно использовать интерполятор с разными схемами контроля, либо polyphase-filterbank interpolator

Если использовать polyphase-filterbank interpolator

1. Зачем делать upsample последовательности на входе согласованного фильтра если можно просто поднять частоту дискретизации?
2. Почему нельзя взять несколько блоков с согласованными фильтрами работающими каждый на низкой частоте и смотреть который из них дал наилучший отсчет?

Как в таком случае отслеживать ошибку - детектор на каждый канал и смотреть где ошибка меньше?

Спасибо!
Ivan55
можно ссылку на книгу?
des00
Цитата(Ivan55 @ Dec 8 2014, 12:31) *
можно ссылку на книгу?

присоединюсь к вопросу, либо ТС дал не весь контекст, либо автор книги мягко говоря бредит.
Zigor
Цитата(des00 @ Dec 8 2014, 12:36) *
присоединюсь к вопросу, либо ТС дал не весь контекст, либо автор книги мягко говоря бредит.


petrov
Источники хорошие, разжёвано дальше некуда, симулинк в руки и воплощаем написанное.
Zigor
Цитата(petrov @ Dec 8 2014, 17:03) *
Источники хорошие, разжёвано дальше некуда, симулинк в руки и воплощаем написанное.



Понятно дело. Не вкурил пока след. вопросы

Пусть первоначально 4 отсчета на символ, делаем 4 блока для timing correction - в итоге 16 отсчетов на символ.
По логике в каждом блоке должен быть первоначальный согласованный фильтр, в каждом блоке одинаковый. И каждым блок смещаем на отсчет и прореживаем в 4 раза.
Соответственно какой из блоков лучше оказался "притерт" к символу - тот и выбираем.


1. Зачем upsampling производить вставкой нулей? Ведь можно просто увеличить частоту дискретизации?

"The sequence is upsampled
by a factor by inserting zeros between each
sample of to produce a new sequence that
provides samples/symbol."

2. В источнике речь идет о РАЗНЫХ наборах коэффициентов для каждого блока, почему так?

"The direct brute-force implementation of the polyphase filterbank
requires the operation of polyphase filters that operate
in parallel. In reality, filters are not constructed, but rather a
single stage filter with set of weights that are selected from
memory by a pointer under control of the phase locked loop."


Спасибо!
petrov
Цитата(Zigor @ Dec 8 2014, 17:20) *
1. Зачем upsampling производить вставкой нулей? Ведь можно просто увеличить частоту дискретизации?

"The sequence is upsampled
by a factor by inserting zeros between each
sample of to produce a new sequence that
provides samples/symbol."


Просто увеличение это такая же вставка нулей и фильтр скользящего среднего, который не нужен.

Цитата(Zigor @ Dec 8 2014, 17:20) *
2. В источнике речь идет о РАЗНЫХ наборах коэффициентов для каждого блока, почему так?

"The direct brute-force implementation of the polyphase filterbank
requires the operation of polyphase filters that operate
in parallel. In reality, filters are not constructed, but rather a
single stage filter with set of weights that are selected from
memory by a pointer under control of the phase locked loop."


На символьном интервале нам нужен один отсчёт с максимальным отношением сигнал/шум, зачем вычислять остальные?
des00
Цитата(des00 @ Dec 8 2014, 15:36) *
присоединюсь к вопросу, либо ТС дал не весь контекст, либо автор книги мягко говоря бредит.

спасибо за источники, теперь понятен контекст

Цитата(Zigor @ Dec 6 2014, 18:27) *
1. Зачем делать upsample последовательности на входе согласованного фильтра если можно просто поднять частоту дискретизации?

Частота дискретизации определяется используемым АЦП, просто так его частоту не поднять. Ну а в цифре использовать в качестве фильтра для подавления зеркал можно любой фильтр, с подходящей АЧХ, в том числе и согласованный с полосой.
Цитата
2. Почему нельзя взять несколько блоков с согласованными фильтрами работающими каждый на низкой частоте и смотреть который из них дал наилучший отсчет?

а смысл? вычислений намного больше, а результат тот же.

а вообще использование полифазного согласованного фильтра для временной синхронизации ИМХО допустимо при обработке узких полос, на широких полосах проще поднять частоту дискретизации и на классический полиномиальный интерполятор.
Zigor
Цитата(des00 @ Dec 8 2014, 18:54) *
а вообще использование полифазного согласованного фильтра для временной синхронизации ИМХО допустимо при обработке узких полос, на широких полосах проще поднять частоту дискретизации и на классический полиномиальный интерполятор.


1. Поясните пожалуйста почему?
2. Я могу поднять частоту с 4х до 16ти и даже 32х отсчетов на символ. Какую схему управления рекомендуете?
des00
Цитата(Zigor @ Dec 9 2014, 18:34) *
1. Поясните пожалуйста почему?

требуется разная производительность. Если это ДСП то разницы как делать нет, но дсп не может переварить широкую полосу, а если это ПЛИС то фильтр с переменными коэффициентами весит много больше.
Цитата
2. Я могу поднять частоту с 4х до 16ти и даже 32х отсчетов на символ. Какую схему управления рекомендуете?

хмм, а причем здесь схема управления? ИМХО 8 отчетов на символ вам больше чем достаточно.
Zigor
Цитата(des00 @ Dec 9 2014, 15:56) *
требуется разная производительность. Если это ДСП то разницы как делать нет, но дсп не может переварить широкую полосу, а если это ПЛИС то фильтр с переменными коэффициентами весит много больше.


На плис можно оптимизировать фильтр и хранить в коэффициенты в памяти, задействовав один умножитель вместо нескольких параллельных. Не понял про связь DSP и широкой полосы.

Цитата(des00 @ Dec 9 2014, 15:56) *
хмм, а причем здесь схема управления? ИМХО 8 отчетов на символ вам больше чем достаточно.


В моем случае несущая 100кГц - FPGA работает на низкой частоте, может есть смысл оцифровывать на частоте скажем x16, но сэкономить на интерполяторе?

Прошу прощения за примитив вопросов!
Спасибо!!!
des00
Цитата(Zigor @ Dec 9 2014, 20:42) *
На плис можно оптимизировать фильтр и хранить в коэффициенты в памяти, задействовав один умножитель вместо нескольких параллельных. Не понял про связь DSP и широкой полосы.

Не знаю как у вас, но для меня широкая полоса это полоса от 28МГц до 1000 МГц, согласованные фильтры в среднем 40-80 коэффициентов. А теперь рассмотрите еще раз свои предложения в этом контексте.

Цитата
В моем случае несущая 100кГц - FPGA работает на низкой частоте, может есть смысл оцифровывать на частоте скажем x16, но сэкономить на интерполяторе?

Не знаю как у вас сделана нарезка и какой у вас АЦП, но я бы работал на частоте дискретизации близкой к максимальной, затем спустился бы до 8 отсчетов на символ и на полиномиальный интерполятор 3 го порядка. Ну либо до 32 отсчетов на символ и линейный интерполятор. Но в этом случае требования к фильтрам более жесткие.
Zigor
Цитата(des00 @ Dec 9 2014, 18:04) *
Не знаю как у вас сделана нарезка и какой у вас АЦП, но я бы работал на частоте дискретизации близкой к максимальной, затем спустился бы до 8 отсчетов на символ и на полиномиальный интерполятор 3 го порядка. Ну либо до 32 отсчетов на символ и линейный интерполятор. Но в этом случае требования к фильтрам более жесткие.


АЦП - AD9235, по поводу нарезки не уверен что вкурил основную мысль.

Прошу уточнить для тех кто в танке)))

К примеру:

Несущая 100кГц, Частота сэмплирования АЦП == 3,2МГц
1. Отсчеты АЦП умножаю на отсчеты комплексно сопряженной экспоненты несущей (фаза произвольная) - переношу в 0
2. Далее фильтр низкой частоты.
3. Далее согласованный фильтр с понижением до 8ми сэмплов на такт.
4. Интерполятор
5. Корректировка фазы

Is't it ?
links
У Вас в источниках первой приведена глава по синхронизации из некоей книги. Не могли бы дать ссылку на книгу целиком?
Самурай
Цитата(links @ Dec 29 2014, 15:04) *
У Вас в источниках первой приведена глава по синхронизации из некоей книги. Не могли бы дать ссылку на книгу целиком?


Это лекции по следующей книге: Michael Rice, Digital Communications: A Discrete-Time Approach.
Ну или книга на основе лекцийsm.gif
В гугле найти можно.
links
Цитата(Самурай @ Dec 29 2014, 16:55) *
Это лекции по следующей книге: Michael Rice, Digital Communications: A Discrete-Time Approach.
Ну или книга на основе лекцийsm.gif
В гугле найти можно.


Спасибо, нашел. Хорошая книга, методически правильная! sm.gif
Hose
Это курсовой проект?

Если нет, то какие у вас требования на коэффициенты передачи по джиттеру и вандеру?
Zigor
Цитата(Hose @ Jan 8 2015, 16:22) *
Это курсовой проект?

Если нет, то какие у вас требования на коэффициенты передачи по джиттеру и вандеру?


Добрый день!

Залил запрашиваемую книгу - юзайте на здоровье!
https://www.sendspace.com/file/juseqn

Подскажите где почитать по поводу расчетов параметров указанных Вами?

Проект НЕ курсовой.
Проектирую систему связи для медного кабеля на QAM16 с последующим переходом на QAM64, в системах связи новичок и поэтому заранее прощу прощения за примитив вопросов!

Такой вопрос еще возник - если символьная скорость к примеру 100кГц, как осуществить перенос сигнала на несущую не кратную символьной скорости - например 160кГц?

Спасибо!
Hose
Для начала скляра. На форуме есть ссылки.
Символам на 100к надо придать форму (ограничить спектр), одновременно повысится частота дискретизации до оптимальной для вас. Затем сделаете dds квадратурный, заберете с него 160к син и кос, перемножите комплексно с вашими скругленными символами и получите комплексный сигнал, который в частотной области будет "прямоугольником" чуть (от 5% до 50%) шире 100к и центром в 160к...
Там просто все), главное начать.
Zigor
Спасибо!
1. Получается что частота дискретизации на выходе формирующего фильтра и определяет частоту дискретизации в ЦАП после смешивания с несущей.

2. Разбираюсь с работой PLL и подстройкой частоты. Нашел на форуме модели товарища Petrov для QAM16.
Начитался источников (в т.ч Michael Rice) по проектированию PLL, сделал файл для расчета цепи фильтра (файл прилагаю).
Несмотря на все расчеты созвездие крутится при частотном сдвиге в канале (хоть ты тресни)))

Если для DDS K0 == 2*pi *fsys / 2^PHASE_ACC_WIDTH
То для CORDIC или просто матлабовской функции комплексной экспоненты (в случае модели с плавающей точкой) как рассчитывается K0 ?


Hose
1) на эту тему можно книгу написать. На ваши частоты больше влияют ширины фильтров в аналоговом тракте. И их цена )
2) с первым вопросом сначала разберитесь.
serggerm
Цитата(Zigor @ Dec 6 2014, 14:27) *
Добрый день!

Проектирую систему связи на QAM.

В первом приближении стоит задача сделать работоспособную систему на QAM16, c последующим переходом на QAM64.
Разбираюсь с timing_recovery

Насколько я понял можно использовать интерполятор с разными схемами контроля, либо polyphase-filterbank interpolator

Если использовать polyphase-filterbank interpolator

1. Зачем делать upsample последовательности на входе согласованного фильтра если можно просто поднять частоту дискретизации?
2. Почему нельзя взять несколько блоков с согласованными фильтрами работающими каждый на низкой частоте и смотреть который из них дал наилучший отсчет?

Как в таком случае отслеживать ошибку - детектор на каждый канал и смотреть где ошибка меньше?

Спасибо!


Вы упустили самый выжный момент этой главы из Рице. Там используются параллельно два полифазных согласованных фильтра - причем второй фильтр дает производную сигнала. Если сигнал и его производную перемножить то отсюда получим ошибку синхронизации - и в отличие от Гарднера этот метод работает отлично для всех - qpsk 8apsk 16... kam. Реализовал в своем проекте для демодулятора dvb-s2 сигнала. Идеи Рице продолжаю использовать и в других блоках демодулятора - мужик практик, у него есть конкретные реализации в Xilinx .





Serg76
Цитата(serggerm @ Jan 22 2015, 12:38) *
Там используются параллельно два полифазных согласованных фильтра

"Жирная" схема получается
Zigor
Цитата(serggerm @ Jan 22 2015, 13:38) *
Вы упустили самый выжный момент этой главы из Рице. Там используются параллельно два полифазных согласованных фильтра - причем второй фильтр дает производную сигнала. Если сигнал и его производную перемножить то отсюда получим ошибку синхронизации - и в отличие от Гарднера этот метод работает отлично для всех - qpsk 8apsk 16... kam. Реализовал в своем проекте для демодулятора dvb-s2 сигнала. Идеи Рице продолжаю использовать и в других блоках демодулятора - мужик практик, у него есть конкретные реализации в Xilinx .


1. Сколько отсчетов на символ Вы используете?
2. Во сколько раз upsamplируете входной сигнал?
3. Как у Вас устроена цепь обратной связи для управления интерполятором?
3. Можно поподробнее про использование идей Рица в других блоках демодулятора?

Спасибо!
serggerm
Цитата(Zigor @ Jan 8 2015, 16:31) *
Добрый день!

Залил запрашиваемую книгу - юзайте на здоровье!
https://www.sendspace.com/file/juseqn

Подскажите где почитать по поводу расчетов параметров указанных Вами?

Проект НЕ курсовой.
Проектирую систему связи для медного кабеля на QAM16 с последующим переходом на QAM64, в системах связи новичок и поэтому заранее прощу прощения за примитив вопросов!

Такой вопрос еще возник - если символьная скорость к примеру 100кГц, как осуществить перенос сигнала на несущую не кратную символьной скорости - например 160кГц?

Спасибо!


Вообще-то для медного кабеля традиционно в сигнал замешивали пилот-сигнал , в демодуляторе его извлекали узкополосным фильтром и от него тактировалась вся остальная часть - жить было много проще, V32 modem standart, для спутниковых и релеек нынче пилота нет, усе сложнее с синхронизациями. Так что определяйтесь с пилотом или без а потом реализуйте.


KPiter
Перезалейте книгу (Michael Rice, Digital Communications: A Discrete-Time Approach) пожалуйста!!
Quasar
Цитата(KPiter @ Apr 21 2016, 00:21) *
Перезалейте книгу (Michael Rice, Digital Communications: A Discrete-Time Approach) пожалуйста!!


Поддерживаю. У кого есть, выложите пожалуйста.
andyp
Цитата(Quasar @ Aug 10 2017, 00:39) *
Поддерживаю. У кого есть, выложите пожалуйста.


http://b-ok.org/md5/90149F9F5519139426DB7F26A0B20745
Quasar
Цитата(andyp @ Aug 10 2017, 12:56) *


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