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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> Реализация PCI-E x4 на Virtex5, Endpoint Block Plus v1.10 for PCI Express
L_Konstantin
сообщение Feb 18 2011, 10:57
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 13-10-06
Из: Новосибирск
Пользователь №: 21 282



Имеется собственная плата с FPGA Virtex5, устанавливается в слот PCI-E x4.
В операционке (Винда) собственный драйвер.

При передаче данных по DMA (устройство в режиме master) только в одну сторону, либо операции передачи данных в ПК, либо из ПК, все работает отлично.

Но захотелось большего, и решили запустить full-duplex. И вот здесь возникла проблема: портятся данные, которые приходят из устройства в ПК.
Причем при проведении теста (заполнение памяти устройства константой и ее вычитывание), приложение на компе получает просто странные данные, никаким образом не коррелирующие с исходными. Причем в ChipScope, при попытке обнаружить передачу в EndPoint не заданной константы, этого не обнаружено, что заставляет думать о проблеме с Endpoint либо с его конфигурацией и параметрами...

Есть ли у кого опыть запуска PCIe ядра в дуплексном режиме?
Go to the top of the page
 
+Quote Post
Methane
сообщение Feb 18 2011, 11:22
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230



Цитата(L_Konstantin @ Feb 18 2011, 12:57) *
Есть ли у кого опыть запуска PCIe ядра в дуплексном режиме?

У меня нормально работало. Альтера.
А вычитывание регистров итд нормально работало?

Между прочим, а что такое фулл-дуплекс? Кто запросы выдавал, компетишены получал?
Go to the top of the page
 
+Quote Post
L_Konstantin
сообщение Feb 18 2011, 11:34
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 13-10-06
Из: Новосибирск
Пользователь №: 21 282



Цитата(Methane @ Feb 18 2011, 17:22) *
У меня нормально работало. Альтера.
А вычитывание регистров итд нормально работало?

Между прочим, а что такое фулл-дуплекс? Кто запросы выдавал, компетишены получал?


Обращение к BAR - проблем не замечено.
Контроллер TLP уровня и, соответсвенно, разбирание всех пакетов - собственный компонент.

Немного не понял вопрос, поэтому попробую уточнить: когда происходит копирование потоков данных через DMA в память хоста, либо чтение из нее - все ОК.
Проблемы именно когда происходят одновременные операции записи по DMA и чтения - это я и называю Full-Duplex...
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Feb 18 2011, 11:49
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Может разведено криво, и TX/RX пары наводят друг на друга?
Go to the top of the page
 
+Quote Post
Methane
сообщение Feb 18 2011, 12:22
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230



Цитата(L_Konstantin @ Feb 18 2011, 13:34) *
Обращение к BAR - проблем не замечено.
Контроллер TLP уровня и, соответсвенно, разбирание всех пакетов - собственный компонент.

Аналогично делал.

Цитата
Немного не понял вопрос, поэтому попробую уточнить: когда происходит копирование потоков данных через DMA в память хоста, либо чтение из нее - все ОК.
Проблемы именно когда происходят одновременные операции записи по DMA и чтения - это я и называю Full-Duplex...

Все равно не понял. У меня одновременно пахало и чтение и запись. Как данные в FIFO появлялись на burst максимальной длинны, они отправлялись в хост. Когда в FIFO появлялось место на полный burst на чтение, на хост отправлялся запрос на чтение и когда приходил компетишен, он отправлялся в FIFO.

Поясните что у вас.

Цитата(DmitryR @ Feb 18 2011, 13:49) *
Может разведено криво, и TX/RX пары наводят друг на друга?

Сильно сомневаюсь.
Go to the top of the page
 
+Quote Post
L_Konstantin
сообщение Feb 18 2011, 15:38
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 13-10-06
Из: Новосибирск
Пользователь №: 21 282



Цитата(Methane @ Feb 18 2011, 18:22) *
Все равно не понял. У меня одновременно пахало и чтение и запись. Как данные в FIFO появлялись на burst максимальной длинны, они отправлялись в хост. Когда в FIFO появлялось место на полный burst на чтение, на хост отправлялся запрос на чтение и когда приходил компетишен, он отправлялся в FIFO.

Поясните что у вас.


У меня два потока данных: устройство одновременно занимается видеозахватом (входной поток порядка 500 Мбит/с) и воспроизведение другого видео из хоста (поток порядка 250 МБис/с).
Соответственно это совершенно независимые потоки - на уровне драйвера они также существуют параллельно.

Первоначально можно было сделать либо видеозахват на все 500 Мбис, либо 250 видеозахват и 250 воспроизведение.
Поэтому Full-Dulpex и необходим чтобы загрузить железку по полной.
Go to the top of the page
 
+Quote Post
Methane
сообщение Feb 18 2011, 16:17
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230



Цитата(L_Konstantin @ Feb 18 2011, 17:38) *
У меня два потока данных: устройство одновременно занимается видеозахватом (входной поток порядка 500 Мбит/с) и воспроизведение другого видео из хоста (поток порядка 250 МБис/с).
Соответственно это совершенно независимые потоки - на уровне драйвера они также существуют параллельно.

На чтение, как именно у вас реализовано? Сколько тегов использовано?

Цитата
Первоначально можно было сделать либо видеозахват на все 500 Мбис, либо 250 видеозахват и 250 воспроизведение.
Поэтому Full-Dulpex и необходим чтобы загрузить железку по полной.

Нет в PCIе такой штуки как фул или халф дуплекс.
Go to the top of the page
 
+Quote Post
L_Konstantin
сообщение Feb 18 2011, 16:52
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 13-10-06
Из: Новосибирск
Пользователь №: 21 282



Цитата(Methane @ Feb 18 2011, 22:17) *
На чтение, как именно у вас реализовано? Сколько тегов использовано?


у меня контроллер TLP представляет собой 2 state-машины (одна на прием данных с шины, вторая на передачу) и собственно арбитра, который обслуживает клиентов (чтения и записи).

Чтение данных из хоста выполняется по классическом схеме: запрос на чтение памяти (RdReq), а затем девайсу приходят пакеты (Cmpl) с запрошенными данными.
Записть данных в хост - просто запись в память по схеме master.

Все транзакции по 4МБ (1024 страницы) для получения максимальной производительности.

Go to the top of the page
 
+Quote Post
Methane
сообщение Feb 18 2011, 17:51
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230



Цитата(L_Konstantin @ Feb 18 2011, 18:52) *
Все транзакции по 4МБ (1024 страницы) для получения максимальной производительности.

1111493779.gif
Это как? Один запрос на 4 мегабайта? (как оно в заголовок влезло?)
Go to the top of the page
 
+Quote Post
dmitry-tomsk
сообщение Feb 18 2011, 19:17
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741



Цитата(L_Konstantin @ Feb 18 2011, 14:57) *
Имеется собственная плата с FPGA Virtex5, устанавливается в слот PCI-E x4.
В операционке (Винда) собственный драйвер.

При передаче данных по DMA (устройство в режиме master) только в одну сторону, либо операции передачи данных в ПК, либо из ПК, все работает отлично.

Но захотелось большего, и решили запустить full-duplex. И вот здесь возникла проблема: портятся данные, которые приходят из устройства в ПК.
Причем при проведении теста (заполнение памяти устройства константой и ее вычитывание), приложение на компе получает просто странные данные, никаким образом не коррелирующие с исходными. Причем в ChipScope, при попытке обнаружить передачу в EndPoint не заданной константы, этого не обнаружено, что заставляет думать о проблеме с Endpoint либо с его конфигурацией и параметрами...

Есть ли у кого опыть запуска PCIe ядра в дуплексном режиме?

Есть на ML506 на x1. Всё работает. А какое железо испольуется? Если сомнения в железе, могу помочь. Высылайте свой ucf файл, сгенерю тестовую прошивку, тестовая программа у меня под windows (jungo windriver). Правда я сам на x4 не тестировал, железа такого пока нет.
Go to the top of the page
 
+Quote Post
L_Konstantin
сообщение Feb 19 2011, 04:07
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 13-10-06
Из: Новосибирск
Пользователь №: 21 282



Цитата(Methane @ Feb 18 2011, 23:51) *
1111493779.gif
Это как? Один запрос на 4 мегабайта? (как оно в заголовок влезло?)


неправильно выразился...
запросы конечно по 4К, но у меня есть у меня есть 1024 адреса страниц (заранее подготовленных) и соответственно я их обрабатываю за раз - блок получается 4 МБ....
Go to the top of the page
 
+Quote Post
Methane
сообщение Feb 19 2011, 04:12
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230



Цитата(L_Konstantin @ Feb 19 2011, 06:07) *
неправильно выразился...
запросы конечно по 4К,

На 99.9% не правильно.
Go to the top of the page
 
+Quote Post
dmitry-tomsk
сообщение Feb 20 2011, 12:31
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741



Цитата(Methane @ Feb 19 2011, 08:12) *
На 99.9% не правильно.

Почему не правильно, в режиме scatter/gather мой контроллер тоже со страницами работает.
Go to the top of the page
 
+Quote Post
Methane
сообщение Feb 20 2011, 12:40
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230



Цитата(dmitry-tomsk @ Feb 20 2011, 14:31) *
Почему не правильно, в режиме scatter/gather мой контроллер тоже со страницами работает.

Запросами какой длинны?
Go to the top of the page
 
+Quote Post
dmitry-tomsk
сообщение Feb 20 2011, 12:43
Сообщение #15


Знающий
****

Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741



Цитата(Methane @ Feb 20 2011, 15:40) *
Запросами какой длинны?

запросы со страницами не связаны, они равны mps или mrs. Страницы нужны потому что windows больше мегабайта непрерывный кусок памяти выделять отказывается.
Go to the top of the page
 
+Quote Post

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

 


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


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