Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Джиттер при большой загрузке ПЛИС
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
icyrock
У меня такое явление. Кристалл Virtex 4 sx55, по лутам загружен на 78% по триггерам на 55%, по блочной памяти на 96, DSP 75%.

При начале работы основной схемы возникает жуткий джиттер на выходных тактах (200 Мгц). Они тактируют очень малую часть схемы.

Вопрос: правильно ли я связываю это явление с шумами внутри ПЛИС из-за одновременного переключения большого числа триггеров? Или это проблемы с питанием также из-за одновременного переключения?
Koluchiy
Цитата
При начале работы основной схемы

А можно подробнее.
Что значит - основная схема, когда она начинает работать?
И какой период времени - "в начале"?
icyrock
Цитата(Koluchiy @ Oct 20 2010, 16:36) *
А можно подробнее.
Что значит - основная схема, когда она начинает работать?
И какой период времени - "в начале"?


"Основная схема", означает что функционируют (переключаются триггера, перезаписывается память) все те ресурсы, которые я указал в вопросе. Так вот, когда основная схема функционирует, как раз и существует джиттер. Если на вход значимости данных в "основную схему" подать постоянный ноль ("отключить основную схему"), то джиттер исчезнет. В этот момент работает только "оболочка основной схемы" (интерфейсы), которая занимает ничтожное количество ресурсов.
DmitryR
Развязка питания сделана референсно?
icyrock
Цитата(DmitryR @ Oct 20 2010, 16:57) *
Развязка питания сделана референсно?


Что вы имеете ввиду под словом "референсно"?
rloc
Цитата(icyrock @ Oct 20 2010, 16:00) *
У меня такое явление. Кристалл Virtex 4 sx55, по лутам загружен на 78% по триггерам на 55%, по блочной памяти на 96, DSP 75%.

При начале работы основной схемы возникает жуткий джиттер на выходных тактах (200 Мгц). Они тактируют очень малую часть схемы.

Вопрос: правильно ли я связываю это явление с шумами внутри ПЛИС из-за одновременного переключения большого числа триггеров? Или это проблемы с питанием также из-за одновременного переключения?


Я склонен считать, что это плохая ЭМС внутри кристалла. Этот эффект я долго изучал в свое время на платах с Virtex-4 SX35, по питанию весь кристалл был усеян конденсаторами 0402 по 10нФ, проверял осциллографом - пульсации не превышали 10mV. Сами по себе VCO, входящие в состав DCM обладают очень большими шумами (очень большой джиттер). Чтобы выйти из этой ситуации вручную выбирал какая именно DCM будет отвечать за тот или иной клок.
icyrock
Цитата(rloc @ Oct 20 2010, 17:22) *
Чтобы выйти из этой ситуации вручную выбирал какая именно DCM будет отвечать за тот или иной клок.


А как DCM выбирали?
DmitryR
Цитата(icyrock @ Oct 20 2010, 17:04) *
Что вы имеете ввиду под словом "референсно"?

Как производитель рекомендует.

Цитата(rloc @ Oct 20 2010, 17:22) *
Сами по себе VCO, входящие в состав DCM обладают очень большими шумами (очень большой джиттер).

Это правда (потому что это DCM, а не PLL), однако этот джиттер, обусловленный ее конструкцией от загруженности ПЛИС меняться не должен IMHO.
icyrock
Цитата(DmitryR @ Oct 20 2010, 17:41) *
Как производитель рекомендует.


Всё в полном соответствии с рекомендацией. Проверяли. sad.gif
rloc
Цитата(DmitryR @ Oct 20 2010, 17:41) *
Это правда (потому что это DCM, а не PLL), однако этот джиттер, обусловленный ее конструкцией от загруженности ПЛИС меняться не должен IMHO.


DCM - это и есть PLL, только другими словами, как-то копался в американских патентах и нашел описание этой DCM, там и про частоты было сказано и особенности работы. Джиттер очень сильно зависит от загруженности ПЛИС, посмотрите хотя бы на то, какими путями идет сигнал на вход CLKFB, замыкающий петлю ФАПЧ, не трудно представить как изменится джиттер если на этот сигнал чего-нибудь наведется.
Еще кстати на джиттер влияет задержка в петле ФАПЧ - "Feedback Tap Delays", если хотите джиттер поменьше ставьте "Source-Synchronous" вместо "System-Synchronous".

Цитата(icyrock @ Oct 20 2010, 17:38) *
А как DCM выбирали?

Используйте аттрибут RLOC_ORIGIN, можно в самом .vhdl/.v, можно в .ucf. Читайте "Constraints Guide" cgd.pdf и "Virtex-4 User Guide" ug070.pdf
icyrock
Цитата(rloc @ Oct 20 2010, 18:07) *
Используйте аттрибут RLOC_ORIGIN


