spashok2 0 8 января, 2008 Опубликовано 8 января, 2008 · Жалоба Подскажите пожалуйста, если кто сталкивался вот с каким вопросом. Разработал устройство на Spartan 2 достаточно долгое время оно корерктно работало. Некоторое время назад заказчик поменял завод, где он заказывает печатные платы. Так вот на этих новых платах устройство стало работать со сбоями. Сбой смешной - сбоит 1 бит на 256 кб. Т.е. схемотехника одна и таже, детали одни и те же(в качестве эксперимента даже полностью переставлял датели со старой платы на новую), только сами печатные платы разные. Суть устройства - сбор данных с PCI шины. Начал изучать причину сбой, устаносил что данные бьются в одном из триггеров. Я поставил компаратор на входе и выходе триггера и передаю в устройство заданный шаблон и смотрю на оссциллографе. Так вот на входе триггера данные корректны - на выходе нет. Бьется один из битов! Заполненоость кристалла 99%. Установил требуемые констейны, при разводке получаю сообщение что они не выполнены. От требуемых отличаются более чем в 2,5 раза. Плюс тригер с которого данне идут на триггер, где и наблюдается сбой, тактирован второй частотой, которая заведена НЕ через GCLK. Это все конечно ошибки и достаточно грубые. Про метастабильность я знаю. Но ведь данные бьются в тригере на входе которого они корректные задолго до момента защелкивания. Я все никак не могу понять причину этого. Как такое может быть. Задача осоложняется еще тем, что вероятность появления ошибки зависит от разводки. И кроме того основной момент - устройство достаточно долго работало и было произведено несколько тысяч экземпляров. Вот такой интересный момент - новая печатная плата - значительно качественней предыдущей. Если кто-то может что-то подсказать по этому поводу, буду очень признателен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
litv 0 9 января, 2008 Опубликовано 9 января, 2008 · Жалоба Делают же люди платы да еще PCI! Такое часто бывало даже у тех у кого ВСЕ констрейны выполнялись, и один клок у тактового. У Вас все еще хуже. Вообще дело мертвое. Надо переходить например на Sparatan 3e. Правильно делать тактовые входы. Теперь два пути . 1) размещать этот триггер во Flooplаnner пока не заработает. 2) ставить констрейны только на цепи окружающие этот триггер. 3) Попробовать синтез в Synplify Pro - это если все делали раньше в XST. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 14 9 января, 2008 Опубликовано 9 января, 2008 · Жалоба Плюс тригер с которого данне идут на триггер, где и наблюдается сбой, тактирован второй частотой, которая заведена НЕ через GCLK. Если этот сигнал пропущен через тактовый буфер, то скорее всего дело не в этом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EvgenyNik 0 9 января, 2008 Опубликовано 9 января, 2008 · Жалоба Ставлю на: Изменилось волновое сопротивление (производитель плат другой) в цепях тактирования и в сигнале клока появилась "колебанка", которая иногда воспринимается, как двойной фронт. У Вас и без того потеря времени, как я понимаю, но попробуйте логикой запретить триггеру защёлкиваться через малое время после предыдущего защёлкивания. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mse 0 9 января, 2008 Опубликовано 9 января, 2008 · Жалоба Не понял...Изменился производитель или топология? Если топология, то пусть тупо копируют эталонную и не парятся, бо лучшее - враг хорошего. А вот если поменяли Резонит на Тепро, например, то тут точно, надо в консерватории менять чего-нить. ;О) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
spashok2 0 9 января, 2008 Опубликовано 9 января, 2008 · Жалоба Изменился только производитель. Топология осталась та же. Т.е. визуально платы - точные копии. Элементы точно ни при чем, т.к. полностью менял. Кстати spartanы тоже менял, т.к. предположил что дело в бракованной серии. Перейти на spatan 3e нет возможности, т.к. заказчик уже закупил достаточно большое число spartan 2 для этого изделия. Новых плат тоже около 1000. Т.е. надо как-то решить вопрос в рамках существующих условий. Я просто не могу понять ЧТО может быть причиной такого поведения. Я думал помехи, но используются 99% IO остальные - посажены на землю. В общем пока еще проблема не решена, в данный момент пробую Ваши предложения (Большое спасибо за них). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AsJohnAs 0 9 января, 2008 Опубликовано 9 января, 2008 · Жалоба Ну может дейстивительно попробывать переместить этот сигнал на другой тригер... (в UCF с помощью LOC) Или еще один вариант если как было сказано сигнал меняется не очень быстро указать в UCF что эта нога медленная. Вообщем тут надо долго эксперементировать.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
spashok2 0 9 января, 2008 Опубликовано 9 января, 2008 · Жалоба Я тут для эксперимента вторую тактовую (ну которая через обычный порт заведена) завел через свободный тактовый вход. А сам проект не трогал. Только вывод переназничил. Вероятность возникновения ошибки уменьшилась значительно. Стала 1 бит на 150 Гб!!! Но ошибка не исчезла. Т.е. вот это некореркное тактирование очень сильно влияет. Но беда в том, что изменять топологию платы нельзя. Буду экпериментировать с тем, что есть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EvgenyNik 0 9 января, 2008 Опубликовано 9 января, 2008 · Жалоба Изменился только производитель. Топология осталась та же. Значит в той топологии уже что-то было на грани, а сейчас по микронам эта грань преодолелась. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DmitryR 0 9 января, 2008 Опубликовано 9 января, 2008 · Жалоба Я просто не могу понять ЧТО может быть причиной такого поведения. Причин может быть масса. Для того и придуманы правила дизайна, чтобы таких гемморов не случалось. Теперь что делать: обобщим мысль предыдущего оратора. Берем разводку ПЛИС, что на старой плате работает, а на новой - нет. Ставим старые детали на новую плату, рядом кладем старую плату, подаем одинаковые воздействия и поножечно сравниваем сигналы на ПЛИС. Находим различия, от них пляшем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LeonY 0 9 января, 2008 Опубликовано 9 января, 2008 · Жалоба Причин может быть масса. Для того и придуманы правила дизайна, чтобы таких гемморов не случалось. Теперь что делать: обобщим мысль предыдущего оратора. Берем разводку ПЛИС, что на старой плате работает, а на новой - нет. Ставим старые детали на новую плату, рядом кладем старую плату, подаем одинаковые воздействия и поножечно сравниваем сигналы на ПЛИС. Находим различия, от них пляшем. Попробовать можно, но гарантии результатов - никакой. В таких ситуациях почти ничего предсказать нельзя. К примеру совет "и поножечно сравниваем сигналы на ПЛИС" при тыканьи осцилографом может иметь 2 эффекта и оба отрицательных: 1) "старая-работающая" плата может перестать работать; 2) "новая-неработающая" плата заработает; С эффектом, аналогичным второму недавно столкнулся - отлаживали NIOS софт для SPI. При отладке, ессесно, подоткнули логический анализатор. Все успешно отладили, отключили анализатор - все умерло. Тыкаешь осцилографом (благо ножек мало) - пашет, убираешь - мертвое. Одно только выявили - чего-то неправильно на сигнале даннах от памяти к FPGA. Стали играться - вешать конденсаторы (не помогло), PullUp (не помогло), а вот PullDown - помогло. Как PullDown может имитировать осцилограф - не понимаю, но работает :crying: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mse 0 9 января, 2008 Опубликовано 9 января, 2008 · Жалоба Ну, блин...Попробуй наоборот, добиться неработоспособности, тыкаясь в разные места. Мож это как-то поможет определиться? И этта...был случай - сваяли образец. Испытали, всё путём. Готовим ещё - швах. Оказалось, что пользовали электролиты одного производителя, а потом - другого. Оказалось, что у первого обычные электролиты имели характеристики, близкие к low ESR. А у второго - честные обычные. Хотя что там Кетай, что там. ;О) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
spashok2 0 9 января, 2008 Опубликовано 9 января, 2008 · Жалоба Большое спасибо за такое количество советов. Еще поизучаю проблему. Будут новые данные - напишу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 3 9 января, 2008 Опубликовано 9 января, 2008 · Жалоба Суть устройства - сбор данных с PCI шины. Начал изучать причину сбой, устаносил что данные бьются в одном из триггеров. Я поставил компаратор на входе и выходе триггера и передаю в устройство заданный шаблон и смотрю на оссциллографе. Так вот на входе триггера данные корректны - на выходе нет. Бьется один из битов! Заполненоость кристалла 99%. Установил требуемые констейны, при разводке получаю сообщение что они не выполнены. От требуемых отличаются более чем в 2,5 раза. Плюс тригер с которого данне идут на триггер, где и наблюдается сбой, тактирован второй частотой, которая заведена НЕ через GCLK. Это все конечно ошибки и достаточно грубые. Про метастабильность я знаю. Но ведь данные бьются в тригере на входе которого они корректные задолго до момента защелкивания. Я все никак не могу понять причину этого. Как такое может быть. Задача осоложняется еще тем, что вероятность появления ошибки зависит от разводки. И кроме того основной момент - устройство достаточно долго работало и было произведено несколько тысяч экземпляров. Вот такой интересный момент - новая печатная плата - значительно качественней предыдущей. Если кто-то может что-то подсказать по этому поводу, буду очень признателен. Так ведь это ни о чем не говорит. Какие частоты. констрейны чего. В мегагерцах или наносекундах. Какова разрядность регистра. Почему сбоит один бит этого регистра. Почему от разводки зависит. (Если клок на входе не коротит в новой плате) Приведите описания этой части схемы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
spashok2 0 9 января, 2008 Опубликовано 9 января, 2008 · Жалоба Первая чатота 70 Мг. Вторая 33Мгц. Констейн задан общий в виде 70 Мгц (соответвует ~14 нс). После разводки получил сообщение что реальное значние ~ 28нс. Регистр 32 разряда. Почему сбоит один бит - это и есть суть вопроса. Мое предположение - особенность разводки внутри кристалла линии именно этого бита. Почему зависит от разводки - пока еще сам не понял. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться