Перейти к содержанию
    

05.06.2018 в 22:40, AVR сказал:

Готов проконсультировать по всем вопросам касательно PCI-E. Насколько хватит моей скудной компетенции.

Только просьба, переименовать тему в сторону более информативного заголовка.

 

Вкратце: хост выделяет у себя кусочки памяти, затем делает их доступными для записи через PCI-E, попутно выясняя по какому адресу это будет видно через PCI-E. Эти адреса могут не совпадать. Все эти действия делаются API ядра операционной системы. Полученные адреса, например, можно засунуть через MMIO (т.е. BARы) в ПЛИС, а потом ПЛИС просто шлет пакеты, заполняя эти кусочки памяти. Можно для начала выделить 1 блок размером 4096.

 

На самом деле всё чудовищно просто, когда осваивал не мог понять/поверить что всё так просто.

 

http://xillybus.com/tutorials/pci-express-...utorial-guide-1

Здравствуйте , хотел бы попросить помощи в реализации PCI express на Xilinx , у меня вопрос такой , есть DMA Bridge subsystem , возможно ли из Endpoint на ПЛИС который расположен у которого есть ддр на плате  , писать данные в память оперативную на материнской плате ну то есть память которую использует cpu  ? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, maxim5353 said:

озможно ли из Endpoint на ПЛИС который расположен у которого есть ддр на плате  , писать данные в память оперативную на материнской плате ну то есть память которую использует cpu  ? 

Возможно

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 8/18/2021 at 2:11 PM, maxim5353 said:

Здравствуйте , хотел бы попросить помощи в реализации PCI express на Xilinx , у меня вопрос такой , есть DMA Bridge subsystem , возможно ли из Endpoint на ПЛИС который расположен у которого есть ддр на плате  , писать данные в память оперативную на материнской плате ну то есть память которую использует cpu  ? 

На самом деле, спасибо Xilinx за их ядро, а вот остальное. Так ли оно нужно. Всё что Вы спрашиваете, можно реализовать напрямую работая с ядрами DDRx и PCIe, про DMA Bridge subsystem не знаю что это (это такое ядро у Xilinx или общее обозначение механизма?), но как минимум врукопашную это реализовать абсолютно можно. Какая ПЛИС конкретно, какого поколения?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

19 часов назад, AVR сказал:

На самом деле, спасибо Xilinx за их ядро, а вот остальное. Так ли оно нужно. Всё что Вы спрашиваете, можно реализовать напрямую работая с ядрами DDRx и PCIe, про DMA Bridge subsystem не знаю что это (это такое ядро у Xilinx или общее обозначение механизма?), но как минимум врукопашную это реализовать абсолютно можно. 

Bridge subsystem как минимум проще в использовании. Вам не нужно там руками описывать сотни сигналов проприетарных интерфейсов (набор конфигурационных, flow control, phy), вы работаете с шиной AXI. Вам не нужно заботиться о разбиении транзакции на серию TLP в случае, если размер транзакции превышает MPS и MRRS. Вам не нужно париться со склеиванием CplD при разбиении по RCB. Т.е. порог вхождения и время на подъём интерфейса существенно ниже. Это согласуется и с размером документации: на низкоуровневое ядро она порядка 450-550 страниц (в зависимости от Gen), а на Bridge subsystem немногим более 100 страниц. Т.ч. смысл есть. Сам возился с низким уровнем, наелся по полной программе. Но нужно было выжимать скорость, поэтому тут компромиссы были не уместны.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 6/5/2018 at 10:40 PM, AVR said:

Готов проконсультировать по всем вопросам касательно PCI-E. Насколько хватит моей скудной компетенции.

Только просьба, переименовать тему в сторону более информативного заголовка.

 

Вкратце: хост выделяет у себя кусочки памяти, затем делает их доступными для записи через PCI-E, попутно выясняя по какому адресу это будет видно через PCI-E. Эти адреса могут не совпадать. Все эти действия делаются API ядра операционной системы. Полученные адреса, например, можно засунуть через MMIO (т.е. BARы) в ПЛИС, а потом ПЛИС просто шлет пакеты, заполняя эти кусочки памяти. Можно для начала выделить 1 блок размером 4096.

 

На самом деле всё чудовищно просто, когда осваивал не мог понять/поверить что всё так просто.

 

