реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> странный сбой, сбой данных в триггере
spashok2
сообщение Jan 8 2008, 16:16
Сообщение #1


Участник
*

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



Подскажите пожалуйста, если кто сталкивался вот с каким вопросом.
Разработал устройство на Spartan 2 достаточно долгое время оно корерктно работало.
Некоторое время назад заказчик поменял завод, где он заказывает печатные платы.
Так вот на этих новых платах устройство стало работать со сбоями.
Сбой смешной - сбоит 1 бит на 256 кб.

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

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

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

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

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

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

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

Если кто-то может что-то подсказать по этому поводу, буду очень признателен.
Go to the top of the page
 
+Quote Post
litv
сообщение Jan 9 2008, 05:32
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 401
Регистрация: 6-10-04
Из: Воронеж
Пользователь №: 806



Делают же люди платы да еще PCI! Такое часто бывало даже у тех у кого ВСЕ констрейны выполнялись, и один клок у тактового. У Вас все еще хуже. Вообще дело мертвое. Надо переходить например на Sparatan 3e. Правильно делать тактовые входы.
Теперь два пути .
1) размещать этот триггер во Flooplаnner пока не заработает.
2) ставить констрейны только на цепи окружающие этот триггер.
3) Попробовать синтез в Synplify Pro - это если все делали раньше в XST.
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Jan 9 2008, 06:10
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(spashok2 @ Jan 8 2008, 19:16) *
Плюс тригер с которого данне идут на триггер, где и наблюдается сбой, тактирован второй частотой, которая заведена НЕ через GCLK.
Если этот сигнал пропущен через тактовый буфер, то скорее всего дело не в этом.
Go to the top of the page
 
+Quote Post
EvgenyNik
сообщение Jan 9 2008, 07:14
Сообщение #4


Знающий
****

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



Ставлю на:
Изменилось волновое сопротивление (производитель плат другой) в цепях тактирования и в сигнале клока появилась "колебанка", которая иногда воспринимается, как двойной фронт.
У Вас и без того потеря времени, как я понимаю, но попробуйте логикой запретить триггеру защёлкиваться через малое время после предыдущего защёлкивания.


--------------------
Почему разработчики систем повышенной надёжности плохо справляются с простыми проектами? :)
Go to the top of the page
 
+Quote Post
mse
сообщение Jan 9 2008, 07:43
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 709
Регистрация: 3-05-05
Пользователь №: 4 693



Не понял...Изменился производитель или топология? Если топология, то пусть тупо копируют эталонную и не парятся, бо лучшее - враг хорошего. А вот если поменяли Резонит на Тепро, например, то тут точно, надо в консерватории менять чего-нить. ;О)
Go to the top of the page
 
+Quote Post
spashok2
сообщение Jan 9 2008, 08:57
Сообщение #6


Участник
*

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



Изменился только производитель. Топология осталась та же.
Т.е. визуально платы - точные копии.
Элементы точно ни при чем, т.к. полностью менял.
Кстати spartanы тоже менял, т.к. предположил что дело в бракованной серии.
Перейти на spatan 3e нет возможности, т.к. заказчик уже закупил достаточно большое число spartan 2 для этого изделия. Новых плат тоже около 1000. Т.е. надо как-то решить вопрос в рамках существующих условий.
Я просто не могу понять ЧТО может быть причиной такого поведения.
Я думал помехи, но используются 99% IO остальные - посажены на землю.
В общем пока еще проблема не решена, в данный момент пробую Ваши предложения (Большое спасибо за них).
Go to the top of the page
 
+Quote Post
AsJohnAs
сообщение Jan 9 2008, 09:09
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 125
Регистрация: 14-07-05
Из: Санкт-Петербург
Пользователь №: 6 793



Ну может дейстивительно попробывать переместить этот сигнал на другой тригер... (в UCF с помощью LOC) Или еще один вариант если как было сказано сигнал меняется не очень быстро указать в UCF что эта нога медленная.
Вообщем тут надо долго эксперементировать....
Go to the top of the page
 
