|
Обработка сигнала от АЦП к ПЛИС, подключение ацп с 2 каналами к плис |
|
|
|
Nov 20 2013, 17:41
|
Участник

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

|
Здравствуйте. У меня проблема- не могу найти литературу,примеров как обработать сигнал с ацп, выход которого демультиплексирован, т.е. по одному каналу идут четные отсчеты,по другому каналу -нечетные. Нужно поочередно обработать каждый отсчет последовательно. Проблема в том,что за 1 такт на вход приходят два отсчета,а их обработка последовательная занимает два такта  ,обработка в режиме реального времени. Прочитал xapp1071_V6_ADC_DAC_LVDS.pdf от xilinx не смог толком разобраться,скачал пример к этому документу, что-то сильно навороченный он,пока разбираюсь. Пробовал использовать две памяти типа single dual memory port :пока запись шла в первом канале(записывал сигнал одновременно с двух каналов,а воспроизводил поочередно) воспроизводил во втором канале,что-то правильно так и не заработало  . Есть ли скакое-то устройство или стандартный алгоритм обработки такого демультиплексированного сигнала.
Сообщение отредактировал Skryppy - Nov 20 2013, 17:42
|
|
|
|
|
 |
Ответов
(1 - 50)
|
Nov 20 2013, 17:52
|
Участник

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

|
частота демультиплексированного сигнала 200 МГц. Но меня интересует сам алгоритм обработки. Частоту можно взять любую,главное понять как упорядочить отсчеты.
Сообщение отредактировал Skryppy - Nov 20 2013, 17:53
|
|
|
|
|
Nov 20 2013, 18:00
|
Участник

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

|
просто упорядоченно подать на цифровой фильтр,бпф и т.д.
|
|
|
|
|
Nov 21 2013, 04:11
|
Частый гость
 
Группа: Свой
Сообщений: 75
Регистрация: 13-03-11
Из: Екатеринбург
Пользователь №: 63 574

|
Цитата(Methane @ Nov 21 2013, 09:38)  Сложновато сделать обработку на частоте 400MHz. Цитата(Skryppy @ Nov 20 2013, 23:52)  частота демультиплексированного сигнала 200 МГц. Но меня интересует сам алгоритм обработки. Частоту можно взять любую,главное понять как упорядочить отсчеты. А если поток непрерывный и обработка с обратной связью, другого и не остается.
|
|
|
|
|
Nov 21 2013, 05:47
|
Знающий
   
Группа: Свой
Сообщений: 802
Регистрация: 11-05-07
Из: Томск
Пользователь №: 27 650

|
Цитата(Skryppy @ Nov 21 2013, 00:41)  Здравствуйте. У меня проблема- не могу найти литературу,примеров как обработать сигнал с ацп, выход которого демультиплексирован, т.е. по одному каналу идут четные отсчеты,по другому каналу -нечетные. Нужно поочередно обработать каждый отсчет последовательно. Проблема в том,что за 1 такт на вход приходят два отсчета,а их обработка последовательная занимает два такта  ,обработка в режиме реального времени. Прочитал xapp1071_V6_ADC_DAC_LVDS.pdf от xilinx не смог толком разобраться,скачал пример к этому документу, что-то сильно навороченный он,пока разбираюсь. Пробовал использовать две памяти типа single dual memory port :пока запись шла в первом канале(записывал сигнал одновременно с двух каналов,а воспроизводил поочередно) воспроизводил во втором канале,что-то правильно так и не заработало  . Есть ли скакое-то устройство или стандартный алгоритм обработки такого демультиплексированного сигнала. Многое зависит от того, какой у вас кристалл. Если шустрый - то можно попытаться сделать обработку на 400Мгц, но это очень непростой путь. Жёсткая битва с таймингами на этом пути обеспечена, из бонусов можно отметить экономию ресурса. Но если вы раньше этого никогда не делали (обработку на 400 МГц), то лучше пойти стандартным путём - как вам тут уже советовали, сделать полифазную обработку. Из бонусов - гораздо легче вписаться во временные ограничения, из минусов - ресурса надо примерно в количество фаз больше. Если кристалл у вас слабенький (спартан какой-нибудь), то остаётся только второй путь.
|
|
|
|
|
Nov 21 2013, 08:03
|

я только учусь...
     
Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839

