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

 
 
23 страниц V  « < 8 9 10 11 12 > »   
Reply to this topicStart new topic
> Реализация БПФ на ПЛИС, Тудности, встречаемые при реализации
Sefo
сообщение Apr 19 2009, 19:19
Сообщение #136


Местный
***

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



Такая коррекция адреса – бессмысленный расход логических ячеек и "проводов". Лучше сразу в управляющей логике формировать правильные адреса.

Но Вы, похоже, увлекшись адресами не заметили проблему. Из вашей схемы следует, что точки 0..511 Вы собираетесь сохранять в RAM0, точки 512...1023 в RAM1, точки 1024...1535 в RAM2 и точки 1536...2047 в RAM3. Пройдитесь мыссленно по схеме алгоритма и попробуйте увидеть что получится (точнее чего не получится) если распределить точки по блокам памяти таким образом. Очень важно не забывать, что мы должны вычитывать/сохранять по 4 точки одновременно.
Go to the top of the page
 
+Quote Post
ZED
сообщение Apr 20 2009, 15:13
Сообщение #137


Местный
***

Группа: Свой
Сообщений: 264
Регистрация: 17-04-07
Из: Москва
Пользователь №: 27 102



Цитата
Лучше сразу в управляющей логике формировать правильные адреса

Тогда вооще не понимаю в чем проблема, 4 памяти - пишем одновременно во все 4. WE только поставить и все.
Go to the top of the page
 
+Quote Post
Sefo
сообщение Apr 21 2009, 15:41
Сообщение #138


Местный
***

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



Цитата(ZED @ Apr 20 2009, 19:13) *
Тогда вооще не понимаю в чем проблема, 4 памяти - пишем одновременно во все 4. WE только поставить и все.


Эх... Ленитесь... cool.gif

Ну давайте разбираться. Заливаем память данными АЦП. В RAM0 точки 0..511, в RAM1 - 512...1023, в RAM2 - 1024...1535 и RAM3 - 1536...2047. Начинаем считать БПФ. В первую бабочку идут точки 0,512,1024 и 1536. Во вторую бабочку идут точки 1, 513, 1025 и 1537 и т.д. Каждая из 4-х точек идущих на одну и ту же бабочку лежит в своем отдельном банке памяти. После вычисления бабочки результаты складываются по тем же адресам и тем же номерам банков (только в другую память). Все замечательно. Но начинается след. этап и видим, что на первую бабочку нам надо подать данные из адресов 0, 128, 256 и 384. Спрашивается, где они лежат? Все до одного в RAM0. И как же Вы их собираетесь вычитывать все сразу за один такт из RAM0? Ведь любой блок RAMx за такт может вычитать/записать только одно данное. Так что уже на втором этапе мы имеем проблему т.к. любой бабочке нужны одновременно данные, которые лежат в одном и том же банке памяти. При этом, входы/выходы бабочки жестко связаны с банками памяти. Теперь, надеюсь, осознаете проблему и догадываетесь чего не хватает для ее разрешения?
Go to the top of the page
 
+Quote Post
Sefo
сообщение Apr 24 2009, 15:21
Сообщение #139


Местный
***

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



Цитата(Sefo @ Apr 21 2009, 19:41) *
Теперь, надеюсь, осознаете проблему и догадываетесь чего не хватает для ее разрешения?


Что-то ответа на этот вопрос от Вас не слышно... Времени нет или идей?
Go to the top of the page
 
+Quote Post
ZED
сообщение Apr 25 2009, 09:30
Сообщение #140


Местный
***

Группа: Свой
Сообщений: 264
Регистрация: 17-04-07
Из: Москва
Пользователь №: 27 102



Цитата(Sefo @ Apr 24 2009, 18:21) *
Что-то ответа на этот вопрос от Вас не слышно... Времени нет или идей?

Честно говоря и того и другого нету. Я вообще не представляю как из памяти можно считать 4 отсчета сразу, при том, что она на это не рассчитана. Чувствую, что все кроется видимо в мультиплексировании, но как.
Go to the top of the page
 
+Quote Post
Sefo
сообщение Apr 25 2009, 13:39
Сообщение #141


