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

 
 
 
Reply to this topicStart new topic
> Zynq-7020 + AXI4Stream, Как из PL организовать доступ к DDR
pepelats
сообщение Jun 28 2013, 03:15
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 20-01-10
Из: Томск
Пользователь №: 54 958



Здравствуйте!

Очень нужна помощь. Разбираюсь с платой Zynq-7000 ZC702. Возникла необходимость написать простую корку которая будет работать с массивом данных. Например одномерный массив умножить на другой одномерный массив и получить на выходе третий массив. Причем данные в PL должны передаваться с PS и после обработки возвращаться обратно. Для подключения к PS планируется использовать AXI-HP port. Данные должны храниться в DDR. Корку написал на Vivado HLS, интерфейсы использовал AXI4Stream.

Теперь в Vivado пытаюсь подключить данную корку к PS. Какие корки я должен использовать чтобы организовать нужный мне обмен данными? Если я правильно понял, то надо использовать AXI DMA. Можно ли как то по другому организоваться обмен данными между PS-DDR-PL через HP порт и какой интерфейс при этом должна использовать моя корка (AXI4Stream или что то другое)?


Go to the top of the page
 
+Quote Post
DASM
сообщение Jun 28 2013, 04:55
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



У ксайлинкса должно быть что то навроде AXI transaction controller. Вот на него процы вешаются через
DDR Bridge, а FPGA через DDR FIC (fabric interface controller).В фпга надо создать AXI Master и общаться с памятью по этой цепи — Fpga AXI Master, DDR FIC, AXI transaction controller, DDR controller. В Smartfusion так. Не думаю, что у ксайлинкса иначе, тем более тут ARM первая скрипка, ксайлинкс только подчиняется шинам, разработанным АРМ. У вас своя плата ?
Go to the top of the page
 
+Quote Post
pepelats
сообщение Jun 28 2013, 06:34
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 20-01-10
Из: Томск
Пользователь №: 54 958



Цитата(DASM @ Jun 28 2013, 11:55) *
У ксайлинкса должно быть что то навроде AXI transaction controller. Вот на него процы вешаются через
DDR Bridge, а FPGA через DDR FIC (fabric interface controller).В фпга надо создать AXI Master и общаться с памятью по этой цепи — Fpga AXI Master, DDR FIC, AXI transaction controller, DDR controller. В Smartfusion так. Не думаю, что у ксайлинкса иначе, тем более тут ARM первая скрипка, ксайлинкс только подчиняется шинам, разработанным АРМ. У вас своя плата ?


Плату использую на работе.
Попалась тут свежая App Note для Vivado HLS (от 20.06.2013), там делается что то похожее на мою задачу, так вот они делают через DMA, только подключают со стороны PS не AXI-HP, а к ACP. Буду пробовать разобраться как они там сделали. Плохо только, что они сами в своих примерах то Vivado используют, то PlanAhead + XPS как в данной App Note. Уже сами бы переходили тогда на Vivado полностью, раз всех туда нагибают.


Go to the top of the page
 
+Quote Post
DASM
сообщение Jun 28 2013, 06:56
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



Когда одну и туже цель можно достичь десятком способо - всегда такая лабуда. Как вообще впечатления ? Собираюсь ZedBoard купить. Правда не очень понимаю, чем он мне нужнее SmartFusion2 - разве что проца два помощнее, и логика не флешовая, а конфигурираемая на лету.
Go to the top of the page
 
+Quote Post
pepelats
сообщение Jun 28 2013, 07:46
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 20-01-10
Из: Томск
Пользователь №: 54 958



Цитата(DASM @ Jun 28 2013, 13:56) *
Как вообще впечатления ? Собираюсь ZedBoard купить. Правда не очень понимаю, чем он мне нужнее SmartFusion2 - разве что проца два помощнее, и логика не флешовая, а конфигурираемая на лету.


Впечатления в принципе не плохие, просто для меня не привычно. Обычно сталкивался что ПЛИС отдельно CPU отдельно. А тут все в одном флаконе. Нравится то, что система очень гибкая, процессор можно использовать в SMP и AMP режиме запуская на них одновременно разные OS, либо писать не используя OS. ПЛИС можно использовать как ускоритель каких то вычислений. Прошивка для ПЛИС грузится в момент старта системы с SD карты.

Недостатком можно назвать что мало кто использовал пока, и документацию они еще только делают. Приходится по крупицам собирать и что то делать.

