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

 
 
> Реализация 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
 
Start new topic
Ответов
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
Methane
сообщение Feb 18 2011, 12:22
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 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
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 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
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 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
L_Konstantin
сообщение Feb 19 2011, 04:07
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 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
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 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
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #13


Знающий
****

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



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

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


Гуру
******

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



Цитата(dmitry-tomsk @ Feb 20 2011, 14:43) *
запросы со страницами не связаны, они равны mps или mrs.

Что такое mps, mrs? в корке альтеровской есть регистр, в котором максимальный размер запроса.

Цитата
Страницы нужны потому что windows больше мегабайта непрерывный кусок памяти выделять отказывается.

page, вообще-то 4килобайта. и пересекать ее нельзя. И линух тоже больше чем сколько-то не дает (не помню сколько) но это можно побороть.
Go to the top of the page
 
+Quote Post
dmitry-tomsk
сообщение Feb 20 2011, 15:50
Сообщение #15


Знающий
****

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



Цитата(Methane @ Feb 20 2011, 15:52) *
Что такое mps, mrs? в корке альтеровской есть регистр, в котором максимальный размер запроса.


page, вообще-то 4килобайта. и пересекать ее нельзя. И линух тоже больше чем сколько-то не дает (не помню сколько) но это можно побороть.

mps - max payload size, mrs - max read size, определяются чипсетом (root complex), для большинства чипсетов 128 байт. За пересечением границ должен следить автомат, формирующий запросы.
Go to the top of the page
 
+Quote Post
Fast
сообщение Feb 26 2011, 20:34
Сообщение #16


Местный
***

Группа: Свой
Сообщений: 216
Регистрация: 31-03-05
Из: Зеленоград
Пользователь №: 3 839



Цитата(dmitry-tomsk @ Feb 20 2011, 18:50) *
mps - max payload size, mrs - max read size, определяются чипсетом (root complex), для большинства чипсетов 128 байт. За пересечением границ должен следить автомат, формирующий запросы.
если точнее, то они определяются по согласованию между возможностями ОС, чипсета и Core.
а непрерывный кусок памяти ядра windows можно выделить больше 1 Мб, кажется 16... но не помню, давно драйвер писал


Цитата(dmitry-tomsk @ Feb 26 2011, 23:02) *
Понятно, спасибо. А не наблюдали, случайно, зависания операционной системы при максимальной загрузке приёмной линии? У меня на x1 упорно виснит, если поток данных читать быстрее чем 167 мбайт в секунду, приходится ограничивать скорость чтения (:
ой, че только не наблюдали, висло по разному... и искажения периодически появлялись. В основном правда из-за размеров TLP и DMA-блока данных.

Сидели пыхтели вдвоем, я писал драйвер, а коллега правил обвязку. Сначала подправили кусок кода, чтоб правильно писать в регистры (из ендпоинта) и соотв. читать регистры (из драйвера) флаги о состоянии и готовности буферов. Там была такая фишка, что последний пакет блока не успевал "долететь" в буфер на хост, а драйвер забирал уже весь буфер, т.к. регистры показывали что все готово. Потом на высоких скоростях одно ядро CPU было занято на 100% только на мониторинг регистров и рестарт контроллера, - переписали другой фрагмент обвязки и драйвера. Потом понадобилось пересылать доп. данные - дописали третий, и т.д. много мелких неприятностей, с которыми приходилось бороться днями и неделями
Go to the top of the page
 
+Quote Post
dmitry-tomsk
сообщение Feb 26 2011, 21:26
Сообщение #17


Знающий
****

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



Цитата(Fast @ Feb 27 2011, 00:34) *
если точнее, то они определяются по согласованию между возможностями ОС, чипсета и Core.
а непрерывный кусок памяти ядра windows можно выделить больше 1 Мб, кажется 16... но не помню, давно драйвер писал


ой, че только не наблюдали, висло по разному... и искажения периодически появлялись. В основном правда из-за размеров TLP и DMA-блока данных.

Сидели пыхтели вдвоем, я писал драйвер, а коллега правил обвязку. Сначала подправили кусок кода, чтоб правильно писать в регистры (из ендпоинта) и соотв. читать регистры (из драйвера) флаги о состоянии и готовности буферов. Там была такая фишка, что последний пакет блока не успевал "долететь" в буфер на хост, а драйвер забирал уже весь буфер, т.к. регистры показывали что все готово. Потом на высоких скоростях одно ядро CPU было занято на 100% только на мониторинг регистров и рестарт контроллера, - переписали другой фрагмент обвязки и драйвера. Потом понадобилось пересылать доп. данные - дописали третий, и т.д. много мелких неприятностей, с которыми приходилось бороться днями и неделями

У меня sgdma режим и кольцевые буферы по 50 МБайт, так что таких проблем не было. А вот чтение виснет, скорость для x1 предельная - чипскоп показывает, что обмен идёт, ошибок нет, а ОС висит мёртво. Как только вставляю паузы в последовательности запросов - всё нормально. Возможно, на x8 hard ip не может полностью загрузить полосу и такого эффекта нет, но проверить пока не на чем. А что за железо у Вас?
Go to the top of the page
 
+Quote Post
Anatol'
сообщение Mar 4 2011, 07:23
Сообщение #18


Участник
*

Группа: Свой
Сообщений: 74
Регистрация: 28-01-10
Из: Новосибирск
Пользователь №: 55 106



Цитата(dmitry-tomsk @ Feb 27 2011, 03:26) *
У меня sgdma режим и кольцевые буферы по 50 МБайт, так что таких проблем не было. А вот чтение виснет, скорость для x1 предельная - чипскоп показывает, что обмен идёт, ошибок нет, а ОС висит мёртво. Как только вставляю паузы в последовательности запросов - всё нормально. Возможно, на x8 hard ip не может полностью загрузить полосу и такого эффекта нет, но проверить пока не на чем. А что за железо у Вас?

У нас была похожая проблема.
http://electronix.ru/forum/index.php?showtopic=73356
Вкратце, на дефолтных настройках при слишком бодром потоке данных корка начинала сбрасывать пакеты. А не получив ожидаемого числа пакетов колом может встать уже любая часть системы )
Вылечилось одной галочкой в настройках корки.
Go to the top of the page
 
