des00 25 29 октября, 2019 Опубликовано 29 октября, 2019 · Жалоба 20 minutes ago, fguy said: В атаче вхдл ядра копировщика между двумя акси-мастерами (64 бит данные) с управлением по акси лайт. Читаемость кода у хлс синтезатора еще та - ну сами напросились. благодарю, то что надо) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
fguy 5 29 октября, 2019 Опубликовано 29 октября, 2019 · Жалоба 13 minutes ago, RobFPGA said: Вообще чтобы на HSL начать писать RTL эффективный код надо изнасиловать в себе как программиста С/С++ так и RTLщика. До кучи желательно понимать как все работает и не требовать какой-нибудь фантастики. Ну и стрим у вас описан мягко говоря неправильно от слова совсем - это не стрим, а хз знает что. Все ж просто - читаете из стрима в переменную и второй строкой пишите ее в память, а то что у вас в пайплайн не ляжет. Так имеет смысл делать только если стрим медленный и сброс буфера будет много быстрее чем его накопление. Ну и для ддр-а шина пошире должна быть - желательно в берст. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 35 29 октября, 2019 Опубликовано 29 октября, 2019 · Жалоба Приветствую! 1 minute ago, fguy said: Ну и стрим у вас описан мягко говоря неправильно от слова совсем - это не стрим, а хз знает что. Приведете правильный вариант, а мы поучимся. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 29 октября, 2019 Опубликовано 29 октября, 2019 · Жалоба 2 minutes ago, RobFPGA said: Приведете правильный вариант, а мы поучимся. +100. давно смотрю на ХЛС, в контексте разработки стекового/списочного декодера полярных кодов, но пока только смотрю))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
fguy 5 29 октября, 2019 Опубликовано 29 октября, 2019 · Жалоба 2 minutes ago, RobFPGA said: Приведете правильный вариант, а мы поучимся. Я до недавнего времени и сам писал по старинке (как было принято в первых версиях HLS 2014) пока новый синтезатор не начал посылать. Оба варианта можно посмотреть в моем вопросе к кзаленсу https://forums.xilinx.com/t5/High-Level-Synthesis-HLS/Cycle-synthesis-error-in-Vivado-HLS-2018-2-amp-3/m-p/951573 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 35 29 октября, 2019 Опубликовано 29 октября, 2019 · Жалоба Приветствую! 9 minutes ago, fguy said: Оба варианта можно посмотреть Ну так посылать и я умею - по ссылке И разницы особой я там не увидел (для данного пример DMA). Покажите как в при помощи правильного описания стрима добиться pipeline трансфера в данном примере. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dr.Sys 0 29 октября, 2019 Опубликовано 29 октября, 2019 · Жалоба 55 minutes ago, RobFPGA said: И даже в симе работает. Но с эффективность 50%. То ест сначала из стрима в буфер, а потом уж из буфера на m_axi. Чтобы все в pieline работало надо наверное разносить чтение из стрима и вывод в m_axi в отдельные функции которые объединять в основной через flip-floop буфер. Ну и с pragma возиться. Правильно ли я понимаю, что эффективность 50% означает, мегабайт 20-30 в секунду оно сможет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 35 29 октября, 2019 Опубликовано 29 октября, 2019 · Жалоба Приветствую! Вот картинка с сима для данного примера с 50%. Общая скорость будет зависеть как от частоты так и от ширины шин входа и выхода. Для 100 MHz и 32 бит получается ~200 MByte/s. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
fguy 5 29 октября, 2019 Опубликовано 29 октября, 2019 · Жалоба 30 minutes ago, RobFPGA said: И разницы особой я там не увидел (для данного пример DMA). Покажите как в при помощи правильного описания стрима добиться pipeline трансфера в данном примере. Удачи! Rob. Вряд ли вам кто объяснит как с помощью "правильного описания стрима добиться pipeline трансфера" - это никак не связанные вещи. Стрим (AXI-Stream) это тип шины ввода-вывода. Пайплайн обеспечивается циклом и прагмами к этому циклу, ну и в данном примере периодом записи слов в ддр - если период будет большой, то пайплайна с берстом не будет. 27 minutes ago, Dr.Sys said: мегабайт 20-30 в секунду оно сможет? скажите с какой скоростью вам надо писать и какая память ддр (частота, ширина и контролер цпу или плис) и я вам скажу успеете или нет Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 35 29 октября, 2019 Опубликовано 29 октября, 2019 · Жалоба Приветствую! Переделал все "правильно" #include <hls_stream.h> #include <iomanip> #include <cstdlib> #include <stdint.h> using namespace std; //void hls_dma (uint32_t dst_len, hls::stream<uint32_t> &s_axis, volatile uint32_t *m_axi) { void hls_dma (uint32_t dst_len, volatile uint32_t *s_axis, volatile uint32_t *m_axi) { #pragma HLS INTERFACE s_axilite port=return bundle=BUS_A #pragma HLS INTERFACE s_axilite port=dst_len bundle=BUS_A #pragma HLS INTERFACE axis port=s_axis #pragma HLS INTERFACE m_axi depth=64 port=m_axi offset=slave \ num_read_outstanding=4 num_write_outstanding=4 max_read_burst_length=16 max_write_burst_length=16 sou : for (int ii=0; ii<dst_len; ++ii) { *m_axi++ = *s_axis; //s_axis.read(); } } Что с hls::stream<uint32_t> &s_axis что volatile uint32_t *s_axis картинка на симе радует глаз. Так что можно в продакшен пихать Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
fguy 5 29 октября, 2019 Опубликовано 29 октября, 2019 (изменено) · Жалоба 20 minutes ago, RobFPGA said: Так что можно в продакшен пихать А где пайплайн? Что будет во время регенерации ддр? И каким образом задается адрес в памяти? Отчет по синтезу положите сюда - обсудим если интересно... Изменено 29 октября, 2019 пользователем fguy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 35 29 октября, 2019 Опубликовано 29 октября, 2019 · Жалоба Приветствую! 1 hour ago, fguy said: А где пайплайн? Что будет во время регенерации ддр? Это же не RTL - тут как с сусликом - пайплайн не виден, но он есть! На картинке для wready стоит 20% максимума пропускной, а задержка для awready рандомом 0...16 тактов Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
fguy 5 29 октября, 2019 Опубликовано 29 октября, 2019 · Жалоба 45 minutes ago, RobFPGA said: Это же не RTL - тут как с сусликом - пайплайн не виден, но он есть! Крокодилы летают - нызэнько-нызэнько... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 35 30 октября, 2019 Опубликовано 30 октября, 2019 · Жалоба Приветствую! Увернувшись от пролетающих крокодилов полазил внутри генерированного кода DMA. Как и предполагалось вся магия пересылки там делается внутри RTL IP коки ocl_axi_addone_v1_1 которая находится (вместе с другими) в папочке ...\Vivado\2019.1\data\rsb\iprepos\.... Поторопился - эти корки тоже вроде как из HSL генеренные Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться