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

 
 
 
Reply to this topicStart new topic
> FFT256, Низкая скорость работы
PavPro
сообщение Apr 7 2014, 05:52
Сообщение #1


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

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



День добрый.
Возникла следующая проблема. При реализации 256 точечного потокового БПФ, на Циклоне 3, классический таймер анализатор показал очень низкую скорость в плане Clock -setup 17.02 MHz.
Алгоритм реализован по следующей блок-схеме см. картинку. Судя по отчету анализатора основная задержка по частоте clk происходит между комплексной линией задержки на 128 тактов и
комплексной линией задержки на 1 такт (т. е. между первым и последним каскадом БПФ). Линии задержки представляют собой два включенных в параллель регистра сдвига определенной
разрядности. Подскажите пожалуйста что я делаю не так и как можно оптимизировать данную схему по быстродействию? Хотя бы куда копать (настройки компилятора, неграмотное описание
модулей на vhdl, или может еще что)? Заранее благодарен.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Timmy
сообщение Apr 7 2014, 07:04
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515



Цитата(PavPro @ Apr 7 2014, 09:52) *
День добрый.
Возникла следующая проблема. При реализации 256 точечного потокового БПФ, на Циклоне 3, классический таймер анализатор показал очень низкую скорость в плане Clock -setup 17.02 MHz.
Алгоритм реализован по следующей блок-схеме см. картинку. Судя по отчету анализатора основная задержка по частоте clk происходит между комплексной линией задержки на 128 тактов и
комплексной линией задержки на 1 такт (т. е. между первым и последним каскадом БПФ). Линии задержки представляют собой два включенных в параллель регистра сдвига определенной

Подозреваю, что все бабочки и перемножители вы реализовали чисто комбинаторными функциями, а надо ещё регистры для промежуточных результатов добавлять, это называется pipelining(конвейеризация).
Go to the top of the page
 
+Quote Post
PavPro
сообщение Apr 7 2014, 07:11
Сообщение #3


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

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



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

Т. е. если я Вас правильно понял, то между бабочками и комплексными умножителями должны быть добавлены регистры для фиксации промежуточных результатов?
Поясните пожалуйста, как введение данных регистров скажется на увеличении скорости работы и причем тут тактовая частота? Опыт работы с FPGA у меня не очень богатый,
поэтому не пинайте сильно если я задал глупый вопрос.
Go to the top of the page
 
+Quote Post
XVR
сообщение Apr 7 2014, 07:57
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



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

Go to the top of the page
 
+Quote Post
canny
сообщение Apr 7 2014, 15:22
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 8-07-09
Пользователь №: 51 060



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


Почитайте о конвейерных вычислениях. Для начала, например, вот тут: http://kit-e.ru/articles/plis/2008_01_88.php
Go to the top of the page
 
+Quote Post
PavPro
сообщение Apr 8 2014, 01:30
Сообщение #6


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

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



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

Спасибо большое за подсказку! Действительно почитал о конвейерных вычислениях понял свою ошибку. Буду доводить схему до ума.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th June 2025 - 09:58
Рейтинг@Mail.ru


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