Со стороны PS более менее разобрался как и что. Щас вот со стороны PL пытаюсь понять как сделать то, что мне нужно.
Go to the top of the page
 
+Quote Post
DASM
сообщение Jun 28 2013, 07:58
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



А на лету прошивку ПЛИС можно менять ?
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Jun 28 2013, 08:08
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 DASM
В принципе можно, отключаем level-shifter-ы, переконфигурируем софтом PL и обратно включаем level-shifter-ы - пОциент готов. В TRM (UG585) где то детально описывается эта процедура.
Там только два больших минуса - конфигурить PL можно или через житаг или процом, и сброс только проца можно сделать только через WDT - остальные сбросы приводят к обоюдному ресету.
Go to the top of the page
 
+Quote Post
pepelats
сообщение Jun 28 2013, 08:35
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 20-01-10
Из: Томск
Пользователь №: 54 958



Цитата(DASM @ Jun 28 2013, 14:58) *
А на лету прошивку ПЛИС можно менять ?


Не попадался такой вариант, поэтому точно сказать не могу. Тем более что как мне кажется даже если это сделать, будут некоторые трудности со стороны процессора если в ПЛИС зашито было какое то устройство. Т.е. надо будет на лету так же что то переинициализировать, например в Linux
как минимум выгрузить один драйвер и загрузить другой. Сейчас прошивка упаковывается в BOOT.BIN файл, где содержится первичный загрузчик, прошивка для ПЛИС, UBOOT и bare-metal приложения. Грузит его и распаковывает борда сама. Но наверно можно как то самому потом зашить ПЛИС прошивку после загрузки борды.
Go to the top of the page
 
+Quote Post
DASM
сообщение Jun 28 2013, 08:40
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



Ну на самом деле смены прошивки ПЛИС на лету крайне полезная фича
Купил вобщем ZedBoard, погляжу, что к чему
Go to the top of the page
 
+Quote Post
Sombre
сообщение Jul 29 2013, 10:37
Сообщение #10





Группа: Участник
Сообщений: 10
Регистрация: 14-09-10
Пользователь №: 59 488



Цитата(pepelats @ Jun 28 2013, 10:46) *
Со стороны PS более менее разобрался как и что. Щас вот со стороны PL пытаюсь понять как сделать то, что мне нужно.

На самом деле это сделать просто. Но способов, как всегда, полно.
Создаете кор с мастером и подключите M_AXI к AXI интерконнекту, а интерконнект к любому HP. Для HP выберите диапазон адресов такой же, какой будете использовать в софте.
У Зайлинкса есть всякие удобные коры для этого, например, "AXI MASTER LITE", если использовать AXI4-Lite. Из докумментации кора все ясно.
Вообще используйте CIP wizard, если не понятно.
Go to the top of the page
 
+Quote Post
Dvorkin
сообщение Jan 17 2014, 11:16
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 24
Регистрация: 5-03-05
Из: Воронеж
Пользователь №: 3 094



Цитата(pepelats @ Jun 28 2013, 07:15) *
Здравствуйте!

Очень нужна помощь. Разбираюсь с платой Zynq-7000 ZC702. Возникла необходимость написать простую корку которая будет работать с массивом данных. Например одномерный массив умножить на другой одномерный массив и получить на выходе третий массив. Причем данные в PL должны передаваться с PS и после обработки возвращаться обратно. Для подключения к PS планируется использовать AXI-HP port. Данные должны храниться в DDR. Корку написал на Vivado HLS, интерфейсы использовал AXI4Stream.

Теперь в Vivado пытаюсь подключить данную корку к PS. Какие корки я должен использовать чтобы организовать нужный мне обмен данными? Если я правильно понял, то надо использовать AXI DMA. Можно ли как то по другому организоваться обмен данными между PS-DDR-PL через HP порт и какой интерфейс при этом должна использовать моя корка (AXI4Stream или что то другое)?


Для передачи в память/из памяти нужна корка AXI_DMA. Ваш модуль будет подключен к ней по шине AXI-STREAM (MM2S и S2MM).
Go to the top of the page
 
+Quote Post
pepelats
сообщение Jan 17 2014, 11:27
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 20-01-10
Из: Томск
Пользователь №: 54 958



Цитата(Dvorkin @ Jan 17 2014, 18:16) *
Для передачи в память/из памяти нужна корка AXI_DMA. Ваш модуль будет подключен к ней по шине AXI-STREAM (MM2S и S2MM).


Да, спасибо, я уже разобрался.
Go to the top of the page
 
+Quote Post

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

 


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


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