|
|
  |
SP605 SFP clock 125 MHz |
|
|
|
Aug 3 2011, 06:52
|
Местный
  
Группа: Свой
Сообщений: 314
Регистрация: 7-12-05
Пользователь №: 11 917

|
Цитата(Kirill_Good @ Aug 3 2011, 10:34)  Можно ли использовать SFP сигнал для тактирования user логики или трансивера? А вы не пробовали смотреть в даташитах на какие именно ноги он заходит? Подозреваю, что это выделенный клок именно для трансивера (GTP). И без плясок с бубном его пустить на внутреннюю логику ПЛИСа нельзя.
|
|
|
|
|
Aug 3 2011, 07:18
|
Местный
  
Группа: Участник
Сообщений: 217
Регистрация: 10-12-10
Из: Москва
Пользователь №: 61 528

|
Цитата(AJIEKCEu @ Aug 3 2011, 10:52)  А вы не пробовали смотреть в даташитах на какие именно ноги он заходит? Подозреваю, что это выделенный клок именно для трансивера (GTP). И без плясок с бубном его пустить на внутреннюю логику ПЛИСа нельзя. Посмотрел в "Spartan-6 FPGA Packaging and Pinouts" у этих сигналов стоит обозначение NA, наверно это not available. В документации на трансиверы присутствует такое изображение (прикреплено). Мне нужен больше этот сигнал для тактирования своего проекта с RapidIO, чем для внутренней логики. В моем Спартане вроде 4 трансивера, располагаются они парами. Wizard создает сам обвязку вокруг этих RocketIO и в ucf можно указать какой именно из имеющихся трасиверов использовать. Наверно если изменить расположение на соседа с тактированием SFP clock я получу её для использования в RapidIO. Верны ли мои мысли вслух?)
Сообщение отредактировал Kirill_Good - Aug 3 2011, 07:19
Эскизы прикрепленных изображений
|
|
|
|
|
Aug 3 2011, 11:08
|
Местный
  
Группа: Участник
Сообщений: 217
Регистрация: 10-12-10
Из: Москва
Пользователь №: 61 528

|
Цитата(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, не подскажите можно ли его использовать? и как поменять источник?
Эскизы прикрепленных изображений
|
|
|
|
|
Aug 3 2011, 20:39
|

Частый гость
 
Группа: Свой
Сообщений: 141
Регистрация: 16-06-05
Из: Нижний Новгород
Пользователь №: 6 065

|
Пардон, неправильно понял задачу.
Клок 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).
|
|
|
|
|
Aug 4 2011, 14:04
|
Местный
  
Группа: Участник
Сообщений: 217
Регистрация: 10-12-10
Из: Москва
Пользователь №: 61 528

|
Цитата(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). Спасибо за ответ! Без плясок тут явно не обойтись видно, описывать ещё один трансивер, подключать. А что вы имели ввиду про конфликтные ситуации с клоками?
|
|
|
|
|
Aug 4 2011, 19:26
|

Частый гость
 
Группа: Свой
Сообщений: 141
Регистрация: 16-06-05
Из: Нижний Новгород
Пользователь №: 6 065

|
Цитата(Kirill_Good @ Aug 4 2011, 18:04)  А что вы имели ввиду про конфликтные ситуации с клоками? В спартане-6 много чего связанного с клоками базируется на понятии тактовый регион (clock region). Все ресурсы ввода/вывода бьются на 8 таких областей, каждая из которых опутана скорострельными тактовыми линиями (скорострельнее,чем глобальные тактовые). Эти линии проложены только в пределах региона. Линии эти здорово "завязаны" на буферы BUFIO2. Как именно я так и не понял. А буферы эти какие-то волшебные. Но я тоже не очень разобрался в этом волшебстве. Все бы ничего, и без волшебства прожить можно, да только вот доступ к таким штуковинам как PLL и DCM осуществляется только через эти буферы. Доступ со стороны контактов GCLK ПЛИС. GTP-трансиверам зачем-то эти буферы тоже позарез нужны. И получается, что если в 0 или 2 банке работает трансивер, и вы хотите затащить сигнал со входа GCLK на PLL, имеет место конфликт. Кто победит, честно говоря, не знаю. При этом затащить этот сигнал на BUFG не составит труда. Еще один тип конфликтов (это так, к слову) связан с тем, что число тактовых входов в два раза больше глобальных буферов. Два тактовых контакта делят один буфер. Только одному достанется. Это надо иметь в виду. В доках есть таблицы, где все конфликты описаны. Позже ссылочку приведу. Хочется один момент рассмотреть. Ну вот пускай два контакта вступили в схватку за один глобальный тактовый буфер. Что делать? Есть выход. Надо один из этих тактовых входов пустить через BUFIO2 на PLL и вуаля, у нас есть второй тактовый сигнал в ПЛИС. Вроде все счастливы? Усложним задачу! А если в этом банке работает GTP? ... Обещанные ссылочки. 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. А в других документах настойчивые ссылки на эти таблицы. Типа там все предельно ясно. Возможно конечно, что еще не дописали эту доку до конца.
|
|
|
|
|
Aug 5 2011, 03:42
|
Местный
  
Группа: Участник
Сообщений: 217
Регистрация: 10-12-10
Из: Москва
Пользователь №: 61 528

|
Цитата(kst @ Aug 4 2011, 23:26)  В спартане-6 много чего связанного с клоками базируется на понятии тактовый регион (clock region). Все ресурсы ввода/вывода бьются на 8 таких областей, каждая из которых опутана скорострельными тактовыми линиями (скорострельнее,чем глобальные тактовые). Эти линии проложены только в пределах региона. Линии эти здорово "завязаны" на буферы BUFIO2. Как именно я так и не понял. А буферы эти какие-то волшебные. Но я тоже не очень разобрался в этом волшебстве. Все бы ничего, и без волшебства прожить можно, да только вот доступ к таким штуковинам как PLL и DCM осуществляется только через эти буферы. Доступ со стороны контактов GCLK ПЛИС. GTP-трансиверам зачем-то эти буферы тоже позарез нужны. И получается, что если в 0 или 2 банке работает трансивер, и вы хотите затащить сигнал со входа GCLK на PLL, имеет место конфликт. Кто победит, честно говоря, не знаю. При этом затащить этот сигнал на BUFG не составит труда. Еще один тип конфликтов (это так, к слову) связан с тем, что число тактовых входов в два раза больше глобальных буферов. Два тактовых контакта делят один буфер. Только одному достанется. Это надо иметь в виду. В доках есть таблицы, где все конфликты описаны. Позже ссылочку приведу. Хочется один момент рассмотреть. Ну вот пускай два контакта вступили в схватку за один глобальный тактовый буфер. Что делать? Есть выход. Надо один из этих тактовых входов пустить через BUFIO2 на PLL и вуаля, у нас есть второй тактовый сигнал в ПЛИС. Вроде все счастливы? Усложним задачу! А если в этом банке работает GTP? ... Обещанные ссылочки. 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 не заметил, хотя помню что, что то было в замечаниях. Просто на отладочной плате пока видно не сталкивался с такими проблемами. И стараюсь делать проекты где как можно меньше частот. Спасибо!
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|