Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум разработчиков электроники ELECTRONIX.ru _ ISA/PCI/PCI-X/PCI Express _ Virtex-7 PCIe Gen.2 - затыкается коммуникация на 3-30мкс

Автор: syoma Sep 12 2017, 10:43

Привет.
Может кто сталкивался с разработкой асинхронных PCIe? У нас в системе процессор и ПЛИС тактируются каждый от своих 100МГц. Идет большой трафик и иногда, смотря по FPGA - трафик затыкается на 3-30мкс. Причем задержка фиксированная для определенной хардварной конфигурации. Со стороны FPGA выглядит так, что входные данные вдруг перестают приходить а для передачи Transmit TLP credits начинают стремительно уменьшаться, пока не достигают 0. Через какое-то время кредиты резко появляются и коммуникация возобновляется. Spread-Spectrum и ASPM вроде как отключены. ASYNC включен.

Автор: syoma Sep 21 2017, 14:18

Прогнали BER тесты между ПЛИС через бэкплейн - все работает без ошибок на 5Гбит.

Вопрос к знатокам, а можно ли PCIe свичи загнать в режим, в котором можно было бы делать BER тесты - ну например какой-нибудь loopback. PLX/IDT что-то такое поддерживают?

Автор: syoma Dec 20 2017, 08:16

Обнаружился интересный эффект. Оказалось, что коммуникация затыкается на этапе DDR память - PCIe свитч. Т.е. что-то, блокирует коммуникацию. Я так понимаю, что это возможно процессор во время обработки прерываний, так как блокировки учащаются, если двигать мышкой или нажимать на клавиатуру. Кто-то встречался с таким?

Автор: AVR Dec 24 2017, 12:44

С таким не сталкивался, не работал с таким конкретно железом. Но попробую пованговать.
Первое - что на стороне хоста? Что там за ПО? Какой драйвер? Какой механизм обмена данными? Если полагаетесь на готовые DMA контроллеры готовые драйверы, то понятно что там масса причин почему хост может быть не готов принимать новые данные.

Автор: krux Dec 24 2017, 12:57

Было дело с затыками записи из FPGA в DDR. Система (чипсет?) не давала сигнал готовности устройству. В тот момент у нас была двухсокетная материнка, и мы свалили это всё на межсокетную когерентность, потому что на односокетной проблема ушла.
хотя может быть это просто DDR refresh был или memory scrubbing (ECC). фиг знает.
а вообще PCIe - не реалтайм by design, поэтому никто ничего не гарантирует. извините. ph34r.gif

Автор: syoma Dec 24 2017, 15:48

В том-то и дело, что ПЛИС пишет прямо в DDR. При этом, если на хосте крутится Linux, то затыки возникают если просто дернуть мышкой или нажать клавишу на клавиатуре. Если же запустить RTOS(мы используем VxWorks), то затыки почти не проявляются - раз в 5-10 минут, но при этом их длительность становится больше. А что такое DDR refresh? Ей как-то можно управлять? Память с ECC. Хост - процессор Skylake на чипсете CM236

Автор: sysel Dec 26 2017, 10:12

Попробуйте в BIOS setup перевести USB 3.0 -> USB 2.0

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)