http://xillybus.com/tutorials/pci-express-...utorial-guide-1

А на каких типах \плис реализовывали и какие модули(core) использовали ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

21 minutes ago, plis said:

А на каких типах \плис реализовывали и какие модули(core) использовали ?

На текущий момент я освоил подобным образом PCI-E на платформах Lattice Versa ECP3, Altera Cyclone 4 GX, Xilinx Kintex 7 и Kintex UltraScale. Везде, кроме последнего, оказалось всё идентично и аналогично в целом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 12/20/2021 at 5:37 PM, AVR said:

На текущий момент я освоил подобным образом PCI-E на платформах Lattice Versa ECP3, Altera Cyclone 4 GX, Xilinx Kintex 7 и Kintex UltraScale. Везде, кроме последнего, оказалось всё идентично и аналогично в целом.

А в чем разница ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 6/5/2018 at 2:20 PM, polyvyannyy said:

Всем привет, уважаемые форумчане!

Возникла необходимость поднять на девборде PCIe 3x8. Референсный дизайн загружен и все работает.

Но теперь нужно сделать прием и отправку своих данных с/на хост. И вот тут то возникла куча вопросов и непониманий. Информации по теории PCIe полно, но никак не удается найти конкретики относительно ПЛИС...какой именно у меня должен быть порядок действий со стороны ПЛИС, чтобы организовать чтение/запись данных в ОЗУ хоста? таблица дискрипторов...кто её формирует, где она хранится?В голове каша и нет четкого понимания.

Прошу помощи у опытных в данной теме людей.

За любые ссылки, проекты, которые можно взять за основу, буду благодарен.

 

а не подскажете, с помощью чего пишете софт для чтения/записи данных?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 hours ago, shide_3 said:

а не подскажете, с помощью чего пишете софт для чтения/записи данных?

на каком железе?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 6/6/2018 at 2:40 AM, AVR said:

Готов проконсультировать по всем вопросам касательно PCI-E. Насколько хватит моей скудной компетенции.

Только просьба, переименовать тему в сторону более информативного заголовка.

 

Вкратце: хост выделяет у себя кусочки памяти, затем делает их доступными для записи через PCI-E, попутно выясняя по какому адресу это будет видно через PCI-E. Эти адреса могут не совпадать. Все эти действия делаются API ядра операционной системы. Полученные адреса, например, можно засунуть через MMIO (т.е. BARы) в ПЛИС, а потом ПЛИС просто шлет пакеты, заполняя эти кусочки памяти. Можно для начала выделить 1 блок размером 4096.

 

На самом деле всё чудовищно просто, когда осваивал не мог понять/поверить что всё так просто.

 

http://xillybus.com/tutorials/pci-express-...utorial-guide-1

Цена корки от 25000-85000$. Вы почём купили?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

30 minutes ago, dmitry-tomsk said:

Цена корки от 25000-85000$.

Когда-то давно Альтера к своему киту в качестве демки давала софт для перекачки туда-сюда по PCIe - scatter-gatter DMA - хост составляет таблицу адресов кусочков памяти, посылает ее адрес в FPGA, а она перекачивает туда-сюда через DMA   - емнип так оно работало). Как понимаю - софт стоил бесплатно, ну или за стоимость кита - $1200.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, Yuri124 said:

Когда-то давно Альтера к своему киту в качестве демки давала софт для перекачки туда-сюда по PCIe - scatter-gatter DMA - хост составляет таблицу адресов кусочков памяти, посылает ее адрес в FPGA, а она перекачивает туда-сюда через DMA   - емнип так оно работало). Как понимаю - софт стоил бесплатно, ну или за стоимость кита - $1200.

Я когда-то писал сам для спартана, сейчас нужно для 7го поколения, вот и думаю стоит ли терять время

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 hours ago, shide_3 said:

win10 64 bit, стандартный ПК Core i5, 32 ГБ

я думал ответ больше будет про плис ) чтобы со стороны PC по pcie общаться с плис, нужно драйвер писать. На винде, скорее всего это будет так же как и на Линуксе, на c языке

Изменено пользователем new123

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

18 часов назад, dmitry-tomsk сказал:

Я когда-то писал сам для спартана, сейчас нужно для 7го поколения, вот и думаю стоит ли терять время

В смысле, размышляете, делать или купить готовое ядро?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...