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

 
 
 
Reply to this topicStart new topic
> Нужна помощь по Xilinx AXI4 Stream, DMA
count_enable
сообщение Jan 17 2014, 09:54
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 310
Регистрация: 28-01-13
Из: Лондон
Пользователь №: 75 384



Есть система Microblaze+DDR3. Есть 32-битный входящий порт, в который поступают данные, причем скорость плавает от 1К слов/сек до 1М слов/сек. По одному сценарию надо эти данные писать в память (ПДП), а процессор будет их читать. По второму сценарию их надо писать в другой AXI4-slave. Соответсвенно я создал AXI4-stream, но не могу разобраться как запустить DMA. Какая разница между Central DMA и Datamover? Как подключить порты - понимаю, но как запрограммировать DMA? Возможно, я выбрал плохой инструмент? В системе будет до 8 таких потоков, поэтому желателен ПДП, чтобы не перегрузить процессор.
Go to the top of the page
 
+Quote Post
Krys
сообщение Oct 20 2014, 08:48
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271



Цитата(count_enable @ Jan 17 2014, 16:54) *
Какая разница между Central DMA и Datamover?
Аналогичный вопрос. Плюс к этому ещё есть просто AXI DMA. Вот совсем запутался, в чём разница между ними тремя, для чего какой нужно применять.


--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
Go to the top of the page
 
+Quote Post
Corvus
сообщение Oct 20 2014, 09:08
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 24-04-08
Из: Зеленоград
Пользователь №: 37 056



Цитата(Krys @ Oct 20 2014, 12:48) *
Аналогичный вопрос. Плюс к этому ещё есть просто 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
Go to the top of the page
 
+Quote Post
Maverick
сообщение Oct 20 2014, 09:24
Сообщение #4


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(Corvus @ Oct 20 2014, 12:08) *
Вот здесь простенький, но наглядный пример по работе
http://www.fpgadeveloper.com/2014/03/using...dma-engine.html

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


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
Krys
сообщение Oct 20 2014, 10:50
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271



Цитата(Corvus @ Oct 20 2014, 16:08) *
Разница в том, что 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.


--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
Go to the top of the page
 
+Quote Post
Corvus
сообщение Oct 20 2014, 11:36
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 24-04-08
Из: Зеленоград
Пользователь №: 37 056



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

AXI DMA Engine - его навороченная версия, предназначенная для работы напрямую от Microblaze.
Основные отличия - у него есть AXI-Lite регистры и драйвера для конфигурации из Microblaze (из коробки), есть возможность использовать прерывания, несколько режимов работы, многоканальность и ещё что-то.
Лично я работал только с ним.
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Oct 20 2014, 13:37
Сообщение #7


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

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



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


AXI DataMover - это (и из названия видно) блок который непосредственно гоняет данные из stream в memory master и обратно
Для того чтобы он заработал ему нужно через командный интерфейс задавать параметры пересылки
Во как раз AXI DMA Engine или AXI Central DMA и есть варианты этого командного интерфейса в комплекте с AXI DataMover.

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

Успехов! Rob.
Go to the top of the page
 
+Quote Post
Krys
сообщение Oct 21 2014, 06:23
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271



Спасибо, теперь гораздо понятнее. Понял, что мне подходит 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. Что за зверь, как работает, для чего нужно.


--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
Go to the top of the page
 
+Quote Post
Krys
сообщение Oct 22 2014, 07:24
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271



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


--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
Go to the top of the page
 
+Quote Post
Corvus
сообщение Oct 22 2014, 09:46
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 24-04-08
Из: Зеленоград
Пользователь №: 37 056



Зачем отдельный BRAM? Для наглядности добавьте в XPS Ethernet ядро с включённым режимом DMA. Он автоматом все шины подцепит и SG и MM2S и S2MM. SG идёт в ОЗУ.
Про многоканальность - у меня сложилось такое же впечатление, когда разбирался. Правда, в реальном проекте обошлись одним каналом.
Go to the top of the page
 
+Quote Post
Krys
сообщение Oct 23 2014, 04:12
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271



Цитата(Corvus @ Oct 22 2014, 16:46) *
Зачем отдельный BRAM? Для наглядности добавьте в XPS Ethernet ядро с включённым режимом DMA. Он автоматом все шины подцепит и SG и MM2S и S2MM. SG идёт в ОЗУ.
Подскажите, пожалуйста, более подробно, что надо сделать. Я сам потыкался, там ядер много, какое конкретно поставить не знаю, парочку поставил - ничего не соединилось, памяти не образовалось... Более конкретно - мне хотелось бы знать, какую конкретно корку вставлять, где у неё включается DMA и какие блоки нужно добавить на схему до установки корки ethernet. Я пробовал так: создал пустой проект с микроблэйзом, потом добавил корку ethernet.
Если что у меня spartan6 и ISE соответственно (14.7).
Заранее спасибо.


--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
Go to the top of the page
 
+Quote Post
Krys
сообщение Oct 23 2014, 08:24
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271



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


--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
Go to the top of the page
 
+Quote Post

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

 


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


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