Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Spartan6: странное поведение GTP
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
olegras
Суть проблемы: Камень XC6SLX75Т-3 с двумя GTP_DUAL tile. В каждом tile GTP0 настроен как трансивер SATA, GTP1 не используется. Между GTP0 - заворот SATA кабелем.
Атрибуты GTP - на основе визарда + ug386. При синтезе для скорости SATA2 - GTP видят данные друг друга без сбоев, как примитивы, так и данные.
При синтезе для скорости SATA1 - один из трансиверов работает стабильно, на передаче второго - абракадабра. Прием второго работает нормально.
Поиск в сети возможных решений навел на факт, что с подобным поведением сталкивались уже несколько разработчиков. Ни в одном случае решение так и не предложено.
Настройки и перенастройки GTP (ессно по ug386) ни к чему хорошему не привели sm.gif.
Каждым из GTP подключался и к материнке (как device), и и к HDD (как host). Поведение одинаково: при 3 Гб/с линк проходил в обе стороны, как в спецификации SATA. При 1,5 Гб/с на одном GTP линк происходит стабильно, на втором - после обмена OOB сигнализацией ответная сторона не видит корректных сигналов от GTP.
Собственно поэтому и пришлось переходить к завороту кабелем. Так определил, что проблема именно в TX.
Кто что может посоветовать?
Да, имеется две одинаковых платы. Обе имеют одинаковое вышеописанное поведение, т.е. не корректно работает передатчик одного и того же GTP.

На "неисправном" GTP после дергания GTPRESET -> TXBUFSTATUS(1) выставляется в единицу практически сразу вместе с RESETDONE. То есть происходит немедленное событие переполнения буфера передачи. А вот вследствии чего - никак не могу разобраться. Пробовал отдельно дергать TXRESET (как приписано в ug386) - поведение такое же: при установлении в единицу RESETDONE сразу же выставляется и TXBUFSTATUS(1).
dm.pogrebnoy
В виртексе шестом такая проблема была, визард лажал с параметрами, а именно нужно:
Код
        TXDIFFCTRL                      =>      "1000",--!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            --/*The Transmitter Differential Voltage Swing is set by the TXDIFFCTRL parameter
        -- in the GTX transceivers. It defaults to 4'b0000 resulting in a voltage of 110 mV p-p.
        -- Set it to 4'b1000 to raise the voltage to 810 mV p-p. (Refer Pg 174 of V6 GTX user guide).
        -- This is necessary for the transmission of OOB signals during PHY Initialization. */


Может поможет?
olegras
Цитата(dm.pogrebnoy @ Dec 23 2013, 17:05) *
В виртексе шестом такая проблема была, визард лажал с параметрами, а именно нужно:


Игрался я с этим параметром. Ставил о 0000 до 1111. Результат одинаковый. И вообще как я понял этот параметр в основном играет роль для OOB сигнализации, а она у меня проходит без проблем. Проблемы начинаются при передаче данных. Причем как примитивы, так и данные передаются одинаковой кашей. А второй GTP абсолютно стабилен...
dm.pogrebnoy
Помнится была жесть когда такт как-то криво завел - схему тактирования можете привести здесь?. Что говорит RXBYTEISALIGNED?
olegras
Цитата(dm.pogrebnoy @ Dec 23 2013, 17:19) *
Помнится была жесть когда такт как-то криво завел - схему тактирования можете привести здесь?. Что говорит RXBYTEISALIGNED?

Схему тактирования представлю завтра. Но проблема врядли из-за нее - на 3 Гб/с ведь работает. RXBYTEISALIGNED выведу в чипскоп и отпишусь.


Завернул tx на rx "неисправного" GTP. Передаю константу, через каждые 254 дворда - два ALIGN. RXBYTEISALIGNED всегда единица. На приеме вместо данных и примитивов - каша.

Схема тактированияНажмите для просмотра прикрепленного файла

Не могу понять как создать новое сообщение а не писать в старом sad.gif
dm.pogrebnoy
Что-то такое впечатление, что usrclk2 должен быть в два раза быстрее.... Надо подумать.
olegras
Цитата(dm.pogrebnoy @ Dec 23 2013, 19:39) *
Что-то такое впечатление, что usrclk2 должен быть в два раза быстрее.... Надо подумать.


usrclk2 рассчитан точно. По юзергайду. usrclk2 = usrclk/4, где 4 - ширина входных данных в байтах. На SATA2 работает как часы. Да и на SATA1 один из GTP работает нормально. У второго глючит только TX. PLL работает нормально - выводил клоки (через делитель) и смотрел осциллографом. BUFGMUXы выводят то что и ожидается. Переключение клоков не динамическое - своя прошивка на каждую скорость. Глючит TX верхнего GTP.
dm.pogrebnoy
Да с клоком кажется все в порядке, ещё два вопроса - что за опора 150М и как там в Спартане на насчёт DCI?
Кстати, не такая ли проблема как тут тыц я имею ввиду времянки
olegras
опора - DS4625P 150МГц.
Насчет ссылки - очень похоже на мой случай, только у него похоже не корректно работает RX. Я писал vicg в личку, он говорит что проблема до конца так и не решилась. Готов разобрать представленные времянки если кому интересно, да и вопросы автору надо позадавать. Но vicg говорит что проект уже сдан/закрыт.
DCI - что это? Digitally Controlled Impedance? (С Виртексами не работал, изучать пока нет времени).
olegras
Заработало.
В настройках "неисправного" GTP значение атрибута PMA_TX_CFG установил в "00". В юзергайде про этот атрибут написано "Reserved. Use only recommended values from the Spartan-6 FPGA GTP Transceiver Wizard". Визард дает значение "11". Чем управляет атрибут я так и не понял, понял только что какими-то параметрами передачи.

Тему можно закрывать. Всем спасибо.
Alex77
Цитата(olegras @ Dec 25 2013, 15:11) *
Заработало.
В настройках "неисправного" GTP значение атрибута PMA_TX_CFG установил в "00". В юзергайде про этот атрибут написано "Reserved. Use only recommended values from the Spartan-6 FPGA GTP Transceiver Wizard". Визард дает значение "11". Чем управляет атрибут я так и не понял, понял только что какими-то параметрами передачи.

Тему можно закрывать. Всем спасибо.

А в настройках "исправного" GTP какое значение визардом устанавливалось ?
olegras
Цитата(Alex77 @ Dec 25 2013, 16:46) *
А в настройках "исправного" GTP какое значение визардом устанавливалось ?

Дико извиняюсь: не PMA_TX_CFG а TX_TDCC_CFG (не то скопипастил).
Повторюсь: камень с двумя GTP. Для скоростей 1,5 и 3 Гб/с для обоих GTP визард устанавливает TX_TDCC_CFG => "11". На скорости 3 Гб/с оба GTP работают как надо. На скорости 1,5 Гб/с один из GTP работает как надо, у второго неправильно работает передача. Установил TX_TDCC_CFG => "00" только для "глючного" GTP и все заработало: оба GTP корректно работают как на 1,5, так и на 3 Гб/с. Очень хотелось бы узнать что этот атрибут конфигурирует...
dm.pogrebnoy
У vicg TX_TDCC_CFG был по нулям, кстати.
olegras
Цитата(dm.pogrebnoy @ Dec 25 2013, 17:24) *
У vicg TX_TDCC_CFG был по нулям, кстати.

Так может ему стоило установить "11"? sm.gif Это я к тому что вполне может оказаться что этот атрибут зависит от чего угодно: от версии визарда, от ревизии камня, от способа тактирования ...
TDCC это скорей всего какой-нибудь хх Clock Correction.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.