Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: AXI4-Stream to/from DDR3 memory
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
doom13
Приветствую.
Нужен совет/критика по решению вопроса.
Есть поток данных 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
Приветствую!

Посмотрите на vdma
может и не надо будет свой dma лепить

Успехов! Rob.
Inanity
Здравствуйте.

По-моему даже AXI DMA слишком жирно. Используйте Datamover. Одной стороной к DDR3 (S2MM), другой Stream (MM2S), + несложный конечный автомат чтобы писать и читать данные в том порядке, в котором нужно.
doom13
Спасибо, перечисленными ядрами не пользовался, сейчас курю мануалы.
doom13
Похоже, идеальный вариант в моём случае - AXI DMA для S2MM и AXI DataMover для MM2S.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.