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

 
 
> Реализация полифазного интегратора
_Anatoliy
сообщение Oct 15 2014, 10:15
Сообщение #1


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

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



Коллеги,помогите найти решение.На картинке вверху изображён обычный интегратор,внизу - его полифазная реализация.Сразу бросается в глаза большое дерево сумматоров по входному сигналу.Как следствие на нужной частоте эта схема в FPGA не работает.Как правильно конвееризировать это дерево сумматоров не нарушая при этом логику работы схемы?Очень мешает обратная связь,она вносит рекурсию...Вообще в принципе это решаемо?
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 29)
KalashKS
сообщение Oct 15 2014, 12:47
Сообщение #2


Местный
***

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



Цитата(_Anatoliy @ Oct 15 2014, 14:15) *
Коллеги,помогите найти решение.На картинке вверху изображён обычный интегратор,внизу - его полифазная реализация.Сразу бросается в глаза большое дерево сумматоров по входному сигналу.Как следствие на нужной частоте эта схема в FPGA не работает.Как правильно конвееризировать это дерево сумматоров не нарушая при этом логику работы схемы?Очень мешает обратная связь,она вносит рекурсию...Вообще в принципе это решаемо?

Можно попробовать поставить в каждую ветвь сначала сумматор последних 4-х отсчетов, а за ним простой интегратор.
Go to the top of the page
 
+Quote Post
Кнкн
сообщение Oct 15 2014, 12:50
Сообщение #3


Знающий
****

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



Цитата(_Anatoliy @ Oct 15 2014, 13:15) *
Коллеги,помогите найти решение.На картинке вверху изображён обычный интегратор,внизу - его полифазная реализация.Сразу бросается в глаза большое дерево сумматоров по входному сигналу.Как следствие на нужной частоте эта схема в FPGA не работает.Как правильно конвееризировать это дерево сумматоров не нарушая при этом логику работы схемы?Очень мешает обратная связь,она вносит рекурсию...Вообще в принципе это решаемо?


Look-ahead transformation
Можно посмотреть в
Shoab Ahmed Khan "Digital Design of Signal Processing Systems_ A Practical Approach"
Go to the top of the page
 
+Quote Post
Skryppy
сообщение Oct 15 2014, 17:00
Сообщение #4


Участник
*

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



Я такую же задачу решал при реализации полифазного CIC фильтра. Вот тестовая схемка (без оконечного сумматора и интеграторов):
Прикрепленное изображение

Так как при рекурсии постоянно увеличивается разрядность сигнала после суммирования,то первый сумматор должен иметь настройку точности не Full, а заданную пользователем(например,30 бит).
В первой схеме так и сделано,но лучше будет если суммировать с полной точностью,а после сумматора, перед блоком округления поставить регистр,тогда временные характеристики будут намного лучше.
P.S.: не тестировал как эта реализация будет работать в схеме цифровой обработки.
Прикрепленный файл  integrator.rar ( 34.85 килобайт ) Кол-во скачиваний: 62


Сообщение отредактировал Skryppy - Oct 15 2014, 17:36
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Oct 26 2014, 15:39
Сообщение #5


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

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



Цитата(KalashKS @ Oct 15 2014, 14:47) *
Можно попробовать поставить в каждую ветвь сначала сумматор последних 4-х отсчетов, а за ним простой интегратор.

Хочу извиниться за долгое молчание не по моей вине.На работе нет интернета,снаряд перебил оптическую магистраль.

сумматор последних 4-х отсчетов, а за ним простой интегратор. Если в каждой ветви будет отдельный интегратор то это будет совсем другое устройство.Должны обрабатываться отсчёты во всех ветвях.

Цитата(Кнкн @ Oct 15 2014, 14:50) *
Look-ahead transformation
Можно посмотреть в
Shoab Ahmed Khan "Digital Design of Signal Processing Systems_ A Practical Approach"

Спасибо,посмотрел.Но,по моему,они рассматривают частные случаи,не понял как нужно действовать для решения любой произвольной задачи(в общем виде).

Цитата(Skryppy @ Oct 15 2014, 19:00) *
Я такую же задачу решал при реализации полифазного CIC фильтра. Вот тестовая схемка (без оконечного сумматора и интеграторов):

Вот-вот,мне как раз и нужно сделать полифазный CIC-фильтр. Но по Вашей картинке видно что Вы применяли обычное дерево сумматоров.У меня тактовая частота высокая,этот метод не годится.
Go to the top of the page
 
+Quote Post
andyp
сообщение Oct 26 2014, 18:09
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163



Цитата(_Anatoliy @ Oct 26 2014, 19:39) *
Вот-вот,мне как раз и нужно сделать полифазный CIC-фильтр. Но по Вашей картинке видно что Вы применяли обычное дерево сумматоров.У меня тактовая частота высокая,этот метод не годится.


