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

 
 
 
Reply to this topicStart new topic
> PCI Express ядро от Xilinx, Обмен происходит только по одному двойному слову.
AlphaMil
сообщение Feb 3 2014, 17:27
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 135
Регистрация: 1-01-10
Из: Минск, Беларусь
Пользователь №: 54 588



Использую сгенерированное ядро PCIE от Xilinx. Для приема и отправки данных используются модули из примера для этого ядра. С помощью ChipScope смотрю содержимое поля Lenght в TLP (на шине AXI). Оно всегда равно 0x001. Перерыл инет, кто говорит, что это ограничение самого ядра, кто - на шине висит устройство, которое может обмениваться только по одному двойному слову (у меня - точно не висит такого устройства). Может уже кто сталкивался и решил эту проблему? Может порекомендуете другое какое ядра (ПЛИС Kintex7, использую аппаратный блок).
Go to the top of the page
 
+Quote Post
o_khavin
сообщение Feb 3 2014, 18:10
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 230
Регистрация: 29-08-09
Пользователь №: 52 094



Цитата(AlphaMil @ Feb 3 2014, 21:27) *
Использую сгенерированное ядро PCIE от Xilinx. Для приема и отправки данных используются модули из примера для этого ядра. С помощью ChipScope смотрю содержимое поля Lenght в TLP (на шине AXI). Оно всегда равно 0x001. Перерыл инет, кто говорит, что это ограничение самого ядра, кто - на шине висит устройство, которое может обмениваться только по одному двойному слову (у меня - точно не висит такого устройства). Может уже кто сталкивался и решил эту проблему? Может порекомендуете другое какое ядра (ПЛИС Kintex7, использую аппаратный блок).

А DMA-то подключено? Для этого нужна DMA-кора в FPGA и драйвер соответствующий.
У Xilinx-а же есть ref design, где всё это работает. Смотрели его?
Go to the top of the page
 
+Quote Post
AlphaMil
сообщение Feb 3 2014, 18:17
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 135
Регистрация: 1-01-10
Из: Минск, Беларусь
Пользователь №: 54 588



Я может не совсем правильно понимаю, но для DMA нужен процессор, я же подключаю модули приема-передачи из примера непосредственно к блочной памяти (тестово, конечно), т.е. никакого процессора нет. Заполнение полей смотрю непосредственно на шине AXI. Или DMA-корка как-то особо настраивает всю связку (контроллер PCIE<->хост). Если не трудно, скажите номер ref design (или ссылку на него). Кстати платка KC705. Спасибо.
Go to the top of the page
 
+Quote Post
SM
сообщение Feb 3 2014, 19:03
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



DMA нужна на стороне PC, чтобы PC могла инициировать обмен в режиме bus master, так как когда мастером на шине процессор, то обмен, как правило только словами идет, особенно на чтение данных из железки. На запись на некоторых материнках можно добиться бурста, но именно на некоторых и не обязательно. А если Ваша железяка берет управление транзакциями на себя, то она уже может смело данные пачками гнать.

То есть имеется в виду DMA-доступ в память PC, а не вашей железки.
Go to the top of the page
 
+Quote Post
o_khavin
сообщение Feb 3 2014, 19:20
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 230
Регистрация: 29-08-09
Пользователь №: 52 094



Цитата(SM @ Feb 3 2014, 23:03) *
То есть имеется в виду DMA-доступ в память PC, а не вашей железки.

Имеется ввиду то, что написано. А именно в XAPP 1171:
Цитата
This design demonstrates how to use the AXI Memory Mapped to PCI Express IP to perform high-throughput data transfers over a PCI Express link. To accomplish this, a Scatter Gather capable DMA engine is paired with the PCI Express IP. The DMA engine allows the FPGA to manage the data transfer over the PCI Express link to increase throughput and decrease processor utilization on the Root Complex side of the PCI Express link.

Т.е. нужно нечто, что будет обеспечивать DMA-трансферы на стороне FPGA.


Цитата(AlphaMil @ Feb 3 2014, 22:17) *
Если не трудно, скажите номер ref design (или ссылку на него). Кстати платка KC705. Спасибо.

Тынц. sm.gif

Сообщение отредактировал o_khavin - Feb 3 2014, 19:21
Go to the top of the page
 
