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

 
 
23 страниц V  « < 20 21 22 23 >  
Reply to this topicStart new topic
> Реализация БПФ на ПЛИС, Тудности, встречаемые при реализации
Sefo
сообщение Oct 28 2011, 15:27
Сообщение #316


Местный
***

Группа: Свой
Сообщений: 429
Регистрация: 11-08-05
Из: Санкт-Петербург
Пользователь №: 7 537



Цитата(troiden @ Oct 27 2011, 09:29) *
Возникла идея сделать в ПЛИСе не только само вычисление FFT, но и усреднение результата по нескольким прогонам. Используется стандартная корка от Xilinx, на выходе она выдает действительную и мнимую части отсчетов. Как правильнее подойти к задаче - усреднять по модулю или усреднять действительную и мнимую части, а потом уже брать модуль?


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

Теперь рассмотрим тот же случай, но только прогон Вы начинаете со случайной фазы входного синуса. В этом случае, в каждом прогоне будут разные значения мнимой и действительной части на выходе БПФ, но модуль ( sqrt( im^2 + re^2) ) будет всегда одинаковый. Усредняя модуль Вы будете получать всегда одно и то же значение среднего модуля. Если Вы будете усреднять отдельно действительную и мнимую части, то при усреднении небольшого количества прогонов получите сильно заниженное значение модуля вычисляя его по отдельно усредненным re и im. При увеличении количества прогонов модуль, вычисленный по отдельно усредненным re и im будет неуклонно стремиться к 0.

Так что на Ваш вопрос невозможно ответить без уточнения что из себя представляет входной сигнал, как происходит выборка отсчетов, как "организованы" прогоны и какую информацию о сигнале Вы хотите извлечь с помощью БПФ.
Go to the top of the page
 
+Quote Post
troiden
сообщение Oct 28 2011, 16:28
Сообщение #317


Частый гость
**

Группа: Свой
Сообщений: 108
Регистрация: 19-02-09
Из: Москва
Пользователь №: 45 069



Цитата(Sefo @ Oct 28 2011, 19:27) *
Так что на Ваш вопрос невозможно ответить без уточнения что из себя представляет входной сигнал, как происходит выборка отсчетов, как "организованы" прогоны и какую информацию о сигнале Вы хотите извлечь с помощью БПФ.

Входной сигнал - фактически оцифрованный радиоканал, отсчеты с АЦП, начало выборки производится без всякой синхронизации, просто в произвольные моменты времени берутся подряд 2048 отсчетов. А с помощью БПФ хочется получить спектральную панораму входного сигнала, усреднение нужно для получения более гладкой картинки.
Как я понимаю из выжеизложенного, для данных условий нужно усреднять модуль.
Go to the top of the page
 
+Quote Post
Sefo
сообщение Oct 29 2011, 13:00
Сообщение #318


Местный
***

Группа: Свой
Сообщений: 429
Регистрация: 11-08-05
Из: Санкт-Петербург
Пользователь №: 7 537



Цитата(troiden @ Oct 28 2011, 19:28) *
Входной сигнал - фактически оцифрованный радиоканал, отсчеты с АЦП, начало выборки производится без всякой синхронизации, просто в произвольные моменты времени берутся подряд 2048 отсчетов. А с помощью БПФ хочется получить спектральную панораму входного сигнала, усреднение нужно для получения более гладкой картинки.
Как я понимаю из выжеизложенного, для данных условий нужно усреднять модуль.


Да. При таком раскладе усреднять нужно модуль.
Go to the top of the page
 
+Quote Post
ClockworkOrange
сообщение Mar 1 2012, 09:54
Сообщение #319


Местный
***

Группа: Свой
Сообщений: 337
Регистрация: 17-05-07
Пользователь №: 27 784



Цитата(soldat_shveyk @ Jan 19 2009, 00:55) *
3. Если вы делаете БПФ на ПЛИС, то надо смотреть на алгоритмы по основанию 4, а не по основанию 2.
Получается намного удобнее и эффективнее. Классическая бабочка - наследие от процессоров DSP, где она сделана аппаратно. Ядром алгоритма БПФ по основанию 4 является более сложный 4-х точечный БПФ, где все поворачивающие множители равны либо 1, либо -1. На ПЛИС удобно реализуется на сумматорах, можно сделать комбинаторную сехему, выполняющею этот самый 4-х точечный БПФ за один такт


нельзя ли об этом подробнее?
почему-то тот же Xilinx CoreIP FFT wizard предлагает только варианты реализаций Radix-2 & Radix-2 Lite
да и гугл говорит что больше всего ищут "FFT radix 2" & "FFT radix 8"


>> 4-х точечный БПФ, где все поворачивающие множители равны либо 1, либо -1

означает ли это что можно вообще обойтись без умножителей?


ЗЫЖ как насчёт Radix-8 FFT ?

ЗЫЫЖ интересуют данные алгоритмы в применении к БПФ на относительно большое число точек (2048)

