|
странный сбой, сбой данных в триггере |
|
|
|
Jan 8 2008, 16:16
|
Участник

Группа: Новичок
Сообщений: 23
Регистрация: 7-02-05
Пользователь №: 2 475

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

Группа: Новичок
Сообщений: 23
Регистрация: 7-02-05
Пользователь №: 2 475

|
Изменился только производитель. Топология осталась та же. Т.е. визуально платы - точные копии. Элементы точно ни при чем, т.к. полностью менял. Кстати spartanы тоже менял, т.к. предположил что дело в бракованной серии. Перейти на spatan 3e нет возможности, т.к. заказчик уже закупил достаточно большое число spartan 2 для этого изделия. Новых плат тоже около 1000. Т.е. надо как-то решить вопрос в рамках существующих условий. Я просто не могу понять ЧТО может быть причиной такого поведения. Я думал помехи, но используются 99% IO остальные - посажены на землю. В общем пока еще проблема не решена, в данный момент пробую Ваши предложения (Большое спасибо за них).
|
|
|
|
|
Jan 9 2008, 09:18
|
Участник

Группа: Новичок
Сообщений: 23
Регистрация: 7-02-05
Пользователь №: 2 475

|
Я тут для эксперимента вторую тактовую (ну которая через обычный порт заведена) завел через свободный тактовый вход. А сам проект не трогал. Только вывод переназничил. Вероятность возникновения ошибки уменьшилась значительно. Стала 1 бит на 150 Гб!!! Но ошибка не исчезла. Т.е. вот это некореркное тактирование очень сильно влияет. Но беда в том, что изменять топологию платы нельзя. Буду экпериментировать с тем, что есть.
|
|
|
|
|
Jan 9 2008, 10:22
|

Знающий
   
Группа: Свой
Сообщений: 597
Регистрация: 24-05-06
Из: г. Чебоксары
Пользователь №: 17 402

|
Цитата Изменился только производитель. Топология осталась та же. Значит в той топологии уже что-то было на грани, а сейчас по микронам эта грань преодолелась.
--------------------
Почему разработчики систем повышенной надёжности плохо справляются с простыми проектами? :)
|
|
|
|
|
Jan 9 2008, 11:29
|
Профессионал
    
Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770

|
Цитата(spashok2 @ Jan 9 2008, 11:57)  Я просто не могу понять ЧТО может быть причиной такого поведения. Причин может быть масса. Для того и придуманы правила дизайна, чтобы таких гемморов не случалось. Теперь что делать: обобщим мысль предыдущего оратора. Берем разводку ПЛИС, что на старой плате работает, а на новой - нет. Ставим старые детали на новую плату, рядом кладем старую плату, подаем одинаковые воздействия и поножечно сравниваем сигналы на ПЛИС. Находим различия, от них пляшем.
|
|
|
|
|
Jan 9 2008, 11:57
|
Знающий
   
Группа: Админы
Сообщений: 689
Регистрация: 24-06-04
Из: South Africa
Пользователь №: 164

|
Цитата(DmitryR @ Jan 9 2008, 13:29)  Причин может быть масса. Для того и придуманы правила дизайна, чтобы таких гемморов не случалось. Теперь что делать: обобщим мысль предыдущего оратора. Берем разводку ПЛИС, что на старой плате работает, а на новой - нет. Ставим старые детали на новую плату, рядом кладем старую плату, подаем одинаковые воздействия и поножечно сравниваем сигналы на ПЛИС. Находим различия, от них пляшем. Попробовать можно, но гарантии результатов - никакой. В таких ситуациях почти ничего предсказать нельзя. К примеру совет "и поножечно сравниваем сигналы на ПЛИС" при тыканьи осцилографом может иметь 2 эффекта и оба отрицательных: 1) "старая-работающая" плата может перестать работать; 2) "новая-неработающая" плата заработает; С эффектом, аналогичным второму недавно столкнулся - отлаживали NIOS софт для SPI. При отладке, ессесно, подоткнули логический анализатор. Все успешно отладили, отключили анализатор - все умерло. Тыкаешь осцилографом (благо ножек мало) - пашет, убираешь - мертвое. Одно только выявили - чего-то неправильно на сигнале даннах от памяти к FPGA. Стали играться - вешать конденсаторы (не помогло), PullUp (не помогло), а вот PullDown - помогло. Как PullDown может имитировать осцилограф - не понимаю, но работает
--------------------
"В мире есть две бесконечные вещи: Вселенная и человеческая глупость. За Вселенную, впрочем, поручиться не могу". (С)
А. Эйнштейн.
|
|
|
|
|
Jan 9 2008, 12:20
|
Знающий
   
