doom13 0 20 июня, 2016 Опубликовано 20 июня, 2016 · Жалоба Приветствую. Нужен совет/критика по решению вопроса. Есть поток данных AXI4-Stream, данные передаются пакетами 64 кБ (2048 отсчётов по 32 байт каждый), сохраняются в DDR3 памяти (всего 128 пакетов - 128 х (2048 х 32)). Далее данные достаются из памяти и формируется новый поток AXI4-Stream (пакет 128 отсчётов по 32 байта и таких пакетов 2048 - 2048 х (128 х 32)), но тут последовательность передачи следующая: пакет №0 - 32[0], 32[2048], 32[4096] , ... пакет №1 - 32[32], 32[2048 + 32], 32[4096 + 32] , ... пакет №2 - 32[64], 32[2048 + 64], 32[4096 + 64] , ... пакет №3 - 32[96], 32[2048 + 96], 32[4096 + 96] , ... ... пакет №2047 - 32[2016], 32[2048 + 2016], 32[4096 + 2016], ... ------------------------- ------------------------- pack #0 | 2048 x 32 | | 32 | 32 | | 32 | ------------------------- ------------------------- pack #1 | 2048 x 32 | | 32 | 32 | | 32 | ------------------------- ------------------------- pack #2 | 2048 x 32 | | 32 | 32 | | 32 | ------------------------- ------------------------- pack #2 | 2048 x 32 | | 32 | 32 | | 32 | ------------------------- ------------------------- pack #4 | 2048 x 32 | | 32 | 32 | | 32 | ------------------------- ------------------------- | | | | | | | ------------------------- ------------------------- | | | | | | | ------------------------- ------------------------- pack #127 | 2048 x 32 | | 32 | 32 | | 32 | ------------------------- ------------------------- p p p a a a c c c k k k #0 #1 #2047 Пока думаю использовать для этих целей AXI DMA, но для режима DMA MM2S получается что каждый дескриптор описывает буфер размером 32 байта (это ещё и ширина шины), что и смущает. Можно ли тут обойтись AXI DMA или лучше делать свой мастер на AXI4 шину? Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 20 июня, 2016 Опубликовано 20 июня, 2016 · Жалоба Приветствую! Посмотрите на vdma может и не надо будет свой dma лепить Успехов! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Inanity 1 20 июня, 2016 Опубликовано 20 июня, 2016 · Жалоба Здравствуйте. По-моему даже AXI DMA слишком жирно. Используйте Datamover. Одной стороной к DDR3 (S2MM), другой Stream (MM2S), + несложный конечный автомат чтобы писать и читать данные в том порядке, в котором нужно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
doom13 0 21 июня, 2016 Опубликовано 21 июня, 2016 · Жалоба Спасибо, перечисленными ядрами не пользовался, сейчас курю мануалы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
doom13 0 21 июня, 2016 Опубликовано 21 июня, 2016 · Жалоба Похоже, идеальный вариант в моём случае - AXI DMA для S2MM и AXI DataMover для MM2S. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться