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

осторожно: метастабильность!

Прибор с кристаллом XC2S30. Загрузка кристалла 99% (хотя добавление или убирание кода не влияет на эту цифру).Одна часть работает на частоте 50 МГц. Из них формируется 1МГц на которой работает вторая часть схемы. На 1МГц работает автомат состояний, который в зависимости от разводки кристалла ЗБОИТ :blink: , т.е. может заходить в промежуточное состояние и после этого соответсвенно нужна его инициализация. Переделка схемы на работу всего кристалла на 50 МГц, приводит к тем же результатам! Также наблюдаются збои некоторых регистров, причем самопроизвольно, без привязки ко времени и процессам :excl:

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

Какие будут мысли, рекомендации. Понятно, что плату нужно переразводить, но что-то мне подсказывает, что собака не там зарыта. :ninja:

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


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

Прибор с кристаллом XC2S30. Загрузка кристалла 99% (хотя добавление или убирание кода не влияет на эту цифру).Одна часть работает на частоте 50 МГц. Из них формируется 1МГц на которой работает вторая часть схемы. На 1МГц работает автомат состояний, который в зависимости от разводки кристалла ЗБОИТ :blink: , т.е. может заходить в промежуточное состояние и после этого соответсвенно нужна его инициализация. Переделка схемы на работу всего кристалла на 50 МГц, приводит к тем же результатам! Также наблюдаются збои некоторых регистров, причем самопроизвольно, без привязки ко времени и процессам :excl:

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

Какие будут мысли, рекомендации. Понятно, что плату нужно переразводить, но что-то мне подсказывает, что собака не там зарыта. :ninja:

 

хммм, не совсем конечно понятно, но ИМХО

1. Если сбоит КА, то тут может сбоить :

1.1 некорректная логика функции переходов (неправильн описан автомат).

1.2 асинхронные выходы КА --- метастаильные входы ---- автомат улетает куда ему вздумаеться, если не корректно написан.

1.3. неучтенны тайминги

2. Насчет регистров смотреть нужно:

2.1 некорректно сделан переход из одного клок домена в другой.

2.2 Гонки сигналов --- некорректно прописанна нектороая логика

3. Неправильные тайминги.

4. Ваши "косяки" с DCM (если вы его пользуете).

5. Плату переразводить рано еще, проштудировать отчеты синтезатора и проверить код, "потыкаться" чипскопом (если место есть)

 

Удачи

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


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

хммм, не совсем конечно понятно, но ИМХО

1. Если сбоит КА, то тут может сбоить :

1.1 некорректная логика функции переходов (неправильн описан автомат).

1.2 асинхронные выходы КА --- метастаильные входы ---- автомат улетает куда ему вздумаеться, если не корректно написан.

1.3. неучтенны тайминги

2. Насчет регистров смотреть нужно:

2.1 некорректно сделан переход из одного клок домена в другой.

2.2 Гонки сигналов --- некорректно прописанна нектороая логика

3. Неправильные тайминги.

4. Ваши "косяки" с DCM (если вы его пользуете).

5. Плату переразводить рано еще, проштудировать отчеты синтезатора и проверить код, "потыкаться" чипскопом (если место есть)

 

Удачи

KA - работает синхронно с тактом 1 МГц, соответственно ассинхронных выходов нет, и какие там тайминги на 1 МГц.

Для регистров тайминги указаны и выполняются. DCM не использую.

Переход из одного клок домена в другой через блочную память - запись побитно на 1МГц, чтение из другого порта - на 50 МГц(сбоят типа адреса чтения этой памяти). Процессы записи и чтения асинхронны.

С чипскоупом в напряг - места нет.

Спасибо.

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


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

Прибор с кристаллом XC2S30. Загрузка кристалла 99% (хотя добавление или убирание кода не влияет на эту цифру).Одна часть работает на частоте 50 МГц. Из них формируется 1МГц на которой работает вторая часть схемы. На 1МГц работает автомат состояний, который в зависимости от разводки кристалла ЗБОИТ :blink:

А почему загрузка кристалла то 99%? При заполнении больше 70-80% что угодно может быть... Не попробовать ли убрать часть код и посмотреть ситуацию... А разводка платы здесь 99% ни при чем.

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


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

KA - работает синхронно с тактом 1 МГц, соответственно ассинхронных выходов нет, и какие там тайминги на 1 МГц.

я говорил про входы, а не выходы.

Тайминги на 1 МГц, а если у вас там 20 уровней логики ? и у вас могут быть проблемы со временами установки и удержания.

 

Переход из одного клок домена в другой через блочную память - запись побитно на 1МГц, чтение из другого порта - на 50 МГц(сбоят типа адреса чтения этой памяти).

хммм а генераторы адресов случайно не ФСМ управляються ? какой синтезатор ?

 

Процессы записи и чтения асинхронны.

хммм не есть гут

 

С чипскоупом в напряг - места нет.

оттебажить по частям

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


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

Могу еще посоветовать вывести на свободные ноги (если они конечно остались) часть сигналов управления и выходных того места что возможно сбоит и осциллографом засинхронизовавшись, посмотреть по ним - нет ли коротких "шпилек" импульсов, из-за которых может быть сбой.

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


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

Прибор с кристаллом XC2S30. Загрузка кристалла 99% (хотя добавление или убирание кода не влияет на эту цифру).Одна часть работает на частоте 50 МГц. Из них формируется 1МГц на которой работает вторая часть схемы. На 1МГц работает автомат состояний, который в зависимости от разводки кристалла ЗБОИТ :blink:

