Jump to content

    
Sign in to follow this  
influenza

Проблема с PCIe в Arria10.

Recommended Posts

2 hours ago, influenza said:

что не завели user_clk

это чего за зверь такой?

pci корка тактируется двумя клоками:

1) Непосредственно refclk, который можно взять со слота pcie, либо свой от куда нибудь с платы
2) Затактировать реконфигурейшен контроллер (может у вас это и есть user_clk), тоже 100Mhz или 125. Я прям беру тот же клок со слота.

Share this post


Link to post
Share on other sites
1 minute ago, new123 said:

Я прям беру тот же клок со слота

Я побоялся его брать - не уверен, что все материнки всегда его там поддерживают не снимая.

Возможно, в BIOSе компа это управляется, не стал рисковать.

Где-то в описании PCIe корки его параметры указаны, кажется (но не точно) , что он может быть и меньше 100 МГц.

Но если у ТС не завели его на ноги микросхемы на самодельной плате - то попробовать можно в качестве его взять refclk со слота PCIe. Или попробовать имеющуюся 25 МГц использовать - напрямую или через PLL поднять до 100МГц.

Share this post


Link to post
Share on other sites
1 minute ago, Yuri124 said:

Где-то в описании PCIe корки его параметры указаны, кажется (но не точно) , что он может быть и меньше 100 МГц.

Gen1 можно еще завести с ~62Mhz (точно не помню). А так в настройке корки выставляется только или 100 или 125.

3 minutes ago, Yuri124 said:

Или попробовать имеющуюся 25 МГц использовать - напрямую или через PLL поднять до 100МГц.

Я кстати пробовал так. Сильно от чипа зависит. Надо чтобы pll была в том же банке, где hard ip. Учитывая, что сама корка занимает гору pll в этом же банке, дизайн можно не уместить

 

6 minutes ago, Yuri124 said:

Я побоялся его брать - не уверен, что все материнки всегда его там поддерживают не снимая.

если не конфигурировать ПЛИС через pcie на старте, то да, можно с платы с какой нить pll взять. Так многие альтеровские доски и делают.

Share this post


Link to post
Share on other sites
1 minute ago, new123 said:

Gen1 можно еще завести с ~62Mhz (точно не помню). А так в настройке корки выставляется только или 100 или 125.

Я про другой клок - который на реконфигурационный контроллер идет. Он независим от PCIe. Там то ли от 70 МГц можно клок использовать, не помню уже.

Share this post


Link to post
Share on other sites

Проверьте генератор на соответствие PCIe, была похожая проблема, эзернет трансиверы заводились с полпинка, а PCIe не поднимался.

Проблема оказалась в генераторе, что-то со спектром, точно уже не помню, дело было года 2 назад.

Заменили генератор и все заработало.

 

Share this post


Link to post
Share on other sites

Кстати, интересный вопрос - каков алгоритм отладки, когда на Stratix-V не поднимается линк на PCI Express?

Есть плата, на которой все работает, и вторая, где то же самое ядро (Hard IP, самое простое сгенеренное из визарда) не заводится. Само собой, материнка после неудачных попыток соединения отключает тактовый сигнал.

С чего начать разбираться?

Share this post


Link to post
Share on other sites
40 minutes ago, Flood said:

С чего начать разбираться?

я тут уже не раз написал как делал это я. 

1) Если не вышла из резета корка, то выводим в сигналтап (в визарте активируем все статусные сигналы корки и статусные сигналы реконфигурейшен контроллер), либо в какие логи полностью всю последовательность Reset Sequence сигналов и сверяем с документацией. Вся последовательность сигналов при выходе из резета должна выглядеть 1 в 1 как по мануалу. Если что то пошло не так, смотреть какой там сигнал залип и думать чего с ним делать.

2) Если из резета вышла, но застряла. Смотрим ltssm, открываем мануал. В конце есть раздел Debug..... Смотрим на каком этапе застрял ltssm и выполняем рекомендации

Edited by new123

Share this post


Link to post
Share on other sites
10 hours ago, Flood said:

С чего начать разбираться?

Проблемы с железом (питание, тактовые генераторы, конденсаторчики развязывающие в трансиверах, пайка микросхемы, плата) тоже бы не исключал.

Share this post


Link to post
Share on other sites

Генератор меняли. Не помогло. Ранее тоже были подобные проблемы с гигабитными трансиверами, работали нестабильно. стали использовать клок с внутренней pll и все заработало стабильно. С PCIe так не прокатывает.

Здесь неоднократно упоминали реконфигурационный контроллер. Имею квартус 18.1 и ПЛИС Arria10 022. Не могли бы Вы "пальцем ткнуть" где взять реконф. контроллер? И куда его цеплять к корке? 

