карамболь 0 24 февраля, 2016 Опубликовано 24 февраля, 2016 · Жалоба Здравствуйте коллеги. Добрался наконец до HLS и сходу наткнулся на не очевидные проблемы (для меня не очевидные, видимо). Проект исключительно тестовый, с целью разобраться в новом САПРе. Суть - Хочу умножать 2 вектора поэлементно, суммировать результат и выдавать его на выход. Требуется максимальная производительность, соответственно нужно параллельно загрузить как можно больше умножителей (в кач-ве чипа Виртекс 7 с умножителями проблем нет, хватает за глаза). В Верилоге использовал 4 RAM (2 на коэффициенты и 2 на исходные данные) с шиной данных 1024, которая представляет собой вектор из 128 8-разрядных элементов, соответственно выставляю адрес и имею 256 умножений за такт. Как это описать в HLS (на Си) ? Пробовал играть с директивами (разворачивал вложенный цикл, использовал ARRAY_PARTITION для входных данных), в результате производительность выросла, но появляется соответствующее кол-во интерфейсов, а хотелось бы иметь все это добро компактно в нескольких BRAM. Но и это еще не самое печальное, при попытке разбить входные массивы с фактором 64, проект перестает синтезироваться. Как объяснить Vivado, что я от нее хочу ? Доки и читал, пробовал и так и сяк, чего то не выходит ничего. Может кто уже проходил это ? Спасибо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
litv 0 24 февраля, 2016 Опубликовано 24 февраля, 2016 · Жалоба Мне нужна максимальная и производительность и я хочу писать ее на С :a14: Тут на Veriloge пока у многих куча проблем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
карамболь 0 24 февраля, 2016 Опубликовано 24 февраля, 2016 · Жалоба Мне нужна максимальная и производительность и я хочу писать ее на С :a14: Тут на Veriloge пока у многих куча проблем. Ну пусть не максимальная, тут я замахнулся, конечно ) Нужен компромисс между производительностью и временем разработки. Я готов потерять процентов 20 ) Но как описать это на НLS ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
litv 0 24 февраля, 2016 Опубликовано 24 февраля, 2016 · Жалоба А вот тут и суть. Как бы на С время такой оптимизации не превысила время обычной работы c verilog. И тогда преимущества С окажутся не нужны. Я бы еще стал проводить время с С для скажем блока декодера какогонибудь Рида Соломона или Витерби или где то взять исходники какогонибудь телекоммуникационного стандарта. А на чистой формульной математике я думаю не в коня будет корм. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
карамболь 0 24 февраля, 2016 Опубликовано 24 февраля, 2016 · Жалоба А вот тут и суть. Как бы на С время такой оптимизации не превысила время обычной работы c verilog. И тогда преимущества С окажутся не нужны. Я бы еще стал проводить время с С для скажем блока декодера какогонибудь Рида Соломона или Витерби или где то взять исходники какогонибудь телекоммуникационного стандарта. А на чистой формульной математике я думаю не в коня будет корм. Видимо вы правы и придется откатываться на Верилог. Обидно. Элементарная схема и вдруг не реализуется. Ну что казалось бы сложного ? RAM и его шина данных идет напрямую на умножители... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Strob 0 25 февраля, 2016 Опубликовано 25 февраля, 2016 · Жалоба Возможно ug871 глава 7 lab1, шаг 5 Вам поможет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться