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

Подскажите пожалуйста, если кто сталкивался вот с каким вопросом.

Разработал устройство на Spartan 2 достаточно долгое время оно корерктно работало.

Некоторое время назад заказчик поменял завод, где он заказывает печатные платы.

Так вот на этих новых платах устройство стало работать со сбоями.

Сбой смешной - сбоит 1 бит на 256 кб.

 

Т.е. схемотехника одна и таже, детали одни и те же(в качестве эксперимента даже полностью переставлял датели со старой платы на новую), только сами печатные платы разные.

 

Суть устройства - сбор данных с PCI шины.

 

Начал изучать причину сбой, устаносил что данные бьются в одном из триггеров.

Я поставил компаратор на входе и выходе триггера и передаю в устройство заданный шаблон и смотрю на оссциллографе. Так вот на входе триггера данные корректны - на выходе нет. Бьется один из битов!

 

Заполненоость кристалла 99%. Установил требуемые констейны, при разводке получаю сообщение что они не выполнены. От требуемых отличаются более чем в 2,5 раза. Плюс тригер с которого данне идут на триггер, где и наблюдается сбой, тактирован второй частотой, которая заведена НЕ через GCLK.

 

Это все конечно ошибки и достаточно грубые. Про метастабильность я знаю.

Но ведь данные бьются в тригере на входе которого они корректные задолго до момента защелкивания. Я все никак не могу понять причину этого. Как такое может быть.

 

Задача осоложняется еще тем, что вероятность появления ошибки зависит от разводки.

И кроме того основной момент - устройство достаточно долго работало и было произведено несколько тысяч экземпляров.

 

Вот такой интересный момент - новая печатная плата - значительно качественней предыдущей.

 

Если кто-то может что-то подсказать по этому поводу, буду очень признателен.

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


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

Делают же люди платы да еще PCI! Такое часто бывало даже у тех у кого ВСЕ констрейны выполнялись, и один клок у тактового. У Вас все еще хуже. Вообще дело мертвое. Надо переходить например на Sparatan 3e. Правильно делать тактовые входы.

Теперь два пути .

1) размещать этот триггер во Flooplаnner пока не заработает.

2) ставить констрейны только на цепи окружающие этот триггер.

3) Попробовать синтез в Synplify Pro - это если все делали раньше в XST.

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


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

Плюс тригер с которого данне идут на триггер, где и наблюдается сбой, тактирован второй частотой, которая заведена НЕ через GCLK.
Если этот сигнал пропущен через тактовый буфер, то скорее всего дело не в этом.

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


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

Ставлю на:

Изменилось волновое сопротивление (производитель плат другой) в цепях тактирования и в сигнале клока появилась "колебанка", которая иногда воспринимается, как двойной фронт.

У Вас и без того потеря времени, как я понимаю, но попробуйте логикой запретить триггеру защёлкиваться через малое время после предыдущего защёлкивания.

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


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

Не понял...Изменился производитель или топология? Если топология, то пусть тупо копируют эталонную и не парятся, бо лучшее - враг хорошего. А вот если поменяли Резонит на Тепро, например, то тут точно, надо в консерватории менять чего-нить. ;О)

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


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

Изменился только производитель. Топология осталась та же.

Т.е. визуально платы - точные копии.

Элементы точно ни при чем, т.к. полностью менял.

Кстати spartanы тоже менял, т.к. предположил что дело в бракованной серии.

Перейти на spatan 3e нет возможности, т.к. заказчик уже закупил достаточно большое число spartan 2 для этого изделия. Новых плат тоже около 1000. Т.е. надо как-то решить вопрос в рамках существующих условий.

Я просто не могу понять ЧТО может быть причиной такого поведения.

Я думал помехи, но используются 99% IO остальные - посажены на землю.

В общем пока еще проблема не решена, в данный момент пробую Ваши предложения (Большое спасибо за них).

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


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

Ну может дейстивительно попробывать переместить этот сигнал на другой тригер... (в UCF с помощью LOC) Или еще один вариант если как было сказано сигнал меняется не очень быстро указать в UCF что эта нога медленная.

Вообщем тут надо долго эксперементировать....

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


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

Я тут для эксперимента вторую тактовую (ну которая через обычный порт заведена) завел через свободный тактовый вход. А сам проект не трогал. Только вывод переназничил.

Вероятность возникновения ошибки уменьшилась значительно.

Стала 1 бит на 150 Гб!!! Но ошибка не исчезла.

Т.е. вот это некореркное тактирование очень сильно влияет.

Но беда в том, что изменять топологию платы нельзя.

Буду экпериментировать с тем, что есть.

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


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

Изменился только производитель. Топология осталась та же.

Значит в той топологии уже что-то было на грани, а сейчас по микронам эта грань преодолелась.

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


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

Я просто не могу понять ЧТО может быть причиной такого поведения.

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

Теперь что делать: обобщим мысль предыдущего оратора.

Берем разводку ПЛИС, что на старой плате работает, а на новой - нет. Ставим старые детали на новую плату, рядом кладем старую плату, подаем одинаковые воздействия и поножечно сравниваем сигналы на ПЛИС. Находим различия, от них пляшем.

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


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

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

Теперь что делать: обобщим мысль предыдущего оратора.

Берем разводку ПЛИС, что на старой плате работает, а на новой - нет. Ставим старые детали на новую плату, рядом кладем старую плату, подаем одинаковые воздействия и поножечно сравниваем сигналы на ПЛИС. Находим различия, от них пляшем.

Попробовать можно, но гарантии результатов - никакой. В таких ситуациях почти ничего предсказать нельзя. К примеру совет "и поножечно сравниваем сигналы на ПЛИС" при тыканьи осцилографом может иметь 2 эффекта и оба отрицательных: 1) "старая-работающая" плата может перестать работать; 2) "новая-неработающая" плата заработает;

 

С эффектом, аналогичным второму недавно столкнулся - отлаживали NIOS софт для SPI. При отладке, ессесно, подоткнули логический анализатор. Все успешно отладили, отключили анализатор - все умерло. Тыкаешь осцилографом (благо ножек мало) - пашет, убираешь - мертвое. Одно только выявили - чего-то неправильно на сигнале даннах от памяти к FPGA. Стали играться - вешать конденсаторы (не помогло), PullUp (не помогло), а вот PullDown - помогло. Как PullDown может имитировать осцилограф - не понимаю, но работает :crying:

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


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

Ну, блин...Попробуй наоборот, добиться неработоспособности, тыкаясь в разные места. Мож это как-то поможет определиться?

И этта...был случай - сваяли образец. Испытали, всё путём. Готовим ещё - швах. Оказалось, что пользовали электролиты одного производителя, а потом - другого. Оказалось, что у первого обычные электролиты имели характеристики, близкие к low ESR. А у второго - честные обычные. Хотя что там Кетай, что там. ;О)

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


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

Большое спасибо за такое количество советов. Еще поизучаю проблему.

Будут новые данные - напишу.

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


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

Суть устройства - сбор данных с PCI шины.

 

Начал изучать причину сбой, устаносил что данные бьются в одном из триггеров.

Я поставил компаратор на входе и выходе триггера и передаю в устройство заданный шаблон и смотрю на оссциллографе. Так вот на входе триггера данные корректны - на выходе нет. Бьется один из битов!

 

Заполненоость кристалла 99%. Установил требуемые констейны, при разводке получаю сообщение что они не выполнены. От требуемых отличаются более чем в 2,5 раза. Плюс тригер с которого данне идут на триггер, где и наблюдается сбой, тактирован второй частотой, которая заведена НЕ через GCLK.

 

Это все конечно ошибки и достаточно грубые. Про метастабильность я знаю.

Но ведь данные бьются в тригере на входе которого они корректные задолго до момента защелкивания. Я все никак не могу понять причину этого. Как такое может быть.

 

Задача осоложняется еще тем, что вероятность появления ошибки зависит от разводки.

И кроме того основной момент - устройство достаточно долго работало и было произведено несколько тысяч экземпляров.

 

Вот такой интересный момент - новая печатная плата - значительно качественней предыдущей.

 

Если кто-то может что-то подсказать по этому поводу, буду очень признателен.

 

Так ведь это ни о чем не говорит.

Какие частоты. констрейны чего. В мегагерцах или наносекундах. Какова разрядность регистра.

Почему сбоит один бит этого регистра.

Почему от разводки зависит. (Если клок на входе не коротит в новой плате)

Приведите описания этой части схемы.

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


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

Первая чатота 70 Мг. Вторая 33Мгц.

Констейн задан общий в виде 70 Мгц (соответвует ~14 нс). После разводки получил сообщение что реальное значние ~ 28нс.

Регистр 32 разряда.

Почему сбоит один бит - это и есть суть вопроса.

Мое предположение - особенность разводки внутри кристалла линии именно этого бита.

Почему зависит от разводки - пока еще сам не понял.

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


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

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

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

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

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

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

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

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

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

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