Jump to content

    

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

Сделали модуль на Arria10 10ax022e4f29i3. Предполагали использовать HardIP PCIe. Создал тестовый проект состоящий из одного контроллера Hard PCIe. Однако, на выходе контроллера не увидели частоты 125 МГц (coreclkout_hip =0).

При этом reset_status = 1; rx_is_lockedtoref = 0; rx_is_lockedtodata = 0. Но, serdes_pll_locked = 1!

Сначала думал ref_clk 100 MHz не подается на вход, однако остальная часть схемы прекрасно видит эти 100 МГц (включая сигналтап). Такое чувство, что внутренняя pll в HardIP не заводится. Но в гигибитном трансивере все заводится и locked поднимается...

Первый раз со мной такое, обычно сгенерил контроллер и он сразу заработал. По крайней мере, на предыдущих Arria 5 и Cyclone 5 все работало с полпинка. 

Кстати, этот же проект скомпиленный под KIT'овую плату с Arria10 заработал сразу.

 

Share this post


Link to post
Share on other sites

У меня когда не заводилась, я начинал все статусы просматривать. Начиная с прогрузки трансиверов, чтобы выход из резета был строго по документации. 

Share this post


Link to post
Share on other sites
22 minutes ago, new123 said:

У меня когда не заводилась, я начинал все статусы просматривать. Начиная с прогрузки трансиверов, чтобы выход из резета был строго по документации. 

Были мысли о резете, пробовали соблюсти все по документации. толку ноль. 

Причем, кит-овая плата вообще без резета на входе завелась. Вытащили ее из ПК и положили на стол, и она завелась нормально, только rx_is_lockedtodata перестала выдавать, что логично.

Share this post


Link to post
Share on other sites
30 minutes ago, influenza said:

Были мысли о резете, пробовали соблюсти все по документации. толку ноль.

то есть вы сделали свой контроллер резета? Я тоже так делал, когда проблемный чип был, помогало. Ну а вообще, я предложил просто проследить по статусным сигналам, начиная от Transiever Reconfiguraton, на какой стадии прогрузки что то идет не так, потому уже думать, это быстро вычисляется.

Кстати говоря, мне как то помогло вывести из под готовой sys (которая качается с сайта альтеры) Transiever Reconfiguraton, и завести этот контроллер в главный модуль и соединить руками. Но как потом оказалось, это просто слаки у меня были и такой ход частично помог.

Все таки думаю, я бы сначала статусные сигналы смотрел, идут ли они в последовательности как в доке. В свое время просто заманался так же корку запускать. А, ну и самое то главное, ltssm то смотрели? На какой стадии все зависает? Код ltssm. Если вдруг он продвинулся дальше, то там в доке есть рекомендации что сделать. Хотя если 125 не увидели, ltssm смотреть толку нет, корка из резета не вышла.

Edited by new123

Share this post


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

проект состоящий из одного контроллера Hard PCIe

Т.е. больше ничего? 

Может, Квартус не вывел этот сигнал, раз он не нужен дальше... (хотя должен идти дальше на реконфигурационный драйвер...)  Попробовать прикрутить к нему триггер и вывести сигнал с него на ножку микросхемы...

100 МГц refclk - с разъема PCIe? А на реконфигурационный контроллер клок откуда подается, с дополнительного генератора? (хотя, думаю, это неважно)

Edited by Yuri124

Share this post


Link to post
Share on other sites

Это то и странно, из резета не вышла, pll в Hardip частоту не залочила. Хотя в гигабитном трансивере pll входную частоту залочила. До ltssm дело не доходит - все в сбросе. Полярность сброса даже меняли - не помогло))

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

Share this post


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

из резета не вышла

это сигнал, который 

19 hours ago, influenza said:

reset_status = 1

?

Кажется - он 0 = reset, а 1 = не reset.

Как понимаю, эта плата - самодельная? Т.е. "сделали модуль" - не понятно, что имеется в виду.

А кроме refclk с PCIe еще  клок приходит на FPGA?

Share this post


Link to post
Share on other sites

Плату разработали сами.

reset_status = 1 - это значит контроллер в сбросе. это точно.

есть еще частота 25 МГц с генератора общего назначения, для других потрохов ПЛИС. К PCIe не относится. Для PCIe только refclk получается..

Share this post


Link to post
Share on other sites

rx_busy, tx_busy что показывает?

5 minutes ago, influenza said:

Плату разработали сами.

reset_status = 1 - это значит контроллер в сбросе. это точно.

у меня в SV, reset_status  = Active low reset signal. Только что посмотрел в доке

Share this post


Link to post
Share on other sites

Попробую все таки еще раз сказать. Когда у меня были проблемы с плис, я руками создавал reset sequence (свой резет контроллер) и тогда выводил hard ip core из резета сам.

Нечто подобное для моего SV. У меня была проблема, что один из трансиверов на RX не заводился по дефолтному резету, пришлось делать самому.

 

Снимок экрана от 2019-05-15 13-57-22.png

Снимок экрана от 2019-05-15 13-56-57.png

Edited by new123

Share this post


Link to post
Share on other sites

Так а что с тактированием реконфигурационного контроллера?

Он у Вас вообще есть?

У меня в свое время была мысль попробовать тактировать его от refclk, а потом - пришли другие мысли, ну и поскольку еще цена вопроса дополнительного 100 МГц генератора - копейки, решил даже и не экспериментировать.

 

nreset status (так точно называется, когда выходит из корки) идет у меня на несколько входов reset_n разных блоков, из чего делаю вывод - 0 = reset)

Edited by Yuri124

Share this post


Link to post
Share on other sites

ну да, nreset_status active low.

Я пишу про reset_status, который на figure 8-2 выше. Стоит в 1.

Реконфигурационного контроллера нет.

 

Пробовал не perst подавать меандр длительностью ~200 мс и 2 сек. Ничего не меняется. 
 

Share this post


Link to post
Share on other sites
3 minutes ago, influenza said:

Реконфигурационного контроллера нет.

У Вас PCIe Gen1? Где-то в доках было, что для такого только можно без этого контроллера. А если Gen2 или 3 - то нужно его добавлять.

Или у Вас более новый IP, где он уже внутрях интегрирован и явно снаружи не виден. Если внутри - у меня есть предположение, что его как-то тактировать нужно, и не refclk.

Share this post


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

этот же проект скомпиленный под KIT'овую плату с Arria10 заработал сразу.

Проверьте, что там за клоки подаются на FPGA кроме refclk.

Уровень reset_status на рабочей плате - проверяли, стоит 0?

Подозреваю, с обозначением сигналов может быть путаница, т.к. на картинке он reset_status, а из корки выходит nreset_status.

Ну и в Альтеровских блоках (которые есть в Квартусе) - в памяти, например, reset, в DMA reset_n. И этот nreset_status идет на оба напрямую.

Share this post


Link to post
Share on other sites

есть подозрение что не завели user_clk. На ките там 100 МГц. Пока не точно, будем проверять

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this