Если факторы децимации Вашего CIC фильтра являются степенями 2, то эти статьи могут представлять для Вас интерес

Сообщение отредактировал andyp - Oct 26 2014, 18:26
Прикрепленные файлы
Прикрепленный файл  IEEEcasII.pdf ( 244.03 килобайт ) Кол-во скачиваний: 33
Прикрепленный файл  norchip98_final.pdf ( 71.34 килобайт ) Кол-во скачиваний: 34
 
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Oct 27 2014, 09:45
Сообщение #7


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

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



Цитата(andyp @ Oct 26 2014, 20:09) *
Если факторы децимации Вашего CIC фильтра являются степенями 2, то эти статьи могут представлять для Вас интерес

Спасибо за информацию.
Вот такой получился у меня полифазный интегратор.А эти сумматоры уже конвейеризуются штатным способом.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
KalashKS
сообщение Oct 27 2014, 17:28
Сообщение #8


Местный
***

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



Цитата(_Anatoliy @ Oct 27 2014, 12:45) *
Спасибо за информацию.
Вот такой получился у меня полифазный интегратор.А эти сумматоры уже конвейеризуются штатным способом.


Я имел в виду примерно то, что у вас в итоге получилось, только предлагал сначала задерживать и суммировать, а потом интегрировать.
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Oct 28 2014, 05:46
Сообщение #9


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

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



Цитата(KalashKS @ Oct 27 2014, 19:28) *
Я имел в виду примерно то, что у вас в итоге получилось, только предлагал сначала задерживать и суммировать, а потом интегрировать.

А,ясно.Интеграл суммы эквивалентен сумме интегралов,схема линейная.Или в реализации будет какой выигрыш?
Go to the top of the page
 
+Quote Post
Timmy
сообщение Oct 28 2014, 10:32
Сообщение #10


Знающий
****

Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515



Цитата(_Anatoliy @ Oct 15 2014, 13:15) *
Коллеги,помогите найти решение.На картинке вверху изображён обычный интегратор,внизу - его полифазная реализация.Сразу бросается в глаза большое дерево сумматоров по входному сигналу.Как следствие на нужной частоте эта схема в FPGA не работает.Как правильно конвееризировать это дерево сумматоров не нарушая при этом логику работы схемы?Очень мешает обратная связь,она вносит рекурсию...Вообще в принципе это решаемо?

По-моему в символьном виде описать преобразования описать гораздо проще. Исходные с добавленной задержкой на такт по всем входам:
outA = Z(Z(inA)+outD)
outB = Z(Z(inA)+Z(inB)+outD)
outC = Z(Z(inA)+Z(inB)+Z(inC)+outD)
outD = Z(Z(inA)+Z(inB)+Z(inC)+Z(inD)+outD)

И перегруппировать outC и outD, исходя из того, что Xilinx 6+ серии умеет складывать тройки в одной цепи переноса:
outC = Z(Z(inA+inB+inC)+outD)
outD = Z(Z(inA+inB+inC)+Z(inD)+outD)
Можно и по двойкам перегруппировать, но получится больше сумматоров и задержка ещё на такт, например, для outD:
outD = Z(Z(Z(inA+inB)+Z(inC+inD))+outD)
Go to the top of the page
 
+Quote Post
KalashKS
сообщение Oct 29 2014, 10:07
Сообщение #11


Местный
***

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



Цитата(_Anatoliy @ Oct 28 2014, 08:46) *
А,ясно.Интеграл суммы эквивалентен сумме интегралов,схема линейная.Или в реализации будет какой выигрыш?

Думаю, должен быть, т.к. большую часть схемы займут сумматоры. В моем случае разрядность сумматоров должна быть меньше, а разрядность интегратора всего на два бита больше.
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Oct 29 2014, 13:29
Сообщение #12


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

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



Цитата(KalashKS @ Oct 29 2014, 13:07) *
Думаю, должен быть, т.к. большую часть схемы займут сумматоры. В моем случае разрядность сумматоров должна быть меньше, а разрядность интегратора всего на два бита больше.

Согласен beer.gif
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Feb 15 2016, 06:51
Сообщение #13


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

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



Коллеги,тут пришлось реанимировать этот вопрос с небольшой модернизацией.


Теперь на верхнем рисунке нужно использовать не z^-1 , а z^-2 и на нижнем рисунке не четыре фазы а две. Что-то меня сильно смущает чётный показатель степени,не удаётся придумать нижнюю картинку. Сможет ли кто либо помочь?
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Feb 17 2016, 11:42
Сообщение #14


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

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



