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

Нужна помощь по Xilinx AXI4 Stream, DMA

Есть система Microblaze+DDR3. Есть 32-битный входящий порт, в который поступают данные, причем скорость плавает от 1К слов/сек до 1М слов/сек. По одному сценарию надо эти данные писать в память (ПДП), а процессор будет их читать. По второму сценарию их надо писать в другой AXI4-slave. Соответсвенно я создал AXI4-stream, но не могу разобраться как запустить DMA. Какая разница между Central DMA и Datamover? Как подключить порты - понимаю, но как запрограммировать DMA? Возможно, я выбрал плохой инструмент? В системе будет до 8 таких потоков, поэтому желателен ПДП, чтобы не перегрузить процессор.

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


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

Какая разница между Central DMA и Datamover?
Аналогичный вопрос. Плюс к этому ещё есть просто AXI DMA. Вот совсем запутался, в чём разница между ними тремя, для чего какой нужно применять.

 

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


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

Аналогичный вопрос. Плюс к этому ещё есть просто AXI DMA. Вот совсем запутался, в чём разница между ними тремя, для чего какой нужно применять.

Разница в том, что axi бывает разный, в частности, бывает memory mapped, бывает axi stream, бывает axi stream video. Соответственно, разные DMA. В описании к каждому блоку всё указано

 

The AXI CDMA engine provides high-bandwidth direct memory access between memory and AXI Stream-video type target peripherals

 

Вот здесь простенький, но наглядный пример по работе

http://www.fpgadeveloper.com/2014/03/using...dma-engine.html

 

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


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

Вот здесь простенький, но наглядный пример по работе

http://www.fpgadeveloper.com/2014/03/using...dma-engine.html

за наглядный пример - спасибо

вечером посмотрю - внимательнее (для самообучения)

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


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

Разница в том, что axi бывает разный, в частности, бывает memory mapped, бывает axi stream, бывает axi stream video. Соответственно, разные DMA. В описании к каждому блоку всё указано
Спасибо. Но указано крайне непонятно (возможно для неподготовленного).

Вот например AXI DMA Engine (это он в XPS так называется, а в PDF-ке просто AXI DMA) и AXI DataMover - судя по первичному описанию делают то же самое. Т.е. перекладывают из memory mapped в stream. В чём же отличие? И когда какой нужно применить.

 

Касаемо AXI Central DMA, как я понял, он перекладывает из memory mapped в memory mapped. Т.е. например в пределах одной памяти скопировать блок данных в другие адреса. Или переписать из одной памяти в другую. Правильно?

Если в названии слово Video - это то же самое, что из без видео, только двухмерное, с этим понятно.

 

Вобщем наиболее непонятно различие между AXI DMA Engine и AXI DataMover.

 

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


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

Насколько я помню, AXI DataMover - это минимальный базовый блок. Управления по AXI-Light не имеет, соответственно, чтоб запустить нужен свой IP-Block, который будет получать управление по AXI-Light от Microblaze и рулить DataMover.

 

AXI DMA Engine - его навороченная версия, предназначенная для работы напрямую от Microblaze.

Основные отличия - у него есть AXI-Lite регистры и драйвера для конфигурации из Microblaze (из коробки), есть возможность использовать прерывания, несколько режимов работы, многоканальность и ещё что-то.

Лично я работал только с ним.

 

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


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

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

 

 

AXI DataMover - это (и из названия видно) блок который непосредственно гоняет данные из stream в memory master и обратно

Для того чтобы он заработал ему нужно через командный интерфейс задавать параметры пересылки

Во как раз AXI DMA Engine или AXI Central DMA и есть варианты этого командного интерфейса в комплекте с AXI DataMover.

 

Если надо реализовать хитрую логику пересылки (например без необходимости использования MCU, но при этом нет желания реализовывать всю логику AXI шины) Вы вы можете реализовать свой командный модуль который будет рулить AXI DataMover.

 

Успехов! Rob.

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


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

Спасибо, теперь гораздо понятнее. Понял, что мне подходит AXI DMA Engine. По нему вопрос. Если его делать многоканальным, то у него обязательно должен быть включен режим scatter/gether? В явную не говорится, но в доке приводится описание многоканального режима только для C_INCLUDE_SG = 1, а для C_INCLUDE_SG = 0 не приводится.

 

Не очень понимаю, что это за режим scatter/gether. Ничего конкретного не нагуглилось, кроме этого, но там речь идёт о возможности представления с помощью этой штуки непрерывного диапазона данных, когда он лежит физически в фрагментированных кусочках. Непонятно, как эта технология используется в ПЛИС, для чего можно например у себя применить. И неужели она такая нужная и широко распространённая? При том в доке на AXI DMA Engine я не увидел какого-либо "вступления для новичков" касаемо этой фичи. Только набор регистров как данность, т.е. ты заранее должен уже знать, как ей пользоваться. Может кто подскажет, где про это почитать касаемо применения в AXI DMA Engine? Может аппликуха есть какая, где всё разжёвано?

 

И ещё: мог бы кто-нибудь объяснить на пальцах, что за термин 4 KB address boundary protection. Что за зверь, как работает, для чего нужно.

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


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

Чуть-чуть разобрался с режимом Scatter/Gether. Вещь полезная, конечно. Правильно ли я понимаю, что для него в XPS нужно поставить отдельный блочок памяти BRAM, к нему подключиться по AXI через AXI Interconnect так, чтобы доступ имел и MicroBlaze, и AXI DMA Engine через его порт Scatter/Gether?

Но вот про многоканальный режим очень непонятно. Правильно ли я понимаю, что этот режим нужен, чтобы, например, при многопортовом доступе к одной и той же памяти, один блок AXI DMA Engine мог заменить связку нескольких одноканальных DMA-блоков (по числу портов доступа к памяти), соединённых между собой блоком AXI Interconnect? Т.е. вместо нескольких одноканальных DMA плюс Interconnect можно поставить один многоканальный DMA без интерконнекта?

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


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

Зачем отдельный BRAM? Для наглядности добавьте в XPS Ethernet ядро с включённым режимом DMA. Он автоматом все шины подцепит и SG и MM2S и S2MM. SG идёт в ОЗУ.

Про многоканальность - у меня сложилось такое же впечатление, когда разбирался. Правда, в реальном проекте обошлись одним каналом.

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


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

Зачем отдельный BRAM? Для наглядности добавьте в XPS Ethernet ядро с включённым режимом DMA. Он автоматом все шины подцепит и SG и MM2S и S2MM. SG идёт в ОЗУ.
Подскажите, пожалуйста, более подробно, что надо сделать. Я сам потыкался, там ядер много, какое конкретно поставить не знаю, парочку поставил - ничего не соединилось, памяти не образовалось... Более конкретно - мне хотелось бы знать, какую конкретно корку вставлять, где у неё включается DMA и какие блоки нужно добавить на схему до установки корки ethernet. Я пробовал так: создал пустой проект с микроблэйзом, потом добавил корку ethernet.

Если что у меня spartan6 и ISE соответственно (14.7).

Заранее спасибо.

 

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


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

Вроде решил эту проблему. Создал проект под демоборду SP605, там всё автоматом добавилось и соединилось. Видно, какие связи. Получается SG-порт - это порт доступа к той же памяти, для которой осуществляется и сам DMA. Т.е. дескрипторы SG хранятся в той же памяти, к которой осуществляется прямой доступ. Это для меня сначала было непривычно, но теперь вроде улеглось в голове.

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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