|
Цитата(Opex @ Nov 21 2013, 06:11)  А если поток непрерывный и обработка с обратной связью, другого и не остается. добавлю свои 5 копеек Полифазная обработка довольно неплохо описана: Айфичер Э. Джервис Б. Цифровая обработка сигналов. Практический подход. 2-е издание
--------------------
If it doesn't work in simulation, it won't work on the board.
"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
|
|
|
|
|
Nov 21 2013, 08:06
|
Участник

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

|
Спасибо,поищу информацию о полифазной обработке.
|
|
|
|
|
Nov 21 2013, 09:56
|

Гуру
     
Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230

|
Цитата(_Anatoliy @ Nov 21 2013, 11:43)  Конкретно PID регулятор я не делал,но другую автоматику делать приходилось.А в чем Вы видите проблему? В том, что Орех писал: Цитата А если поток непрерывный и обработка с обратной связью, другого и не остается. Тоесть FIR так можно сделать. IIR уже нет.
|
|
|
|
|
Nov 21 2013, 13:25
|
Участник

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

|
Цитата Демультиплексированный выход АЦП у= полифазный сигнал. Входную часть дальнейшей обработки надо переделать, чтобы она тоже имела полифазный вход. Например КИХ-фильтр очень просто реализуется в полифазной форме, умножение на комплексную экспоненту может быть реализовано в полифазной форме. Не хочу посылать Вас к изучению любого учебника по ЦОС, но взять разностное уравнение простейшего КИХ фильтра из 4-х коэффициентов и на листе бумаги расписать его в полифазной форме - элементарная задача, которую можно решить руководствуясь просто здравым смылсом. Написал разностное уравнение для КИХ-фильтра с 4 коэффициентами: y(0)=x(0)*h(0) y(1)=x(1)*h(0)+x(0)*h(1) y(2)=x(2)*h(0)+x(1)*h(1)+x(0)*h(2) y(3)=x(3)*h(0)+x(2)*h(1)+x(1)*h(2)+x(0)*h(3) y(4)=x(4)*h(0)+x(3)*h(1)+x(2)*h(2)+x(1)*h(3) ...... где y()-выходное значение фильтра х()-входной отсчет ,пусть,например все время равен =1 h()-коэффициент фильтра (пусть будут равны 1,2,3,4,соответственно) ,тогда y(0)=1,y(1)=3,y(2)=6,y(3)=10,y(4)=10.... Я не разобрался как записать полученное выражение для ких-фильтра в полифазном виде. в книге Айфичера_Джервиса (стр 665) приводится пример получения полифазного фильтра-интерполятора,судя по моему уравнению сгруппировать ничего нельзя. Попробовал сгруппировать четные и нечетные коэффициенты фильтра ( h(0),h(2) и h(1),h(3))в два канала получаю неверный ответ.
Сообщение отредактировал Skryppy - Nov 21 2013, 13:26
|
|
|
|
|
Nov 21 2013, 14:46
|
Частый гость
 
Группа: Свой
Сообщений: 75
Регистрация: 13-03-11
Из: Екатеринбург
Пользователь №: 63 574

|
Цитата(_Anatoliy @ Nov 21 2013, 13:06)  Не вводите людей в заблуждение.Полифазная реализация позволяет в реал-тайме обрабатывать гигасемплэвые потоки на приемлемых тактовых частотах. В общем случае для БИХ-фильтра, то есть фильтра с обратной связью, полифазную форму не построить. Это ж здравый смысл подсказывает. Для частных случаев можно, например, если для обратной связи используются отсчеты, начиная со второго, то фильтр можно разбить на 2, если с 3-го, то на 3, и т.д. Цитата(Skryppy @ Nov 21 2013, 19:25)  Написал разностное уравнение для КИХ-фильтра с 4 коэффициентами: y(0)=x(0)*h(0) y(1)=x(1)*h(0)+x(0)*h(1) y(2)=x(2)*h(0)+x(1)*h(1)+x(0)*h(2) y(3)=x(3)*h(0)+x(2)*h(1)+x(1)*h(2)+x(0)*h(3) y(4)=x(4)*h(0)+x(3)*h(1)+x(2)*h(2)+x(1)*h(3) ...... где y()-выходное значение фильтра х()-входной отсчет ,пусть,например все время равен =1 h()-коэффициент фильтра (пусть будут равны 1,2,3,4,соответственно) ,тогда y(0)=1,y(1)=3,y(2)=6,y(3)=10,y(4)=10....
Я не разобрался как записать полученное выражение для ких-фильтра в полифазном виде.
в книге Айфичера_Джервиса (стр 665) приводится пример получения полифазного фильтра-интерполятора,судя по моему уравнению сгруппировать ничего нельзя. Попробовал сгруппировать четные и нечетные коэффициенты фильтра ( h(0),h(2) и h(1),h(3))в два канала получаю неверный ответ. Очевидно, в конечном счете так и будет выглядеть. Если делим частоту в 2 раза, то и отсчеты входные четные и нечетные считаем отдельно. И складываем в нужном порядке. f1(0)___x(0)*h(0) f2(0)___x(1)*h(0) f1(2)___x(2)*h(0)___x(0)*h(1) f2(2)___x(3)*h(0)___x(1)*h(1) f1(4)___x(4)*h(0)___x(2)*h(1)___x(0)*h(2) f2(4)___x(5)*h(0)___x(3)*h(1)___x(1)*h(2)
Сообщение отредактировал Opex - Nov 21 2013, 14:58
|
|
|
|
|
Nov 21 2013, 18:25
|
Участник

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

