Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: SP605 SFP clock 125 MHz
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Kirill_Good
Здравствуйте!

Кто пользовался Xilinx SP605 или кто не пользовался, не могли бы помочь с использованием SFP clock 125 MHz. На плате имеется осциллятор 125 МГц для тактирования трансиверов ПЛИС. Он дифференциальный и подключен к ПЛИС, сигналы можно найти в ucf sp605. Сделав простой проект для проверки с использованием этого сигнала, на этапе MAP возникла ошибка "Pack was unable to combine the symbols listed below into a single IOB component because the site type selected is not compatible". Возникла мысль, что напрямую их использовать нельзя, потому что и пропуская сигнал через Clock wizard сообщения те же самые. Изучая поверхностно manual RocketIO я встречал что у трансиверов есть специальные выводы для тактирования соседа. Можно ли использовать SFP сигнал для тактирования user логики или трансивера?

Спасибо!
AJIEKCEu
Цитата(Kirill_Good @ Aug 3 2011, 10:34) *
Можно ли использовать SFP сигнал для тактирования user логики или трансивера?

А вы не пробовали смотреть в даташитах на какие именно ноги он заходит? Подозреваю, что это выделенный клок именно для трансивера (GTP). И без плясок с бубном его пустить на внутреннюю логику ПЛИСа нельзя.
Kirill_Good
Цитата(AJIEKCEu @ Aug 3 2011, 10:52) *
А вы не пробовали смотреть в даташитах на какие именно ноги он заходит? Подозреваю, что это выделенный клок именно для трансивера (GTP). И без плясок с бубном его пустить на внутреннюю логику ПЛИСа нельзя.


Посмотрел в "Spartan-6 FPGA Packaging and Pinouts" у этих сигналов стоит обозначение NA, наверно это not available. В документации на трансиверы присутствует такое изображение (прикреплено). Мне нужен больше этот сигнал для тактирования своего проекта с RapidIO, чем для внутренней логики. В моем Спартане вроде 4 трансивера, располагаются они парами. Wizard создает сам обвязку вокруг этих RocketIO и в ucf можно указать какой именно из имеющихся трасиверов использовать. Наверно если изменить расположение на соседа с тактированием SFP clock я получу её для использования в RapidIO. Верны ли мои мысли вслух?)
kst
Если тактовый сигнал заведен на вход MGTREFCLK, то его можно использовать напрямую только в GTP-трансиверах. Причем максимум - только в двух соседних GTP_DUAL, которые расположены на кристалле либо вверху (101,123) либо внизу (245,267). Из GTP_DUAL_101 протащить клок в GTP_DUAL_245 или 267 невозможно, а в 123 пожалуйста.
Можно вытащить тактовый сигнал из GTP_DUAL и использовать для тактирования логики, если конечно примитив GTP_DUAL задействован в проекте. Однако в этом случае сигнал пройдет через PLL. Может быть стоит взять другой тактовый сигнал и протащить его через PLL?
Kirill_Good
Цитата(kst @ Aug 3 2011, 14:31) *
Если тактовый сигнал заведен на вход MGTREFCLK, то его можно использовать напрямую только в GTP-трансиверах. Причем максимум - только в двух соседних GTP_DUAL, которые расположены на кристалле либо вверху (101,123) либо внизу (245,267). Из GTP_DUAL_101 протащить клок в GTP_DUAL_245 или 267 невозможно, а в 123 пожалуйста.
Можно вытащить тактовый сигнал из GTP_DUAL и использовать для тактирования логики, если конечно примитив GTP_DUAL задействован в проекте. Однако в этом случае сигнал пройдет через PLL. Может быть стоит взять другой тактовый сигнал и протащить его через PLL?


В моем кристалле присутствуют только 2 блока GTP_DUAL 101 и 123. Clock мне нужен больше для тактирования 101 GTP, чем для тактирования обычной логики. Сейчас работает GTP 101 от внутреннего PLL ПЛИС. По документации, и из форумов Xilinx не советуют так делать. Сначала я сделал проект с производительностью 3.125 Gbit/s, не прокатило, link все время перезапускался из за рассинхронизации. Потом я опустился до 1.25 Gbit/s. И до последних дней я не жаловался. Но когда подключали DSP процессор уперлись в то, что link подвисает из за последовательности 0x4A это после 8/10 encoding -> 0101010101. И я начал думать что это из за плохого reference clock. А начал спрашивать , потому что на SP605 есть уже 125 Mhz refclock но он подключен к GTP 123, поменять GTP в проекте не могу, потому что TX RX IO привязаны к SMA разъемам. Вот и не хочется делать плату с внешним осциллятором, а обойтись средствами SP605. Там есть сигнал CLKINWEST0/1 от GTP 123, не подскажите можно ли его использовать? и как поменять источник?
kst
Пардон, неправильно понял задачу.

