Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Нестабильно работает трансивер Kintex7
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
alexadmin
Занимаюсь сейчас SATA на плате с Kintex7 и уперся в некоторый тупик - поведение трансивера меняется от ресета к ресету и, чаще всего, не обеспечивает нормальной работы.
Сгенерирован стандартный пример на 3 ГБит/с с минимумом изменений, для процедуры сброса используется встроенный контроллер, т.е. снаружи сброс подается только сигналом soft_reset. Далее я наблюдаю происходящее после сброса, ориентируясь главным образом на признак rxnotintable, говорящий об ошибке на нижнем уровне при 10b/8b-декодировании внутри трансивера (ну и заодно rxdisperr).

Я вижу что:
1. Иногда (1 случай из 20) все работает нормально, правда с периодом в минуту-пять-полчаса может проскочить одиночная ошибка (тоже ведь не нормально или как?)
2. В большинстве случаев после прохождения процедур OOB начинают сыпаться ошибки (сразу или через некоторое время). При этом alignment обычно проходит, а вот дальше уже все тухло. От случая к случаю ошибки могут вылезать или длинными периодами, или быть перманентными (например каждое четвертое принятое слово - с ошибкой).

Будь это моя собственная логика, я бы списал на асинхронщину, клоки/сбросы и т.п. Ну тут все происходит внутри адской коробочки и как быть непонятно.

На данный момент я успел проверит следующее:

1. Тупой тест с PRBS на базе готового примера через loopback-кабель проходит - то есть линия сама по себе целая. IBERT тест к сожалению запустить не удается. По невыясненным причинам вивада говорит, то debug-ядра внутри проекта нет (или клока нет). Хотя берется готовый пример,а клок тот же, что и в рабочем проекте.
2. Был найден AR# 53364 с указанием какие параметры задавать RX CDR для разных протоколов. Ни к каким видимым эффектам не привело.
3. Поигрался с разными режимами эквалайзера, впрочем не особо понимая их внутреннюю физику. Опять-таки видимого результата нет.
4. Естественно попробовал разные кабели и несколько жестких дисков.
5. Тайминги в проекте вроде как проходят, но даже если бы не проходили - это все снаружи, а проблемы начинаются непосредственно с приема внутри трансивера.
6. Кое где были упоминания про длительную настройку эквалайзера, которая может мешать начальной процедуре установления соединения. Возможно, но по крайней мере по ее окончании я должен получать из линии символы без ошибок - а сыпятся rxnotintable.


Может кто-то боролся с похожими проблемами и может навести на след проблемы?
dm.pogrebnoy
MMCM сбрасываете вместе с soft_reset? Может забыли подождать пока он залочится?
У меня сбоев в течении нескольких часов к ряду не наблюдается, не должно такого быть. Эластичный буфер включен?
alexadmin
Цитата(dm.pogrebnoy @ Feb 24 2015, 18:41) *
MMCM сбрасываете вместе с soft_reset? Может забыли подождать пока он залочится?
У меня сбоев в течении нескольких часов к ряду не наблюдается, не должно такого быть. Эластичный буфер включен?