Кстати, не стоит забывать что этот же проект прекрасно заработал на КИТе.

Share this post


Link to post
Share on other sites
1 hour ago, influenza said:

не стоит забывать что этот же проект прекрасно заработал на КИТе.

Вот потому я про железо в первую очередь.

1 hour ago, influenza said:

реконфигурационный контроллер

Это в старой корке PCIe, которая была еще в 13-м Квартусе - там кроме собственно PCIe к нему цепляются два блока - alt_xcvr_reconfig и pcie_reconfig_driver, работающие в паре и нужные для динамической "подстройки" трансиверов.

Эта связка в готовом виде со всеми подключениями есть в альтеровских примерах, работает из коробки. Только в головном файле top_msgdma_ep_g2x4 я, возможно, подправил логические уровни на проводах test_in[31:0] в соответствии с описанием корки.

Позже Альтера выпустила корку поновее, во встроенным DMA. Там, вполне возможно, эти контроллер и драйвер уже встроены внутри и для пользователя явно не видны. Но мой CycloneV полноценно ее не потянул (PCIe заработало сразу, но с внутренними блоками памяти нужного размера времянка не сходилась на 10-15%, хотя и работало). ArriaV самая медленная - времянка сошлась с запасом.

 

Вот написал "эти контроллер и драйвер уже встроены внутри и для пользователя явно не видны" - а ведь это запускалось на том же ките, с теми же клоками - один клок для трансиверов и PCIe - 100МГц со слота PCIe материнки, второй - 100МГц - с генератора на ките.

Вот еще вспомнил - когда сделал свою плату, но немного на другом кристалле (попроще), чем на ките, и в Квартусе поменял микросхему и, естественно, порты микросхемы - не хотел работать этот генератор - он был заведен в блок с трансиверами !!! (т.е. сигнал не проходил внутрь проекта, кажется, PCIe не работал). И не помню уже, что там было с ворнингами. Но я на всякий случай заложил еще один такой же генератор на свою плату, на другие ноги микросхемы - с ним все запускалось без проблем. 

А первый генератор пробился внутрь только после того, как я тупо снес свои назначения портов, потом Квартус расставил по-своему, потом - опять переназначил, как мне нужно было - точно так же, как и раньше - и - чудо - заработало...

Edited by Yuri124

Share this post


Link to post
Share on other sites
1 hour ago, Yuri124 said:

и pcie_reconfig_driver

кстати я его пробовал выкидывать из проекта и тоже стартует, но в боевых условиях не проверял, все же решил оставить.

Share this post


Link to post
Share on other sites
2 hours ago, influenza said:

десь неоднократно упоминали реконфигурационный контроллер.

качнул готовую корку для вашей Арии 10 с дма контроллером, там его действительно нет. Интересно, может уже и не надо

Но есть галка Enable Dynamic Transciever Reconfig и появляются интерфейсы для него. Я бы попробовал цепануть, у меня без него плохо все работало

Share this post


Link to post
Share on other sites
1 hour ago, new123 said:

тоже стартует, но в боевых условиях не проверял, все же решил оставить

Думаю - правильно. У альтеры было где-то workaround кажется при загрузке через PCIe, какой-то трабл с этими контроллерами. Заключался этот workaround в том, что тупо какое-то число цеплялось вместо конроллера (или драйвера, не помню). Т.е. без них - работать может и будет (но, вполне вероятно, нужно при старте что-то прописать в регистры, управляющие трансиверами). Но как долго - хз, т.к. от температуры, разброса параметров плат, от экземпляра к экземпляру может потребоваться подстройка трансиверов.

А так альтера писала, что при 2,5ГГц они не нужны.

1 hour ago, new123 said:

качнул готовую корку для вашей Арии 10 с дма контроллером

А клоки какие туда подаются (ну, кроме refclk)?

 

 

Вот еще подумал - т.к. плата самодельная, может такое быть, что PCIe не выходит из reset из-за плохого качества сигнала (плохая разводка или что-то с деталями) трансиверов, хотя трансиверы запускаются и PLL работает...

Вроде как и нелогично такое поведение, но...

Edited by Yuri124

Share this post


Link to post
Share on other sites

Разобрались.

У Арии10 есть вход CLKUSR. На него требуется подавать 100-125 МГц. "This pin is used as the clock for transceiver calibration...". (pcg-01017.pdf)

Припаяли генератор 100 МГц.

Все заработало, coreclk_out пошел, линки поднялись.

Вообщем не дочитали доки, когда Э3 делали. Теперь на этот вход надо подавать 100 МГц всегда, если используешь гигибитные трансиверы.

При старом режиме такого не было... )))

 

Всем спасибо, учитесь на наших ошибках)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this