|
Спасибо,завтра попробую разобраться в этой модели,а также в разностном уравнении.
|
|
|
|
|
Nov 21 2013, 19:10
|
Знающий
   
Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515

|
Цитата(Opex @ Nov 21 2013, 18:46)  В общем случае для БИХ-фильтра, то есть фильтра с обратной связью, полифазную форму не построить. Это ж здравый смысл подсказывает. Для частных случаев можно, например, если для обратной связи используются отсчеты, начиная со второго, то фильтр можно разбить на 2, если с 3-го, то на 3, и т.д. Полифазную форму можно построить для любого БИХ фильтра. пусть y n = H(y i, x i), i in (0,n-1) (1) а y n+1 = H(y i, x i), i in (1,n) (2) поскольку H - линейная функция по y i, при подстановке y n из (1) в (2) получится также линейная функция H'(y i, x i,x n), i in (0, n-1). То есть y n не требуется в явном виде для вычисления y n+1.
|
|
|
|
|
Nov 22 2013, 03:52
|
Знающий
   
Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515

|
Цитата(Opex @ Nov 22 2013, 07:28)  Разве после такой подстановки мы не получи фильтр, работающий с частотой входного сигнала?
Нет, то есть фильтр, который требует в 2 раза больше времени на рассчет, и который, соответственно, в 2 раза можно разогнать? Передаточная функция цифрового фильтра связывается не с частотой, а с числом отсчётов. Сам по себе цифровой фильтр существует вне времени и пространства  , так что я не понял вопроса. Аналогичный фокус используется при расчёте CRC, которая формально определена, как рекурсивная, для каждого входного бита, что, однако, не мешает, сделав множественную подстановку, обработать за один такт сколько угодно входных бит.
|
|
|
|
|
Nov 22 2013, 07:49
|

Знающий
   
Группа: Свой
Сообщений: 747
Регистрация: 11-04-07
Пользователь №: 26 933

|
Цитата(Opex @ Nov 22 2013, 11:43)  Да, все работает, как надо, только вот цепь из 2 умножителей, да 2 сумматоров используется на протяжении одного такта с уменьшенной вдвое частотой. Если взять обычную реализацию этого фильтра, будет использоваться 1 умножитель, и 1 сумматор за один такт. Соответственно, и работать она будет вдвое быстрее. Когда исходная тактовая частота гигагерцы, то это то, что нам и нужно - путем распараллеливания снизить частоту работы схемы обработки. Мы же к полифазной обработке не от хорошей жизни переходим.
--------------------
|
|
|
|
|
Nov 22 2013, 08:41
|
Знающий
   
Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515

|
Цитата(Opex @ Nov 22 2013, 08:27)  Пожалуй, я не прав, поскольку сужу лишь с точки зрения аппаратной реализуемости. Вы нарисуйте, пожалуйста, схему такого фильтра. Вот пример в Математике, как выполненяется подстановка, видно, что она не приводит к усложнению формулы расчёта. Записываем общую формулу для y(n,p,q) по википедии  . Смотрим для y(10) четвёртого порядка. Подставляем туда выражение для y(9) от предыдущих координат. Получаем новое линейное выражение, не содержащее y(9). Поскольку a и b - константы, сложность вычислений не растёт. Конечно, надо ещё параллельно y(10) вычислить и y(9), которая понадобится в следующем цикле.
|
|
|
|
|
Nov 22 2013, 13:58
|
Участник

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

