RobFPGA 27 3 января, 2018 Опубликовано 3 января, 2018 · Жалоба Приветствую! В очережной раз лень не дает жить спокойно - пытаюсь освоить Quartus HLS (17.1). До этого в Vivado вроде уже использовал периодически куски на HLS для разных модулей. Чтобы получить более менее работаюший модуль естественно приходится ломать стериотипы написания С/C++ кода. А тут все по новой! Первый этап (после настройки окружения компиляции) разобратся с интерфейсами и атрибутами. Тут у Qu сразу же отличия по сравнения с Vivado набор интерфейсов в RTL уже и более "абстрактен". Например (как я понял) нельзя сделать raw интерфейс к внешней BRAM памяти. Можно только Avalon MM мастер. Можно сделать память внутри модуля а снаружи иметь доступ к ней по Avalon MM slave. Но у меня не получается при этом сделать большой блок (>= 256KB) вылетает с ошибкой при компиляции. Да и не понятно как при этом можно применять атрибуты по управлению разбиения этой памяти на банки. Успехов! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TRILLER 0 6 апреля, 2018 Опубликовано 6 апреля, 2018 · Жалоба Я-то, наивный, полдня пытался реализовать 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 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: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться