Перейти к содержанию
    

БПФ с частотой дискретизации не менее 600 МГц

Здравствуйте, уважаемые форумчане!

Стоит задача в реальном времени делать БПФ с частотой оцифровки не менее 600 МГц, входной сигнал комплексный, поступает с 12 разрядных АЦП, количество точек - 1024. Данные обрабатываются непрерывным потоком. Склоняюсь к применению Virtex-7.

Судя по даташиту на LogiCORE IP Fast Fourier Transform v8.0 одним IP ядром не обойтись, т.е. нужно делать конвейер или что-то в этом духе. Вопрос к людям, имеющим реальный опыт разработки высокоскоростных систем ЦОС: является ли данная задача потенциально решаемой, или даже и возится не стоит? :)

Изменено пользователем Fourier

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На правах совета, если область использования подойдёт то можно вот - полифазное БПФ

 

http://www.dsplib.ru/content/polyphasefft/polyphase.html

 

Снизит частоту поступления данных, но есть ограничения на применение.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На правах совета, если область использования подойдёт то можно вот - полифазное БПФ

 

http://www.dsplib.ru/content/polyphasefft/polyphase.html

 

Снизит частоту поступления данных, но есть ограничения на применение.

 

Нужно делать именно БПФ. Задача связана с формированием OFDM.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Надеюсь, Вы не скользящий БПФ вычислять собираетесь, когда БПФ вычисляется с каждым отсчетом входного сигнала?

Задача решаемая.

Но БПФ надо делать самому, и архитектуру его вычисления подбирать, чтобы уложиться в жесткие тайминги и логические ресурсы.

Реально работает БПФ 128 точек на 1000 МГц, правда на Альтере.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

FFT Radix-2 За 1 такт расчет 2-х точек, соответственно 600МГц -> 300МГц. Уже нормальная частота

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

..ещё можно входным сигналом - минуя АЦП промодулировать лазер, лазер подать на призму с призмы сфоткать ПЗС матрицей , с матрицы снять БПФ получившийся :) .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Надеюсь, Вы не скользящий БПФ вычислять собираетесь, когда БПФ вычисляется с каждым отсчетом входного сигнала?

Задача решаемая.

Но БПФ надо делать самому, и архитектуру его вычисления подбирать, чтобы уложиться в жесткие тайминги и логические ресурсы.

Реально работает БПФ 128 точек на 1000 МГц, правда на Альтере.

Спсибо. БПФ не скользящий. Набрали 1024 семпла - посчитали.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

 

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

 

У меня так вот сейчас в реале считается 2K точек FFT для 2.2 GHz данных, с окном и перекрытием 50 % (суммарно 4.4 Gs/s). 8 потоков FFT, Правда поскольку данные реальные то на длине FFT сэкономил в 2 раза, считая входные данные как 1024 комплексные с последующей коррекцией на выходе. Сами FFT стандартные из coregen.

 

Все это добро занимает ~25 % в Virtex5sx240 и работает на 312 MHz.

 

Успехов. Rob.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спсибо. БПФ не скользящий. Набрали 1024 семпла - посчитали.

 

А записать весь поток и потом посчитать, нельзя никак? связь не сеансовая?

А то записали бы не спеша на несколько винтов, а потом считайте хоть 64к БПФ.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А записать весь поток и потом посчитать, нельзя никак? связь не сеансовая?

А то записали бы не спеша на несколько винтов, а потом считайте хоть 64к БПФ.

Такой вариант тоже рассматривается. Но на передаче все равно надо БПФ делать. Поэтому от реалтайма не уйти.

 

У меня так вот сейчас в реале считается 2K точек FFT для 2.2 GHz данных, с окном и перекрытием 50 % (суммарно 4.4 Gs/s).

 

Круто. Спасибо за информацию. Вдохновляет))

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Такой вариант тоже рассматривается. Но на передаче все равно надо БПФ делать. Поэтому от реалтайма не уйти.

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

Не спеша сформировать поток на компе, записать на несколько винтов и выдать на нужной скорости на ЦАП?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Не спеша сформировать поток на компе, записать на несколько винтов и выдать на нужной скорости на ЦАП?

 

Линия однонаправленная, от гипотетического устройства поступают данные их надо в реальном времени замодулировать (тут то и надо посчитать БПФ) и передать.

На приемной же стороне допустимо оцифрованные данные записать и обработать позднее.

Т.е. в общем случае БПФ нужно делать в реальном времени.

Изменено пользователем Fourier

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

 

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

 

У меня так вот сейчас в реале считается 2K точек FFT для 2.2 GHz данных, с окном и перекрытием 50 % (суммарно 4.4 Gs/s). 8 потоков FFT, Правда поскольку данные реальные то на длине FFT сэкономил в 2 раза, считая входные данные как 1024 комплексные с последующей коррекцией на выходе. Сами FFT стандартные из coregen.

 

Все это добро занимает ~25 % в Virtex5sx240 и работает на 312 MHz.

 

Успехов. Rob.

 

Извиняюсь за флуд, кажется мы с Rob одним и тем же занимаемся :)

Задача ТС вполне решаема, 7 виртекс для этого врятли нужен, но будет не лишним. А вообще нужно в сторону кинтексов посмотреть. По Фурье – во многих случаях можно обойтись корегенератором. Само фурье поддается распараллеливанию, так что были бы ресурсы... Ну и как Rob написал, если сигнал действительный, то можно сэкономить на мнимомй ветви, заставив ее работать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Свежая статья из Xcell Journal Issue 82 : "Using the Parallel FFT for Multigigahertz FPGA Signal Processing" Вам в помощь .

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Свежая статья из Xcell Journal Issue 82 : "Using the Parallel FFT for Multigigahertz FPGA Signal Processing" Вам в помощь .

Познавательно, спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...