Перейти к содержанию
    

Подключение refclk (100 MHz) к Hard PCIe core (Altera)

Требуется совет человека, сталкивавшегося непосредственно или более внимательно, чем я прочитавшего доку: у альтеры в юзергайде на ядро PCIe всюду подразумевается, что refclk приходит на специальный вход трансивера, однако в качестве обязательного требования, что только так и никак иначе (насколько я понимаю английским по белому) это не прописано. По ряду причин есть идея подключить референсный клок через обычные входы FPGA. Попробовал (на Arria II GX) - собирает успешно, что напрямую с клоковых входов, что через PLL. Но как-то боязно... Нет ли у кого опыта на этот счет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По идее надо подключать на отдельный клоковый вход PLL, выделенного для трансиверов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если речь идет о микросхемах серии Arria 2 GX, то можно подключать как на специальный REFCLK0..n, так и на "обычный вход GCLK" (не REFCLK0..n). Но следует иметь ввиду, что сигнал refclk на разъеме PCIe заходит в ПЛИС как HCSL. Не все "обычные входы GCLK" поддерживают такой стандарт ввода. Если не привязываться именно к PCIe, то трансиверы в микросхемах Arria 2 GX можно запитывать частотой довольно многими способами (REFCLK0..n, GCLK, GCLK --> PLL --> ALTGX). В микросхемах Cyclone 4 GX способ "GCLK --> PLL --> ALTGX" не работает. Способы (REFCLK0..n, GCLK) - проект собирается в Квартусе. Но в железе я использовал только REFCLK0..n

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

у альтеры в юзергайде на ядро PCIe всюду подразумевается, что refclk приходит на специальный вход трансивера, однако в качестве обязательного требования, что только так и никак иначе (насколько я понимаю английским по белому) это не прописано.

Я не понимаю. Зачем вам грабли? Альтера тоже не писала что для PCIe можно использовать только нулевые GBX а не первые. И квартус работал не ругался. Вот только железяка не работала.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я не понимаю. Зачем вам грабли? Альтера тоже не писала что для PCIe можно использовать только нулевые GBX а не первые. И квартус работал не ругался. Вот только железяка не работала.

 

PCIE_REFCLK (100МГц) по идее можно вообще в кристалл не заводить.

Эту частоту можно синтезировать на внутренних PLL и подавать с внутренних линий синхронизации.

У меня так один проект работает, без каких либо проблем.

Да, там есть нюансы с еластичным буфером, но он есть и работает. Главное чтоб опорные частоты не слишком

сильно отличались

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Благодарю всех за помощь. То, что различные варианты работают в железе - ценная информация. На грабли наступать действительно не хочется... Но у заказчика есть Идея - постараться сделать универсальную платформу, которая сможет выступать как в качестве root point, так и end point (предполагается кабельная версия PCIe). Соответственно, прорабатываются варианты, насколько это реализуемо с практической точки зрения... В режиме endpoint вообще не использовать приходящий клок - мысль тоже интересная. Будем думать...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В режиме endpoint вообще не использовать приходящий клок - мысль тоже интересная. Будем думать...

http://electronix.ru/forum/index.php?showtopic=73928

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А что мешает поставить отдельный генератор на 100 МГц - вот и будет Вам универсальность.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Требуется совет человека, сталкивавшегося непосредственно или более внимательно, чем я прочитавшего доку: у альтеры в юзергайде на ядро PCIe всюду подразумевается, что refclk приходит на специальный вход трансивера, однако в качестве обязательного требования, что только так и никак иначе (насколько я понимаю английским по белому) это не прописано. По ряду причин есть идея подключить референсный клок через обычные входы FPGA. Попробовал (на Arria II GX) - собирает успешно, что напрямую с клоковых входов, что через PLL. Но как-то боязно... Нет ли у кого опыта на этот счет?

 

 

