Перейти к содержанию
    

AXI4-Stream to/from DDR3 memory

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

Нужен совет/критика по решению вопроса.

Есть поток данных 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 шину?

 

Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте.

 

По-моему даже AXI DMA слишком жирно. Используйте Datamover. Одной стороной к DDR3 (S2MM), другой Stream (MM2S), + несложный конечный автомат чтобы писать и читать данные в том порядке, в котором нужно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо, перечисленными ядрами не пользовался, сейчас курю мануалы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Похоже, идеальный вариант в моём случае - AXI DMA для S2MM и AXI DataMover для MM2S.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...