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

Современная ASIC состоит из миллионов вентилей и миллиардов транзисторов, которые часто могут работать в нескольких областях кристалла (доменах) с разными напряжениями и тактовыми частотами. Чтобы избежать потери данных, разработчикам необходимо убедиться, что сигналы, отправляемые из одного домена в другой, не вызывают нарушений временной привязки или удержания для регистров в целевом домене. Рассмотрим 10 аспектов, которые следует соблюдать или избегать при пересечении границ доменов временной привязки.

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

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

 

Используйте многоступенчатую синхронизацию

 

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

Рис. 1. Использование двух или более триггеров в качестве синхронизатора позволяет избежать распространения любой метастабильности, вызванной ошибками синхронизации на принимающей стороне.

 

Избегайте объединения сигналов с ранних стадий синхронизации

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

Рис. 2. Выход первого триггера синхронизатора никогда не должен использоваться для какой-либо нисходящей логики, кроме входа второго триггера.

 

Очищайте комбинаторные сигналы перед синхронизацией

Если сигнал, пересекающий тактовый домен, исходит непосредственно из комбинационной логики, в нем могут быть сбои («иглы»). Эти сбои могут уменьшить среднее время до отказа (MTBF) синхронизатора с двумя триггерами. Регистрация в исходном временном домене, очищает сигнал — устраняет «иглы» (рис. 3). Чтобы сохранить среднее время безотказной работы синхронизатора, всегда регистрируйте комбинаторный сигнал перед пересечением доменов.

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

 

Учет задержки метастабильности

При пересечении нескольких сигнальных линий с помощью многобитового синхронизатора всегда старайтесь учесть область метастабильности. Любой бит, который испытывает метастабильность, когда тактовый сигнал триггера не будет полностью синхронизирован до следующего тактового цикла. Из-за этой задержки нет гарантии ни когерентности, ни порядка синхронизации данных. Вместо синхронизаторов с двумя триггерами, как показано на рис. 4а, используйте другую форму, такую как мультиплексор данных, асинхронный FIFO и т.п. Если, однако, шина закодирована кодом Грея, как показано на рис. 4b, то можно использовать многобитовый синхронизатор, поскольку в каждый момент времени изменяется только один бит. Просто не забудьте стробировать шину перед пересечением доменов, потому что кодирование Грея — это полностью комбинационная логика (см. совет выше).

Рис. 4 Синхронизатор с двумя ответвлениями (а) может потерять синхронизацию из-за задержки метастабильности, поэтому его не следует использовать. Использование двоичного кодирования в кодировку Грея перед пересечением домена и декодирование Грея в двоичное после этого (b) решает эту проблему.

 

Обеспечьте достаточную тактовую частоту

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

 

Никогда не предполагайте синхронизацию

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

 

Синхронизируйте сигналы обратной связи

Будьте осторожны при использовании выхода первого триггера в синхронизаторе для сброса триггера в области трансляции информации о синхронизации (рис. 5а). Это может привести к нарушению синхронизации за пределами синхронизатора или может перетранслировать метастабильность. Также, лучше использовать синхронизатор для такого сигнала сброса, когда он пересекает домен, как показано на рисунке 5b. Это гарантирует, что триггер в домене-отправителе не нарушит никаких временных правил.

Рис. 5 Используйте синхронизатор для любого сигнала сброса из принимающей области, нацеленного на триггер в передающей области.

 

Избегайте логики между этапами синхронизации

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

Рис. 6. Комбинационная логика между двумя триггерами синхронизатора уменьшит его среднее время безотказной работы.

 

Синхронизация программно-управляемых сигналов

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

Не объединяйте сигналы после синхронизации

Выходы разных синхронизаторов в принимающей области нельзя объединять и использовать в другом месте (рис. 7а), потому что невозможно гарантировать порядок их синхронизации, поэтому есть вероятность выборки неверных данных. Если два сигнала должны быть объединены для использования в принимающей области, то лучше объединить их в передающей области (рис. 7b) или использовать какие-либо другие средства для преодоления проблемы когерентности.

Рис. 7. Повторное схождение синхронизированных сигналов в домене приема может привести к сбою конструкции, поэтому лучше объединить их перед отправкой через домены синхронизации.

 

Следование этим рекомендациям при синхронизации сигналов, пересекающих разные домены тактовых импульсов, поможет избежать проблем с метастабильностью в ваших многодоменных проектах SoC и FPGA.

 

Источник: www.edn.com