Нашёл тут ещё немного математики,формулы понятны(правда в них есть ошибка), а как реализовать не ясно.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
thermit
сообщение Feb 17 2016, 12:24
Сообщение #15


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



А что здесь не ясно? 2 параллельных фильтра и суммирование выхода 1-го с задержанным выходом второго.
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Feb 17 2016, 12:28
Сообщение #16


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

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



Цитата(thermit @ Feb 17 2016, 15:24) *
А что здесь не ясно? 2 параллельных фильтра и суммирование выхода 1-го с задержанным выходом второго.

Хм,это работает только на основной частоте. По сути это полный аналог исходного варианта,только с двумя параллельными ветвями. Но вопрос то не в этом,нужно снизить в два раза тактовую частоту и за один такт обрабатывать сразу два входных отсчёта. С КИХ всё понятно,разделили на чётный и нечётный и вперёд. А здесь пока не выходит.
Go to the top of the page
 
+Quote Post
thermit
сообщение Feb 17 2016, 14:24
Сообщение #17


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Четные отсчеты и нечетные фильтруются параллельно фильтрами с H(z) = 1 / (1 - a^2 * z^-1); Получаем y1(n), y2(n)

Четный выход формируется как y1(n)+a*y2(n-1)
Нечетные - y2(n)+a*y1(n)

Сообщение отредактировал thermit - Feb 17 2016, 14:25
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Feb 18 2016, 07:02
Сообщение #18


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

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



Цитата(thermit @ Feb 17 2016, 17:24) *
Четные отсчеты и нечетные фильтруются параллельно фильтрами с H(z) = 1 / (1 - a^2 * z^-1); Получаем y1(n), y2(n)

Четный выход формируется как y1(n)+a*y2(n-1)
Нечетные - y2(n)+a*y1(n)

Спасибо за ответ! Пока взял а = 1. Да,для z^-1 по вашим формулам всё работает замечательно,но для z^-2 всё валится.
На картинке сверху реализация для z^-1
На картинке снизу реализация для z^-2
Может я чего не так сделал? Кстати,для нечётного канала никакая задержка на такт не нужна laughing.gif

Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
thermit
сообщение Feb 18 2016, 10:36
Сообщение #19


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Как-то так должно быть.

Цитата(_Anatoliy @ Feb 18 2016, 10:02) *
Спасибо за ответ! Пока взял а = 1. Да,для z^-1 по вашим формулам всё работает замечательно,но для z^-2 всё валится.
На картинке сверху реализация для z^-1
На картинке снизу реализация для z^-2
Может я чего не так сделал? Кстати,для нечётного канала никакая задержка на такт не нужна laughing.gif


При чем тут z^-2? Вы сами понижаете частоту дискретизации в 2 раза и z^-2 становится z^-1.

Прикрепленные файлы
Прикрепленный файл  parallel_vs_serial.mdl.zip ( 11.15 килобайт ) Кол-во скачиваний: 6
 
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Feb 18 2016, 10:50
Сообщение #20


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

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



Цитата(thermit @ Feb 18 2016, 13:36) *
Как-то так должно быть.

Спасибо! Беру тайм-аут для переваривания.

Цитата(thermit @ Feb 18 2016, 13:36) *
При чем тут z^-2? Вы сами понижаете частоту дискретизации в 2 раза и z^-2 становится z^-1.


Очень боюсь что мы тут друг друга недопонимаем.А чем тогда становится z^-1? Ведь тот узел что я сделал прекрасно выполняет свою функцию.
Вот этот узел у Вас является эталонным для сравнения? Там стоит z^-1,а у меня в эталоне стоит z^-2.

Мне нужна полифазная реализация БИХ фильтра H(z) = 1 / (1 - a*z^-2) для двух фаз. Начать решил с z^-1.
И я уже сказал что для z^-1 по Вашим формулам всё прекрасно работает. А вот перейти к z^-2 не удаётся.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
thermit
сообщение Feb 18 2016, 10:58
Сообщение #21


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Цитата(_Anatoliy @ Feb 18 2016, 13:50) *
Спасибо! Беру тайм-аут для переваривания.
А чем тогда становится z^-1? Ведь тот узел что я сделал прекрасно выполняет свою функцию.
Вот этот узел у Вас является эталонным для сравнения? Там стоит z^-1,а у меня в эталоне стоит z^-2.



В ваших формулах показано, как организовать вычисления для рекурсивного фильтра 1-го порядка на половинной частоте дискретизации при помощи параллельной обработки рекурсивными фильтрами 1-го порядка пары отсчетов. Зачем в эталоне лепить z^-2 совершенно не понятно. Эталон ведь первого порядка.
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Feb 18 2016, 12:08
Сообщение #22


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

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



