|
|
  |
Cyclone III PLL bug, Откуда дровишки(+) |
|
|
|
Dec 31 2009, 02:50
|

Гуру
     
Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988

|
Цитата(des00 @ Dec 30 2009, 16:29)  На снимке Выходной клок с ПЛИС с работающей PLL видны первая и третья гармоники (две большие палки слева и справа от 96МГц), дальше по спектру они тоже есть. их бы побольше (гармоник) снять, амплитуды померять, форму импульса прикинуть, тогда можно и конкретный сигнал "обвинить". Цитата О питающих не совсем понял вопрос. Я уже писал параметры источников и обвязки ПЛИС %) 2.5В идет только на PLL и JTAG? на I/O - везде 3,3? тогда скорее всего лезет через 1,2. если, конечно, по питанию. ткнитесь анализатором спектра в питание PLL. Цитата UPD#2 даже если положить что в демодулятор заложено не правильное решение, вопрос темы все равно не снимается. откуда такие наводки на внутренние/выходные сигналы ПЛИС при ее работе в третьем сыклоне в выводном 144 ногом корпусе. разобраться надо обязательно. хотя бы ради будущих поколений ) еще вопросик, а как расположены входной пин клока/выходной пин на АЦП?
|
|
|
|
|
Dec 31 2009, 05:53
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(dvladim @ Dec 30 2009, 13:05)  Попробуйте вариант, когда ядро щелкает на паразитной частоте, а выводы замаскированы? вы имеете в виду подать на АЦП и ее обвязку один клок, а на остальную логику другой? Цитата В этом случае может помочь отделить входной и выходной пины клока от других через несколько непереключающихся пинов. Так и сделано, все выводы отключены, кроме выводов АЦП и усб логера(работает на частоте ~10МГц, на противоположной стороне плис) для связи с компом. Цитата Если внутри кристалла, попробуйте прокинуть паразитный клок через неглобальную шину. Т.е. разделить глобальную/неглобальную для нужного и паразитного клоков (или энейблов). В посте 8 я писал что проброс по короткому пути. минуя глобальные линии результата не дает и то что enable не сидит на глобальной линии, потому как используется enable chain. Цитата(vadimuzzz @ Dec 30 2009, 20:50)  их бы побольше (гармоник) снять, амплитуды померять, форму импульса прикинуть, тогда можно и конкретный сигнал "обвинить". В посте 1 писал что две прошивки отличаются только источником тактирования. В одном случае клок идет с порта. В другом с PLL в режиме 1к1. Берем панорамник, ставим определенный частотный диапазон и сравниваем 2 прошивки, прошивая через житаг. Так нашли частоту, увидели что она может завернуться в полосу в том месте где стоит помеха. А после того как было сделано динамическое отключение enable chain вышли на этот сигнал. Цитата 2.5В идет только на PLL и JTAG? на I/O - везде 3,3? тогда скорее всего лезет через 1,2. если, конечно, по питанию. ткнитесь анализатором спектра в питание PLL. Да так и сделано. В посте 8 я писал что на осцилле и панорамнике проверялись все питающие линии. На них наводка не обнаружена. Цитата еще вопросик, а как расположены входной пин клока/выходной пин на АЦП? Изначально входной/выходной были сделаны для PLL_3 (т.е. использовалась пара GCLK/PLLCLKOUT для этой PLL). Потом выходной пин был перекинут на другую сторону ПЛИС в свободный банк. Альтернативный генератор был подключен к PLL_2, выводились сигналы на разные стороны кристалла. Результат везде был один. Наводка не уходила, хотя уровень ее плавал. Был такой такой баг (паразитный спектр) и при разработке демодулятора. Баг такой : наводки не было до тех пор пока ПЛИС не заполнилась больше чем на половину. Потом от разводки к разводке уровень помехи плавал в пределах +-10Дб. Один раз получилось так : когда я в ручную оптималил проект и задействовал все регистры в умножителях, наводка просела на ~20Дб (забитость была 60%), но когда я сбросил базу инкрементальной компиляции и забил полный демодулятор на 99% плис, она вылезла в полный рост. Теперь она не уходит %)
--------------------
|
|
|
|
|
Dec 31 2009, 23:04
|
Знающий
   
Группа: Свой
Сообщений: 654
Регистрация: 24-01-07
Из: Воронеж
Пользователь №: 24 737