Местный
***

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



Да. Дело в мультиплексировании. Как именно напишу на днях - со временем сейчас тоже напряженно.

Пока пишу про память оформите, пожалуйста, код бабочки и умножителей в окончательный вид с учетом выше написанных замечаний про record.
Go to the top of the page
 
+Quote Post
Reddy
сообщение Apr 30 2009, 15:56
Сообщение #142





Группа: Участник
Сообщений: 7
Регистрация: 10-01-05
Пользователь №: 1 865



А прикольное Руко-водство! Давно такое искал. Ребята Молодцы! Sefo - просто Герой! Всё таки хочется чтоб до конца дошли! rolleyes.gif
Go to the top of the page
 
+Quote Post
ZED
сообщение Apr 30 2009, 18:37
Сообщение #143


Местный
***

Группа: Свой
Сообщений: 264
Регистрация: 17-04-07
Из: Москва
Пользователь №: 27 102



Вот с recordом, только он не как шины распознает, а как отдельные сигналы: http://webfile.ru/3458200
Go to the top of the page
 
+Quote Post
Sefo
сообщение May 1 2009, 13:53
Сообщение #144


Местный
***

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



Цитата(Reddy @ Apr 30 2009, 19:56) *
А прикольное Руко-водство! Давно такое искал. Ребята Молодцы! Sefo - просто Герой! Всё таки хочется чтоб до конца дошли! rolleyes.gif


Спасибо. Рад что это интересно не только ZEDу.

Т.к. текст с картинками, то решил загрузить его в pdf формате (fft.pdf). Читать его нужно одновременно имея перед глазами дополненную схему алгоритма (FFT_2048_a09_05_01.rar).

Задания будут следующие:
1) В качестве упражнения дополните, пожалуйста, схемы этапов 3,4,5 картой банков памяти как я это сделал для этапов 1 и 2.
2) Последний 6-й этап выбивается из общего алгоритма - объясните почему. Если с объяснением проблем не возникнет, то предложите решение проблемы.
3) Напишите, как бы Вы стали реализовывать генерацию адресов, управление миксерами и сами миксеры. Код пока не пишите, просто объясните и/или нарисуйте схему.

Код посмотрю вечером.
Прикрепленные файлы
Прикрепленный файл  FFT.pdf ( 87.57 килобайт ) Кол-во скачиваний: 257
Прикрепленный файл  FFT_2048_a09_05_01.rar ( 349.35 килобайт ) Кол-во скачиваний: 145
 
Go to the top of the page
 
+Quote Post
Reddy
сообщение May 4 2009, 07:02
Сообщение #145





Группа: Участник
Сообщений: 7
Регистрация: 10-01-05
Пользователь №: 1 865



Можно тогда тоже поучаствовать? - У меня вопрос! - Была у вас такая тема - оптимизация суммы A + B + 1. Сразу оговарюсь что я использую Quartus 8. Так вот - если смотреть после синтеза RTL, то там действительно выдаётся 2 сумматора, но если проимплементировать весь проект и посмотреть что в итоге получится в Chip Planner-е - то результат для C <= A + B + 1 и sigTmp <= (A & '1') + (B & '1'); С <= sigTmp(8 downto 1); будет один и тот же. Причём с эти я сталкиваюсь не первый раз. Тут видимо есть какая-то недороботка, но на конечный результат похоже это не влияет!?
Go to the top of the page
 
+Quote Post
Maverick
сообщение May 4 2009, 07:56
Сообщение #146


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(Reddy @ Apr 30 2009, 18:56) *
А прикольное Руко-водство! Давно такое искал. Ребята Молодцы! Sefo - просто Герой! Всё таки хочется чтоб до конца дошли! rolleyes.gif


Полностью согласен Sefo - очень классный учитель, хорошо и толково объясняет!!! Дай Бог чтобы у них все получилось!!! ZED - не в обиду будет сказано, хороший ученик и видно, что хочет дойти до конца и во всем разобраться!
PS Надеюсь своим детищем поделяться rolleyes.gif


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
ZED
сообщение May 4 2009, 15:31
Сообщение #147


Местный
***

