Перейти к содержанию
    

Сделал проект на Cyclon3 + DDR2 + Nios2. Линии подключения тестировались моделировались в гиперлинке. Изделие проверенно, отлажено, написано ПО, запущенно в серию.

Сделано много плат в серийном производстве (несколько сотен). за несколько лет изготовления устройства накопилось несколько нерабочих  неподъемных плат (изготовители ПП разные, поставщики РЭК разные, мотаж свой). Плис запускается и работает, а НИОС не стартует.

Клоки на плис приходят годные. Платы с электроконтролем. Смотрели рентгеном дорожки на внутренних слоях и шары микросхем - визуально аномалий не видно. Форма фронтов на сигналах ддр(клоковых/адресных/данных/управляющих сигналах) рабочих и не рабочих плат похожая, аномалий нет. 

Перепаивали ПЛИС и ДДР - не помогло. Проверили все питания, все клоки.... всё нормально.

 

Сделал тестовый проект, в котором из плис выкинул всё "мясо", оставил только ниос состоящий из ядра и контроллера DDR2.  На "рабочих" платах всё работает, на "не рабочих" - не работает.

 

ещё такое заметил, клок с плис на ддр при включении питания запускается... проходит секунда-две - клок пропадает. Через небольшую паузу клок опять появляется. Такое чувство, что контроллер ддр начинает калиброваться, не получается, ддр-контроллер дает ресет-реквест и по новой....

 

Вопрос в чем: может быть такое, что это брак при изготовлении ПП? Т.е. где-то FR4 тоньше или толще, может где-то в диэлектрик попал какой-нить неоднородный материал, который начинает работать как конденсатор и что-нибудь где-нибудь звенит?  Т.е. это нормально, например при изготовлении плат с ддр2,  сделали 100 плат ( по 2 микросхемы ддр на плате) и одна-две платы не запустились и не запустятся - и это нормально? Или должны запуститься из 1000 плат все 1000?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

При правильном проекте 1000 плат все 1000 запускаются. А при разных температурах что с партией в 100шт не проверяли? Может больше не работающих будет. В гиперлинксе плату гоняли? Какие результаты?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

38 minutes ago, juvf said:

(изготовители ПП разные, поставщики РЭК разные, мотаж свой). Плис запускается и работает, а НИОС не стартует.

Перепаивали ПЛИС и ДДР - не помогло. Проверили все питания, все клоки.... всё нормально.

Т.е. где-то FR4 тоньше или толще, может где-то в диэлектрик попал какой-нить неоднородный материал, который начинает работать как конденсатор и что-нибудь где-нибудь звенит? 

 

Обрыв переходных отверстий, может даже частичный. Переходите на FR4-HiTg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

16 часов назад, Aner сказал:

При правильном проекте 1000 плат все 1000 запускаются. А при разных температурах что с партией в 100шт не проверяли? Может больше не работающих будет. В гиперлинксе плату гоняли? Какие результаты?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

18 hours ago, juvf said:

Сделал проект на Cyclon3 + DDR2 + Nios2. Линии подключения тестировались моделировались в гиперлинке. Изделие проверенно, отлажено, написано ПО, запущенно в серию.

Сделано много плат в серийном производстве (несколько сотен). за несколько лет изготовления устройства накопилось несколько нерабочих  неподъемных плат (изготовители ПП разные, поставщики РЭК разные, мотаж свой). Плис запускается и работает, а НИОС не стартует.

Клоки на плис приходят годные. Платы с электроконтролем. Смотрели рентгеном дорожки на внутренних слоях и шары микросхем - визуально аномалий не видно. Форма фронтов на сигналах ддр(клоковых/адресных/данных/управляющих сигналах) рабочих и не рабочих плат похожая, аномалий нет. 

Перепаивали ПЛИС и ДДР - не помогло. Проверили все питания, все клоки.... всё нормально.

 

Сделал тестовый проект, в котором из плис выкинул всё "мясо", оставил только ниос состоящий из ядра и контроллера DDR2.  На "рабочих" платах всё работает, на "не рабочих" - не работает.

 

ещё такое заметил, клок с плис на ддр при включении питания запускается... проходит секунда-две - клок пропадает. Через небольшую паузу клок опять появляется. Такое чувство, что контроллер ддр начинает калиброваться, не получается, ддр-контроллер дает ресет-реквест и по новой....

 

Вопрос в чем: может быть такое, что это брак при изготовлении ПП? Т.е. где-то FR4 тоньше или толще, может где-то в диэлектрик попал какой-нить неоднородный материал, который начинает работать как конденсатор и что-нибудь где-нибудь звенит?  Т.е. это нормально, например при изготовлении плат с ддр2,  сделали 100 плат ( по 2 микросхемы ддр на плате) и одна-две платы не запустились и не запустятся - и это нормально? Или должны запуститься из 1000 плат все 1000?

Проверь монтаж согласующих резюков

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может и не совсем по теме.

У нас как-то на серийном изделии тоже пара плат в брак ушло.

На плате ПЛИС Virtex6 и ATMega8 с друг другом взаимодействовали и подвисали через 1-2 секунды после включения питания. Причём подвисание было только на холодных платах (не прогревшихся выше +25град). 

Я дня три парился, перепаивал всё что мог, осциллографом тыкался, в морозилке платы охлаждал - всё вроде в норме, а не работает.

Оказалось, что кварцевый генератор, от которого всё тактировалось, при старте сначала давал пару импульсов тактовой, потом затыкался на 10-20 мс, а потом начинал уже нормально генерить (заметил случайно).