Цитата(thermit @ Feb 18 2016, 13:58) *
В ваших формулах показано, как организовать вычисления для рекурсивного фильтра 1-го порядка на половинной частоте дискретизации при помощи параллельной обработки рекурсивными фильтрами 1-го порядка пары отсчетов. Зачем в эталоне лепить z^-2 совершенно не понятно. Эталон ведь первого порядка.

Ещё раз по полочкам.
Конечным результатом мне нужна полифазная реализация БИХ фильтра H(z) = 1 / (1 - a*z^-2) для двух фаз.
На первом этапе для начала я решил упростить задачу и реализовать БИХ фильтр H(z) = 1 / (1 - a*z^-1) и с помощью ваших рекомендаций мне это удалось.Для этой реализации в качестве эталона я брал БИХ фильтр H(z) = 1 / (1 - a*z^-1). Этот этап был промежуточным.
На втором этапе нужно сделать то же, но уже для фильтра H(z) = 1 / (1 - a*z^-2) и для этой реализации конечно нужен эталон с H(z) = 1 / (1 - a*z^-2).
Go to the top of the page
 
+Quote Post
thermit
сообщение Feb 18 2016, 16:24
Сообщение #23


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Понятно. Проще некуда.
Четные и нечетные отсчеты фильтруются параллельно фильтрами H(z) = 1 / (1 - a*z^-1). Все.

Или распараллелить на 4 фазы


Прикрепленные файлы
Прикрепленный файл  parallel_vs_serial_4ph.mdl.zip ( 12.12 килобайт ) Кол-во скачиваний: 9
 
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Feb 18 2016, 16:33
Сообщение #24


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

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



Цитата(thermit @ Feb 18 2016, 19:24) *
Понятно. Проще некуда.
Четные и нечетные отсчеты фильтруются параллельно фильтрами H(z) = 1 / (1 - a*z^-1). Все.

Или распараллелить на 4 фазы

Странно, но я же уже делал параллельно фильтры H(z) = 1 / (1 - a*z^-1), о чём сообщал выше и выход с этих фильтров сравнивался с эталонным фильтром работающем на основной частоте. Эталонный фильтр имел H(z) = 1 / (1 - a*z^-1) и все данные совпадали. Не может же эта самая схема выдавать отклик совпадающий и с эталонным фильтром H(z) = 1 / (1 - a*z^-2)???
Go to the top of the page
 
+Quote Post
thermit
сообщение Feb 18 2016, 16:45
Сообщение #25


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Цитата(_Anatoliy @ Feb 18 2016, 19:33) *
Странно, но я же уже делал параллельно фильтры H(z) = 1 / (1 - a*z^-1), о чём сообщал выше и выход с этих фильтров сравнивался с эталонным фильтром работающем на основной частоте. Эталонный фильтр имел H(z) = 1 / (1 - a*z^-1) и все данные совпадали. Не может же эта самая схема выдавать отклик совпадающий и с эталонным фильтром H(z) = 1 / (1 - a*z^-2)???


Значит не совсем совпадали.
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Feb 18 2016, 16:58
Сообщение #26


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

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



Цитата(thermit @ Feb 18 2016, 19:45) *
Значит не совсем совпадали.

o'k! Завтра вышлю модельку.
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Feb 19 2016, 07:41
Сообщение #27


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

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



Вот моделька двухфазной реализации фильтра H(z) = 1 / (1 - a*z^-1) при а = 1. Похоже что совпадает со всем.
Огромное Вам спасибо за модель parallel_vs_serial_4ph! Буду анализировать. Не сможете ли поделиться своими выкладками(формулами) по синтезу этой схемы?
А для двух фаз вариант с z^-2 не реализуем?
Прикрепленные файлы
Прикрепленный файл  iir_poly_z1.rar ( 11.12 килобайт ) Кол-во скачиваний: 5
 
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Feb 19 2016, 09:19
Сообщение #28


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

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



Всё у меня получилось! Огромное Вам спасибо за потраченное время!
Вот вариант двухфазного фильтра для z^-2.
Прикрепленные файлы
Прикрепленный файл  iir_poly_z2.rar ( 11.26 килобайт ) Кол-во скачиваний: 11
 
Go to the top of the page
 
+Quote Post
thermit
сообщение Feb 19 2016, 11:36
Сообщение #29


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Тогда, резюме:

1.
Параллельное вычисление 2-х фаз





2.
Параллельное вычисление 2-х фаз


Параллельное вычисление 4-х фаз








Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Feb 19 2016, 11:44
Сообщение #30


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

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



Цитата(thermit @ Feb 19 2016, 14:36) *

Спасибо! Добавим в копилку. rolleyes.gif
Go to the top of the page
 
+Quote Post

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

 


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


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