У меня был печальный опыт с такой проблемой, поиск её составил около 2-х недель. Я работал с Serial RapidIO ядром на Xilinx Spartan 6. Области применения PCIe и SRIO почти совпадают, в интернете много сравнений между ними. Так вот, в документации на ядро было также черно по белому сказано, что ЛУЧШЕ прикрутить внешний осциллятор с необходимой частотой, напрямую к сециальным входам аппаратных трансиверов. Для этого пришлось бы делать отдельную плату с осциллятором, поскольку на отладочной плате с ПЛИС его не было. И я решил взять и поделить 200 Мгц через внутренний PLL ПЛИС. С такой архитектурой проект работал без проблем полгода, пока не начили производить отладку моего девайса с DSP. Для теста сделали по loopback гоняли данные. И все пакеты проходили на ура, но когда данные в пакете SRIO были равны значению 0x4A, линк рушился между контроллерами. Конечно ошибку я искал у себя в ПЛИС проекте, потому что ошибиться на С в DSP было более сложно. И 2 недели исправлений проекта и головной боли. Пока ссылка в гугле не раскрыла значение числа 0х4A. Это какой паттерн в шифровании 8/10, и кодируется он 10101010, что вводило рассинхронизацию между трансиверами и они затыкались. Сделали плату с отдельным осциллятором , подсоединили и все заработало.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В режиме endpoint вообще не использовать приходящий клок - мысль тоже интересная. Будем думать...

А зачем не использовать приходящий клок ? Ведь ставить свой набортный генератор - это дополнительные расходы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Но у заказчика есть Идея - постараться сделать универсальную платформу, которая сможет выступать как в качестве root point, так и end point

Вы посмотрите сначала, какие ПЛИС имеют внутри PCIe root и сколько они стоят. IMHO не очень хорошая идея: root нужен реже, чем endpoint, и можно существенно сэкономить, сделав endpoint на дешевых чипах, благо endpoint есть даже в Циклонах. А так у вас вся партия будет на дорогих ПЛИС, поддерживающих root.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Требуется совет человека, сталкивавшегося непосредственно ...

 

Помнится мне, что квартус выдает warning, если клок для Hard IP PCIe заведен не на соответствующий клоковый вход высокоскоростного трансивера.

Уж очень много недосказано в мануале на этот Hard IP PCIe. На форуме альтера очень много косяков описывается, и далеко не все они есть в errdata.

Вот поверьте опыту - не раз я спорил со схемотехниками по поводу можно/нельзя. И всегда, когда нарушались даже не строгие требования разработчика ПЛИС(хоть Altera, хоть Xilinx) приходилось потом либо выкручиваться, либо переделывать плату.

Использование стороннего клока теоретически может и возможно, но кто даст гарантию на то, что это заработает в печке на максимальной скорости при загрузке кристалла более 85%(когда ПЛИС будет максимально греться).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Помнится мне, что квартус выдает warning, если клок для Hard IP PCIe заведен не на соответствующий клоковый вход высокоскоростного трансивера.

Уж очень много недосказано в мануале на этот Hard IP PCIe. На форуме альтера очень много косяков описывается, и далеко не все они есть в errdata.

Вот поверьте опыту - не раз я спорил со схемотехниками по поводу можно/нельзя. И всегда, когда нарушались даже не строгие требования разработчика ПЛИС(хоть Altera, хоть Xilinx) приходилось потом либо выкручиваться, либо переделывать плату.

Использование стороннего клока теоретически может и возможно, но кто даст гарантию на то, что это заработает в печке на максимальной скорости при загрузке кристалла более 85%(когда ПЛИС будет максимально греться).

Что мешает поставить клок генератор и завести родной клок. Вообще, а в чем проблемы завести клок с мамки? Там два входа для клока.

 

ЗЫ, главное в железном PCIe, это то что оно работает ТОЛЬКО с нулевым, или первыми четырмя, или со всеми восемью трансиверами. Завести PCIе на первый блок в котором 4е штуки трансиверов, работать не будет. И девятый квартус на это не ругался.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ЗЫ, главное в железном PCIe, это то что оно работает ТОЛЬКО с нулевым, или первыми четырмя, или со всеми восемью трансиверами. Завести PCIе на первый блок в котором 4е штуки трансиверов, работать не будет. И девятый квартус на это не ругался.

Quartus II Mapping Issue with a PCIe x1 Interface Using the Hard IP

Block

The Quartus II software version 10.0 SP1 and prior releases incorrectly allowed logical

channel 0 to be placed in any physical channel for the PCIe Gen1 x1 interface with the

hard IP block. For correct operation with the hard IP block, logical channel 0 must be

placed in physical channel 0.

This issue is fixed in the Quartus II software version 10.1.

 

Источник: es_cyciv Errata Sheet.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...