Буферы включены. Со сбросом вроде честно - непосредственно при работе с трансивером MMCM не используется, задействована только частота, приходящая прямо с GTX (linespeed/20, и usrclk и usrclk2 - одинаковая). Впрочем MMCM тоже ставить пробовал (естественно задействуя его lock для сброса) - без разницы.
dm.pogrebnoy
Что за плата? Что за опорный генератор? Как дела обстоят с терминацией (такта и данных)? Используете ли вы FSM для сброса, которая идет с примером к GTX визарду? - были там какие-то заморочки. Можно наверно выложить трансивер сюда на форум.
AndreiUS
Если плата самодельная, то я бы в первую очередь проверил тактирование. Трансиверы очень критичны к качеству тактового сигнала, если джиттер клока выходит за рамки дозволенного, то будут происходить как раз периодические ошибки или даже потеря линка.
silantis
Вполне может оказаться что Вы так и не решите эту проблему. Знакомые ребята заложились на Kintex7 и не смогли надежно запустить SATA, даже в усеченном виде, с поддержкой только перекачки данных. Когда стали разбираться и задавать вопросы Xilinx, те тупо открестились что они нигде не сказали, что можно реализовать SATA на Xilinx. И даже на сайте Xilinx нет родных корок SATA, можно найти корку от третьестороннего разработчика, в спецификации есть пунктик "SATA spec validated NO". Я бы постарался не связываться с Kintex и вообще с Xilinx, у них там где то глубоко, не помню в чем, есть засада с трансиверами, которая не позволяет реализовать SATA. Переходите на Altera, там вроде ситуация намного лучше. Не проверял, но навскидку они явно рекламируют свои IPCore SATA.
dm.pogrebnoy
Цитата(silantis @ Feb 25 2015, 20:25) *
Вполне может оказаться что Вы так и не решите эту проблему. Знакомые ребята заложились на Kintex7 и не смогли надежно запустить SATA, даже в усеченном виде, с поддержкой только перекачки данных. Когда стали разбираться и задавать вопросы Xilinx, те тупо открестились что они нигде не сказали, что можно реализовать SATA на Xilinx. И даже на сайте Xilinx нет родных корок SATA, можно найти корку от третьестороннего разработчика, в спецификации есть пунктик "SATA spec validated NO". Я бы постарался не связываться с Kintex и вообще с Xilinx, у них там где то глубоко, не помню в чем, есть засада с трансиверами, которая не позволяет реализовать SATA. Переходите на Altera, там вроде ситуация намного лучше. Не проверял, но навскидку они явно рекламируют свои IPCore SATA.


Конечно, люди сталкиваются с проблемами при реализации SATA на Kintex-7, но вроде бы успешно их решают. Есть там не мало тонкостей, но это не значит что нельзя сделать стабильную конфигурацию. тыц
Кстати, надеяться что визард вам все настроит, это сомнительно. На Virtex-6, по крайней мере, пришлось основательно разобраться какой параметр за что отвечает и править руками.
curly07
Цитата(silantis @ Feb 25 2015, 20:25) *
Вполне может оказаться что Вы так и не решите эту проблему. Знакомые ребята заложились на Kintex7 и не смогли надежно запустить SATA, даже в усеченном виде, с поддержкой только перекачки данных. Когда стали разбираться и задавать вопросы Xilinx, те тупо открестились что они нигде не сказали, что можно реализовать SATA на Xilinx. И даже на сайте Xilinx нет родных корок SATA, можно найти корку от третьестороннего разработчика, в спецификации есть пунктик "SATA spec validated NO". Я бы постарался не связываться с Kintex и вообще с Xilinx, у них там где то глубоко, не помню в чем, есть засада с трансиверами, которая не позволяет реализовать SATA. Переходите на Altera, там вроде ситуация намного лучше. Не проверял, но навскидку они явно рекламируют свои IPCore SATA.


Очень похоже на агитацию за "советскую власть".

По делу - вот корки для работы с SATA для Xilinx.
Все ок с ними.
http://www.intelliprop.com/sata-bridge-videos-demos.htm
Кому надо - у меня есть контакты человека из этой конторы.
alexadmin
Цитата(dm.pogrebnoy @ Feb 25 2015, 12:09) *
Что за плата? Что за опорный генератор? Как дела обстоят с терминацией (такта и данных)? Используете ли вы FSM для сброса, которая идет с примером к GTX визарду? - были там какие-то заморочки. Можно наверно выложить трансивер сюда на форум.


