Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: AXI/AXI-stream. Зачем и как реализовать?
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Lionet
Концептуально-практический волрос: сейчас все IP-cores для потоковой обработки данных (DSP FIR, FFT и прочее) реализуются с
использованием шины AXI-stream - по крайней мере, в Xilinx Vivado DSP ядер с классической шиной "данные-и-стробы" уже нет.

(То, что другие типы ядер используют вообще "полноформатную" AXI4 - это отдельная проблема).

Собственно, вопросы:

- разве использование специфической шины не ведёт к дополнительным накладным расходам ресурсов ПЛИС?

- что делать, если надо реализовать какую-то bitwise-magic - вытащить статусный бит, инвертировать, "обрезать" разрядность и т.д.?
Ранее всё это делалось достаточно нативно, поскольку линии данных доступны непосредственно.
Получается, что на каждый "чих" теперь нужно реализовывать своё ядро с интерфейсами AXI и добавлять в интегратор (для Vivado)?

- собственно, как правильно реализовать поддержку AXI-stream? Толковых мануалов и примеров найти пока не удалось.

Аналогичные вопросы и по AXI (не stream). С готовыми ядрами всё красиво - собирается, настраивается, даже как-то "подтягиваются" драйвера в devicetree
(хотя уже не всегда и не для всего). А вот как что-то своё, написанное на том же Verilog и нормально работающее в ISE, сделать совместимым с нетривиальной шиной - проблема...
serjj
Здравствуйте.
Цитата
собственно, как правильно реализовать поддержку AXI-stream? Толковых мануалов и примеров найти пока не удалось.

Вот есть документ от Xilinx. Стр. 47 например и далее расписано какие сигналы и как реализовывать.
Цитата
разве использование специфической шины не ведёт к дополнительным накладным расходам ресурсов ПЛИС?

Не все сигналы являются обязательными, в самом простом случае есть данные, клок, резет и TVALID (см. табличку в документе).
Цитата
что делать, если надо реализовать какую-то bitwise-magic - вытащить статусный бит, инвертировать, "обрезать" разрядность и т.д.?

В составе шины есть несколькоразрядная TUSER, которую можно использовать для любых дополнительных сигналов. Разрядность между модулями в цепочке согласуется параметрами.
Для меня наглядным было поглядеть как реализована шина в FFT корке от Xilinx, там видно как что работает и почему это удобно.
Цитата
Аналогичные вопросы и по AXI (не stream). С готовыми ядрами всё красиво - собирается, настраивается, даже как-то "подтягиваются" драйвера в devicetree
(хотя уже не всегда и не для всего). А вот как что-то своё, написанное на том же Verilog и нормально работающее в ISE, сделать совместимым с нетривиальной шиной - проблема...

Самое простое - AXI Lite, все очень просто реализуется, расписано там же в документе rolleyes.gif
Corvus
Ну вот так, концепция поменялась. Зато стандартизация, унификация, упрощение переносимости из проекта в проект и т.д. rolleyes.gif

На каждый чих может и не надо. Но для чего-либо серьёзного придётся.
С другой стороны, разобраться придётся лишь один раз. Вопрос, как обернуть свой модуль в AXI и AXI-stream уже неоднократно поднимался на этом форуме. Да и в сети понятных мануалов всё больше.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.