upd
вот какое сравнение в слайдах нашёл
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Чтoбы yзнaть, кaкaя дopoгa впepeди, cпpocи тex, ктo пo нeй вoзвpaщaeтcя ©
Go to the top of the page
 
+Quote Post
blackfin
сообщение Mar 1 2012, 10:03
Сообщение #320


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(ClockworkOrange @ Mar 1 2012, 13:54) *
вот какое сравнение в слайдах нашёл

На мой взгляд, нет смысла вычислять FFT быстрее, чем заполняется входной буфер, а Radix-2 этому требованию, вроде как, удовлетворяет.
Go to the top of the page
 
+Quote Post
ClockworkOrange
сообщение Mar 1 2012, 10:12
Сообщение #321


Местный
***

Группа: Свой
Сообщений: 337
Регистрация: 17-05-07
Пользователь №: 27 784



Цитата(blackfin @ Mar 1 2012, 14:03) *
На мой взгляд, нет смысла вычислять FFT быстрее, чем заполняется входной буфер, а Radix-2 этому требованию, вроде как, удовлетворяет.
ну, еще есть такая штука как latency, которая м.б. критична во многих приложениях. ей и меряются наравне с ресурсами



а cмысл, которого хочется достичь -
1) экономия площади (поэтому сравнивается обычно количество наиболее ресурсозатратных примитивов - умножителей )
2) при фиксированном количестве точек память особо не поэкономишь, поэтому переходят на экономию обращений к памяти (уменьшение конфликтов)

Цитата(blackfin @ Mar 1 2012, 14:03) *
Radix-2 этому требованию, вроде как, удовлетворяет.

в ПЛИС как раз-таки благодяря использованию сегментов блочной двухпортовой памяти снимается ограничение по обращениям (много операций чтения/записи из многих сегментов BlockRAM одновременно)

в VLSI же как правило имеется 1 большой кусок DualPort RAM и там уже эти обращения становятся критичными



--------------------
Чтoбы yзнaть, кaкaя дopoгa впepeди, cпpocи тex, ктo пo нeй вoзвpaщaeтcя ©
Go to the top of the page
 
+Quote Post
blackfin
сообщение Mar 1 2012, 10:15
Сообщение #322


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(ClockworkOrange @ Mar 1 2012, 14:12) *
1) экономия площади (поэтому сравнивается обычно количество наиболее ресурсозатратных примитивов - умножителей )

Так количество умножений в алгоритме FFT и количество использованных аппаратных умножителей в IP-core это не одно и тоже..
Go to the top of the page
 
+Quote Post
Sefo
сообщение Mar 5 2012, 08:15
Сообщение #323


Местный
***

Группа: Свой
Сообщений: 429
Регистрация: 11-08-05
Из: Санкт-Петербург
Пользователь №: 7 537



Цитата(ClockworkOrange @ Mar 1 2012, 12:54) *
нельзя ли об этом подробнее?
почему-то тот же Xilinx CoreIP FFT wizard предлагает только варианты реализаций Radix-2 & Radix-2 Lite
да и гугл говорит что больше всего ищут "FFT radix 2" & "FFT radix 8"

>> 4-х точечный БПФ, где все поворачивающие множители равны либо 1, либо -1

означает ли это что можно вообще обойтись без умножителей?


Конечно нет! Речь идет только о вычислении самой бабочки. 2-х и 4-х точечные бабочки имеют тривиальные коэффициенты и поэтому для их вычисления умножителей не требуются. Для всех остальных бабочек не все коэффициенты тривиальны (для 3-х, 5-ти и т.д. точечной бабочки все не тривиальны) и для вычисления самой бабочки требуются умножители. Стоит заметить, что требуются умножители на константу и если в ПЛИС нет DSP-блоков и все реализуется на простых лог. элементах, то умножители на константу занимают меньше площади (площадь зависит от значения константы) .

Однако, до или после бабочки (в зависимости от схемы) нужно домножать данные на поворачивающие коэффициенты. И здесь без умножителей не обойтись.

Цитата(ClockworkOrange @ Mar 1 2012, 12:54) *
вот какое сравнение в слайдах нашёл


Непонятно что значит "Complexity" и в каких попугаях.

Цитата(ClockworkOrange @ Mar 1 2012, 13:12) *
ну, еще есть такая штука как latency, которая м.б. критична во многих приложениях. ей и меряются наравне с ресурсами

а cмысл, которого хочется достичь -
1) экономия площади (поэтому сравнивается обычно количество наиболее ресурсозатратных примитивов - умножителей )
2) при фиксированном количестве точек память особо не поэкономишь, поэтому переходят на экономию обращений к памяти (уменьшение конфликтов)

в ПЛИС как раз-таки благодяря использованию сегментов блочной двухпортовой памяти снимается ограничение по обращениям (много операций чтения/записи из многих сегментов BlockRAM одновременно)

в VLSI же как правило имеется 1 большой кусок DualPort RAM и там уже эти обращения становятся критичными


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