Плата самопадельная, что вносит некоторые опасения. Клоки идут с PLL TI CDC62005. От нее же тактируется много всего еще, в том числе Serial RapidIO 5.0Gbps на той же FPGA (и вроде работает).
Да, использую встроенный FSM для сброса. Изначально рисовал на бумажке по юзергайду, хотел сделать сам - но в итоге то, что генерирует встроенный контроллер совпало с моими представлениями.
Вот с терминацией вопрос хороший оказался. Я стал уже сам смотреть и выяснилось, что схему делали из общих соображений, поставив разделительные конденсаторы по 100 нФ на приемной линии. А в sata просят не более 12 нф, причем ставят с обеих сторон и на приемник и на передатчик. Сейчас коллеги думают как быть... Но у меня сомнения в том, что это корень проблемы...


Цитата
Кстати, надеяться что визард вам все настроит, это сомнительно. На Virtex-6, по крайней мере, пришлось основательно разобраться какой параметр за что отвечает и править руками.


На счет править руками настройки визарда - пока только RXCDR_CFG, больше не накопал ничего. Остальное либо вещи функциональные, которые вроде и не надо трогать, либо настолько невнятные, что остается только 2^n комбинаций перебирать. Может порекомендуете, какого рода настройки вам пришлось править?
dm.pogrebnoy
Цитата(alexadmin @ Feb 26 2015, 13:04) *
Вот с терминацией вопрос хороший оказался. Я стал уже сам смотреть и выяснилось, что схему делали из общих соображений, поставив разделительные конденсаторы по 100 нФ на приемной линии. А в sata просят не более 12 нф, причем ставят с обеих сторон и на приемник и на передатчик. Сейчас коллеги думают как быть... Но у меня сомнения в том, что это корень проблемы...


Не забывайте что на такт тоже требуются разделительные конденсаторы по 0,1 мкФ.

Цитата(alexadmin @ Feb 26 2015, 13:04) *
На счет править руками настройки визарда - пока только RXCDR_CFG, больше не накопал ничего. Остальное либо вещи функциональные, которые вроде и не надо трогать, либо настолько невнятные, что остается только 2^n комбинаций перебирать. Может порекомендуете, какого рода настройки вам пришлось править?

В моем случае была проблема с TXDIFFCTRL. Визард ставил 4'b0000 вместо 4'b1000. Но в этом случае вообще ничего не работало.

Убедитесь перед работой что все такты устаканились. При появлении ошибок эластичного буфера его нужно сбросить, иначе может не заработать. Ну и в принципе, не плохо было бы промониторить его работу. Воспринимает ли он ALIGNp...
alexadmin
Цитата(dm.pogrebnoy @ Feb 26 2015, 13:32) *
Не забывайте что на такт тоже требуются разделительные конденсаторы по 0,1 мкФ.


Да, это есть.

Цитата
В моем случае была проблема с TXDIFFCTRL. Визард ставил 4'b0000 вместо 4'b1000. Но в этом случае вообще ничего не работало.


Увы, там по умолчанию уже стоит 1000. Пробовал увеличить - без разницы...
dm.pogrebnoy
Кстати, в даташите пишут что нельзя верить сигналу RXBYTEISALIGNED - это учли?
VladimirB
Цитата(silantis @ Feb 25 2015, 20:25) *
Вполне может оказаться что Вы так и не решите эту проблему. Знакомые ребята заложились на Kintex7 и не смогли надежно запустить SATA, даже в усеченном виде, с поддержкой только перекачки данных. Когда стали разбираться и задавать вопросы Xilinx, те тупо открестились что они нигде не сказали, что можно реализовать SATA на Xilinx. И даже на сайте Xilinx нет родных корок SATA, можно найти корку от третьестороннего разработчика, в спецификации есть пунктик "SATA spec validated NO". Я бы постарался не связываться с Kintex и вообще с Xilinx, у них там где то глубоко, не помню в чем, есть засада с трансиверами, которая не позволяет реализовать SATA. Переходите на Altera, там вроде ситуация намного лучше. Не проверял, но навскидку они явно рекламируют свои IPCore SATA.

Объясните как же SATA 3G у нас работает на Xilinx Virtex6? Причём на древнем отладочнике ML605 много Б/У, с припаянным советскими проводами МГТФ к FMC разъёму SATA коннектором ?
"Родных корок SATA" на сайте нет, потому что и у конкурентов их нету: "Altera's partners developed SATA and SAS IP for both host and device interfaces". На xilinx.com тоже ссылка на сторонних разработчиков, которые за десятки килобаксов барыжат корками. Вообще в целом у Альтеры кол-во платных ядер поболее будет.

bb-offtopic.gif
А ещё документация у Альтеры написана очень мутно. Недавно захотели выяснить могут ли serdes'ы Arria V работать в DDR режиме, перечитали несколько раз волшебный Handbook - не нашли.
Помнится уважаемый DES00 писал, что Стратихс 4 так не умеет делать, вот и захотели посмотреть не научилась ли Arria V, делать то, что давно умеют делать все FPGA хилых, начиная с Virtex4 (V4,V5,V6,V7,S6,A7,K7).
Даже яндекс про это слышал: http://electronix.ru/forum/index.php?showtopic=94403
Вот и непонятно - толи доки кривые, толи так действительно до сих пор не умеют и боятся сказать прямо об этом.
У хилых такие базовые вещи, как режимы работы сердезов, расписаны досконально.

З.Ы. Чуток похоливарили и хватитsm.gif
alexadmin
Цитата(dm.pogrebnoy @ Feb 26 2015, 15:12) *
Кстати, в даташите пишут что нельзя верить сигналу RXBYTEISALIGNED - это учли?


В смысле вот это?

Цитата
In systems that use the RX OOB block, such as PCIe and SATA, after locking to a valid byte boundary and asserting the RXBYTEISALIGNED signal, the byte align block might occasionally deassert the RXBYTEISALIGNED signal even when there is no change in the byte boundary. In such applications, RXBYTEISALIGNED should not be used as a valid indicator of the change in byte boundary after the first assertion.


Ага. Но на практике я такой ситуации пока не наблюдал...
Eugenius
Цитата(silantis @ Feb 25 2015, 20:25) *
Вполне может оказаться что Вы так и не решите эту проблему. Знакомые ребята заложились на Kintex7 и не смогли надежно запустить SATA, даже в усеченном виде, с поддержкой только перекачки данных. Когда стали разбираться и задавать вопросы Xilinx, те тупо открестились что они нигде не сказали, что можно реализовать SATA на Xilinx. И даже на сайте Xilinx нет родных корок SATA, можно найти корку от третьестороннего разработчика, в спецификации есть пунктик "SATA spec validated NO". Я бы постарался не связываться с Kintex и вообще с Xilinx, у них там где то глубоко, не помню в чем, есть засада с трансиверами, которая не позволяет реализовать SATA. Переходите на Altera, там вроде ситуация намного лучше. Не проверял, но навскидку они явно рекламируют свои IPCore SATA.

"Переходи на тёмную сторону, у нас есть печеньки!" (с)

У нас SATA отлично работает в Kintex7. Большая часть проблем - собственные ляпы и особенности работы отдельных моделей винчестеров. Но это уже уровень транспортника, к кристаллу не имеет отношения. С физикой вопросов не было.
silantis
Я предлагаю ТС не слушать горячих русских парней у которых все пашет на столе, а задать вопрос напрямую компании Xilinx, подтверждают ли они полную поддержку спецификации SATA, а лучше SATA-II на своих трансиверах в Kintex7. Можно завести SATA через задницу и он даже будет работать с SSD Intel, но это именно через задницу и без гарантии полной совместимости. Если Вас такое устроит, ребята из Ленинграда подскажут Вам как заделать корку SATA на плате ML605 с проводами на соплях.
А если серьезно, как выясните у Xilinx, не поленитесь сюда выложить официальный ответ.
VladimirB
Цитата(silantis @ Feb 27 2015, 21:56) *
Я предлагаю ТС не слушать горячих русских парней у которых все пашет на столе, а задать вопрос напрямую компании Xilinx, подтверждают ли они полную поддержку спецификации SATA, а лучше SATA-II на своих трансиверах в Kintex7. Можно завести SATA через задницу и он даже будет работать с SSD Intel, но это именно через задницу и без гарантии полной совместимости. Если Вас такое устроит, ребята из Ленинграда подскажут Вам как заделать корку SATA на плате ML605 с проводами на соплях.
А если серьезно, как выясните у Xilinx, не поленитесь сюда выложить официальный ответ.