+Quote Post
spashok2
сообщение Jan 9 2008, 09:18
Сообщение #8


Участник
*

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



Я тут для эксперимента вторую тактовую (ну которая через обычный порт заведена) завел через свободный тактовый вход. А сам проект не трогал. Только вывод переназничил.
Вероятность возникновения ошибки уменьшилась значительно.
Стала 1 бит на 150 Гб!!! Но ошибка не исчезла.
Т.е. вот это некореркное тактирование очень сильно влияет.
Но беда в том, что изменять топологию платы нельзя.
Буду экпериментировать с тем, что есть.
Go to the top of the page
 
+Quote Post
EvgenyNik
сообщение Jan 9 2008, 10:22
Сообщение #9


Знающий
****

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



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

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


--------------------
Почему разработчики систем повышенной надёжности плохо справляются с простыми проектами? :)
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Jan 9 2008, 11:29
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Цитата(spashok2 @ Jan 9 2008, 11:57) *
Я просто не могу понять ЧТО может быть причиной такого поведения.

Причин может быть масса. Для того и придуманы правила дизайна, чтобы таких гемморов не случалось.
Теперь что делать: обобщим мысль предыдущего оратора.
Берем разводку ПЛИС, что на старой плате работает, а на новой - нет. Ставим старые детали на новую плату, рядом кладем старую плату, подаем одинаковые воздействия и поножечно сравниваем сигналы на ПЛИС. Находим различия, от них пляшем.
Go to the top of the page
 
+Quote Post
LeonY
сообщение Jan 9 2008, 11:57
Сообщение #11


Знающий
****

Группа: Админы
Сообщений: 689
Регистрация: 24-06-04
Из: South Africa
Пользователь №: 164



Цитата(DmitryR @ Jan 9 2008, 13:29) *
Причин может быть масса. Для того и придуманы правила дизайна, чтобы таких гемморов не случалось.
Теперь что делать: обобщим мысль предыдущего оратора.
Берем разводку ПЛИС, что на старой плате работает, а на новой - нет. Ставим старые детали на новую плату, рядом кладем старую плату, подаем одинаковые воздействия и поножечно сравниваем сигналы на ПЛИС. Находим различия, от них пляшем.

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

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


--------------------
"В мире есть две бесконечные вещи: Вселенная и человеческая глупость. За Вселенную, впрочем, поручиться не могу". (С)

А. Эйнштейн.
Go to the top of the page
 
+Quote Post
mse
сообщение Jan 9 2008, 12:20
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 709
Регистрация: 3-05-05
Пользователь №: 4 693



Ну, блин...Попробуй наоборот, добиться неработоспособности, тыкаясь в разные места. Мож это как-то поможет определиться?
И этта...был случай - сваяли образец. Испытали, всё путём. Готовим ещё - швах. Оказалось, что пользовали электролиты одного производителя, а потом - другого. Оказалось, что у первого обычные электролиты имели характеристики, близкие к low ESR. А у второго - честные обычные. Хотя что там Кетай, что там. ;О)
Go to the top of the page
 
+Quote Post
spashok2
сообщение Jan 9 2008, 12:29
Сообщение #13


Участник
*

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



Большое спасибо за такое количество советов. Еще поизучаю проблему.
Будут новые данные - напишу.
Go to the top of the page
 
+Quote Post
sazh
сообщение Jan 9 2008, 12:57
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Цитата(spashok2 @ Jan 8 2008, 19:16) *
Суть устройства - сбор данных с PCI шины.

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

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

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

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

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

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


Так ведь это ни о чем не говорит.
Какие частоты. констрейны чего. В мегагерцах или наносекундах. Какова разрядность регистра.
Почему сбоит один бит этого регистра.
Почему от разводки зависит. (Если клок на входе не коротит в новой плате)
Приведите описания этой части схемы.
Go to the top of the page
 
+Quote Post
spashok2
сообщение Jan 9 2008, 14:29
Сообщение #15


