Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: FFT256
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
PavPro
День добрый.
Возникла следующая проблема. При реализации 256 точечного потокового БПФ, на Циклоне 3, классический таймер анализатор показал очень низкую скорость в плане Clock -setup 17.02 MHz.
Алгоритм реализован по следующей блок-схеме см. картинку. Судя по отчету анализатора основная задержка по частоте clk происходит между комплексной линией задержки на 128 тактов и
комплексной линией задержки на 1 такт (т. е. между первым и последним каскадом БПФ). Линии задержки представляют собой два включенных в параллель регистра сдвига определенной
разрядности. Подскажите пожалуйста что я делаю не так и как можно оптимизировать данную схему по быстродействию? Хотя бы куда копать (настройки компилятора, неграмотное описание
модулей на vhdl, или может еще что)? Заранее благодарен.
Timmy
Цитата(PavPro @ Apr 7 2014, 09:52) *
День добрый.
Возникла следующая проблема. При реализации 256 точечного потокового БПФ, на Циклоне 3, классический таймер анализатор показал очень низкую скорость в плане Clock -setup 17.02 MHz.
Алгоритм реализован по следующей блок-схеме см. картинку. Судя по отчету анализатора основная задержка по частоте clk происходит между комплексной линией задержки на 128 тактов и
комплексной линией задержки на 1 такт (т. е. между первым и последним каскадом БПФ). Линии задержки представляют собой два включенных в параллель регистра сдвига определенной

Подозреваю, что все бабочки и перемножители вы реализовали чисто комбинаторными функциями, а надо ещё регистры для промежуточных результатов добавлять, это называется pipelining(конвейеризация).
PavPro
Цитата(Timmy @ Apr 7 2014, 11:04) *
Подозреваю, что все бабочки и перемножители вы реализовали чисто комбинаторными функциями, а надо ещё регистры для промежуточных результатов добавлять, это называется pipelining(конвейеризация).

Т. е. если я Вас правильно понял, то между бабочками и комплексными умножителями должны быть добавлены регистры для фиксации промежуточных результатов?
Поясните пожалуйста, как введение данных регистров скажется на увеличении скорости работы и причем тут тактовая частота? Опыт работы с FPGA у меня не очень богатый,
поэтому не пинайте сильно если я задал глупый вопрос.
XVR
Цитата(PavPro @ Apr 7 2014, 11:11) *
Поясните пожалуйста, как введение данных регистров скажется на увеличении скорости работы и причем тут тактовая частота?
Элементарно. Сейчас у вас за время одного клока сигнал должен успеть распространиться от входа x(N) до выхода X(k) - а это 8 ваших бабочек и 3 умножителя. Когда вы добавите регистры, сигналу надо будет распространяться только от регистра к регистру - а это максимум 1 бабочка и 1 умножитель.

canny
Цитата(PavPro @ Apr 7 2014, 10:11) *
Т. е. если я Вас правильно понял, то между бабочками и комплексными умножителями должны быть добавлены регистры для фиксации промежуточных результатов?
Поясните пожалуйста, как введение данных регистров скажется на увеличении скорости работы и причем тут тактовая частота? Опыт работы с FPGA у меня не очень богатый,
поэтому не пинайте сильно если я задал глупый вопрос.


Почитайте о конвейерных вычислениях. Для начала, например, вот тут: http://kit-e.ru/articles/plis/2008_01_88.php
PavPro
Цитата(XVR @ Apr 7 2014, 11:57) *
Элементарно. Сейчас у вас за время одного клока сигнал должен успеть распространиться от входа x(N) до выхода X(k) - а это 8 ваших бабочек и 3 умножителя. Когда вы добавите регистры, сигналу надо будет распространяться только от регистра к регистру - а это максимум 1 бабочка и 1 умножитель.

Спасибо большое за подсказку! Действительно почитал о конвейерных вычислениях понял свою ошибку. Буду доводить схему до ума.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.