Группа: Свой
Сообщений: 264
Регистрация: 17-04-07
Из: Москва
Пользователь №: 27 102



Цитата
ZED - не в обиду будет сказано, хороший ученик и видно, что хочет дойти до конца и во всем разобраться!

Спасибо, стараюсь!!! smile.gif

Прикрепляю свои инсинуации, надеюсь нигде не напутал.
Прикрепленные файлы
Прикрепленный файл  FFT_2048_a09_05_01.rar ( 422.86 килобайт ) Кол-во скачиваний: 85
 
Go to the top of the page
 
+Quote Post
Sefo
сообщение May 4 2009, 20:53
Сообщение #148


Местный
***

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



Цитата(Reddy @ May 4 2009, 11:02) *
Можно тогда тоже поучаствовать? - У меня вопрос! - Была у вас такая тема - оптимизация суммы A + B + 1. Сразу оговарюсь что я использую Quartus 8. Так вот - если смотреть после синтеза RTL, то там действительно выдаётся 2 сумматора, но если проимплементировать весь проект и посмотреть что в итоге получится в Chip Planner-е - то результат для C <= A + B + 1 и sigTmp <= (A & '1') + (B & '1'); С <= sigTmp(8 downto 1); будет один и тот же. Причём с эти я сталкиваюсь не первый раз. Тут видимо есть какая-то недороботка, но на конечный результат похоже это не влияет!?


Это происходит потому, что сначала синтезатор из кода пытается выделить стандартные операторы: сумматоры, умножители, мультиплексоры, декодеры, регистры и т.д. Т.е. получается нечто среднее между языком описания аппаратуры высокого уровня и gate level. Далее полученные операторы "раскладываются" по технологическим ячейкам ПЛИС. Вот именно на этом уровне и происходит оптимизация и объединение, по возможности, нескольких операторов в одну техн. ячейку. Простой код не вызывает проблем у любого синтезатора, но вот в случае сложного кода результаты могут существенно отличаться от синтезатора к синтезатору. Например по своему опыту могу сказать, что Precision на сложном коде стабильно выигрывает у Quartus.

Что касается конкретно А+В+1, то просто полезно знать как можно "заставить" абсолютно любой синтезатор поставить 1 сумматор вместо двух, да и просто знать некоторые тонкости арифметической логики.

Precision, например, в отличие от Quartus, в конструкци A+B+1 сразу видит 1 полный сумматор вместо 2-х, что гарантирует, что при раскладке по технологическим ячейкам ПЛИС Precision очень постарается smile.gif разложить его как полный сумматор.

Цитата(ZED @ May 4 2009, 19:31) *
Спасибо, стараюсь!!! smile.gif

Прикрепляю свои инсинуации, надеюсь нигде не напутал.


Напутали smile.gif С адресами напутали. Как бы мы не формировали адреса, но на каждом этапе из каждого банка должны быть прочитаны все 512 точек хранящиеся в каждом банке памяти и, соответственно, все без исключения 2048 вычисленых результатов должны быть записаны на свои индивидуальные места в банках памяти. У Вас получается, чем дальше, тем больше Вы читаете из одного и того же места и записываете разные результаты в одно и то же место, затирая предудущие. На 5-ом этапе у Вас и нумерация банков в последнем блоке, почему-то, неверная (на остальных правильно).
Go to the top of the page
 
+Quote Post
ZED
сообщение May 7 2009, 15:08
Сообщение #149


Местный
***

Группа: Свой
Сообщений: 264
Регистрация: 17-04-07
Из: Москва
Пользователь №: 27 102



Поправил, ох уж этот Ctl+C Ctl+V laughing.gif
Прикрепленные файлы
Прикрепленный файл  FFT_2048_a09_05_01.rar ( 422.86 килобайт ) Кол-во скачиваний: 71
 
Go to the top of the page
 
+Quote Post
Sefo
сообщение May 7 2009, 20:25
Сообщение #150


Местный
***

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



Вы не тот файл выложили - там нет ни одного отличия от того, что Вы выложили 4 мая. Причем файлы совпадают до бита smile.gif
Go to the top of the page
 
+Quote Post

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

 


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


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