А чего оно может не поддерживать?
Физический уровень - CML. Джиттер определяется в основном внешним источником тактирования.
Скорость - см. даташит и еррату, если написано 6Gb/s - значит тянет.
Кодирование 8/10 ? - оно бы и PCI-E не работало.
Что есть в SATA такого особенного, чего нет в Serial RapidIO и PCI-E. Остальное всё программируется.
Вот всякие визарды могут косячить, опять же с программируемыми настройками.

Вот ещё некий пруфлинк
http://www.xilinx.com/products/intellectua...4.html#overview

А разве в компьютерном ширпотребе есть гарантии совместимости и безглючной работы?
Совместимость это наверное когда SSD глючит и внезапно падает, т.к. у него прошивку не обновили вовремя, а SATA у него продолжает работать.
dm.pogrebnoy
Цитата(silantis @ Feb 27 2015, 21:56) *
Я предлагаю ТС не слушать горячих русских парней у которых все пашет на столе, а задать вопрос напрямую компании Xilinx, подтверждают ли они полную поддержку спецификации SATA, а лучше SATA-II на своих трансиверах в Kintex7. Можно завести SATA через задницу и он даже будет работать с SSD Intel, но это именно через задницу и без гарантии полной совместимости. Если Вас такое устроит, ребята из Ленинграда подскажут Вам как заделать корку SATA на плате ML605 с проводами на соплях.
А если серьезно, как выясните у Xilinx, не поленитесь сюда выложить официальный ответ.


Нет, у ребят из Ленинграда может и без соплей.
Нажмите для просмотра прикрепленного файла
silantis
Цитата(dm.pogrebnoy @ Feb 28 2015, 11:32) *
Нет, у ребят из Ленинграда может и без соплей.


Картинка красивая, представляю сколько крови потрачено чтобы оно вот так получилось. Вызывает искреннее уважение.
Молодцы.
alexadmin
Цитата(silantis @ Feb 27 2015, 21:56) *
задать вопрос напрямую компании Xilinx, подтверждают ли они полную поддержку спецификации SATA, а лучше SATA-II на своих трансиверах в Kintex7.


Они, собственно, сами же на вопрос в доках и отвечают: не подтверждают, т.к. трансиверы как минимум не умеют spread-spectrum clock. Если пошаманить, то приемник должен уметь цепляться за такой клок, а вот выдавать такой сам передатчик не умеет.

Рассказываю дальше:
в самом первом сообщении писал, что у меня в упор не хочет работать IBERT на плате, хоть убейся. Добрался, наконец, до другой платы, попробовал на ней - работает. Зато мой рабочий проект работает еще хуже. [обсценная лексика пропущена]. Начинаю грешить на качество клоков, но как их вывести на чистую воду - пока непонятно.
DmitryR
Цитата(alexadmin @ Feb 26 2015, 14:04) *
Плата самопадельная, что вносит некоторые опасения.

Ну так возьмите кит и попробуйте на нём. По крайней мере сразу станет ясно, в коде косяк или в железе. А так как второе, на мой взгляд, более вероятно, ибо с кодом вы уже похоже хорошо наигрались - дадите потом схему кита срисовать разработчику платы.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.