juvf 17 29 октября, 2018 Опубликовано 29 октября, 2018 · Жалоба Сделал проект на Cyclon3 + DDR2 + Nios2. Линии подключения тестировались моделировались в гиперлинке. Изделие проверенно, отлажено, написано ПО, запущенно в серию. Сделано много плат в серийном производстве (несколько сотен). за несколько лет изготовления устройства накопилось несколько нерабочих неподъемных плат (изготовители ПП разные, поставщики РЭК разные, мотаж свой). Плис запускается и работает, а НИОС не стартует. Клоки на плис приходят годные. Платы с электроконтролем. Смотрели рентгеном дорожки на внутренних слоях и шары микросхем - визуально аномалий не видно. Форма фронтов на сигналах ддр(клоковых/адресных/данных/управляющих сигналах) рабочих и не рабочих плат похожая, аномалий нет. Перепаивали ПЛИС и ДДР - не помогло. Проверили все питания, все клоки.... всё нормально. Сделал тестовый проект, в котором из плис выкинул всё "мясо", оставил только ниос состоящий из ядра и контроллера DDR2. На "рабочих" платах всё работает, на "не рабочих" - не работает. ещё такое заметил, клок с плис на ддр при включении питания запускается... проходит секунда-две - клок пропадает. Через небольшую паузу клок опять появляется. Такое чувство, что контроллер ддр начинает калиброваться, не получается, ддр-контроллер дает ресет-реквест и по новой.... Вопрос в чем: может быть такое, что это брак при изготовлении ПП? Т.е. где-то FR4 тоньше или толще, может где-то в диэлектрик попал какой-нить неоднородный материал, который начинает работать как конденсатор и что-нибудь где-нибудь звенит? Т.е. это нормально, например при изготовлении плат с ддр2, сделали 100 плат ( по 2 микросхемы ддр на плате) и одна-две платы не запустились и не запустятся - и это нормально? Или должны запуститься из 1000 плат все 1000? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aner 5 29 октября, 2018 Опубликовано 29 октября, 2018 · Жалоба При правильном проекте 1000 плат все 1000 запускаются. А при разных температурах что с партией в 100шт не проверяли? Может больше не работающих будет. В гиперлинксе плату гоняли? Какие результаты? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_4afc_ 25 29 октября, 2018 Опубликовано 29 октября, 2018 · Жалоба 38 minutes ago, juvf said: (изготовители ПП разные, поставщики РЭК разные, мотаж свой). Плис запускается и работает, а НИОС не стартует. Перепаивали ПЛИС и ДДР - не помогло. Проверили все питания, все клоки.... всё нормально. Т.е. где-то FR4 тоньше или толще, может где-то в диэлектрик попал какой-нить неоднородный материал, который начинает работать как конденсатор и что-нибудь где-нибудь звенит? Обрыв переходных отверстий, может даже частичный. Переходите на FR4-HiTg Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
juvf 17 30 октября, 2018 Опубликовано 30 октября, 2018 · Жалоба 16 часов назад, Aner сказал: При правильном проекте 1000 плат все 1000 запускаются. А при разных температурах что с партией в 100шт не проверяли? Может больше не работающих будет. В гиперлинксе плату гоняли? Какие результаты? в морозе, в жаре, во влаге несколько плат гоняли, проблем не было. В гиперлинксе гоняли только модель отдельных цепей. Готовую плату не гоняли. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Realking 0 30 октября, 2018 Опубликовано 30 октября, 2018 · Жалоба 18 hours ago, juvf said: Сделал проект на Cyclon3 + DDR2 + Nios2. Линии подключения тестировались моделировались в гиперлинке. Изделие проверенно, отлажено, написано ПО, запущенно в серию. Сделано много плат в серийном производстве (несколько сотен). за несколько лет изготовления устройства накопилось несколько нерабочих неподъемных плат (изготовители ПП разные, поставщики РЭК разные, мотаж свой). Плис запускается и работает, а НИОС не стартует. Клоки на плис приходят годные. Платы с электроконтролем. Смотрели рентгеном дорожки на внутренних слоях и шары микросхем - визуально аномалий не видно. Форма фронтов на сигналах ддр(клоковых/адресных/данных/управляющих сигналах) рабочих и не рабочих плат похожая, аномалий нет. Перепаивали ПЛИС и ДДР - не помогло. Проверили все питания, все клоки.... всё нормально. Сделал тестовый проект, в котором из плис выкинул всё "мясо", оставил только ниос состоящий из ядра и контроллера DDR2. На "рабочих" платах всё работает, на "не рабочих" - не работает. ещё такое заметил, клок с плис на ддр при включении питания запускается... проходит секунда-две - клок пропадает. Через небольшую паузу клок опять появляется. Такое чувство, что контроллер ддр начинает калиброваться, не получается, ддр-контроллер дает ресет-реквест и по новой.... Вопрос в чем: может быть такое, что это брак при изготовлении ПП? Т.е. где-то FR4 тоньше или толще, может где-то в диэлектрик попал какой-нить неоднородный материал, который начинает работать как конденсатор и что-нибудь где-нибудь звенит? Т.е. это нормально, например при изготовлении плат с ддр2, сделали 100 плат ( по 2 микросхемы ддр на плате) и одна-две платы не запустились и не запустятся - и это нормально? Или должны запуститься из 1000 плат все 1000? Проверь монтаж согласующих резюков Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladimirB 1 31 октября, 2018 Опубликовано 31 октября, 2018 · Жалоба Может и не совсем по теме. У нас как-то на серийном изделии тоже пара плат в брак ушло. На плате ПЛИС Virtex6 и ATMega8 с друг другом взаимодействовали и подвисали через 1-2 секунды после включения питания. Причём подвисание было только на холодных платах (не прогревшихся выше +25град). Я дня три парился, перепаивал всё что мог, осциллографом тыкался, в морозилке платы охлаждал - всё вроде в норме, а не работает. Оказалось, что кварцевый генератор, от которого всё тактировалось, при старте сначала давал пару импульсов тактовой, потом затыкался на 10-20 мс, а потом начинал уже нормально генерить (заметил случайно). И микроконтроллеру это сильно не нравилось - он зависал на аппаратном уровне так, что программа даже не успевала стартовать. Вылечилось установкой повышенного startup time во FUSE битах. Так что причина может оказаться где-то в окружении и совсем не там, где ожидаешь. P.S. Чтобы DDR2 не заработала из-за звона, это надо постараться. Особенно, когда разработчик ПП слышал про гиперлинкс. Мне как-то на плате с Virtex6 и DDR2-800 все терминаторы запаяли 471Ом вместо 47Ом и всё работало. А я видал рабочие серийные платы с DDR3, на которых и импеданс дорожек вообще не был согласован и разрывы в плейнах были под данными и адресами во внутренних слоях (правда только с одной стороны, с другой был непрерывный плейн). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aner 5 31 октября, 2018 Опубликовано 31 октября, 2018 · Жалоба Тоже вспомнил про кварцы и проблему с DDR3, замена кварцев у проца A9 помогла. Проблема как оказалось в кварце, в держателе пластины. Попались несколько таких странных кварцев в партии из тыщи. Другая проблема с кварцем, в проце давал больше допустимого джиттер, PLL справлялась на 99%, брак тоже был не очевидным. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
juvf 17 31 октября, 2018 Опубликовано 31 октября, 2018 · Жалоба 52 минуты назад, Aner сказал: Тоже вспомнил про кварцы и проблему с DDR3, замена кварцев у проца A9 помогла. Проблема как оказалось в кварце, в держателе пластины. Попались несколько таких странных кварцев в партии из тыщи. Другая проблема с кварцем, в проце давал больше допустимого джиттер, PLL справлялась на 99%, брак тоже был не очевидным. а как обнаружить такой брак до замены клокдистребъютра? Я осциллографом смотрю клоки с генератора на плис - что на рабочих, что на не рабочих - одинакового. Частота всего 50 МГц. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aner 5 31 октября, 2018 Опубликовано 31 октября, 2018 · Жалоба Заменить сам кварц на таких не рабочих платах не пробовали? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
juvf 17 31 октября, 2018 Опубликовано 31 октября, 2018 · Жалоба нет кварца. есть генератор 100 МГц. с генератора на клокдистребьютер идёт 100 МГц. с клокдитебьютера на плис идет 50 МГц. в Плис из 50 МГц через pll делается 150 МГц для ддр. были мысли, что клоки плохие.... с генератора чоткие 100 МГц. с длокдистебютера 50. Осцилом, с полосой пропускания 600 МГц смотрел клоки 50 и 100. на раб и нераб платах. Одинаковые. Джитер одинаковый (на глаз). Плата большая. на ней много чего есть. Хотелось бы не банально всё подряд на ней менять, пока не заработает, а понять, что конкретно не так и поменять/пропаять нерабочую м/сх. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aner 5 31 октября, 2018 Опубликовано 31 октября, 2018 · Жалоба Первое заменить генератор. Джиттер смотреть нужно по ходу клока с привязкой к GND. Может PLL реализована с расширением джиттера. Что с кодом, конфигом под PLL? Нет ли где аморфных задержек. Если плата большая то мониторьте земляные полигоны и токовые пути. Тут гиперлинкс, SI в помощь. Смотря в каком сапре делали. Осцил, с полосой пропускания 600 МГц может слаб нужен шустрее. А фазовый шум померяли? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Александр77 1 31 октября, 2018 Опубликовано 31 октября, 2018 · Жалоба 4 hours ago, juvf said: в Плис из 50 МГц через pll делается 150 МГц для ддр. были мысли, что клоки плохие.... с генератора чоткие 100 МГц. А как организован сброс ниоса? Как-то создал проект со сбросом ниоса сигнала порожденным выходом locked pll, так ниос перезапускался когда ему хотелось (мог поработать и час, а мог и несколько минут). Сделал отдельный сброс, независимый от сигнала locked и беда исчезла. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
juvf 17 1 ноября, 2018 Опубликовано 1 ноября, 2018 · Жалоба Всем спасибо за помощь.... и поддержку... 2Aner кода (имеется в виду вериложный код в плис) PLL как такого нет. Я использую альтеровскую корку DDR2 SDRAM Controller with ALTMEMPHY. В этой корке указывается входной клок, и выходной. Корка сама задействует PLL в нужных режимах. Плата большая, но растояние от плис до ддр малое, сделано по примеру кита DE0. Всё очень компактно Генератор CVHD-950X-100.000. Достаточно точный. Фазовый шум не измерял. Пока не знаю как это сделать. на плис приходит 50 МГц с клокдистебьютера дифф-парой. Тут не понятно как измерять... а на клоксистебьютер приходит 100 МГц одной дорожкой. Тут можно анализатором измерить фазовый шум, но нужно подумать как анализатор подключить? Припаять к дорожкам 50-ти омный кабель? позже попробую. 2Fregate сброс ядра только с клока. клок имеет "ножку" на которую заведено формирование сигнала ресета через паузу. После загрузки конфигурации из epcs в плис, стартует плис, ресет удерживается в 0 апаратно (вериложным кодом) и через паузу ресет переходит в 1. этот ресет заведён в НИОС (через слок соурс). Внешнего ресета аппаратного в плис не заведено. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
juvf 17 1 ноября, 2018 Опубликовано 1 ноября, 2018 · Жалоба Ещё есть мысли.... при включении рабочей платы с ддр-контроллера на память начинают идти стабильные клоки 150МГц. На не рабочей начинают идти клоки и пропадают. потом опять появляются и пропадают. такое чувство, что контроллер ддр начинает калибровку... калибровка не проходит и контроллер перезапускается. В ддр-контроллере обычно есть статусные регистры. В них хранится результат калибровки. Также результат ошибки калибровки. Есть в квартусе какой-нибудь инструмент, который бы через джитаг напрямую обращался бы по авалону к ддр, минуя ниос и вычитывал бы значения этих регистров? Кто нибудь таким методом пользовался? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dinam 1 1 ноября, 2018 Опубликовано 1 ноября, 2018 · Жалоба В Quartus для этого есть External Memory Interface Toolkit. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться