|
|
  |
Нужна помощь по Xilinx AXI4 Stream, DMA |
|
|
|
Oct 20 2014, 09:08
|

Знающий
   
Группа: Свой
Сообщений: 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
|
|
|
|
|
Oct 20 2014, 10:50
|

Гуру
     
Группа: Свой
Сообщений: 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.
--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
|
|
|
|
|
Oct 21 2014, 06:23
|

Гуру
     
Группа: Свой
Сообщений: 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. Что за зверь, как работает, для чего нужно.
--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
|
|
|
|
|
Oct 22 2014, 07:24
|

Гуру
     
Группа: Свой
Сообщений: 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 без интерконнекта?
--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
|
|
|
|
|
Oct 23 2014, 04:12
|

Гуру
     
Группа: Свой
Сообщений: 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). Заранее спасибо.
--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|