Участник
*

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



Первая чатота 70 Мг. Вторая 33Мгц.
Констейн задан общий в виде 70 Мгц (соответвует ~14 нс). После разводки получил сообщение что реальное значние ~ 28нс.
Регистр 32 разряда.
Почему сбоит один бит - это и есть суть вопроса.
Мое предположение - особенность разводки внутри кристалла линии именно этого бита.
Почему зависит от разводки - пока еще сам не понял.
Go to the top of the page
 
+Quote Post
sazh
сообщение Jan 9 2008, 15:04
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Цитата(spashok2 @ Jan 9 2008, 17:29) *
Первая чатота 70 Мг. Вторая 33Мгц.
Констейн задан общий в виде 70 Мгц (соответвует ~14 нс). После разводки получил сообщение что реальное значние ~ 28нс.
Регистр 32 разряда.
Почему сбоит один бит - это и есть суть вопроса.
Мое предположение - особенность разводки внутри кристалла линии именно этого бита.
Почему зависит от разводки - пока еще сам не понял.


Если у вас два клоковых домена. то и констрейнить наверно нужно оба.
Если кристалл тянет системную частоту 70 мГц, и контроллер PCI реализован мегафункцией (clk 33
только на fpga),
нужно корректно перейти из клокового домена 70 в клоковый домен 33.
По сути это селектор адреса с регистровыми записью и чтением.
Не должно тут быть проблем.
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Jan 10 2008, 08:06
Сообщение #17


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Вообще как-то мы упустили один простой совет - возьмите postPAR модель да отмоделируйте при разном начальном сдвиге фаз тактовых частот. Все увидите.
Go to the top of the page
 
+Quote Post
spashok2
сообщение Jan 10 2008, 11:53
Сообщение #18


Участник
*

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



Спасибо за совет.
Попробую отмоделировать.
Go to the top of the page
 
+Quote Post
yes
сообщение Jan 10 2008, 17:43
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640



может я чего-то не понял, но 33 и 70 МГц некратные частоты и их констрейнить (вернее переход между ними) не получицца

странно, что раньше работало...

может проблема решиться посредством синхронизатора (ну или еще одно слово для гугления metastability)

проще говоря, нужно добавить (если допустимо) еще один (два ...) триггер в цепочку
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Jan 11 2008, 07:43
Сообщение #20


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Цитата(yes @ Jan 10 2008, 20:43) *
может я чего-то не понял, но 33 и 70 МГц некратные частоты и их констрейнить (вернее переход между ними) не получицца

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

Цитата(yes @ Jan 10 2008, 20:43) *
странно, что раньше работало...

Правда удивительно.

Цитата(yes @ Jan 10 2008, 20:43) *
может проблема решиться посредством синхронизатора (ну или еще одно слово для гугления metastability)

проще говоря, нужно добавить (если допустимо) еще один (два ...) триггер в цепочку

Добавление второго регистра в принимающем домене защищает от звона принимающей логики, когда первый триггер попадает в метастабильное состояние, и никак не влияет на правильность принимаемых данных. Там широкий регистр, я так понял, и просто добавление триггеров не спасет: шину из одного домена в другой можно передать, только используя механизмы обратной связи (acknowledge) или FIFO, если только не счетчик Грея передается.
Go to the top of the page
 
+Quote Post
yes
сообщение Jan 11 2008, 11:18
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640



Цитата(DmitryR @ Jan 11 2008, 10:43) *
данных. Там широкий регистр, я так понял, и просто добавление триггеров не спасет: шину из одного домена в другой можно передать, только используя механизмы обратной связи (acknowledge) или FIFO, если только не счетчик Грея передается.


sorry, я не совсем точно сказал

но можно и без обратной связи, если времянка фиксирована и известна

например, выходные данные удерживать несколько тактов, а сигнал готовности задержать и т.п.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th August 2025 - 00:54
Рейтинг@Mail.ru


Страница сгенерированна за 0.01542 секунд с 7
ELECTRONIX ©2004-2016