Подскажите пожалуйста, если кто сталкивался вот с каким вопросом. Разработал устройство на Spartan 2 достаточно долгое время оно корерктно работало. Некоторое время назад заказчик поменял завод, где он заказывает печатные платы. Так вот на этих новых платах устройство стало работать со сбоями. Сбой смешной - сбоит 1 бит на 256 кб.
Т.е. схемотехника одна и таже, детали одни и те же(в качестве эксперимента даже полностью переставлял датели со старой платы на новую), только сами печатные платы разные.
Суть устройства - сбор данных с PCI шины.
Начал изучать причину сбой, устаносил что данные бьются в одном из триггеров. Я поставил компаратор на входе и выходе триггера и передаю в устройство заданный шаблон и смотрю на оссциллографе. Так вот на входе триггера данные корректны - на выходе нет. Бьется один из битов!
Заполненоость кристалла 99%. Установил требуемые констейны, при разводке получаю сообщение что они не выполнены. От требуемых отличаются более чем в 2,5 раза. Плюс тригер с которого данне идут на триггер, где и наблюдается сбой, тактирован второй частотой, которая заведена НЕ через GCLK.
Это все конечно ошибки и достаточно грубые. Про метастабильность я знаю. Но ведь данные бьются в тригере на входе которого они корректные задолго до момента защелкивания. Я все никак не могу понять причину этого. Как такое может быть.
Задача осоложняется еще тем, что вероятность появления ошибки зависит от разводки. И кроме того основной момент - устройство достаточно долго работало и было произведено несколько тысяч экземпляров.
Вот такой интересный момент - новая печатная плата - значительно качественней предыдущей.
Если кто-то может что-то подсказать по этому поводу, буду очень признателен.
|