Группа: Свой
Сообщений: 709
Регистрация: 3-05-05
Пользователь №: 4 693

|
Ну, блин...Попробуй наоборот, добиться неработоспособности, тыкаясь в разные места. Мож это как-то поможет определиться? И этта...был случай - сваяли образец. Испытали, всё путём. Готовим ещё - швах. Оказалось, что пользовали электролиты одного производителя, а потом - другого. Оказалось, что у первого обычные электролиты имели характеристики, близкие к low ESR. А у второго - честные обычные. Хотя что там Кетай, что там. ;О)
|
|
|
|
|
Jan 9 2008, 12:29
|
Участник

Группа: Новичок
Сообщений: 23
Регистрация: 7-02-05
Пользователь №: 2 475

|
Большое спасибо за такое количество советов. Еще поизучаю проблему. Будут новые данные - напишу.
|
|
|
|
|
Jan 9 2008, 12:57
|
Гуру
     
Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804

|
Цитата(spashok2 @ Jan 8 2008, 19:16)  Суть устройства - сбор данных с PCI шины.
Начал изучать причину сбой, устаносил что данные бьются в одном из триггеров. Я поставил компаратор на входе и выходе триггера и передаю в устройство заданный шаблон и смотрю на оссциллографе. Так вот на входе триггера данные корректны - на выходе нет. Бьется один из битов!
Заполненоость кристалла 99%. Установил требуемые констейны, при разводке получаю сообщение что они не выполнены. От требуемых отличаются более чем в 2,5 раза. Плюс тригер с которого данне идут на триггер, где и наблюдается сбой, тактирован второй частотой, которая заведена НЕ через GCLK.
Это все конечно ошибки и достаточно грубые. Про метастабильность я знаю. Но ведь данные бьются в тригере на входе которого они корректные задолго до момента защелкивания. Я все никак не могу понять причину этого. Как такое может быть.
Задача осоложняется еще тем, что вероятность появления ошибки зависит от разводки. И кроме того основной момент - устройство достаточно долго работало и было произведено несколько тысяч экземпляров.
Вот такой интересный момент - новая печатная плата - значительно качественней предыдущей.
Если кто-то может что-то подсказать по этому поводу, буду очень признателен. Так ведь это ни о чем не говорит. Какие частоты. констрейны чего. В мегагерцах или наносекундах. Какова разрядность регистра. Почему сбоит один бит этого регистра. Почему от разводки зависит. (Если клок на входе не коротит в новой плате) Приведите описания этой части схемы.
|
|
|
|
|
Jan 9 2008, 14:29
|
Участник

Группа: Новичок
Сообщений: 23
Регистрация: 7-02-05
Пользователь №: 2 475

|
Первая чатота 70 Мг. Вторая 33Мгц. Констейн задан общий в виде 70 Мгц (соответвует ~14 нс). После разводки получил сообщение что реальное значние ~ 28нс. Регистр 32 разряда. Почему сбоит один бит - это и есть суть вопроса. Мое предположение - особенность разводки внутри кристалла линии именно этого бита. Почему зависит от разводки - пока еще сам не понял.
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|