Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: PCI-E
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
shide_3
здравствуйте. у кого есть опыт работы с PCI-e на FPGA? интересует вопрос возможности DMA. почитав описания корок у Xilinx, я понял что встроенный блок pcie не содержит DMA, его нужно прикручивать отдельно, причем существует только корка dma стороннего производителя.
насколько сложно имплементировать эти корки в проект и связывать между собой (pci и dma)?
и как обстоят с этим дела у Альтеры? честно говоря, некогда изучать описание корки pcie для альтеры, очень много там информации..
спасибо
XVR
Цитата(shide_3 @ Feb 5 2013, 12:43) *
интересует вопрос возможности DMA. почитав описания корок у Xilinx, я понял что встроенный блок pcie не содержит DMA, его нужно прикручивать отдельно,
Угу
Цитата
причем существует только корка dma стороннего производителя.
Угу
Цитата
насколько сложно имплементировать эти корки в проект и связывать между собой (pci и dma)?

У Xilinx есть reference design с этими корками (для V6). Он работает, так что можно все стянуть оттуда.
Вот только есть одно но - DMA корка там time limited demo версия, а полная версия стоит отдельных денег crying.gif

Пришлось делать свой собственный DMA контролер

shide_3
Цитата(XVR @ Feb 5 2013, 13:12) *
Угу
Угу

У Xilinx есть reference design с этими корками (для V6). Он работает, так что можно все стянуть оттуда.
Вот только есть одно но - DMA корка там time limited demo версия, а полная версия стоит отдельных денег crying.gif

Пришлось делать свой собственный DMA контролер

а вот про это ---http://www.xilinx.com/products/intellectual-property/1-8DYF-1689.htm можете что-то сказать?
KPiter
Цитата(XVR @ Feb 5 2013, 14:12) *
Пришлось делать свой собственный DMA контролер