И микроконтроллеру это сильно не нравилось - он зависал на аппаратном уровне так, что программа даже не успевала стартовать. Вылечилось установкой повышенного startup time во FUSE битах.

 

Так что причина может оказаться где-то в окружении и совсем не там, где ожидаешь.

 

P.S. Чтобы DDR2 не заработала из-за звона, это надо постараться. Особенно, когда разработчик ПП слышал про гиперлинкс.

Мне как-то на плате с Virtex6 и DDR2-800 все терминаторы запаяли 471Ом вместо 47Ом и всё работало.

А я видал рабочие серийные платы с DDR3, на которых и импеданс дорожек вообще не был согласован и разрывы в плейнах были под данными и адресами во внутренних слоях (правда только с одной стороны, с другой был непрерывный плейн).

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тоже вспомнил про кварцы и проблему с DDR3, замена кварцев у проца A9 помогла. Проблема как оказалось в кварце, в держателе пластины. Попались несколько таких странных кварцев в партии из тыщи. Другая проблема с кварцем, в проце давал больше допустимого джиттер, PLL справлялась на 99%, брак тоже был не очевидным.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

52 минуты назад, Aner сказал:

Тоже вспомнил про кварцы и проблему с DDR3, замена кварцев у проца A9 помогла. Проблема как оказалось в кварце, в держателе пластины. Попались несколько таких странных кварцев в партии из тыщи. Другая проблема с кварцем, в проце давал больше допустимого джиттер, PLL справлялась на 99%, брак тоже был не очевидным.

а как обнаружить такой брак до замены клокдистребъютра? Я осциллографом смотрю клоки с генератора на плис - что на рабочих, что на не рабочих - одинакового. Частота всего 50 МГц.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

нет кварца. есть генератор 100 МГц. с генератора на клокдистребьютер идёт 100 МГц. с клокдитебьютера на плис идет 50 МГц. в Плис из 50 МГц через pll делается 150 МГц для ддр. были мысли, что клоки плохие.... с генератора чоткие 100 МГц. с длокдистебютера 50. Осцилом, с полосой пропускания 600 МГц смотрел клоки 50 и 100. на раб и нераб платах. Одинаковые. Джитер одинаковый (на глаз).

Плата большая. на ней много чего есть. Хотелось бы не банально всё подряд на ней менять, пока не заработает, а понять, что конкретно не так и поменять/пропаять нерабочую м/сх. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Первое заменить генератор. Джиттер смотреть нужно по ходу клока с привязкой к GND. Может PLL реализована с расширением джиттера. Что с кодом, конфигом под PLL? Нет ли где аморфных задержек. Если плата большая то мониторьте земляные полигоны и токовые пути. Тут гиперлинкс, SI в помощь. Смотря в каком сапре делали.

Осцил, с полосой пропускания 600 МГц может слаб нужен шустрее. А фазовый шум померяли?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 hours ago, juvf said:

в Плис из 50 МГц через pll делается 150 МГц для ддр. были мысли, что клоки плохие.... с генератора чоткие 100 МГц. 

А как организован сброс ниоса?

Как-то создал проект со сбросом ниоса сигнала порожденным выходом locked pll, так ниос перезапускался когда ему хотелось (мог поработать и час, а мог и несколько минут). Сделал отдельный сброс, независимый от сигнала locked и беда исчезла.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всем спасибо за помощь.... и поддержку...

2Aner

кода (имеется в виду вериложный код в плис) PLL как такого нет.  Я использую альтеровскую корку DDR2 SDRAM Controller with ALTMEMPHY. В этой корке указывается входной клок, и выходной. Корка сама задействует PLL в нужных режимах.

image.thumb.png.07d7d80cd126b137a1d35dfe958289fc.png

Плата большая, но растояние от плис до ддр малое, сделано по примеру кита DE0. Всё очень компактно

image.png.5cd319283f9e5543b35920389c3ead36.png

Генератор CVHD-950X-100.000. Достаточно точный.

Фазовый шум не измерял. Пока не знаю как это сделать. на плис приходит 50 МГц с клокдистебьютера дифф-парой. Тут не понятно как измерять... а на клоксистебьютер приходит 100 МГц одной дорожкой. Тут можно анализатором измерить фазовый шум, но нужно подумать как анализатор подключить? Припаять к дорожкам 50-ти омный кабель? позже попробую.

2Fregate

сброс ядра только с клока. клок имеет "ножку" на которую заведено формирование сигнала ресета через паузу. После загрузки конфигурации из epcs в плис, стартует плис, ресет удерживается в 0 апаратно (вериложным кодом) и через паузу ресет переходит в 1. этот ресет заведён в НИОС (через слок соурс).

image.thumb.png.7d787b790ef26e307bcf5bad5eb5d8aa.png

image.thumb.png.c947d4168c4f1973592ed3267d56aca3.png

 

Внешнего ресета аппаратного в плис не заведено.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ещё есть мысли.... при включении рабочей платы с ддр-контроллера на память начинают идти стабильные клоки 150МГц. На не рабочей начинают идти клоки и пропадают. потом опять появляются и пропадают. такое чувство, что контроллер ддр начинает калибровку... калибровка не проходит и контроллер перезапускается. В ддр-контроллере обычно есть статусные регистры. В них хранится результат калибровки. Также результат ошибки калибровки. Есть в квартусе какой-нибудь инструмент, который бы через джитаг напрямую обращался бы по авалону к ддр, минуя ниос и вычитывал бы значения этих регистров? Кто нибудь таким методом пользовался?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...