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

FFT8 синтезируемый VHDL код

На данный момент, когда Вы смотрите на перевернутые графы с прореживанием по частоте на базе 2-х точечной бабочки и пытаетесь в уме все это преобразовать в граф на базе 8-ми точечной бабочки с прореживанием по времени у вас получается полная ерунда.

Ничего подобного. Возьмите восьмиточечный граф прореживания по частоте и просто наложите его на граф прореживания по времени. Они совпадут. Только накладывать нужно с поворотом на 180 град. Ладошка к ладошке. Стрелки в графе поверните в обратную сторону. Неужели это не заметно?

Это же очевидно.

В случае БПФ с прореживанием по времени можно 8ми точечный выполнить последовательно выполняя 4 двухточечных, затем последовательно (не параллельно) 2 четырехточечных (вернее две половинки второй стадии) и только на последнем этапе 3_ю стадию восьмиточечного. Похоже и с 16 точками и с 32. Входные данные для каждой операции нужно мультиплексировать, а выходные сохранять в буфере для последующего мультиплексирования на очередную стадию.

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

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


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

8 точек на входе

8 отсчетов на выходе

 

делаем четыре 2 в 2, первая стадия, потом два 4 в 4, вторая стадия, потом одно 8 в 8 - последняя стадия.

число умножений 4*2 + 2*4 + 1*8 = 24

 

делаем четыре 2 в 2, первая стадия, потом четыре 2 в 2, вторая стадия, потом четыре 2 в 2 - последняя стадия.

число умножений 4*2 + 4*2 + 4*2 = 24

 

и какой смысл 8 точечного фурье? почему то под 8 точечным фурье постоянно всплывает 4 бабочки 2 в 2, которые стоят параллельно.

Поправьте меня, но мне кажется это не верно...

я бы поверил в некое 8 точечное фурье которое делает не 24, а меньше умножений и переводит 8 точек в 8 отсчетов за раз...

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


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

8 точек на входе

8 отсчетов на выходе

 

делаем четыре 2 в 2, первая стадия, потом два 4 в 4, вторая стадия, потом одно 8 в 8 - последняя стадия.

число умножений 4*2 + 2*4 + 1*8 = 24

 

делаем четыре 2 в 2, первая стадия, потом четыре 2 в 2, вторая стадия, потом четыре 2 в 2 - последняя стадия.

число умножений 4*2 + 4*2 + 4*2 = 24

 

и какой смысл 8 точечного фурье? почему то под 8 точечным фурье постоянно всплывает 4 бабочки 2 в 2, которые стоят параллельно.

Поправьте меня, но мне кажется это не верно...

я бы поверил в некое 8 точечное фурье которое делает не 24, а меньше умножений и переводит 8 точек в 8 отсчетов за раз...

Не так.

4 раза по 2 (первая стадия) но последовательно - всего 2 умножителя на все четыре двухточечных бабочки потому, что используется один и тот же ресурс ПЛИС (или схемка). Хотя 4 операции умножения. Входные данные мультиплексируются, выходные сохраняются в буфере для 2_й стадии. Итак далее... Время выполнения увеличивается, ресурсы сокращаются. Итого Первая стадия 2 умножителя. Вторая 4. Третья 8 -> 2 + 4 + 8 = 14 умножителей, хотя (правильно) 24 операции умножения.

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

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


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

Ничего подобного. Возьмите восьмиточечный граф прореживания по частоте и просто наложите его на граф прореживания по времени. Они совпадут. Только накладывать нужно с поворотом на 180 град. Ладошка к ладошке. Стрелки в графе поверните в обратную сторону. Неужели это не заметно?

Это же очевидно.

В случае БПФ с прореживанием по времени можно 8ми точечный выполнить последовательно выполняя 4 двухточечных, затем последовательно (не параллельно) 2 четырехточечных (вернее две половинки второй стадии) и только на последнем этапе 3_ю стадию восьмиточечного. Похоже и с 16 точками и с 32. Входные данные для каждой операции нужно мультиплексировать, а выходные сохранять в буфере для последующего мультиплексирования на очередную стадию.

 

Я считаю, что инженер в своей работе должен опираться на фундаментальные вещи, такие как, например, математика и физика.

 

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

 

Графические схемы быстрого преобразования Фурье, которые Вы приводите, наглядным образом иллюстрируют различные способы вычислений. Графические элементы в этих схемах обозначают совершенно конкретные математические операции. Их взаимное расположение и связи между ними иллюстрируют порядок выполнения этих операций. Каждая такая схема может быть записана в виде математического выражения (пусть и довольно громоздкого). Выполнив, как любят говорить математики, "несложные преобразования" Вы неизбежно получите исходную формулу дискретного преобразования Фурье.

 

Поэтому, каждое действие над схемой эквивалентно выполнению некоего математического преобразования/действия.

 

Скажите, пожалуйста:

 

1) какое математическое преобразование или действие соответствует повороту графа на 180 градусов ?

 

2) что за оператор такой "Ладошка к ладошке" ?

 

3) какие изменения нужно внести в формулу, чтобы на соответствующем ей графе это было бы эквивалентно развороту стрелки в обратном направлении ?

 

Прошу дать обоснованные ответы.

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


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

не туда вы заехали....

 

 

лучше скажите БПФ8 и 4 параллельные бабочки 2 в 2 - это одно и тоже или нет?

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


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

1) какое математическое преобразование или действие соответствует повороту графа на 180 градусов ?

 

2) что за оператор такой "Ладошка к ладошке" ?

 

3) какие изменения нужно внести в формулу, чтобы на соответствующем ей графе это было бы эквивалентно развороту стрелки в обратном направлении ?

 

Прошу дать обоснованные ответы.

Формула везде одна и та же, вот эта

post-39850-1379569242_thumb.jpg

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

post-39850-1379569568_thumb.jpg

лучше скажите БПФ8 и 4 параллельные бабочки 2 в 2 - это одно и тоже или нет?

Нет не одно и то же. Это только первая стадия. Нужны еще две стадии согласно графу и формуле.

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


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

строго говоря свертка - это сумма почленных произведений сигналов со сдвигом...

и преобразование фурье не свертка, оно просто часто используется при расчете свертки, так как фурье от свертки равно произведению двух фурье от сигналов, но это нюансы...

 

 

Меня теперь волнует вопрос что же такое БПФ8 в терминологии того что делается выше.

 

если брать бабочку 2 в 2, то обработка 8 точек требует 3 стадии. Если брать БПФ8 делает ли оно все в 1 стадию?

 

бабочка 2 в 2, при обработке массива из 4 элементов требует 2 стадии

БПФ8 для обработки 64 элементов также сделает все в 2 стадии

 

если надо обработать 16 элементов, то как быть в случае БПФ8?

правомерно ли на следующих стадиях пименять бабочки 2 в 2 и так далее? Можно ли смешивать бабочки?

 

Может кто растолковать на пальцах?

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


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

строго говоря свертка - это сумма почленных произведений сигналов со сдвигом...

и преобразование фурье не свертка, оно просто часто используется при расчете свертки, так как фурье от свертки равно произведению двух фурье от сигналов, но это нюансы...

 

 

Меня теперь волнует вопрос что же такое БПФ8 в терминологии того что делается выше.

 

если брать бабочку 2 в 2, то обработка 8 точек требует 3 стадии. Если брать БПФ8 делает ли оно все в 1 стадию?

 

бабочка 2 в 2, при обработке массива из 4 элементов требует 2 стадии

БПФ8 для обработки 64 элементов также сделает все в 2 стадии

 

если надо обработать 16 элементов, то как быть в случае БПФ8?

правомерно ли на следующих стадиях пименять бабочки 2 в 2 и так далее? Можно ли смешивать бабочки?

 

Может кто растолковать на пальцах?

Посмотрите внимательно на этот граф

post-39850-1379583529_thumb.jpg

Там везде бабочки 2 в 2.

Давайте по порядку. Допустим у Вас имеются в наличии восемь выборок (у меня именно такая ситуация - все выборки я имею сразу одновременно, только 32 штуки).

Чтобы уменьшить количество умножителей (не умножений) Вы вполне законно можете поступить так: 1. Выполняете бабочку с данными x(0), x(4) - получаете данные st1(0), st1(1) для второй стадии. 2. Выполняете опять бабочку 2 в 2 на том же самом схемном компоненте но с входными данными x(2), x(6) - получаете данные st1(2), st1(3) для той же второй стадии