Xilinx Platform Studio имеет в составе AXI CDMA. имхо его можно использовать
XVR
Ну собственно это он и есть (который использовался у них в ref design'е). Работает, дока полная и вполне вменяемая. Весьма гибкий интерфейс.

Но у DMA есть один подводный камень - очень сильная зависимость эффективности DMA от конкретного способа применения в приложении.
В нашем случае корка от NWL скорее всего вообще бы не подошла. А у своей собственной DMA корки нам пришлось сделать 3 итерации дезайна, пока не удалось получить приемлемые результаты по скорости и задержкам
shide_3
а у альтеры дела тоже подобным образом обстоят?

Цитата(XVR @ Feb 5 2013, 13:48) *
Ну собственно это он и есть (который использовался у них в ref design'е). Работает, дока полная и вполне вменяемая. Весьма гибкий интерфейс.

то есть эта корка только демо? а полную уже покупать надо? а с ISE она не идет?

и вроде бы, ethernet корки имеют встроенный dma, почему бы им тогда для pci не сделать?
KPiter
Похоже запутали человека.
AXI CDMA идет с Xilinx Platform Studio (AXI CDMA не только конкретно для работы с PCIe т.е. чтобы сделать DMA для PCIe нужно взять два элемента: PCIe и CDMA).
NWL - алтернативный вариант (платный) конкретной реализации DMA для PCIe

У альтеры, насколько мне известно, все тоже самое. в QSys есть SGDMA + PCIe. И какие-то платные корки реализации конкретно DMA для PCIe
Bad0512
Цитата(shide_3 @ Feb 5 2013, 18:23) *
а у альтеры дела тоже подобным образом обстоят?


то есть эта корка только демо? а полную уже покупать надо? а с ISE она не идет?

и вроде бы, ethernet корки имеют встроенный dma, почему бы им тогда для pci не сделать?

Потому что невозможно сделать эффективный контроллер на все случаи жизни. Всё очень сильно зависит от характера траффика.
В общем, на халяву не прокатит - мозг всё равно придётся задействовать. Поглядите в форуме по интерфейсам - там dsmv двигает
свой опенсорсный контроллер. Да и вопросы на тему PCI-E тоже лучше задавать там.
shide_3
Цитата(KPiter @ Feb 5 2013, 14:38) *
AXI CDMA идет с Xilinx Platform Studio (AXI CDMA не только конкретно для работы с PCIe т.е. чтобы сделать DMA для PCIe нужно взять два

а где взять це Xilinx Platform Studio?
dsmv
Проблему DMA я решил, это было достаточно сложно.

Проект DS_DMA здесь: http://ds-dev.ru/projects/ds-dma


Есть ещё зеркало на opencores.org: http://opencores.org/project,pcie_ds_dma

KPiter
Цитата(shide_3 @ Feb 6 2013, 10:42) *
а где взять це Xilinx Platform Studio?

Пуск -> Xilinx ISE design suite -> EDK -> Xilinx Platform Studio. доступен в system edition и edk edition
shide_3
Цитата(KPiter @ Feb 6 2013, 10:31) *
Пуск -> Xilinx ISE design suite -> EDK -> Xilinx Platform Studio. доступен в system edition и edk edition

аа ясно. у меня только Веб

Цитата(dsmv @ Feb 6 2013, 10:04) *
Проблему DMA я решил, это было достаточно сложно.

Проект DS_DMA здесь: http://ds-dev.ru/projects/ds-dma


Есть ещё зеркало на opencores.org: http://opencores.org/project,pcie_ds_dma

спасибо. а можно поинтересоваться, какой вам интерес делиться своими проектами?
dsmv
Цитата(shide_3 @ Feb 6 2013, 10:54) *
спасибо. а можно поинтересоваться, какой вам интерес делиться своими проектами?

Ну просто если я этого не сделаю то проект просто умрёт. Я его забуду а больше никто не узнает.


И кроме того - повышение качества проекта. Обсуждение кода, тестирование в разных условиях - мне это интересно.




shide_3
Цитата(dsmv @ Feb 6 2013, 12:18) *
Ну просто если я этого не сделаю то проект просто умрёт. Я его забуду а больше никто не узнает.

но Вы же сделали железо-значит проект не должен умереть
dsmv
Цитата(shide_3 @ Feb 6 2013, 13:11) *
но Вы же сделали железо-значит проект не должен умереть


К сожалению это ничего не значит.
0legS
Цитата(shide_3 @ Feb 5 2013, 10:43) *
и как обстоят с этим дела у Альтеры? честно говоря, некогда изучать описание корки pcie для альтеры, очень много там информации..

У Альтеры все зависит от желаемой продуктивности. Есть ядро PCIe (IP Compiler for PCI Express) для QSYS, с красивым интерфейсом Avalon-MM, к этому ядру по тому же интерфейсу подключается DMA (DMA Controller или Scatter-Gather DMA (он же SG-DMA)). Этими DMA можно управлять и с FPGA и с PC (или другого PCIe Root Complex). Все работает без проблем, только PCIe используется не эффективно. Зато не надо самому складывать PCIe пакеты. То есть нужно только сказать какие данные и куда записать (или откуда прочесть).
Для задач, где нужно взять максимально из PCIe, нужно брать ядро не для QSYS а простое с MegaWizard, где придётся пакет самому собирать, самому анализировать кому какой ответ пришёл и т. д. и конечно писать самому DMA, потому что если Вы разберетесь с этим всем то DMA написать конкретно под свою задачу не составит большого труда. (DMA, то есть прямым доступом к памяти будет любая команда на чтения или запись данных инициированных FPGA (End Point лезет в память Root Complex))
Если скорость не требуется и не надо MSI-X, то можете попробовать 1й вариант.
dsmv
Цитата(0legS @ Feb 14 2013, 17:47) *
У Альтеры все зависит от желаемой продуктивности. Есть ядро PCIe (IP Compiler for PCI Express) для QSYS, с красивым интерфейсом Avalon-MM, к этому ядру по тому же интерфейсу подключается DMA (DMA Controller или Scatter-Gather DMA (он же SG-DMA)).

...


Хочу обратить внимание на структуру дескриптора для SG-DMA. Дескриптор описывает только один блок данных и адрес следующего дескриптора. Это прекрасно работает если блок данных достаточно большого размера, например 1 Мбайт. Но проблема заключается в том, что выделить непрерывный по физическим адресам блок памяти можно только в памяти ядра. А её всегда мало. Для 32-х разрядных систем можно выделить около 128 Мбайт. Больше - может и не выделиться. В user memory можно выделить большой блок, но он будет фрагментирован на страницы по 4 кбайта. И получится что DMA считывает дискриптор, проводит обмен блоком 4 кбайта и снова считывает дескриптор. Время считывания дескриптора сравнимо со времемен обмена для блока 4 кбайт. В результате - замедление работы.


В моём DMA контроллере дескрипторы объеденены в блок дескрипторов. Размер блока дескрипторов 512 байт. В нём 63 указателя на блоки и указатель на следующий блок дескрипторов. В результате скорость работы с фрагментированной памятью практически такая же, как и с непрерывной.

Подробнее можно посмотреть здесь: IPESC2009_id21_presentation.pdf




soldat_shveyk
Цитата
Для 32-х разрядных систем можно выделить около 128 Мбайт


В 32-бит WinXP и Win2003 в памяти ядра можно выделить до 256 МБайт.
В 32-битной Win7 выделяется не больше 32 МБайт.
В 64-битной Win2008 Server R2 можно выделить до 1 ГБайт в ядре.
dsmv
Цитата(soldat_shveyk @ Feb 15 2013, 15:00) *
В 32-бит WinXP и Win2003 в памяти ядра можно выделить до 256 МБайт.
В 32-битной Win7 выделяется не больше 32 МБайт.
В 64-битной Win2008 Server R2 можно выделить до 1 ГБайт в ядре.

Да, это так. Но этого мало.


В user memory:

Win 7 32 bit: 1536 МБайт

Win 7 64 bit: 6 Гбайт - (на компьютере 8 Гбайт)
shide_3
спасибо. не могли бы вы еще прояснить один момент: насколько понятно из описаний корки, то я не смогу сгенерить прошивочный файл, пока не приобрету и не инсталлирую лицензию на корку.
так ли это? и каким образом и через кого она покупается? а в случае с sopc builder тоже без этого не обойстись?
shide_3
уточняю: вышесказанное касается PCI (не Express), поскольку на данный момент интересует именно просто PCI (решил с него начать), конкретно
корка Альтеры (PCI compiler)---- http://www.altera.com/literature/ug/ug_pci.pdf
а для PCI express как раз как я вижу лицензия и не требуется (что странновато).
soldat_shveyk
Дело в том, что просто PCI реализуется на ресурсе логики FPGA, это IP, и стоит отдельных денег.
PCIe в современных чипах Альтеры - (Stratix IV и другие) реализвоан в виде отдельного аппаратного блока.
Стоимость пользования PCIe заложена в стоимость самой микросхемы FPGA, и платить за IP отдельных денег не надо.
С этой точки зрения использовать PCIe удобнее.
shide_3
Цитата(soldat_shveyk @ Feb 17 2013, 15:06) *
Дело в том, что просто PCI реализуется на ресурсе логики FPGA, это IP, и стоит отдельных денег.
PCIe в современных чипах Альтеры - (Stratix IV и другие) реализвоан в виде отдельного аппаратного блока.
Стоимость пользования PCIe заложена в стоимость самой микросхемы FPGA, и платить за IP отдельных денег не надо.
С этой точки зрения использовать PCIe удобнее.

а на халяву реально добыть лицензию?
shide_3
кстати, кто юзал PCI express (altera, xilinx) дайте пожалуста совет. необходимо ли изучать спецификацию шины в полном объеме, или достаточно почитать юзер мануал на корку?
dsmv
Цитата(shide_3 @ Feb 18 2013, 09:16) *
кстати, кто юзал PCI express (altera, xilinx) дайте пожалуста совет. необходимо ли изучать спецификацию шины в полном объеме, или достаточно почитать юзер мануал на корку?

Без изучения спецификации PCI Express описание IP Core будет непонятным.
shide_3
Цитата(0legS @ Feb 14 2013, 17:47) *
У Альтеры все зависит от желаемой продуктивности. Есть ядро PCIe (IP Compiler for PCI Express) для QSYS, с красивым интерфейсом Avalon-MM, к этому ядру по тому же интерфейсу подключается DMA (DMA Controller или Scatter-Gather DMA (он же SG-DMA)). Этими DMA можно управлять и с FPGA и с PC (или другого PCIe Root Complex). Все работает без проблем, только PCIe используется не эффективно. Зато не надо самому складывать PCIe пакеты. То есть нужно только сказать какие данные и куда записать (или откуда прочесть).
Для задач, где нужно взять максимально из PCIe, нужно брать ядро не для QSYS а простое с MegaWizard, где придётся пакет самому собирать, самому анализировать кому какой ответ пришёл и т. д. и конечно писать самому DMA, потому что если Вы разберетесь с этим всем то DMA написать конкретно под свою задачу не составит большого труда. (DMA, то есть прямым доступом к памяти будет любая команда на чтения или запись данных инициированных FPGA (End Point лезет в память Root Complex))
Если скорость не требуется и не надо MSI-X, то можете попробовать 1й вариант.

простите, но про MegaWizard в описании корок Альтеры (например http://www.altera.com/literature/ug/ug_pci_express.pdf) ничего не говорится. есть Avalon ST, и есть Avalon MM.
P.S. прошу прощения, avalon st-это видимо оно и есть
0legS
Цитата(shide_3 @ Feb 18 2013, 11:54) *
простите, но про MegaWizard в описании корок Альтеры (например http://www.altera.com/literature/ug/ug_pci_express.pdf) ничего не говорится. есть Avalon ST, и есть Avalon MM.
P.S. прошу прощения, avalon st-это видимо оно и есть


Говорится-говорится. Например, в таблице Table 1–2. IP Compiler for PCI Express Features на странице "1-3"
Дело в том, что в зависимости от типа ядра (аппаратного HARD IP или программного Soft IP), а также места его использования (MegaWizard, SOPC, QSYS) у вас будет PCIe с разными возможностями (в этой таблице их и посмотрите)
Самим продуктивным и сложным в использовании есть ядро с MegaWizard.


Цитата(shide_3 @ Feb 18 2013, 11:54) *
есть Avalon ST, и есть Avalon MM.

Avalon Streaming (Avalon-ST) и Avalon Memory-Mapped (Avalon-MM) это названия интерфейсов
Описание этих интерфейсов найти не сложно.
0legS
Цитата(shide_3 @ Feb 18 2013, 08:16) *
кстати, кто юзал PCI express (altera, xilinx) дайте пожалуста совет. необходимо ли изучать спецификацию шины в полном объеме, или достаточно почитать юзер мануал на корку?

если ядро то что з QSYS или SOPC (предшественник QSYS'a) с интерфейсом Avalon-MM то достаточно "юзер мануал на корку". Так как в этом случае все ваше общение с PCIe сводится к работе с памятью, то есть задаете адрес, данные (если запись) і команду (RD or WR) і все.
В другом случае придётся ручками собирать PCIe пакет, что существенно сложнее, как и обрабатывать активность с другого конца (Root complex).

0legS
Цитата(shide_3 @ Feb 16 2013, 13:52) *
спасибо. не могли бы вы еще прояснить один момент: насколько понятно из описаний корки, то я не смогу сгенерить прошивочный файл, пока не приобрету и не инсталлирую лицензию на корку.
так ли это?

Не так. Альтера любит делать ядра так, что б их можно было попробовать. Называют это "OpenCore Plus Hardware Evaluation feature"
То есть сгенерируется прошивочный файл <name>_time_limited.sof который будет работать пока вы не отключили JTAG и не нажали на отмену в Quartus на предупреждение о time limited. Без JTAG должно работать около часа.
Цитата(shide_3 @ Feb 16 2013, 13:52) *
а в случае с sopc builder тоже без этого не обойстись?

зависит от Hard IP или Soft IP. sopc builder не причем
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.