Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Подключение refclk (100 MHz) к Hard PCIe core (Altera)
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
alexadmin
Требуется совет человека, сталкивавшегося непосредственно или более внимательно, чем я прочитавшего доку: у альтеры в юзергайде на ядро PCIe всюду подразумевается, что refclk приходит на специальный вход трансивера, однако в качестве обязательного требования, что только так и никак иначе (насколько я понимаю английским по белому) это не прописано. По ряду причин есть идея подключить референсный клок через обычные входы FPGA. Попробовал (на Arria II GX) - собирает успешно, что напрямую с клоковых входов, что через PLL. Но как-то боязно... Нет ли у кого опыта на этот счет?
cioma
По идее надо подключать на отдельный клоковый вход PLL, выделенного для трансиверов.
Tue
Если речь идет о микросхемах серии 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
Methane
Цитата(alexadmin @ Apr 24 2012, 12:34) *
у альтеры в юзергайде на ядро PCIe всюду подразумевается, что refclk приходит на специальный вход трансивера, однако в качестве обязательного требования, что только так и никак иначе (насколько я понимаю английским по белому) это не прописано.

Я не понимаю. Зачем вам грабли? Альтера тоже не писала что для PCIe можно использовать только нулевые GBX а не первые. И квартус работал не ругался. Вот только железяка не работала.
aosp
Цитата(Methane @ Apr 24 2012, 23:10) *
Я не понимаю. Зачем вам грабли? Альтера тоже не писала что для PCIe можно использовать только нулевые GBX а не первые. И квартус работал не ругался. Вот только железяка не работала.


PCIE_REFCLK (100МГц) по идее можно вообще в кристалл не заводить.
Эту частоту можно синтезировать на внутренних PLL и подавать с внутренних линий синхронизации.
У меня так один проект работает, без каких либо проблем.
Да, там есть нюансы с еластичным буфером, но он есть и работает. Главное чтоб опорные частоты не слишком
сильно отличались
alexadmin
Благодарю всех за помощь. То, что различные варианты работают в железе - ценная информация. На грабли наступать действительно не хочется... Но у заказчика есть Идея - постараться сделать универсальную платформу, которая сможет выступать как в качестве root point, так и end point (предполагается кабельная версия PCIe). Соответственно, прорабатываются варианты, насколько это реализуемо с практической точки зрения... В режиме endpoint вообще не использовать приходящий клок - мысль тоже интересная. Будем думать...
gosu-art
Цитата(alexadmin @ Apr 25 2012, 12:04) *
В режиме endpoint вообще не использовать приходящий клок - мысль тоже интересная. Будем думать...

http://electronix.ru/forum/index.php?showtopic=73928
cioma
А что мешает поставить отдельный генератор на 100 МГц - вот и будет Вам универсальность.
Kirill_Good
Цитата(alexadmin @ Apr 24 2012, 13:34) *
Требуется совет человека, сталкивавшегося непосредственно или более внимательно, чем я прочитавшего доку: у альтеры в юзергайде на ядро 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, что вводило рассинхронизацию между трансиверами и они затыкались. Сделали плату с отдельным осциллятором , подсоединили и все заработало.
Tue
Цитата(alexadmin @ Apr 25 2012, 11:04) *
В режиме endpoint вообще не использовать приходящий клок - мысль тоже интересная. Будем думать...

А зачем не использовать приходящий клок ? Ведь ставить свой набортный генератор - это дополнительные расходы.
DmitryR
Цитата(alexadmin @ Apr 25 2012, 12:04) *
Но у заказчика есть Идея - постараться сделать универсальную платформу, которая сможет выступать как в качестве root point, так и end point

Вы посмотрите сначала, какие ПЛИС имеют внутри PCIe root и сколько они стоят. IMHO не очень хорошая идея: root нужен реже, чем endpoint, и можно существенно сэкономить, сделав endpoint на дешевых чипах, благо endpoint есть даже в Циклонах. А так у вас вся партия будет на дорогих ПЛИС, поддерживающих root.
warrior-2001
Цитата(alexadmin @ Apr 24 2012, 13:34) *
Требуется совет человека, сталкивавшегося непосредственно ...


Помнится мне, что квартус выдает warning, если клок для Hard IP PCIe заведен не на соответствующий клоковый вход высокоскоростного трансивера.
Уж очень много недосказано в мануале на этот Hard IP PCIe. На форуме альтера очень много косяков описывается, и далеко не все они есть в errdata.
Вот поверьте опыту - не раз я спорил со схемотехниками по поводу можно/нельзя. И всегда, когда нарушались даже не строгие требования разработчика ПЛИС(хоть Altera, хоть Xilinx) приходилось потом либо выкручиваться, либо переделывать плату.
Использование стороннего клока теоретически может и возможно, но кто даст гарантию на то, что это заработает в печке на максимальной скорости при загрузке кристалла более 85%(когда ПЛИС будет максимально греться).
Methane
Цитата(warrior-2001 @ May 11 2012, 12:13) *
Помнится мне, что квартус выдает warning, если клок для Hard IP PCIe заведен не на соответствующий клоковый вход высокоскоростного трансивера.
Уж очень много недосказано в мануале на этот Hard IP PCIe. На форуме альтера очень много косяков описывается, и далеко не все они есть в errdata.
Вот поверьте опыту - не раз я спорил со схемотехниками по поводу можно/нельзя. И всегда, когда нарушались даже не строгие требования разработчика ПЛИС(хоть Altera, хоть Xilinx) приходилось потом либо выкручиваться, либо переделывать плату.
Использование стороннего клока теоретически может и возможно, но кто даст гарантию на то, что это заработает в печке на максимальной скорости при загрузке кристалла более 85%(когда ПЛИС будет максимально греться).

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

ЗЫ, главное в железном PCIe, это то что оно работает ТОЛЬКО с нулевым, или первыми четырмя, или со всеми восемью трансиверами. Завести PCIе на первый блок в котором 4е штуки трансиверов, работать не будет. И девятый квартус на это не ругался.
FLTI
Цитата(Methane @ May 11 2012, 21:52) *
ЗЫ, главное в железном 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
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.