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

 
 
 
Reply to this topicStart new topic
> HLS синтез с C/C++, Quartus HLS vis Vivado HLS, ямы|болота и шишки на голову
RobFPGA
сообщение Jan 3 2018, 16:16
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 23-12-04
Пользователь №: 1 643



Приветствую!

В очережной раз лень не дает жить спокойно - пытаюсь освоить Quartus HLS (17.1).
До этого в Vivado вроде уже использовал периодически куски на HLS для разных модулей. Чтобы получить более менее работаюший модуль естественно приходится ломать стериотипы написания С/C++ кода.

А тут все по новой! Первый этап (после настройки окружения компиляции) разобратся с интерфейсами и атрибутами.
Тут у Qu сразу же отличия по сравнения с Vivado набор интерфейсов в RTL уже и более "абстрактен".
Например (как я понял) нельзя сделать raw интерфейс к внешней BRAM памяти. Можно только Avalon MM мастер.
Можно сделать память внутри модуля а снаружи иметь доступ к ней по Avalon MM slave. Но у меня не получается при этом сделать большой блок (>= 256KB) вылетает с ошибкой при компиляции. Да и не понятно как при этом можно применять атрибуты по управлению разбиения этой памяти на банки.

Успехов! Rob.


Go to the top of the page
 
+Quote Post
TRILLER
сообщение Apr 6 2018, 14:13
Сообщение #2


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

Группа: Свой
Сообщений: 174
Регистрация: 17-02-09
Из: Санкт-Петербург
Пользователь №: 45 001



Я-то, наивный, полдня пытался реализовать Simple Dual-Port Block RAM..
Из общения на форуме ксайлинка:
Re: How to read and write to the same BRAM concurrently?
An: It's definitely possible, but with limitations.
(1) Apart from dataflow FIFOs, HLS will only connect a RAM to one function at a time. That function can do simultaneous reads/writes to the RAM. You cannot have one function writing to a RAM while another reads from
it. You can't have two functions writing to the same RAM. I don't think you can even persuade HLS to let two functions read from the same ROM simultaneously.
(2) For AXI Lite ports that connect to a BRAM (ie arrays on AXI Lite), one RAM port is permanently connected to the AXI Lite interface. This only leaves one port available for other tasks.
(3) HLS has to understand your access pattern. If you write randomly and read randomly, HLS is not going to be able to achieve II=1. This is because after HLS has set a value to be written, the RAM takes at least one cycle to store that before it can be read out again. On the other hand, if you have a loop where you write to value [i] and read from value [i-10] then HLS will easily achieve II=1 (although in this case a shift register may be more appropriate).
Лёгким движением руки разработчика Vivado HLS двухпортовая память превращается в однопортовую! Ничего не скажешь - эффективно! smile3009.gif
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 24th May 2018 - 11:26
Рейтинг@Mail.ru


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