Клок SFPCLK 125 МГц заведен на MGTREFCLK0P/N (Lane 2) примитива GTP_DUAL123.
Разъемы SMA подключены к контактам MGTTX1P/N и MGTRX1P/N (Lane 1) примитива GTP_DUAL101.

Если следовать докам, чтобы все заработало, SFPCLK должен пройти следующий путь:
1. Вход MGTREFCLK0P/N.
2. Входной буфер IBUFDS.
3. Входной порт CLK00 примитива GTP_DUAL123.
4. Мультиплексор, для которого управляющий порт REFSELDYPLL0[2:0] примитива GTP_DUAL123 должен быть установлен в "000".
5. Выходной порт REFCLKPLL0 примитива GTP_DUAL123.
6. Входной порт CLKINWEST1 примитива GTP_DUAL101.
7. Мультиплексор, для которого управляющий порт REFSELDYPLL1[2:0] примитива GTP_DUAL101 должен быть установлен в "111".
8. PLL1 примитива GTP_DUAL10.
После PLL еще есть мультиплексоры, но это уже совсем другая история.

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

Для наглядности посмотрите кртинку "Figure 2-7: Multiple External Reference Clock", там примерчик, как две пары кидаются друг в друга тактовыми сигналами. Вам, соответственно, нужно только одно направление, а именно справа налево.

Возможно имеет смысл полистать хелп/доку на визард.

Да, вот еще что. В спартане6 куча конфликтных ситуаций с клоками. Если намереваетесь использовать GTP_DUAL101 и GTP_DUAL123, лучше не использовать специализированные тактовые контакты (GCLK) банка 0 в качестве тактовых входов: E16 (GCLK13), F15 (GCLK14), F14 (GCLK15), G11 (GCLK16), H12 (GCLK17), F10 (GCLK18), G9 (GCLK19).
Kirill_Good
Цитата(kst @ Aug 4 2011, 00:39) *
Пардон, неправильно понял задачу.

Клок SFPCLK 125 МГц заведен на MGTREFCLK0P/N (Lane 2) примитива GTP_DUAL123.
Разъемы SMA подключены к контактам MGTTX1P/N и MGTRX1P/N (Lane 1) примитива GTP_DUAL101.

Если следовать докам, чтобы все заработало, SFPCLK должен пройти следующий путь:
1. Вход MGTREFCLK0P/N.
2. Входной буфер IBUFDS.
3. Входной порт CLK00 примитива GTP_DUAL123.
4. Мультиплексор, для которого управляющий порт REFSELDYPLL0[2:0] примитива GTP_DUAL123 должен быть установлен в "000".
5. Выходной порт REFCLKPLL0 примитива GTP_DUAL123.
6. Входной порт CLKINWEST1 примитива GTP_DUAL101.
7. Мультиплексор, для которого управляющий порт REFSELDYPLL1[2:0] примитива GTP_DUAL101 должен быть установлен в "111".
8. PLL1 примитива GTP_DUAL10.
После PLL еще есть мультиплексоры, но это уже совсем другая история.

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

Для наглядности посмотрите кртинку "Figure 2-7: Multiple External Reference Clock", там примерчик, как две пары кидаются друг в друга тактовыми сигналами. Вам, соответственно, нужно только одно направление, а именно справа налево.

Возможно имеет смысл полистать хелп/доку на визард.

Да, вот еще что. В спартане6 куча конфликтных ситуаций с клоками. Если намереваетесь использовать GTP_DUAL101 и GTP_DUAL123, лучше не использовать специализированные тактовые контакты (GCLK) банка 0 в качестве тактовых входов: E16 (GCLK13), F15 (GCLK14), F14 (GCLK15), G11 (GCLK16), H12 (GCLK17), F10 (GCLK18), G9 (GCLK19).


Спасибо за ответ!

Без плясок тут явно не обойтись видно, описывать ещё один трансивер, подключать. А что вы имели ввиду про конфликтные ситуации с клоками?
kst
Цитата(Kirill_Good @ Aug 4 2011, 18:04) *
А что вы имели ввиду про конфликтные ситуации с клоками?
В спартане-6 много чего связанного с клоками базируется на понятии тактовый регион (clock region). Все ресурсы ввода/вывода бьются на 8 таких областей, каждая из которых опутана скорострельными тактовыми линиями (скорострельнее,чем глобальные тактовые). Эти линии проложены только в пределах региона.
Линии эти здорово "завязаны" на буферы BUFIO2. Как именно я так и не понял. А буферы эти какие-то волшебные. Но я тоже не очень разобрался в этом волшебстве. Все бы ничего, и без волшебства прожить можно, да только вот доступ к таким штуковинам как PLL и DCM осуществляется только через эти буферы. Доступ со стороны контактов GCLK ПЛИС.
GTP-трансиверам зачем-то эти буферы тоже позарез нужны. И получается, что если в 0 или 2 банке работает трансивер, и вы хотите затащить сигнал со входа GCLK на PLL, имеет место конфликт. Кто победит, честно говоря, не знаю. При этом затащить этот сигнал на BUFG не составит труда.