И так далее. Все то же самое можно проделать по всему графу вплоть до последней стадии используя всего 2 умножителя. Но время выполнения всего БПФ8 при этом растянется на количество операций.

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

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


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

а ну все понятно... чуда не произошло...

 

я просто думал что может есть какая-то магическая "бабочка" которая за раз 8 точек обрабатывает, типа бабочки 2 в 2, но 8 в 8...

 

а это всего лишь просто обработка 8 точек... то есть 3 стадии бабочек, запрятанных в 1 модуль...

 

ну тогда все понятно.

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


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

а ну все понятно... чуда не произошло...

 

я просто думал что может есть какая-то магическая "бабочка" которая за раз 8 точек обрабатывает, типа бабочки 2 в 2, но 8 в 8...

 

а это всего лишь просто обработка 8 точек... то есть 3 стадии бабочек, запрятанных в 1 модуль...

 

ну тогда все понятно.

Когда у Вас стоит задача БПФ32 то Вы также вполне законно можете выполнить последовательно 4 раза полный БПФ8 на одной и той же схеме подготовив твким образом данные для 4_й стадии БПФ32. Ну и так далее. Если в запасе имеется нужное время то таким образом можно существенно сэкономить ресурсы ПЛИС. Что я собственно и предлагаю для реализации БПФ32, поскольку БПФ8 уже выполнен и проверен. Хотя всякие там корки обычно делаются по формуле типа

post-39850-1379584316_thumb.jpg

post-39850-1379584419_thumb.jpg

Кроме того БПФ8 там выполняется по алгоритму Винограда - меньше ресурсов.

Сам вначале был нацелен на это, но пока до конца не понимаю технику выполнения операций с матрицами. Хотя первый этап (БПФ8) уже имеется.

В моем случае формула выглядит так

                 3    mr     ms     7             sl   
X(k) = X(8r+s) = ∑   W4     W32     ∑  x(4l + m) W8   r = 0 to 8, s = 0 to 4 
                m=0                l=0

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

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


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

Любопытно, где Вы нашли такой термин?

 

да собственно сам придумал, я как бы пытался подобрать слова чтобы выяснить есть отдельный элемент 8 в 8, или это каскад 2 в 2, выяснил - каскад...

 

выполняется по алгоритму Винограда - меньше ресурсов.

что за алгоритм?

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


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

да собственно сам придумал, я как бы пытался подобрать слова чтобы выяснить есть отдельный элемент 8 в 8, или это каскад 2 в 2, выяснил - каскад...

 

Необязательно, это может быть и не каскад вовсе.

 

Интересно, а общеупотребительное "8-ми точечная бабочка" или БПФ-8 чем Вас не устроили? Ведь насколько мне известно бабочки 8 в 7 или 2 в 3 нет.

 

У Вас тут обсуждение количества умножений было, так вот, для справки, для вычисления 8-ми точечной бабочки нужно выполнить всего 2 комплексных умножения. Если считать такую бабочку за 1 такт, то в ПЛИС на 1 комплексный умножитель потребуется 4 вещественных умножителя.

 

 

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


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

Необязательно, это может быть и не каскад вовсе.

 

Интересно, а общеупотребительное "8-ми точечная бабочка" или БПФ-8 чем Вас не устроили? Ведь насколько мне известно бабочки 8 в 7 или 2 в 3 нет.

 

У Вас тут обсуждение количества умножений было, так вот, для справки, для вычисления 8-ми точечной бабочки нужно выполнить всего 2 комплексных умножения. Если считать такую бабочку за 1 такт, то в ПЛИС на 1 комплексный умножитель потребуется 4 вещественных умножителя.

 

Я как раз и пытался понять это просто БПФ-8, то есть преобразование 8 точек или это какой то атомарный модуль типа бабочки 2 в 2, что применяется всегда...

 

для меня откровение что надо всего 2 умножения, пускай даже комплексных... как так?

 

 

 

Страница 135 nussbaymerG.zip

чет сразу не нашел на 135 странице ничего про виноград... на досуге поразбираюсь, книжеца интересная спасибо...

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


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

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

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

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

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

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

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

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

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

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