+Quote Post
dmitry-tomsk
сообщение Mar 4 2011, 19:48
Сообщение #19


Знающий
****

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



Цитата(Anatol' @ Mar 4 2011, 10:23) *
У нас была похожая проблема.
http://electronix.ru/forum/index.php?showtopic=73356
Вкратце, на дефолтных настройках при слишком бодром потоке данных корка начинала сбрасывать пакеты. А не получив ожидаемого числа пакетов колом может встать уже любая часть системы )
Вылечилось одной галочкой в настройках корки.

Спасибо за помощь. Правда у меня не вылечилось, да и корка сама не висит, обмен идёт, ошибок не показывает, а windows висит (:
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- L_Konstantin   Реализация PCI-E x4 на Virtex5   Feb 18 2011, 10:57
|- - DmitryR   Может разведено криво, и TX/RX пары наводят друг н...   Feb 18 2011, 11:49
|- - Methane   Цитата(dmitry-tomsk @ Feb 20 2011, 17...   Feb 20 2011, 16:00
|- - Methane   Цитата(Anatol' @ Mar 4 2011, 09:23) В...   Mar 4 2011, 07:26
- - dmitry-tomsk   Цитата(L_Konstantin @ Feb 18 2011, 14:57)...   Feb 18 2011, 19:17
- - ZAO   Цитата(L_Konstantin @ Feb 18 2011, 13:57)...   Feb 21 2011, 08:01
|- - L_Konstantin   Цитата(ZAO @ Feb 21 2011, 14:01) Сталкива...   Feb 22 2011, 10:47
- - D-Luxe   Какая у тя плата? Посоветуй какую-нибудь плату Xil...   Feb 22 2011, 12:48
|- - L_Konstantin   Цитата(D-Luxe @ Feb 22 2011, 18:48) ...   Feb 24 2011, 03:24
|- - Bad0512   Цитата(L_Konstantin @ Feb 24 2011, 09:24)...   Feb 25 2011, 12:02
- - Fast   у нас на 5м Virtex все работало на x8, примерно 1...   Feb 26 2011, 11:11
|- - Methane   Цитата(Fast @ Feb 26 2011, 13:11) для нач...   Feb 26 2011, 12:15
||- - Fast   Цитата(Methane @ Feb 26 2011, 15:15) Реал...   Feb 26 2011, 19:50
||- - dmitry-tomsk   Цитата(Fast @ Feb 26 2011, 23:50) позволя...   Feb 26 2011, 20:02
|- - dmitry-tomsk   Цитата(Fast @ Feb 26 2011, 14:11) у нас ...   Feb 26 2011, 15:09
- - L_Konstantin   Наконец разобрались с проблемой!... Дело было ...   Mar 5 2011, 09:34


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

 


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


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