|
Цитата(des00 @ Dec 31 2009, 08:53)  вы имеете в виду подать на АЦП и ее обвязку один клок, а на остальную логику другой?
Так и сделано, все выводы отключены, кроме выводов АЦП и усб логера(работает на частоте ~10МГц, на противоположной стороне плис) для связи с компом.
В посте 8 я писал что проброс по короткому пути. минуя глобальные линии результата не дает и то что enable не сидит на глобальной линии, потому как используется enable chain. Имеется ввиду влияние топологии кристалла. Во-первых, влияет ли количество ресурсов тактируемых от паразитной частоты? (Вы писали, что тактируется примерно 10к из 25к). Если разницы от количетсва ресурсов не будет, то возможно виновата трассировка глобальных шин (клоки). Для разделения этих вещей нужно разные клоки пустить разными путями - например один из них глобальным, а другой неглобальным. По топологии рядом они не будут и влиять будут меньше. Если же дело в количестве элементов переключающихся на паразитрой частое, то дело в локальной просадке напряжения. Если снаружи кристалла с фильтрацией ядра все в порядке (а я так понял, что там все в порядке по словам "обвешана как елка") то с этим ничего сделать невозможно. PS. Я вообще правильно понял, что в ПЛИС заходят два клока - из первого делается клок для АЦП, второй тактирует основное количество логики? PPS. Я это все к тому, что подача питания и трассировка от кристалла до внешних ног в корпусах QFP и BGA сильно различается и результаты расследования могут дать информацию о том, можно ли применять такие реализации в BGA. Т.е. вопрос не праздный.
|
|
|
|
|
Jan 1 2010, 14:12
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(vadimuzzz @ Dec 31 2009, 08:12)  а этот enable, по которому демодулятор работает, по глобальному пути проложен? кхм, я три раза в этой теме (последний раз в посте 33) сказал что нет %) Цитата а если вывести клок на пин рядом с PLL? геометрически PLLCLKOUT находиться как раз рядом с PLL. Это видно в Fpga editore Цитата(dvladim @ Dec 31 2009, 17:04)  Во-первых, влияет ли количество ресурсов тактируемых от паразитной частоты? (Вы писали, что тактируется примерно 10к из 25к). В посте 33 я писал что зависит, в посте 8 что 15к хлопает на enable == clk/2 и еще 5 к на enable == clk/4. Цитата PS. Я вообще правильно понял, что в ПЛИС заходят два клока - из первого делается клок для АЦП, второй тактирует основное количество логики? нет, все работает на одном клоке. Посты про второй генератор относились к тому, что в целях отладки я использовал качественный генератор на другую частоту, который на плате стоит как опорный. Цитата PPS. Я это все к тому, что подача питания и трассировка от кристалла до внешних ног в корпусах QFP и BGA сильно различается и результаты расследования могут дать информацию о том, можно ли применять такие реализации в BGA. Т.е. вопрос не праздный. меня тоже интересует этот вопрос, когда я обнаружил сие поведение минут 5 парил в прострации от сего факта %) Цитата(VslavX @ Jan 1 2010, 06:42)  А нельзя ли по фазе попробовать отстроиться? Внутри все переключения делаем по одному тактовому, а на АЦП выдаем сдвинутый на 90 (или на любой другой подходящий угол) - тогда, по идее, все переключения что внутри ПЛИС происходят, будут иметь минимальное влияние на фронты внешнего сигнала. хмм, надо подумать. Пока как запасной я хочу реализовать дробный приемник (АЦП работает на частоте не целочисленно кратной символьной приемного потока) и пробросить на АЦП сигнал от него.
--------------------
|
|
|
|
|
Jan 2 2010, 17:28
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(vadimuzzz @ Jan 1 2010, 23:46)  еще вопросик: а как в проекте с пинами? сколько используется/не используется. как сконфигурированы те, что не используются. особенно интересно в районе клока. кхм, в посте 33 об этом писал %) Фотографии в посте 1 сделаны при использовании 10 пинов АЦП, 1 клок + 12 пинов усб. Клок выводился по разному, в том числе GND GND CLK GND GND. Уменьшения заметно не было. Цитата и еще, возвращаясь к варианту с PLL. логика запитывается с PLL_OUT, как и АЦП? или на логику идет GCLK(PLL_IN), а на АЦП PLL_OUT? вопрос не понятен. Используется вывод PLLCLKOUT с с0 выхода PLL и потом глобальный тактовый буфер.
--------------------
|
|
|
|
|
Jan 3 2010, 01:48
|

Гуру
     
Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988