+Quote Post
SM
сообщение Feb 3 2014, 19:30
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(o_khavin @ Feb 3 2014, 23:20) *
Т.е. нужно нечто, что будет обеспечивать DMA-трансферы на стороне FPGA.

И на стороне PC тоже... Однако, The drivers and software are not provided with this application note, and must be custom developed...
Go to the top of the page
 
+Quote Post
AlphaMil
сообщение Feb 3 2014, 20:00
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 135
Регистрация: 1-01-10
Из: Минск, Беларусь
Пользователь №: 54 588



Но ведь выходом PCIE ядра является интерфейс AXI (как на прием, так и на передачу), я не подключаю ядро к процессору (синтезированному, или аппаратному), я сделал автомат состояний, который приняв транзакцию делает парсинг и, например, пишет или читает данные в/из блочной памяти. Это и есть аналог DMA (если я правильно понимаю). Так вот даже на этом этапе количество двойных слов ограничено одним. Т.е. хост не может даже запросить у меня более чем одно двойное слово. А не может запросить - как ему просто отдать больше, тупо посылкой на запись в память, инициированной с железки?
Go to the top of the page
 
+Quote Post
SM
сообщение Feb 3 2014, 20:03
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(AlphaMil @ Feb 4 2014, 00:00) *
А не может запросить - как ему просто отдать больше, тупо посылкой на запись в память, инициированной с железки?


Да, только не тупо, а умно - перед этим надо в драйвере на PC отмапить и залочить нужный кусок памяти, получить у ядра ОС его физический адрес на шине PCI[e], и вот по этому адресу провести запись, инициированную с железки (или вычитать его, тоже инициировав операцию с железки). Вот это и есть DMA - когда не PC дергает железку "дай данное/получи данное", а железка сама инициирует DMA-передачу в память (или из памяти) компьютера. То есть в FPGA нужен DMA-контроллер, который примет от PC список адресов в ее памяти и длин блоков, и произведет нужные передачи в/из памяти PC, инициировав нужные транзакции на шине PCIe.

В этом, для начала, может помочь Jungo WinDriver - простой способ сделать эти операции на PC без написания своего драйвера (залочить область памяти и получить ее физический адрес для DMA-доступа, и записать эти данные в железку).
Go to the top of the page
 
+Quote Post
o_khavin
сообщение Feb 3 2014, 20:38
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 230
Регистрация: 29-08-09
Пользователь №: 52 094



Цитата(AlphaMil @ Feb 4 2014, 00:00) *
Но ведь выходом PCIE ядра является интерфейс AXI (как на прием, так и на передачу), я не подключаю ядро к процессору (синтезированному, или аппаратному), я сделал автомат состояний, который приняв транзакцию делает парсинг и, например, пишет или читает данные в/из блочной памяти. Это и есть аналог DMA (если я правильно понимаю). Так вот даже на этом этапе количество двойных слов ограничено одним. Т.е. хост не может даже запросить у меня более чем одно двойное слово. А не может запросить - как ему просто отдать больше, тупо посылкой на запись в память, инициированной с железки?

Советую оставить мечты по поводу "PCIe легко и быстро". Тут либо долгий геморрой с драйвером и DMA-корой, либо за деньги. На Xilinx-е есть демо-версия от NWLogic с ограничением работы один час после сброса платы.
Go to the top of the page
 
+Quote Post
toshas
сообщение Sep 13 2014, 06:07
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 372
Регистрация: 14-02-06
Пользователь №: 14 339



Кто-нибудь измерял скорость получаемую на дизайне из xapp1171 ?

Спасибо!
Go to the top of the page
 
+Quote Post
EugeneS
сообщение Sep 23 2014, 13:05
Сообщение #11


Частый гость
**

Группа: Свой
Сообщений: 181
Регистрация: 28-08-04
Пользователь №: 557



QUOTE (toshas @ Sep 13 2014, 09:07) *
Кто-нибудь измерял скорость получаемую на дизайне из xapp1171 ?

Спасибо!


Я мерял TRD (Northwest Logic) на KC705, получил ~12 Gbps


Прикрепленное изображение
Go to the top of the page
 
+Quote Post
toshas
сообщение Sep 24 2014, 17:26
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 372
Регистрация: 14-02-06
Пользователь №: 14 339



Спасибо!

Но TRD идет на ядре NW, а оно сильно дорогое.

Интересует именно Axi Memory Mapped to PCI Express ядро.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 10:56
Рейтинг@Mail.ru


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