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

AXI DMA параллельная загрузка

Реально ли организовать многоканальный AXI DMA с параллельной загрузкой данных в память?

Или многоканальность не поддерживает параллельную загрузку(нельзя параллельно грузить два потока в память с разных источников)

Или все же только попеременный режим работы(пока не загрузится пакет - AXI DMA недоступно).

Поделитесь своими соображениями по данному вопросу?

 

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


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

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

 

Реально ли организовать многоканальный AXI DMA с параллельной загрузкой данных в память?

Или многоканальность не поддерживает параллельную загрузку(нельзя параллельно грузить два потока в память с разных источников)

Или все же только попеременный режим работы(пока не загрузится пакет - AXI DMA недоступно).

Поделитесь своими соображениями по данному вопросу?

Все реально в нашем виртуальном мире! Но реальнее для начала глянуть доку на данную корку!

post-1643-1476357708_thumb.png

 

Удачи! Rob.

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


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

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

Все реально в нашем виртуальном мире! Но реальнее для начала глянуть доку на данную корку!

 

Документацию-то глянули, проект собрали и для одного канала и для нескольких - то есть документацию по ней я изучил. Проблема кроется не в этом.

 

А в том, что могу ли я именно грузить пакеты параллельно с нескольких каналов(это касается работы AXI DMA в режиме SG.

Суть в том, что AXI DMA работает на основе AXI4-Stream, и там подразумевается наличие таких сигналов, как TDest, TId, которые вроде как не должны изменяться до тех пор пока не закончится пакет. Тут возникает проблема, что пакеты могут быть достаточно большого размера, и ждать пока загрузится большой такой пакет нельзя. То есть фактически да - мы получаем возможность грузить данные с нескольких каналов, но сам процесс загрузки подразумевает момент, что данные все равно будут поступать попакетно - то есть не закончив прием одного пакета, второй мы просто не можем загрузить.

 

Вот и рассматривается вопрос - а реально ли? Ведь там, в AXI DMA хоть и создается каждый раз свой BufferDescriptorRing, но работают ли они в параллельном режиме?

 

И да - вход все равно остается один, и подразумевается опять же что должен стоять блок типа AXI4-Interconnect (или еще проще AXI4 switch), с заданной схемой N:1, но тут опять я уперся в то, что должна стоять система арбитража, все попытки хоть как нибудь загрузить данные с двух каналов одновременно заканчиваются неудачно. Либо источники данных не получают сигналов TReady от Switch/Interconnect, либо они получают сигналы, и грузят данные в одну и ту же область памяти параллельно, тем самым лишая какого-либо управления и возможности дальнейшей обработки этих самых пакетов.

 

В итоге я попал в тупиковую ситуацию, и могу неправильно принять решение о том, что организовать такую систему только основываясь на IP-блоках в принципе невозможно.

Так что предложения почитать документацию/рассмотреть тестовый пример не решат моей проблемы.

 

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


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

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

 

...

Суть в том, что AXI DMA работает на основе AXI4-Stream, и там подразумевается наличие таких сигналов, как TDest, TId, которые вроде как не должны изменяться до тех пор пока не закончится пакет. Тут возникает проблема, что пакеты могут быть достаточно большого размера, и ждать пока загрузится большой такой пакет нельзя. То есть фактически да - мы получаем возможность грузить данные с нескольких каналов, но сам процесс загрузки подразумевает момент, что данные все равно будут поступать попакетно - то есть не закончив прием одного пакета, второй мы просто не можем загрузить.

Теперь понятнее что же Вам нужно

 

И да - вход все равно остается один, и подразумевается опять же что должен стоять блок типа AXI4-Interconnect (или еще проще AXI4 switch), с заданной схемой N:1, но тут опять я уперся в то, что должна стоять система арбитража, все попытки хоть как нибудь загрузить данные с двух каналов одновременно заканчиваются неудачно. Либо источники данных не получают сигналов TReady от Switch/Interconnect, либо они получают сигналы, и грузят данные в одну и ту же область памяти параллельно, тем самым лишая какого-либо управления и возможности дальнейшей обработки этих самых пакетов.

Правильная мысль - только AXIS interconnect надо сконфигурировать с FIFO в packet mode тогда на вход DMA с каждого канала будут вылетать только полные пакеты Естественно это будет работать если у Вас пакеты не фантастической длинны и будут помещается в FIFO. На симуляторе это отлаживается за пол дня.

 

Успехов! Rob.

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


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

Правильная мысль - только AXIS interconnect надо сконфигурировать с FIFO в packet mode тогда на вход DMA с каждого канала будут вылетать только полные пакеты Естественно это будет работать если у Вас пакеты не фантастической длинны и будут помещается в FIFO. На симуляторе это отлаживается за пол дня.

 

 

В том то и дело, что пакеты будут фантастичной длины(дело в том что в ПЛИС не найдется столько ресурсов. Если быть более точным - пакеты до 4 МБайт.

 

Но для этих целей у нас есть virtual FIFO.

Разумеется, где то мы проиграем по скорости, но тут есть особенность - при тестировании на отладочной плате я установил, что скорость AXI DMA в режиме SG при параллельном чтении/записи равна порядка 420 МБайт/с

Считается, что скорость не должна опуститься ниже 1 ГБит/сек суммарно. Не думаю, что может возникнуть проблема со скоростями.

Основная проблема существовала по сути с самим AXIS Interconnect, так как, повторюсь - он не выдавал сигнал разрешения. Сейчас он делает это, но конфигурация неверная(я получаю не совсем то, что мне требуется).

 

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

 

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


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

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

 

Конечно интересно.

 

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


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

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

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

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

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

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

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

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

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

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