|
Цитата(des00 @ Jan 2 2010, 23:28)  вопрос не понятен. Используется вывод PLLCLKOUT с с0 выхода PLL и потом глобальный тактовый буфер. а потом с буфера и на АЦП, и на логику? я к тому, что у вас по всей микрухе параллельно идут клок и мешающий строб. тут как ни крутись, а перекрестных помех не избежать (кстати, об этом намекает спектр, помеха села аддитивно), особенно при таком кол-ве задействованной логики. поэтому клок для АЦП стоит развязывать от клока ПЛИС всеми способами. один вариант предложил VslavX. я говорю примерно о том же: вход с GCLK идет на глобальный буфер (для запитки логики) и на вход PLL (только для АЦП). при таком раскладе длина трассы клока АЦП внутри ПЛИС минимальна и на ней не сидят "левые" потребители. или логику запитать с PLL, а на АЦП пробросить входной клок. а лучше так - сделать 2 выхода с PLL, с0 - на пин для АЦП, c1 для логики.
|
|
|
|
|
Jan 3 2010, 07:27
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(vadimuzzz @ Jan 2 2010, 19:48)  а потом с буфера и на АЦП, и на логику? .... либо мы с вами читаем разные даташиты, либо что-то не так %) Cyclone III Device Handbook -> 6. Clock Networks and PLLs in Cyclone III Devices -> Cyclone III PLL -> External Clock Outputs Цитата Each Cyclone III PLL supports one single-ended clock output (or one differential pair). Only the C0 output counter can feed the dedicated external clock outputs, as shown in Figure 6–9, without going through the global clock network. Other output counters can feed other I/O pins through the global clock network Я понимаю это так, что используется самая оптимальная схема вывода клока из ПЛИС, как с точки зрения джиттера, так и с точки зрения наводок. Глобальный буфер ставиться уже после точки ответвления клока на PLLCLKOUT. Потому роли и не играет. Цитата вход с GCLK идет на глобальный буфер (для запитки логики) и на вход PLL (только для АЦП). при таком раскладе длина трассы клока АЦП внутри ПЛИС минимальна и на ней не сидят "левые" потребители. или логику запитать с PLL, а на АЦП пробросить входной клок. это только в том случае если частота генератора равна требуемой частоте, в моем случае это не так. Цитата а лучше так - сделать 2 выхода с PLL, с0 - на пин для АЦП, c1 для логики. В посте 8 я писал что сделал сборку вообще без PLL, используя генератор и его деление на триггере. результат тот же самый. На клоке наводка.
Эскизы прикрепленных изображений
--------------------
|
|
|
|
|
Jan 3 2010, 09:51
|

Гуру
     
Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988

|
Цитата(des00 @ Jan 3 2010, 13:27)  Я понимаю это так, что используется самая оптимальная схема вывода клока из ПЛИС, как с точки зрения джиттера, так и с точки зрения наводок. Глобальный буфер ставиться уже после точки ответвления клока на PLLCLKOUT. Потому роли и не играет. я с даташитом и не спорю ), но: так уж и не играет? буфер дает бесконечную развязку вход/выход(особенно нагруженный на такую сеть)? мне как-то более правильным кажется c0 пустить на АЦП, а c1 - на логику. хотя бы тупо попробовать ) Цитата В посте 8 я писал что сделал сборку вообще без PLL, используя генератор и его деление на триггере. результат тот же самый. На клоке наводка. так клок для триггера и для логики общий? результат не удивляет. кстати, это был пост №10 )
|
|
|
|
|
Jan 3 2010, 13:48
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(vadimuzzz @ Jan 3 2010, 03:51)  я с даташитом и не спорю ), но: так уж и не играет? буфер дает бесконечную развязку вход/выход(особенно нагруженный на такую сеть)? мне как-то более правильным кажется c0 пустить на АЦП, а c1 - на логику. хотя бы тупо попробовать ) попробывать то можно, но вот логического обоснования не вижу %). Ушел коннект с c0 на внешний пин, затем пошел на ближайший CLKCTRL блок, там прошел через мультиплексоры и ушел через буфер. Буфер этот скорее всего с высокоомным входом и сильно низкоомным выходом. Каким местом выход этого буфера даст наводку на вход этого буфера, а тем более на выделенную линию связи PLLCLKOUT в принципе не понятно. Цитата так клок для триггера и для логики общий? результат не удивляет. кстати, это был пост №10 ) уже писал что делал и общий глобальный и отдельно выделенный путь для АЦП и делитель делал отдельно выделенный с триггером для АЦП в IO буфере. Результат везде был один. ЗЫ. побить в бубен то можно, но вот логического обоснования не видно %)
--------------------
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|