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

 
 
 
Reply to this topicStart new topic
PavPro
сообщение Apr 7 2014, 05:52
Сообщение #1


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

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



День добрый.
Возникла следующая проблема. При реализации 256 точечного потокового БПФ, на Циклоне 3, классический таймер анализатор показал очень низкую скорость в плане Clock -setup 17.02 MHz.
Алгоритм реализован по следующей блок-схеме см. картинку. Судя по отчету анализатора основная задержка по частоте clk происходит между комплексной линией задержки на 128 тактов и
комплексной линией задержки на 1 такт (т. е. между первым и последним каскадом БПФ). Линии задержки представляют собой два включенных в параллель регистра сдвига определенной
разрядности. Подскажите пожалуйста что я делаю не так и как можно оптимизировать данную схему по быстродействию? Хотя бы куда копать (настройки компилятора, неграмотное описание
модулей на vhdl, или может еще что)? Заранее благодарен.
Эскизы прикрепленных изображений
 РЈРјРµРЅСЊС€РµРЅРѕ РґРѕ 83%
Прикрепленное изображение
1010 x 397 (78.14 килобайт)
 
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


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


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