|
Цитата(_Anatoliy @ Nov 21 2013, 18:20)  Ещё один вариант для вашего случая и для FIR c 8 тапов.Coeff = [1:8].Разбиение коэффициентов написано под фильтрами. 1) Сделал модель, на выходе получил только нечетные ответы.Если в одном блоке Upsample параметр Sample offset=1,тогда на выходе четные ответы. Получается,что даже если я сделаю два таких фильтра,получу за 1 такт два ответа четный и нечетный. Я так понимаю, что затем обработку нужно будет производить пары отсчетов за такт?
2)Непонятно как получилась такая модель:из разностного уравнения двухнакального фильтра f1(6)=x(6)*h(0)+x(4)*h(1)+x(2)*h(2)+x(0)*h(3) f2(6)=x(7)*h(0)+x(5)*h(1)+x(3)*h(2)+x(1)*h(3) получаем,что просто надо взять два исходных фильтра с коэффициентами 1,2,3,4 и подать на первый фильтр четную последовательность, на второй фильтр нечетную. Непонятно как будет выглядеть полифазный фильтр.
|
|
|
|
|
Nov 22 2013, 14:46
|
Участник

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

|
у меня матлаб 2013,так что поймет. Я хотел свою модель прикрепить,но на сайте прав нет  . Вот заархивировал,вроде получилось прикрепить
Сообщение отредактировал Skryppy - Nov 22 2013, 14:56
|
|
|
|
|
Nov 22 2013, 15:06
|
Участник

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

|
Спасибо. В понедельник посмотрю Вашу модель,но главное,что я более менее разобрался как происходит обработка параллельных каналов  .
|
|
|
|
|
Nov 25 2013, 16:17
|
Участник

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

|
Просмотрел Вашу модель, пришел к выводу, что она немного неккоректна задачи,т.к. работает при подачи на вход всей последовательности(и четных и нечетных отсчетов). Ваша схема эквивалентна этой схеме:
Я немного посидел,набросал схему,вроде работает - на выходе за 1 такт получаю два отсчета(четный и нечетный). Вот сама схема:
Вот эти модели.
Filter.rar ( 16.57 килобайт )
Кол-во скачиваний: 601)На выходе я так понимаю в моей модели будет такая же частота следования отсчетов как и на входе? 2)Эта схема полифазного фильтра?
Сообщение отредактировал Skryppy - Nov 25 2013, 18:03
|
|
|
|
|
Nov 26 2013, 07:10
|

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

|
Цитата(Skryppy @ Nov 25 2013, 18:17)  Просмотрел Вашу модель, пришел к выводу, что она немного неккоректна задачи,т.к. работает при подачи на вход всей последовательности(и четных и нечетных отсчетов). Ваша схема эквивалентна этой схеме: Нет,вы не правы.На входе стоит буфер,он и формирует из единой входной последовательности два потока odd/even, но на частоте Fadc/2(выделено цветом). Цитата(Skryppy @ Nov 25 2013, 18:17)  1)На выходе я так понимаю в моей модели будет такая же частота следования отсчетов как и на входе? 2)Эта схема полифазного фильтра? 1) да,частота на входе фильтра и на выходе будет Fadc/2(два отсчёта на такт) 2)не понял Если в моей модели выделить только сам фильтр то он будет выглядеть так:
Эскизы прикрепленных изображений
|
|
|
|
|
Nov 26 2013, 10:28
|

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

|
Цитата(Skryppy @ Nov 25 2013, 18:17)  Я немного посидел,набросал схему,вроде работает - на выходе за 1 такт получаю два отсчета(четный и нечетный). Вот сама схема: Чтобы убедиться что эта схема не работает подайте на вход ПСП(или счётчик) и сравните с эталоном.В моей модели можно выбирать входное воздействие,рекомендую и вам так сделать.Кстати,это не единственное решение. Импульсную характеристику можно не дробить,поставить в каждый канал по оригинальному КИХ с коэффициентами [1:8],просто по определённому алгоритму перемешать данные на входах.Сам придумал,в литературе такого варианта не встречал.Но это только реализация,по сути то же самое.
|
|
|
|
|
Nov 26 2013, 14:05
|
Участник

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

|
Спасибо. Теперь разобрался.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|