Да как установить на желаемое место я знаю. А я спросил, как вы определили подходящее место. smile.gif

Теперь, думаю, придется к чертям собачьим выкинуть DCM-ку (она работала как синтезатор частоты) и попросить прислать нужную частоту из соседнего ПЛИСа.
rloc
Цитата(icyrock @ Oct 20 2010, 18:25) *
Да как установить на желаемое место я знаю. А я спросил, как вы определили подходящее место. smile.gif

Методом научного тыка biggrin.gif
yes
Цитата(rloc @ Oct 20 2010, 18:07) *
DCM - это и есть PLL, только другими словами, как-то копался в американских патентах и нашел описание этой DCM, там


а Вы уверены? во всех бумагах ксайлинса упирается на то, что DLL (основной компонент DCM) они делают на цифровой логике, а не VCO.
поэтому оно стабильнее и по моему опыту тактирование в ксайлинсах значительно лучше тактирования альтер, кроме джитера, который обусловлен у ксайлинса дискретностью линии задержки. то есть элемент задержки 0.6нс(?) в спартанах и 0.3(?) в виртексах и является минимально допустимым джитером.

но это не значит, что при плохом внутреннем питании тактирование не будет ухудшаться - тактовый сигнал проходит через кучу буфферов пока дойдет до потребителя, если эти буффера питаются кое-как, то и сигнал будет такой же
rloc
Цитата(yes @ Oct 20 2010, 19:26) *
а Вы уверены? во всех бумагах ксайлинса упирается на то, что DLL (основной компонент DCM) они делают на цифровой логике, а не VCO.

У ксайлинкс DCM состоит как минимум из двух компонентов - DLL + DFS (Digital Frequency Synthesizer). Если бы в них не было синтезатора, они занимали бы намного меньше места

С PLL немного погорячился, спутал с Virtex-5, соответственно и VCO там нет. Но джиттер определяется не шагом задержки, который составляет 5-60ps, а какими-то другими параметрами, возможно схемой SSC (Spread-Spectrum Clock).

Рост джиттера в своей схеме я обнаружил, когда с увеличением размера проекта стал периодически сбоить блок цифровой обработки. Невыполнение времянок было исключено, потому как сам блок был написан с помощью так называемых "Hard Macros", т.е. расположение на кристалле и связи были предопределены и не зависели от объема заполнения кристалла. Первоначально проблема была решена перебором всех DCM и выбором наилучшего из них, в следующих проектах просто перешел на внешний синтезатор и о проблемах со сбоями забыл.
Shtirlits
для rloc: как были сделаны "Hard Macros", только размещение или разводка тоже была зафиксирована и законстрейнена?

для icyrock: как и чем вы смотрите выходные сигналы на которых джиттер? что выводится на эти ножки?
rloc
Цитата(Shtirlits @ Oct 20 2010, 22:54) *
для rloc: как были сделаны "Hard Macros", только размещение или разводка тоже была зафиксирована и законстрейнена?

Разводка тоже фиксировалась, констрейны накладывались на весь проект, чтобы ввод-вывод поспевал, который кстати я тоже долго и нудно проверял во всех ракурсах, перебирал разные типы FIFO, в том числе пробовал варианты автономной работы, когда на вход моего блока подавал псевдослучайные данные и на выходе считал контрольные суммы.
icyrock
Цитата(Shtirlits @ Oct 20 2010, 22:54) *
как и чем вы смотрите выходные сигналы на которых джиттер? что выводится на эти ножки?


Я смотрю такты православно выведеные через ddr и смотрю осциллографом. А подтверждает наличие джиттера по тактам сбои в системе приема моих выходных данных. А выходные данные мои DS-кодированы. DS-декодер (на приемной стороне) как раз и чувствителен джиттеру.
Shtirlits
сорри, если вопросы слишком тупые.
выходные регистры синтезируются как и где нужно?
клок разведен через глобальные буферы?
видна ли на осциллографе разница между ножками?
если на выходной регистр в качестве данных подать единицу и ноль и посмотреть на получившуюся копию клока, что видно?
feedback как надо и куда надо заведен?

Gothard
Цитата(icyrock @ Oct 20 2010, 16:00) *
При начале работы основной схемы возникает жуткий джиттер на выходных тактах (200 Мгц). Они тактируют очень малую часть схемы.

