|
Xilinx 7 Series PCIe |
|
|
|
Jul 1 2015, 16:24
|
Местный
  
Группа: Свой
Сообщений: 236
Регистрация: 28-06-13
Из: Минск, Беларусь
Пользователь №: 77 312

|
Цитата(doom13 @ Jul 1 2015, 17:10)  Немного не то. Имел ввиду (просто интересно) возможно ли задачу переброса данных переложить на железо компьютера или это будет сложнее и менее производительно? Что-то типа драйвера управляющего DMA центрального процессора который и отвечает за переброс данных по PCIe. Или доступ к чужому железу не получить? Такая идея была, но вариант со внешним dma вполне устраивает)
|
|
|
|
|
Jul 21 2015, 17:25
|
Профессионал
    
Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539

|
Приветствую. Нужно ещё пояснение по поводу BAR-ов. Может ли PCIe:BAR0 отличаться по размеру от AXI:BAR0? Как понял, это независимые адресные пространства, но проект для разных их размеров собираться не захотел.
Пока собрал систему с GPIO (светодиод), прикрутил его к PCIe:BAR0 и сделал простенький драйвер под Linux, который при запуске зажигает светодиод, при удалении - гасит. Счас хочу добавить прерывание (от таймера), но не пойму, как это прикрутить к мосту PCIe? У таймера есть выход interrupt, у моста - вход intx_msi_request. Достаточно ли их соединить и запустить таймер, чтоб мост начал генерить прерывания от таймера?
|
|
|
|
|
Jul 24 2015, 06:22
|
Местный
  
Группа: Свой
Сообщений: 236
Регистрация: 28-06-13
Из: Минск, Беларусь
Пользователь №: 77 312

|
Цитата(doom13 @ Jul 21 2015, 20:25)  Приветствую. Нужно ещё пояснение по поводу BAR-ов. Может ли PCIe:BAR0 отличаться по размеру от AXI:BAR0? Как понял, это независимые адресные пространства, но проект для разных их размеров собираться не захотел. У меня размеры разные. Все работает. Цитата Пока собрал систему с GPIO (светодиод), прикрутил его к PCIe:BAR0 и сделал простенький драйвер под Linux, который при запуске зажигает светодиод, при удалении - гасит. Счас хочу добавить прерывание (от таймера), но не пойму, как это прикрутить к мосту PCIe? У таймера есть выход interrupt, у моста - вход intx_msi_request. Достаточно ли их соединить и запустить таймер, чтоб мост начал генерить прерывания от таймера? intx_msi_request (в данном случае legacy интерапт, по импульсу) на этот вход я подаю импульс как только закончена транзакция через pcie в PC (в физ память ПК) Цитата(doom13 @ Jul 22 2015, 17:05)  За что тогда отвечает msi_vector_num? Событийные прерывания. Помимо прерывания еще и указывают, чем это прерывание вызвано. В датащите есть расшифровка
|
|
|
|
|
Jul 24 2015, 06:42
|
Профессионал
    
Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539

|
Счас ядро сгенерено с опциями (см. рисунок). Означает ли это, что по импульсу на intx_msi_request ядро выдаст прерывание только если msi_vector_num[4:0] = 0? Т.е. может генерить один вектор и его номер 0. Если хочу использовать №24, то надо выбрать опцию "32 vectors" для Multiple Message Capability и тогда msi_vector_num[4:0] = 24? Цитата(farbius @ Jul 24 2015, 09:22)  У меня размеры разные. Все работает. Спасибо, проверим ещё раз.
Эскизы прикрепленных изображений
|
|
|
|
|
Jul 24 2015, 06:55
|
Местный
  
Группа: Свой
Сообщений: 236
Регистрация: 28-06-13
Из: Минск, Беларусь
Пользователь №: 77 312

|
Цитата(doom13 @ Jul 24 2015, 09:42)  Означает ли это, что по импульсу на intx_msi_request ядро выдаст прерывание только если msi_vector_num[4:0] = 0? я вообще не задействовал msi_vector_num. Прерывания работают, windrive их видит
|
|
|
|
|
Oct 15 2015, 07:48
|
Местный
  
Группа: Свой
Сообщений: 236
Регистрация: 28-06-13
Из: Минск, Беларусь
Пользователь №: 77 312

|
Цитата(doom13 @ Oct 15 2015, 09:45)  Приветствую. Подскажите, какую скорость передачи данных удалось получить на Вашей системе? В буфер ПСИе пишу поток со скоростью примерно 300-400 Мб/с. Можно и быстрее. Поясню: скорость шины с коркой псие 100 Мгц, датамувер кидает по 4 Мб в один из двух буферов отмапированных в памяти ПК. Скорость шины можно повысить до 200 МГц (виртекс 6 прекрасно работает на 200, проблемы начинаются от 250-300 Мгц, все это конечно условно). У меня необходимости в бОльшей скорости не возникало
|
|
|
|
|
Oct 20 2015, 07:56
|
Частый гость
 
Группа: Свой
Сообщений: 181
Регистрация: 28-08-04
Пользователь №: 557

|
QUOTE (doom13 @ Oct 15 2015, 11:37)  Спасибо, просто упёрся в потолок 8.5-8.7 Gbit/s для Gen2 x4, хотел сравнить c Вашим результатом. Для коммерческих не предел. Я для Kintex-7 в TRD мерял 12 Gbit/s, а с примером из Northwest Logic 14 Gbit/s.
|
|
|
|
|
Feb 10 2017, 14:23
|
Группа: Новичок
Сообщений: 2
Регистрация: 10-02-17
Пользователь №: 95 383

|
Цитата(farbius @ Jul 1 2015, 12:33)  Я на начальном этапе делал так (работал в XPS 14.7 для ml605.) Собрал проект: только pcie корка с дма (можно и без) и светодиоды. У меня на 32 р системе программа pcietree.
Pcie Bars брал только bar 0, задав его объем (у вас 32 килобайта). В pci2axi записал адрес своих leds (gpio) на шине (у вас там записано число 0х12340). Прошил, перезагрузил ПК. Открываю pcietree, вижу свою плату как контроллер памяти с BAR0. В bar 0 c ПК пишу число например c нулевым оффсетом, такая запись аналогична записи в регистр gpio корки также с нулевым офсетом. Так зажигаю светодиоды. Все.
Систему можно собрать для axi4 без микроблейза, т.к. мастер у вас есть (pcie) и слейв (gpio) Расскажите как получилось собрать систему без микроблейза? Я так понимаю как то удалось использовать исходники из XSP и собрать свой проект для pci-to-AXI?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|