А почему загрузка кристалла то 99%? При заполнении больше 70-80% что угодно может быть... Не попробовать ли убрать часть код и посмотреть ситуацию... А разводка платы здесь 99% ни при чем.

А что может быть при 99% заполнения - времяночки, то все выполняються,которые в ucf задаю? На другой плате, где использую эту же компоненту и с заполнением 78%. Эффект тот же. :(

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


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

я говорил про входы, а не выходы.

Тайминги на 1 МГц, а если у вас там 20 уровней логики ? и у вас могут быть проблемы со временами установки и удержания.

 

хммм а генераторы адресов случайно не ФСМ управляються ? какой синтезатор ?

 

хммм не есть гут

 

оттебажить по частям

На вход приходит сигнал привязаный к 50 МГц , но конечно не синфазный с 1МГц, но это решается быстро, принимается.

Устанавливал я тайминг на 1МГц - 20 нс максимальная задержка.

Адреса збоят от компонента внешнего интерфейса, который только либо пишет в буферную память либо читает (на 50 МГц). По второму порту только запись (1 МГц).

На счет дебага и несинхронности, могу сказать, что поскольку ВСЕ збои зависят от разводки кристалла, то 1/4 вариантов разводки не збоит :cranky:

Вот так мозги и едут... :wacko:

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

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


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

Прибор с кристаллом XC2S30. Загрузка кристалла 99% (хотя добавление или убирание кода не влияет на эту цифру).Одна часть работает на частоте 50 МГц. Из них формируется 1МГц на которой работает вторая часть схемы. На 1МГц работает автомат состояний, который в зависимости от разводки кристалла ЗБОИТ :blink:

А почему загрузка кристалла то 99%? При заполнении больше 70-80% что угодно может быть... Не попробовать ли убрать часть код и посмотреть ситуацию... А разводка платы здесь 99% ни при чем.

А что может быть при 99% заполнения - времяночки, то все выполняються,которые в ucf задаю? На другой плате, где использую эту же компоненту и с заполнением 78%. Эффект тот же. :(

 

Самая распространенная ошибка с КА - ассинхронные входы по отношению к входной тактовой частоте КА. Лечится установкой синхронных регистров на каждый управляющий вход автомата.

 

Автомат дополняется состоянием XYZ и из всех рабочих состояний делается переход в XYZ если не выполняются все другие легальные переходы. Таким образом проверяется логика работы автомата - если XYZ появляется в процессе работы, то есть неучтенная комбинация управляющих сигналов, приводящая к ошибке. У нас даже было специальное название для этого сигнала - "хуз" :)

 

Использование выходов автомата для управления ассинхронными сбросами регистров или счетчиков (самая большая лажа). Автомат может работать правильно, но на сигналах будут тонкие "шпильки" импульсов, которых хватает для сброса части (!) триггеров в счетчиках или регистрах. BTW, пытаться увидеть эти шпильки осциллографом/чипскопом/самодельным регистратором абсолютно бесполезно. На пин не выйдет по причине инерционности драйвера пина, а чипскопу/самодельному регистратору необходимы setup/hold, тогда как ассинхронный сброс вполне на них среагирует.

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


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

Самая распространенная ошибка с КА - ассинхронные входы по отношению к входной тактовой частоте КА. Лечится установкой синхронных регистров на каждый управляющий вход автомата.

 

Автомат дополняется состоянием XYZ и из всех рабочих состояний делается переход в XYZ если не выполняются все другие легальные переходы. Таким образом проверяется логика работы автомата - если XYZ появляется в процессе работы, то есть неучтенная комбинация управляющих сигналов, приводящая к ошибке. У нас даже было специальное название для этого сигнала - "хуз" :)

 

Использование выходов автомата для управления ассинхронными сбросами регистров или счетчиков (самая большая лажа). Автомат может работать правильно, но на сигналах будут тонкие "шпильки" импульсов, которых хватает для сброса части (!) триггеров в счетчиках или регистрах. BTW, пытаться увидеть эти шпильки осциллографом/чипскопом/самодельным регистратором абсолютно бесполезно. На пин не выйдет по причине инерционности драйвера пина, а чипскопу/самодельному регистратору необходимы setup/hold, тогда как ассинхронный сброс вполне на них среагирует.

Такой пример. СИНХРОННЫЙ автомат имеет 6 состояний:а,б,в,г,д,е,ж. Каждому синтезатор присваивает код 000001,000010,000100,001000,010000,100000.

Входной управляющий сигнал привязан к 50МГц из которого формируется 1МГц (пробовал автомат и на 50 МГц - ничего не дало)

После запуска автомат бегает по определенным состояниям согласно алгоритму, но в какой-то момент (типа кто-то голове грохнул) автомат переходит в состояние 000000! (никаких конфликтов внутри нет). И все... стоим-с.

Асинхронными сбросами, управлением я уже давно не пользуюсь - на рассыпухе их наелся.

Бред какой-то. В какой-то момент становиться просто смешно, но потом становится очень грустно - не первый день сижу,

а как это все отпахало в Modelsim'e?

Симуляция показывает все ок.

2 irum4

Тактовые на глобальных линиях?

Конечно

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


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

v_mirgorodsky

На счет инерционности драйвера пина - это вы "погорячились".

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

Через чипскоп - действительно "шпилек" не увидите.

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


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

Симуляция показывает все ок.

А Ваш тестбенч имитирует метастабильность?

Еще, извините за недоверчивость :), 1МГц точно разведен на глобальную линию?

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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