Извиняюсь, но еще тупой вопрос: это после того, как завершился захват фазы в DCM?
И потом: "При начале работы"... т.е. в последствии он (джиттер) устраняется?
icyrock
выходные регистры синтезируются как и где нужно?
да
клок разведен через глобальные буферы?
да
видна ли на осциллографе разница между ножками?
Если речь о D и S, то не смотрел. И думаю смотреть нет смысла. такты я вижу, и вижу в FPGA Editor, что регистры на месте.
если на выходной регистр в качестве данных подать единицу и ноль и посмотреть на получившуюся копию клока, что видно?
По такой копии клока я и смотрел (DDR-триггер)
feedback как надо и куда надо заведен?
да, и кроме того я уже избавился от DCM, просто из соседнего плиса прислали хороший клок. И этот хороший клок всё-равно поганится моей "главной схемой". DCM-ки в уравнении уже нет.

Цитата(Gothard @ Oct 21 2010, 15:22) *
Извиняюсь, но еще тупой вопрос: это после того, как завершился захват фазы в DCM?
И потом: "При начале работы"... т.е. в последствии он (джиттер) устраняется?



Джиттер никуда не устраняется сам по себе. Только если я отключу "основную часть схемы". (её триггера не будут переключаться)
Shtirlits
Тогде сомнительное, но все же предложение - разделить схему на части и тактировать их разными фазами, сколько получится повынимать из DCM и на сколько хватит глобальных сетей. Clock skew к тому же улучшится внутри каждой части.

Вы писали про наблюдение пульсаций питания осциллографом. Если не секрет, какая полоса у осциллографа и удалось ли подлезть к ножкам питания ядра?
icyrock
Цитата(Shtirlits @ Oct 21 2010, 16:15) *
Тогде сомнительное, но все же предложение - разделить схему на части и тактировать их разными фазами, сколько получится повынимать из DCM и на сколько хватит глобальных сетей. Clock skew к тому же улучшится внутри каждой части.

Вы писали про наблюдение пульсаций питания осциллографом. Если не секрет, какая полоса у осциллографа и удалось ли подлезть к ножкам питания ядра?



Да, решение довольно суровое, и значительное усложнение схемы.

Пульсации питания я не наблюдал, а наблюдал только джиттер тактов, которые к тому же были модулированы по амплитуде в полном соответствии с работой "основной схемы". Пульсации питания я предположил как вариант. К ножкам и не подобраться. Осцилл гиговый.
cioma
Это проблемы с power integrity. Лечится правильной разводкой платы и правильной развязкой питаний.
VladimirB
Цитата(icyrock @ Oct 21 2010, 17:20) *
...
Пульсации питания я не наблюдал, а наблюдал только джиттер тактов, которые к тому же были модулированы по амплитуде в полном соответствии с работой "основной схемы". Пульсации питания я предположил как вариант. К ножкам и не подобраться. Осцилл гиговый.


согласен с Cioma - амплитудная модуляция делает этот вариант основным.

Кристалл у вас очень жирный - а судя по вашей загрузке, такой может легко 15-20 ампер по ядру жрать.

Сколько и каких у вас конденсаторов стоит по VCCINT, VCCAUX и VCCIO?
ESR танталовых или полимерных конденсаторов какое? Помнится оно должно быть в диапазоне 20-50 мОм - в России такие очень тяжело купить.
Y5V керамику не используете?
icyrock
Уровень джиттера удалось снизить до приемлемого.

Во первых максимально укоротил пути критических тактов, чтобы они покрывали минимальную часть ПЛИС. А также поддали мощности.

Цитата(VladimirB @ Oct 22 2010, 00:27) *
согласен с Cioma - амплитудная модуляция делает этот вариант основным.

Кристалл у вас очень жирный - а судя по вашей загрузке, такой может легко 15-20 ампер по ядру жрать.

Сколько и каких у вас конденсаторов стоит по VCCINT, VCCAUX и VCCIO?
ESR танталовых или полимерных конденсаторов какое? Помнится оно должно быть в диапазоне 20-50 мОм - в России такие очень тяжело купить.
Y5V керамику не используете?



Он больше 7.5 ампер жрать не может в принципе. А конденсаторы все согласно рекомендации.
Shtirlits
Кстати, как вариант - померять джиттер приборами, добавить на глазок (или придумать как вычислить) и вписать полученные значения в констрены. Плату переделывать не надо и ошибки при правильном значении будет выдавать STA, а не глючные экземпляры.
ViKo
Цитата(icyrock @ Oct 22 2010, 11:52) *
А также поддали мощности.

Это как? У вас напряжения питания насколько дергалось (или проседало постоянно) до того, как "поддали"?
icyrock
Цитата(ViKo @ Oct 22 2010, 13:23) *
Это как? У вас напряжения питания насколько дергалось (или проседало постоянно) до того, как "поддали"?


На 35 мВ проседало при работе "основной схемы", и это на плате. Что там в ядре делалось - бог весть.
AsJohnAs
А если чипскопом смотреть напряжение ядра? Оно менялось?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.