Еще один тип конфликтов (это так, к слову) связан с тем, что число тактовых входов в два раза больше глобальных буферов. Два тактовых контакта делят один буфер. Только одному достанется. Это надо иметь в виду. В доках есть таблицы, где все конфликты описаны. Позже ссылочку приведу.
Хочется один момент рассмотреть. Ну вот пускай два контакта вступили в схватку за один глобальный тактовый буфер. Что делать? Есть выход. Надо один из этих тактовых входов пустить через BUFIO2 на PLL и вуаля, у нас есть второй тактовый сигнал в ПЛИС. Вроде все счастливы? Усложним задачу! А если в этом банке работает GTP? ... cranky.gif

Обещанные ссылочки.
ug382 Spartan-6 FPGA Clocking Resources
Глава Clock Resources
Table 1-1: Shared Global Clocking Resources for Bank 0 and Bank 1
Table 1-2: Shared Global Clocking Resources for Bank 2 and Bank 3
Table 1-3: BUFIO2 Input Conflicts for SDR Data Rates (ISERDES2 (SDR), OSERDES2 (SDR))
Table 1-4: BUFIO2 Input Conflicts for DDR Data Rates (IDDR2, ODDR2, ISERDES2 (DDR), OSERDES2
(DDR))
Жаль, что пояснений к таблицам маловато. Это касается последних двух. Не очень понятна природа конфликтов GTP и GCLK. А в других документах настойчивые ссылки на эти таблицы. Типа там все предельно ясно. Возможно конечно, что еще не дописали эту доку до конца.
Kirill_Good
Цитата(kst @ Aug 4 2011, 23:26) *
В спартане-6 много чего связанного с клоками базируется на понятии тактовый регион (clock region). Все ресурсы ввода/вывода бьются на 8 таких областей, каждая из которых опутана скорострельными тактовыми линиями (скорострельнее,чем глобальные тактовые). Эти линии проложены только в пределах региона.
Линии эти здорово "завязаны" на буферы BUFIO2. Как именно я так и не понял. А буферы эти какие-то волшебные. Но я тоже не очень разобрался в этом волшебстве. Все бы ничего, и без волшебства прожить можно, да только вот доступ к таким штуковинам как PLL и DCM осуществляется только через эти буферы. Доступ со стороны контактов GCLK ПЛИС.
GTP-трансиверам зачем-то эти буферы тоже позарез нужны. И получается, что если в 0 или 2 банке работает трансивер, и вы хотите затащить сигнал со входа GCLK на PLL, имеет место конфликт. Кто победит, честно говоря, не знаю. При этом затащить этот сигнал на BUFG не составит труда.

Еще один тип конфликтов (это так, к слову) связан с тем, что число тактовых входов в два раза больше глобальных буферов. Два тактовых контакта делят один буфер. Только одному достанется. Это надо иметь в виду. В доках есть таблицы, где все конфликты описаны. Позже ссылочку приведу.
Хочется один момент рассмотреть. Ну вот пускай два контакта вступили в схватку за один глобальный тактовый буфер. Что делать? Есть выход. Надо один из этих тактовых входов пустить через BUFIO2 на PLL и вуаля, у нас есть второй тактовый сигнал в ПЛИС. Вроде все счастливы? Усложним задачу! А если в этом банке работает GTP? ... cranky.gif

Обещанные ссылочки.
ug382 Spartan-6 FPGA Clocking Resources
Глава Clock Resources
Table 1-1: Shared Global Clocking Resources for Bank 0 and Bank 1
Table 1-2: Shared Global Clocking Resources for Bank 2 and Bank 3
Table 1-3: BUFIO2 Input Conflicts for SDR Data Rates (ISERDES2 (SDR), OSERDES2 (SDR))
Table 1-4: BUFIO2 Input Conflicts for DDR Data Rates (IDDR2, ODDR2, ISERDES2 (DDR), OSERDES2
(DDR))
Жаль, что пояснений к таблицам маловато. Это касается последних двух. Не очень понятна природа конфликтов GTP и GCLK. А в других документах настойчивые ссылки на эти таблицы. Типа там все предельно ясно. Возможно конечно, что еще не дописали эту доку до конца.


Ух, я что то когда разбирался с GCLK не заметил, хотя помню что, что то было в замечаниях. Просто на отладочной плате пока видно не сталкивался с такими проблемами. И стараюсь делать проекты где как можно меньше частот.

Спасибо!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.