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

Обсуждение проблемы метастабильности в ПЛИС

30 минут назад, des00 сказал:

Но в памяти отразились итоговые таблицы, там были приведены данные на плис начиная с уровня первых максов-динозавров (~5нс), заканчивая последними 16нм хилыми, где и были указанны те самые 100-200пс .

Во вложении документ 2010 года, который тоже говорит о 100 пс уже на Spartan-3: medvedrogina2010.pdf

И ещё один документ из библиографии вышеуказанной статьи: beer2010.pdf

Чудеса?

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


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

9 minutes ago, makc said:

Во вложении документ 2010 года, который тоже говорит о 100 пс уже на Spartan-3: medvedrogina2010.pdf

Чудеса?

Чуть позже гляну, спасибо) 

Про чудеса не знаю, не уверен) но повторюсь, у ТС  какая то мелкая ПЛИС с гражданской тактовой порядка 50-100МГц. Однотриггерный синхронизатор, даже при наличии комбинационной логики детектора фронта (уже намек что входные сигналы порядка 25-50МГц как максимум), идущей на мелкий КА и в отсутствии констрейнов и всех прочих свистоперделок без которых "CDC точно не заработает", будет с вероятностью 99.9% работать. Проблема у него где-то в другом месте. В этом контексте я и писал) Но полный код и результаты применения советов форума он не выкладывает. 

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


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

26 минут назад, des00 сказал:

Чуть позже гляну, спасибо) 

Там я чуть позже ещё одну статью прикрепил. По-хорошему смотреть их нужно вместе.

26 минут назад, des00 сказал:

Проблема у него где-то в другом месте. В этом контексте я и писал) Но полный код и результаты применения советов форума он не выкладывает. 

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

 

Нашёл ещё более новую статью: 1-s2.0-S0026271417305462-main.pdf

@des00, не её ли вы изначально имели в виду?

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


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

@des00, @makc - Благодарю за представленные документы - они были весьма интересны.

Я бегло проглядел эти... изыскания. Есть здравые зёрна, а есть и маразм.

Вот последний заключается в том, что для существенно нелинейной системы частоту отказов решили аппроксимировать функцией 1-го порядка: e^(Td/Tay).

Отмечу такой момент: 100-200 пс (Tay), о которых говорилось: это - НЕ "время необходимое для успокоения метастабильности в триггере"; это - величина "постоянной времени" аппроксимирующей функции или время, которое дают CDC системе на успокоение, но так, чтобы сбои шли достаточно часто для их уверенной фиксации, но и гарантированно не накладывались друг на друга.
Да, Тау имеет размерность времени, но смысл совсем иной.

Т.е. Если мы возьмём интервал N Тау, то получим следующие вероятности возникновения ошибки работы CDC из 2 DFF:
    1 Тау - 37%,
    2 Тау - 14%,
    3 Тау -   5.0%,
    5 Тау -   0.7 %,
  10 Тау - 4.5 *10^-5 раз,
100 Тау - 3.7 *10^-44 раз,
150 Тау - 7.2 *10^-66 раз.

Но это если верить линейной аппроксимации нелинейного процесса.

В итоге получается, что рекомендации от технического специалиста Xilinx (про не более 250 МГц и 300 МГц) - вполне здравые (если, конечно, нам необходимо обеспечить надёжную работу).

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


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

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

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


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

4 hours ago, Plain said:

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

Поделитсь способами?

Да и  бесплатного "сыра" почти не бывает, любая оптимизация под что-то одно обычно идет за счет чего-то другого ... 

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


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

2 hours ago, RobFPGA said:

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

"чего-то другое" это в большинстве решений окажется скорость/частота 

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


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

On 11/1/2023 at 7:55 PM, RobFPGA said:

Да и  бесплатного "сыра" почти не бывает

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

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


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

9 часов назад, RobFPGA сказал:

Поделитсь способами?

Что на поверхности — первый инвертор ведущей защёлки заменить на триггер Шмитта, т.е. добавить местную ПОС на двух диффпарах, это 4 транзистора.

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

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


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

2 часа назад, Plain сказал:

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

Так это не сработает в ПЛИС, у которых вся прелесть в однородной структуре. Получится, что все асинхронные фифошки будут жёстко прибиты к определенному месту/местам на кристалле и это крайне неудобно. В ASIC-пожалуйста. Наверное поэтому такое простое решение до сих пор и не нашло реального применения в триггерах ячеек CLB.

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


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

46 minutes ago, makc said:

Так это не сработает в ПЛИС, у которых вся прелесть в однородной структуре. Получится, что все асинхронные фифошки будут жёстко прибиты к определенному месту/местам на кристалле и это крайне неудобно.

Как раз такой метод и используется как минимум в нескольких  последних семействах Xilinx ...  Оптимизировано для CDC на высоких  частотах

image.thumb.png.dc0a1330bf852b3ad15ef9325a74f9c8.png

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


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

1 час назад, RobFPGA сказал:

Как раз такой метод и используется как минимум в нескольких  последних семействах Xilinx ...  Оптимизировано для CDC на высоких  частотах

Спасибо информацию, буду иметь в виду. 

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


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

3 часа назад, makc сказал:

вся прелесть в однородной структуре

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

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


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

1 час назад, Plain сказал:

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

Есть ещё распределенная память и она весьма удобна для мелких фифошек. Поэтому "по краям" - это прекрасно, но для полного счастья недостаточно.

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


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

1 hour ago, Plain said:

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

О каком языке вы говорите?   
А  конструкция она есть,  и на Verilog и на VHDL. 
Но это все равно - классический 2-3 триггерный  синхронизатор, регистры которого выделены в отдельный хард-блок за счет чего минимизированы задержки что положительно влияет на MTBF при высоких тактовых.  

Quote
HARD_SYNC #(
   .INIT(1'b0),            // Initial values, 1'b0, 1'b1
   .IS_CLK_INVERTED(1'b0), // Programmable inversion on CLK input
   .LATENCY(2)             // 2-3
)
HARD_SYNC_inst (
   .DOUT(DOUT), // 1-bit output: Data
   .CLK(CLK),   // 1-bit input: Clock
   .DIN(DIN)    // 1-bit input: Data
);

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


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

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

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

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

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

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

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

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

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

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