Например, можно вычислять БПФ "переливая" из одного модуля памяти в другой и обратно, а можно сделать так называемое inplace БПФ и сэкономить память. Можно все вычисления выполнить одной бабочкой, а можно несколько бабочек считать в параллель. Да и саму бабочку можно вычислять параллельно, а можно последовательно. Если параллельно, то, скажем, для 4-х точечной бабочки нужно поставить параллельно 3 умножителя, а если последовательно вычислять, то 1.

Если, к примеру, бабочка вычисляется последовательно, то нужно учитывать количество математических операций умножения . Скажем, 16-ти точечное БПФ при вычислении 2-х точечной бабочкой требует 4 этапа и, соответственно, нужно вычислить 4 этапа * 8 бабочек * 2 точки = 64 "точки" и произвести 4 этапа * 8 бабочек * 1 умножение = 32 операции умножения. При вычислении 4-х точечной бабочкой требует 2 этапа и, соответственно, нужно вычислить 2 этапа * 4 бабочки * 4 точки = 32 точки и произвести 2 этапа * 4 бабочки * 3 умножения = 24 операции умножения.

Понятие "последовательное вычисление" бабочки тоже не однозначно т.к. надо уточнять какие именно вычисления выполняются последовательно: для вычисления одной "выходной" точки 2-х точечной бабочки нужно сложить 2 комплексных числа, а для 4-х точечной бабочки нужно сложить 4 комплексных числа.
Go to the top of the page
 
+Quote Post
Corner
сообщение Nov 10 2015, 20:25
Сообщение #324


Профессионал
*****

Группа: Участник
Сообщений: 1 072
Регистрация: 11-12-12
Пользователь №: 74 815



БПФ с бабочками не 2 в степени N. Это что то новенькое... lol.gif
Go to the top of the page
 
+Quote Post
blackfin
сообщение Nov 11 2015, 02:48
Сообщение #325


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(Corner @ Nov 10 2015, 23:25) *
БПФ с бабочками не 2 в степени N. Это что то новенькое... lol.gif

Так это для вас "это что-то новенькое".. biggrin.gif

А для всех остальных это все отнюдь не ново: Radix-3,5, Radix-3,6,12.

Не говоря уж про классическое "БПФ с бабочками 4 и 8 в степени N": Radix-4,8.
Go to the top of the page
 
+Quote Post
DrbIn
сообщение Apr 13 2018, 02:06
Сообщение #326





Группа: Участник
Сообщений: 8
Регистрация: 13-04-18
Пользователь №: 103 185



Прошу помощи у знатоков! Возникла необходимость реализовать БПФ на плис Альтера. Сидеть разбираться и с нуля писать времени нет. Знаю про мега функцию FFT, хочу воспользоваться её. Кто пользовался, поделитесь опытом?
Может есть видео уроки или литература какая-нибудь. Блок создал, а какие сигналы и откуда их подключать не знаю. Подскажите!!! help.gif help.gif help.gif
Go to the top of the page
 
+Quote Post
blackfin
сообщение Apr 13 2018, 03:49
Сообщение #327


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



ug_fft
Go to the top of the page
 
+Quote Post
DrbIn
сообщение Apr 13 2018, 05:43
Сообщение #328





Группа: Участник
Сообщений: 8
Регистрация: 13-04-18
Пользователь №: 103 185



спасибо. а примеров случайно нет?
Go to the top of the page
 
+Quote Post
AVR
сообщение Apr 13 2018, 07:15
Сообщение #329


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(DrbIn @ Apr 13 2018, 08:43) *
спасибо. а примеров случайно нет?

Я работал лишь с Xilinx FFT core, но вот сейчас открыл альтеровский UG на их FFT ядро и вижу что там исчерпывающая информация, включая тайминги диаграммы, после которых никакие примеры больше не нужны.
Есть ли конкретные вопросы? Добавить компонент ведь труда не составляет, тогда может уже есть какие-то вопросы, которые я по аналогии смогу помочь прояснить?


--------------------
Go to the top of the page
 
+Quote Post
DrbIn
сообщение Apr 16 2018, 06:15
Сообщение #330





Группа: Участник
Сообщений: 8
Регистрация: 13-04-18
Пользователь №: 103 185



Цитата(AVR @ Apr 13 2018, 14:15) *
Я работал лишь с Xilinx FFT core, но вот сейчас открыл альтеровский UG на их FFT ядро и вижу что там исчерпывающая информация, включая тайминги диаграммы, после которых никакие примеры больше не нужны.
Есть ли конкретные вопросы? Добавить компонент ведь труда не составляет, тогда может уже есть какие-то вопросы, которые я по аналогии смогу помочь прояснить?


Я новичок в этом деле, писал только простые алгоритмы, поэтому не судите строго.
Создать компонент не составило труда, но какие вх/ вых.сигналы от куда и куда подать тут загвоздка.
Если не трудно объясните НУБику))
Откуда взять вещественные и мнимые значения сигнала?
Как я понимаю должна быть память, где будут храниться значения, которые будет брать компонент?!
мне бы примерную блок-схему для начала.


Сообщение отредактировал DrbIn - Apr 16 2018, 06:20
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 22:16
Рейтинг@Mail.ru


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