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

 
 
> Xilinx Zynq+DDR+DMA+Ethernet, Все в тумане
ConstHw
сообщение Nov 12 2015, 14:03
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 12-11-15
Пользователь №: 89 287



Всем привет, взываю к помощи так как кажется потерялся в дебрях Цинка.

Что хочется
Принимать данные по Ethernet, складывать их в память DDR3, доставать их оттуда, обеспечить доступ к этим данным другим ядрам.

Что есть
1) Запустил проект с LwIP вроде xapp. Вижу принятые и отправленные пакеты, посмотрел на них в WireShark, пописал свои пакеты туда с PC и обратно с платформы. Но пока для меня это все выглядит как черный ящик, где я с одной стороны вызываю tcp_recv и tcp_recv, которые внутри себя вызывают LwIP стек, который основан на драйверах Xilinx, которые там что то колдуют с регистрами контроллеров памяти,эзернета и ДМА описанными в UG585
2) Запустил проекты с MIG+ процессорное ядро. Пописал данные в память, почитал через AXI,
3) Пописал принятые по TCP данные в MIG напрямую из процессора. Делал напрямую "в лоб"
Код
*(Addr+I) = Val;
Где адрес соответственно ссылается на диапазон памяти принадлежащий подключенному MIG
4) Запустил тестовый проект с AXI DMA, пописал данные в память через него.

Что делать дальше непонятно, так как не понимаю многих вещей
1) Правильно ли я понял, что LwIP работает исключительно в пределах PS, использует только аппаратный DMA, складывает данные только в память, которая подключена к PS?

2) Как в таком случае правильно принять пакеты из Ethernet?
2.1) Если процессор занят обработкой протоколов Ethernet, TCP, IP в рамках выполнения LwIP-программ, то и в память он получается может писать принятые данные сам без ДМА?
2.2) Или он может передавать в DMA команду "бери данные из памяти вот тут вот столько и грузи в MIG"?
2.3) Или надо поток данных из GigE контроллера направить через аппаратный DMA в подключенный напрямую к процессору MIG? И потом вызывать прерывания для обработки?
2.4) Или надо поток данных из GigE напрвавить в MIG через AXI-DMA и дергать прерывание уже им?

3) Обязательно ли в такой задаче использовать TCP/IP? Если например стоит задача передавать данные от PC к непосредственно подключенной плате, можно ли использовать голый Ethernet, складывая свои данные в его payload?

4) Зачем вообще в множестве проектов используется AXI DMA, когда в PS есть аппаратный 8 канальный DMA-330? Почему не обходятся только им?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
t_34
сообщение Aug 14 2018, 07:45
Сообщение #2





Группа: Новичок
Сообщений: 3
Регистрация: 2-02-17
Пользователь №: 95 272



Добрый день. Возник такой же вопрос. Подскажите идеологию саму, как правильно надо делать? Плата zc706, надо поднять ethernet, который будет принимать данные и отсылать их в PL DDR3. Надо использовать именно PL память, чтобі собственные IP ядра имели к ней доступ. Как правильно подключить PL DDR3 к процессору?
1. В аппаратной части использовать порт процессора М_AXI_GP0, который будет подключен к AXI Interconect, а к AXI Interconect подключу MIG
2. В аппаратной части использовать порт процессора М_AXI_GP0, который через AXI Interconect будет подключен к AXI DMA, AXI DMA подключить к MIG (не знаю пока можно так делать или нет).
Напишите, пожалуйста, что и как правильно. В какую сторону надо копать.
На процессоре zynq планирую создать проект в SDK на базе LwIP echo server, который будет полученые tcp пакеті складывать по адрессу PL DDR3.
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Aug 14 2018, 09:11
Сообщение #3


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

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



Приветствую!
Цитата(t_34 @ Aug 14 2018, 10:45) *
Добрый день. Возник такой же вопрос. Подскажите идеологию саму, как правильно надо делать? Плата zc706, надо поднять ethernet, который будет принимать данные и отсылать их в PL DDR3. Надо использовать именно PL память, чтобі собственные IP ядра имели к ней доступ. Как правильно подключить PL DDR3 к процессору?
Ох уж это "правильно" Я на вскидку могу придумать 5-7 вариантов и все они будут правильные (для меня).
Будет ли они праведильными для Вас будет зависит от критериев этой правильности.

Цитата(t_34 @ Aug 14 2018, 10:45) *
1. В аппаратной части использовать порт процессора М_AXI_GP0, который будет подключен к AXI Interconect, а к AXI Interconect подключу MIG
2. В аппаратной части использовать порт процессора М_AXI_GP0, который через AXI Interconect будет подключен к AXI DMA, AXI DMA подключить к MIG (не знаю пока можно так делать или нет).
...
На процессоре zynq планирую создать проект в SDK на базе LwIP echo server, который будет полученые tcp пакеті складывать по адрессу PL DDR3.
Правильно для начала почитать описание Zynq, AXI шины и MIG контроллера.
Затем прикинуть и нарисовать на листике структуру обработки данных с предполагаемыми объемами данных - что от куда приходить - куда сохраняется - кто и что будет читать|писать данные - как часто? Затем совместив это с остатком знаний от чтения доков подумать как можно использовать то что уже есть. Оценив результат повторить итерацию 2-3 раза. Затем когда бумага кончится поделится с нами результатом. sm.gif Ну а мы естественно скажем что это не правильно и предложим свои варианты.

Внешние IP core в PL могут прекрасно получать доступ к данным в памяти PS DDR (через HP AXI порт). И если пропускной способности достаточно то можно напрямую пускать пастись Ваши IP в память PS. Ну или поставив CDMA таскать эти данные и складывать в тот же в PL MIG. Если же использовать М_AXI_GP* то в этом случае CPU может напрямую писать в память (memcpy) или использовать встроенный в ZYNQ DMA.

Цитата(t_34 @ Aug 14 2018, 10:45) *
... Напишите, пожалуйста, что и как правильно. В какую сторону надо копать.
Если картошку сажать то вширь, если уголек добывать то вглубь, "подкоп" под начальника не предлагаю sm.gif

Удачи! Rob.
Go to the top of the page
 
+Quote Post



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

 


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


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