|
Cyclone III, частотомер, PLL, Непонятные глюки PLL, Cross-Talking, температура |
|
|
|
Nov 8 2016, 21:38
|
Местный
  
Группа: Свой
Сообщений: 399
Регистрация: 1-01-06
Из: Волгоград
Пользователь №: 12 763

|
Надо помощь зала. Напоролся на непонятную засаду в своем проекте. Как и много лет назад, делаю многоканальный частотомер. Смысл метода и структура на картинках (реальная битность счетчиков - 32, картинка старенькая, и счетчики синхронные). ПЛИС - EP3C10 Дополнительно ко всему что на рисунке я использую 2 контрольных счетчика для точек 1) и 2) (красным на рисунке), т.е. прошу систему посчитать собственную опорную частоту, умноженную PLL. (Входная 10 МГц, счетная 100). Pll в режиме Source Syncrous mode. Обычно значение второго счетчика ровно в 10 раз больше значения первого. Если появились расхождения значит мы имеем большой джиттер в опорной частоте и потенциальную неисправность, результат замера выбраковывается. Такой вот самоконтроль. Сделали новую плату. Немного изменили код ПЛИС - в этой ревизии было удобнее применить последовательную выгрузку данных, как на рисунке изображено. В предыдущей была параллельная через мультиплексор. Суть проблемы. Когда подается на частотомер много (более 20) входных сигналов (все они 3.3В КМОП), и при температуре выше 70°С, система начинает сыпать ошибки измерений. Контрольный счетчик не сходится. Что интересно, счетчик заполнения всегда выдает значения кратные 10, а сам счетчик опоры выдает значения немного меньше (на 10-50 импульсов), чем соответствовало бы счетчику заполнения. То есть. Измеряем 0.4 секунды. В счетчике 1 видим 4000123, в счетчике 2 видим 40001350. Т.е. либо PLL не множит, либо счетчик сбивается (ну, еще может выгрузка данных но не верю). Эффект повторяется на разных платах в партии (все пока не оттестировали). При этом сам код не новый и чипы тоже, в 4-5 более старых ревизиях ничего подобного не наблюдалось. Эффект исчезает если убрать счетные частоты - оставляем одну - прекрасно считает на 100°С. Наводит мысль на какую-то проблему с Cross-Talking. Но опять же непонятно почему этого не было на других ревизиях. Выявлено что температурный фактор влияет именно на саму ПЛИС - греешь ее феном и ошибки начинают сыпаться. Нагрев других компонентов платы не приводит к результату. TimeQuest ругается на Hold time по частоте sclk - последовательной выгрузки данных. Больше никаких предупреждений нет. Выгрузку выполняем очень медленно (<100 кГц), поэтому тоже не верю. Загрузка ПЛИС по ячейкам 99.5%. Пробовал снижать разрядность счетчиков и уменьшать до 90% - не помогало. На плате 6 слоев, опорный слой земли имеется, разведено вроде прилично. Блокировки рядом, на питание PLL ферритовый фильтр. Пробовали дополнительно кондерами обвешивать питание PLL - не помогает. Што проверять куда копать? )
Эскизы прикрепленных изображений
|
|
|
|
|
Nov 9 2016, 07:47
|
Местный
  
Группа: Свой
Сообщений: 399
Регистрация: 1-01-06
Из: Волгоград
Пользователь №: 12 763

|
Цитата(iosifk @ Nov 9 2016, 00:46)  Сколько выводов из ПЛИС переключается одновременно и каков стандарт этих выводов. У плис 85 входов LVCMOS и 1 выход LVCMOS. Питание всех I/O банков 3.3В. Цитата(ViKo @ Nov 9 2016, 08:09)  Температура ПЛИС превышена. Надо кулер прицепить. Чип индустриального диапазона. Кулер прицепить не получится, плата работает в термокамере. Надо стабильный результат до +85. Цитата(warrior-2001 @ Nov 9 2016, 08:35)  в топике не указана версия квартуса. Посему для начала советую убрать все слэки. Ну а потом - сигналтап в помощь. И ещё - нужно корректно настроить параметры внешней среды в квартусе - нет кулера, температура воздуха высокая и тому подобное. Тогда TimeQuest может заругаться и на основные клоки! Квартус 9.1 sp2 32bit. Слэков по счетным частотам нету, и fmax кажет 170-250 МГц. Единственный небольшой слэк на hold клок sclk для сдвиговых регистров. SignalTap я ранее не пользовался, и как это сделать для данного асинхронного дизайна я не соображу до конца. Тут по сути 84 разных клока, из них 83 асинхронны. (80 счетных входов, клок выгрузки данных, опорная частота и частота заполнения после PLL). Режима работы по сути два - режим счета и режим выгрузки данных. Суть в том, что я этот дизайн использую уже лет 5, на разных платах и в совершенно жутких режимах, и такую проблему вижу впервые. Чтобы счетчик сам себя не мог корректно посчитать. Lock сейчас посмотрим, спасибо. Код выложить?
|
|
|
|
|
Nov 9 2016, 12:04
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Цитата(Reanimator++ @ Nov 9 2016, 13:58)  PLL Lock падает. Что искать в питании? Напряжение. Может, регулятор напряжения проседает? Развязку конденсаторами согласно рекомендациям. По всем ножкам пройтись, убедиться, что сделано правильно. И разводка, конечно. Земли не жалеть.
|
|
|
|
|
Nov 9 2016, 13:13
|
Местный
  
Группа: Свой
Сообщений: 399
Регистрация: 1-01-06
Из: Волгоград
Пользователь №: 12 763

|
На плате слой земли и питание тоже широкими полигонами подходит. Прошлись по питаниям. Осциллом ничего не видно на максимальном усилении. Дополнительно повесили по 1нФ прямо на лапки между AVDD и AGND. AVDD по даташиту - стаб, 10мкф, 1 мкф, фильтр ферритовый 1кОм, 10мкф, 0.1мкф х 2шт, 0.01 мкф х 2шт. Попробовали вывести наружу клок до PLL и после PLL. (из точек 1 и 2) Клок до PLL совпадает по осцилу с входящим в ПЛИС клоком (в любых условиях). Клок после PLL ведет себя стабильно до тех пор пока не подаем сигналы на счетные входы. Когда подаем сигналы, клок после PLL начинает дрожать. (пробовали на частоте 20 МГц) Даже при наличии нормального PLL Lock появляется большой джиттер. Делаем следующее - берем клок и подаем на плисину в LVDS виде (LVDS приходит на плату, там отдельно приемник и конвертер в КМОП стоит). И о чудо, PLL начинает работать стабильно, джиттер на выходе пропадает, ошибки исчезают. Т.е. либо мы профукали где-то клок при транспорте КМОП по плате (хотя там всего 3 см дорожки и два получателя - ПЛИС и процессор), либо условия входа КМОП сигнала в плисину создались какие-то непонятные. Более всего непонятно, что клок выведенный из плисины из точки 1 по осцилу точно совпадает со входным. Не видно ни джиттера, ни пропусков, никаких отклонений (смотрели в режиме накопления). Получается что форма входного сигнала влияет на работу PLL. странно. посмотрим, пока оно на столе только ожило, надо проверить во всем диапазоне и на выборке плат.
Эскизы прикрепленных изображений
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|