|
Реализация полифазного интегратора |
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 29)
|
Oct 15 2014, 12:47
|
Местный
  
Группа: Участник
Сообщений: 236
Регистрация: 7-02-11
Пользователь №: 62 755

|
Цитата(_Anatoliy @ Oct 15 2014, 14:15)  Коллеги,помогите найти решение.На картинке вверху изображён обычный интегратор,внизу - его полифазная реализация.Сразу бросается в глаза большое дерево сумматоров по входному сигналу.Как следствие на нужной частоте эта схема в FPGA не работает.Как правильно конвееризировать это дерево сумматоров не нарушая при этом логику работы схемы?Очень мешает обратная связь,она вносит рекурсию...Вообще в принципе это решаемо? Можно попробовать поставить в каждую ветвь сначала сумматор последних 4-х отсчетов, а за ним простой интегратор.
|
|
|
|
|
Oct 15 2014, 12:50
|
Знающий
   
Группа: Свой
Сообщений: 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"
|
|
|
|
|
Oct 15 2014, 17:00
|
Участник

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

|
Я такую же задачу решал при реализации полифазного CIC фильтра. Вот тестовая схемка (без оконечного сумматора и интеграторов):
Так как при рекурсии постоянно увеличивается разрядность сигнала после суммирования,то первый сумматор должен иметь настройку точности не Full, а заданную пользователем(например,30 бит). В первой схеме так и сделано,но лучше будет если суммировать с полной точностью,а после сумматора, перед блоком округления поставить регистр,тогда временные характеристики будут намного лучше. P.S.: не тестировал как эта реализация будет работать в схеме цифровой обработки.
integrator.rar ( 34.85 килобайт )
Кол-во скачиваний: 62
Сообщение отредактировал Skryppy - Oct 15 2014, 17:36
|
|
|
|
|
Oct 26 2014, 15:39
|

Утомлённый солнцем
     
Группа: Свой
Сообщений: 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-фильтр. Но по Вашей картинке видно что Вы применяли обычное дерево сумматоров.У меня тактовая частота высокая,этот метод не годится.
|
|
|
|
|
Oct 26 2014, 18:09
|
Местный
  
Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163

|
Цитата(_Anatoliy @ Oct 26 2014, 19:39)  Вот-вот,мне как раз и нужно сделать полифазный CIC-фильтр. Но по Вашей картинке видно что Вы применяли обычное дерево сумматоров.У меня тактовая частота высокая,этот метод не годится. Если факторы децимации Вашего CIC фильтра являются степенями 2, то эти статьи могут представлять для Вас интерес
Сообщение отредактировал andyp - Oct 26 2014, 18:26
|
|
|
|
|
Oct 27 2014, 17:28
|
Местный
  
Группа: Участник
Сообщений: 236
Регистрация: 7-02-11
Пользователь №: 62 755

|
Цитата(_Anatoliy @ Oct 27 2014, 12:45)  Спасибо за информацию. Вот такой получился у меня полифазный интегратор.А эти сумматоры уже конвейеризуются штатным способом. Я имел в виду примерно то, что у вас в итоге получилось, только предлагал сначала задерживать и суммировать, а потом интегрировать.
|
|
|
|
|
Oct 28 2014, 10:32
|
Знающий
   
Группа: Участник
Сообщений: 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)
|
|
|
|
|
Oct 29 2014, 10:07
|
Местный
  
Группа: Участник
Сообщений: 236
Регистрация: 7-02-11
Пользователь №: 62 755

|
Цитата(_Anatoliy @ Oct 28 2014, 08:46)  А,ясно.Интеграл суммы эквивалентен сумме интегралов,схема линейная.Или в реализации будет какой выигрыш? Думаю, должен быть, т.к. большую часть схемы займут сумматоры. В моем случае разрядность сумматоров должна быть меньше, а разрядность интегратора всего на два бита больше.
|
|
|
|
|
Feb 18 2016, 07:02
|

Утомлённый солнцем
     
Группа: Свой
Сообщений: 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 Может я чего не так сделал? Кстати,для нечётного канала никакая задержка на такт не нужна
Эскизы прикрепленных изображений
|
|
|
|
|
Feb 18 2016, 10:36
|
Знающий
   
Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730

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

Утомлённый солнцем
     
Группа: Свой
Сообщений: 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 не удаётся.
Эскизы прикрепленных изображений
|
|
|
|
|
Feb 18 2016, 12:08
|

Утомлённый солнцем
     
Группа: Свой
Сообщений: 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).
|
|
|
|
|
Feb 18 2016, 16:24
|
Знающий
   
Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730

|
Понятно. Проще некуда. Четные и нечетные отсчеты фильтруются параллельно фильтрами H(z) = 1 / (1 - a*z^-1). Все. Или распараллелить на 4 фазы
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|