реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> AXI DMA параллельная загрузка, Работа с IP AXI DMA в ZYNQ
MasterPlayer
сообщение Oct 13 2016, 09:48
Сообщение #1





Группа: Новичок
Сообщений: 3
Регистрация: 1-07-16
Пользователь №: 92 391



Реально ли организовать многоканальный AXI DMA с параллельной загрузкой данных в память?
Или многоканальность не поддерживает параллельную загрузку(нельзя параллельно грузить два потока в память с разных источников)
Или все же только попеременный режим работы(пока не загрузится пакет - AXI DMA недоступно).
Поделитесь своими соображениями по данному вопросу?
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Oct 13 2016, 11:23
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643



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

Цитата(MasterPlayer @ Oct 13 2016, 12:48) *
Реально ли организовать многоканальный AXI DMA с параллельной загрузкой данных в память?
Или многоканальность не поддерживает параллельную загрузку(нельзя параллельно грузить два потока в память с разных источников)
Или все же только попеременный режим работы(пока не загрузится пакет - AXI DMA недоступно).
Поделитесь своими соображениями по данному вопросу?

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


Удачи! Rob.
Go to the top of the page
 
+Quote Post
MasterPlayer
сообщение Oct 15 2016, 16:50
Сообщение #3





Группа: Новичок
Сообщений: 3
Регистрация: 1-07-16
Пользователь №: 92 391



Цитата(RobFPGA @ Oct 13 2016, 14:23) *
Приветствую!
Все реально в нашем виртуальном мире! Но реальнее для начала глянуть доку на данную корку!


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

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

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

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

В итоге я попал в тупиковую ситуацию, и могу неправильно принять решение о том, что организовать такую систему только основываясь на IP-блоках в принципе невозможно.
Так что предложения почитать документацию/рассмотреть тестовый пример не решат моей проблемы.
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Oct 17 2016, 11:05
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643



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

Цитата(MasterPlayer @ Oct 15 2016, 19:50) *
...
Суть в том, что AXI DMA работает на основе AXI4-Stream, и там подразумевается наличие таких сигналов, как TDest, TId, которые вроде как не должны изменяться до тех пор пока не закончится пакет. Тут возникает проблема, что пакеты могут быть достаточно большого размера, и ждать пока загрузится большой такой пакет нельзя. То есть фактически да - мы получаем возможность грузить данные с нескольких каналов, но сам процесс загрузки подразумевает момент, что данные все равно будут поступать попакетно - то есть не закончив прием одного пакета, второй мы просто не можем загрузить.

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

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

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

Успехов! Rob.
Go to the top of the page
 
+Quote Post
MasterPlayer
сообщение Oct 17 2016, 12:55
Сообщение #5





Группа: Новичок
Сообщений: 3
Регистрация: 1-07-16
Пользователь №: 92 391



Цитата(RobFPGA @ Oct 17 2016, 14:05) *
Правильная мысль - только AXIS interconnect надо сконфигурировать с FIFO в packet mode тогда на вход DMA с каждого канала будут вылетать только полные пакеты Естественно это будет работать если у Вас пакеты не фантастической длинны и будут помещается в FIFO. На симуляторе это отлаживается за пол дня.



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

Но для этих целей у нас есть virtual FIFO.
Разумеется, где то мы проиграем по скорости, но тут есть особенность - при тестировании на отладочной плате я установил, что скорость AXI DMA в режиме SG при параллельном чтении/записи равна порядка 420 МБайт/с
Считается, что скорость не должна опуститься ниже 1 ГБит/сек суммарно. Не думаю, что может возникнуть проблема со скоростями.
Основная проблема существовала по сути с самим AXIS Interconnect, так как, повторюсь - он не выдавал сигнал разрешения. Сейчас он делает это, но конфигурация неверная(я получаю не совсем то, что мне требуется).

Если интересно, я мог бы отписаться по результату что с того вышло.
Go to the top of the page
 
+Quote Post
AndruB
сообщение Nov 4 2016, 12:56
Сообщение #6


Участник
*

Группа: Свой
Сообщений: 61
Регистрация: 31-07-07
Из: Москва
Пользователь №: 29 490



Цитата(MasterPlayer @ Oct 17 2016, 15:55) *
Если интересно, я мог бы отписаться по результату что с того вышло.


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


--------------------
Обойденные грабли - недополученный опыт!
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 21:33
Рейтинг@Mail.ru


Страница сгенерированна за 0.01394 секунд с 7
ELECTRONIX ©2004-2016