![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Главная фишка асинхронного дизайна - отсутствие тактирующего сигнала. Вместо глобального генератора синхроимпульсов используется локальный сигнал подтверждения и четырехфазовый протокол взаимодействия. Есть разные варианты протоколов, подробно описанные в умной книжке. Я здесь коротенько набросаю один их них.

Сигналы данных направлены от передатчика к приёмнику. Обычно один бит данных кодируется двумя сигналами (1-из-2). Иногда два бита кодируются четырьмя сигналами (1-из-4), это имеет свои преимущества.

Фаза 1: исходно сигналы данных равны нуль (состояние NULL). Подтверждение также равно нулю. Инициатива на стороне передатчика. Когда готов, передатчик выставляет один из сигналов данных в единицу (cостояние DATA).
Фаза 2: данные поступили на вход приёмника (cостояние DATA). Приёмник выставляет сигнал подтверждения.
Фаза 3: передатчик получил сигнал подтверждения и переводит сигналы данных обратно в состояние NULL.
Фаза 4: приёмник обнаружил состояние NULL на входе данных и сбрасывает сигнал подтверждения.
Здесь действуют два важных правила. В фазе 1 (когда ack=0) передатчик имеет право формировать на шине данных только положительные фронты. В фазе 3 (когда ack=1) допускаются только отрицательные фронты. При этих условиях синхронизация всегда устойчива, независимо от времени распространения сигнала и задержек на логических элементах.
Я обещал объяснить, почему так важны монотонные булевы функции. Всякие вычисления и прочие преобразования данных выполняются на фазе 1. Сигналы данных проходят через блок комбинационной логики. На вход поступают положительные фронты. Важно, чтобы на выходе тоже появлялись только положительные фронты, иначе собьётся синхронизация. Если комбинационную логику составлять только из монотонных функций, можно гарантировать, что отрицательных фронтов на выходе не будет.

Сигналы данных направлены от передатчика к приёмнику. Обычно один бит данных кодируется двумя сигналами (1-из-2). Иногда два бита кодируются четырьмя сигналами (1-из-4), это имеет свои преимущества.

Фаза 1: исходно сигналы данных равны нуль (состояние NULL). Подтверждение также равно нулю. Инициатива на стороне передатчика. Когда готов, передатчик выставляет один из сигналов данных в единицу (cостояние DATA).
Фаза 2: данные поступили на вход приёмника (cостояние DATA). Приёмник выставляет сигнал подтверждения.
Фаза 3: передатчик получил сигнал подтверждения и переводит сигналы данных обратно в состояние NULL.
Фаза 4: приёмник обнаружил состояние NULL на входе данных и сбрасывает сигнал подтверждения.
Здесь действуют два важных правила. В фазе 1 (когда ack=0) передатчик имеет право формировать на шине данных только положительные фронты. В фазе 3 (когда ack=1) допускаются только отрицательные фронты. При этих условиях синхронизация всегда устойчива, независимо от времени распространения сигнала и задержек на логических элементах.
Я обещал объяснить, почему так важны монотонные булевы функции. Всякие вычисления и прочие преобразования данных выполняются на фазе 1. Сигналы данных проходят через блок комбинационной логики. На вход поступают положительные фронты. Важно, чтобы на выходе тоже появлялись только положительные фронты, иначе собьётся синхронизация. Если комбинационную логику составлять только из монотонных функций, можно гарантировать, что отрицательных фронтов на выходе не будет.
no subject
Date: 2016-08-13 06:18 (UTC)no subject
Date: 2016-08-13 06:51 (UTC)no subject
Date: 2016-08-13 07:07 (UTC)no subject
Date: 2016-08-13 07:19 (UTC)К примеру, смотри как устроен элементарный однобитовый полный сумматор. Достаточно четырёх монотонных функций, две трёх- и две четырёхвходовые.
no subject
Date: 2016-08-13 07:23 (UTC)no subject
Date: 2016-08-13 07:40 (UTC)Не все монотонные функции пороговые, но все полезные в определённых местах.
Преимущество мы посмотрим со временем. Но дело даже не в сравнении с синхронной логикой. Я уверен, в ближайшее время появятся применения, где глобальный синхросигнал будет просто невозможен по технологическим причинам. Например печатаемая пластмассовая электроника или сети живых нейронов.
no subject
Date: 2016-08-13 06:38 (UTC)no subject
Date: 2016-08-13 07:15 (UTC)no subject
Date: 2016-08-13 08:39 (UTC)no subject
Date: 2016-08-13 07:25 (UTC)Кстати, она есть в сети в формате PDF: https://lib.lhu.edu.vn/ViewFile/2511
no subject
Date: 2016-08-13 11:23 (UTC)В любом случае спасибо за наводку на книжку. Век живи, век учись - а всё равно дураком помрёшь.
no subject
Date: 2016-08-13 07:11 (UTC)no subject
Date: 2016-08-13 07:14 (UTC)no subject
Date: 2016-08-13 09:38 (UTC)и эта... система монотонных функций неполна...
не любую функцию можно представить комбинацией монотонных. передача сигнала ОК, но не всякая
обработка реализуема.
или тоже разруливается за счет избыточного кодирования?
no subject
Date: 2016-08-13 18:55 (UTC)Система монотонных функций полная. Для полноты достаточно наличия двух бинарных операций И и ИЛИ. Отрицание не требуется, так как прямые и инверсные значения аргументов уже присутствуют на входе.
no subject
Date: 2016-08-15 00:13 (UTC)no subject
Date: 2016-08-15 04:34 (UTC)no subject
Date: 2016-08-15 13:17 (UTC)если любой сигнал передается позитивной и негативной линией,
то инвертор - это перекрещивание линий.
А в чём смысл смешения
Date: 2016-08-13 17:31 (UTC)Нечувствительность к задержке
Date: 2016-08-13 19:17 (UTC)У этого способа есть один принципиальный недостаток. Сигнал Request не должен добегать до приёмника быстрее, чем сигналы данных, иначе всё будет глючить. То есть опять получаем зависимость от задержек.
?
Date: 2017-02-02 19:00 (UTC)на это есть доказательство? т.е. как этот принцип позволяет выяснить потерю синхронизации
no subject
Date: 2017-02-02 21:44 (UTC)