|
PCI-E, поскажите кто работал |
|
|
2 страниц
< 1 2
|
 |
Ответов
(15 - 28)
|
Feb 14 2013, 14:47
|
Группа: Новичок
Сообщений: 5
Регистрация: 28-04-09
Из: м. Львів
Пользователь №: 48 390

|
Цитата(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й вариант.
|
|
|
|
|
Feb 15 2013, 11:24
|
Местный
  
Группа: Свой
Сообщений: 451
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 284

|
Цитата(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
|
|
|
|
|
Feb 15 2013, 12:00
|
Местный
  
Группа: Свой
Сообщений: 454
Регистрация: 3-07-07
Из: С-Петербург
Пользователь №: 28 859

|
Цитата Для 32-х разрядных систем можно выделить около 128 Мбайт В 32-бит WinXP и Win2003 в памяти ядра можно выделить до 256 МБайт. В 32-битной Win7 выделяется не больше 32 МБайт. В 64-битной Win2008 Server R2 можно выделить до 1 ГБайт в ядре.
|
|
|
|
|
Feb 15 2013, 12:23
|
Местный
  
Группа: Свой
Сообщений: 451
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 284

|
Цитата(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 Гбайт)
|
|
|
|
|
Feb 17 2013, 09:23
|
Местный
  
Группа: Участник
Сообщений: 314
Регистрация: 27-04-10
Пользователь №: 56 923

|
уточняю: вышесказанное касается PCI (не Express), поскольку на данный момент интересует именно просто PCI (решил с него начать), конкретно корка Альтеры (PCI compiler)---- http://www.altera.com/literature/ug/ug_pci.pdfа для PCI express как раз как я вижу лицензия и не требуется (что странновато).
|
|
|
|
|
Feb 17 2013, 12:47
|
Местный
  
Группа: Участник
Сообщений: 314
Регистрация: 27-04-10
Пользователь №: 56 923

|
Цитата(soldat_shveyk @ Feb 17 2013, 15:06)  Дело в том, что просто PCI реализуется на ресурсе логики FPGA, это IP, и стоит отдельных денег. PCIe в современных чипах Альтеры - (Stratix IV и другие) реализвоан в виде отдельного аппаратного блока. Стоимость пользования PCIe заложена в стоимость самой микросхемы FPGA, и платить за IP отдельных денег не надо. С этой точки зрения использовать PCIe удобнее. а на халяву реально добыть лицензию?
|
|
|
|
|
Feb 18 2013, 09:05
|
Местный
  
Группа: Свой
Сообщений: 451
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 284

|
Цитата(shide_3 @ Feb 18 2013, 09:16)  кстати, кто юзал PCI express (altera, xilinx) дайте пожалуста совет. необходимо ли изучать спецификацию шины в полном объеме, или достаточно почитать юзер мануал на корку? Без изучения спецификации PCI Express описание IP Core будет непонятным.
|
|
|
|
|
Feb 18 2013, 09:54
|
Местный
  
Группа: Участник
Сообщений: 314
Регистрация: 27-04-10
Пользователь №: 56 923

|
Цитата(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-это видимо оно и есть
Сообщение отредактировал shide_3 - Feb 18 2013, 10:01
|
|
|
|
|
Feb 20 2013, 15:44
|
Группа: Новичок
Сообщений: 5
Регистрация: 28-04-09
Из: м. Львів
Пользователь №: 48 390

|
Цитата(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 - Feb 20 2013, 15:45
|
|
|
|
|
Feb 21 2013, 08:01
|
Группа: Новичок
Сообщений: 5
Регистрация: 28-04-09
Из: м. Львів
Пользователь №: 48 390

|
Цитата(shide_3 @ Feb 18 2013, 08:16)  кстати, кто юзал PCI express (altera, xilinx) дайте пожалуста совет. необходимо ли изучать спецификацию шины в полном объеме, или достаточно почитать юзер мануал на корку? если ядро то что з QSYS или SOPC (предшественник QSYS'a) с интерфейсом Avalon-MM то достаточно "юзер мануал на корку". Так как в этом случае все ваше общение с PCIe сводится к работе с памятью, то есть задаете адрес, данные (если запись) і команду (RD or WR) і все. В другом случае придётся ручками собирать PCIe пакет, что существенно сложнее, как и обрабатывать активность с другого конца (Root complex).
|
|
|
|
|
Feb 22 2013, 11:27
|
Группа: Новичок
Сообщений: 5
Регистрация: 28-04-09
Из: м. Львів
Пользователь №: 48 390

|
Цитата(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 не причем
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|