Реализация 2.0
36
Три примера разрыва связи показаны на рисунке 3-5. Каждый пример отражает одну и ту же связь между
сигналами STOP# и FRAME#, а именно:
Кроме того, данные три примера разрыва связи показывают, что DEVSEL# всегда активный, когда
активен STOP#; в противном случае наблюдается аварийное прекращение работы целевого устройства.
Эти три примера также показывают три различные возможности для передачи данных при разрыве связи.
Обратите внимание, что целевое устройство может определять, переданы данные или нет, после того, как
STOP# стал активным. Передача данных происходит в каждом цикле, в котором активны сигналы IRDY# и
TRDY#, независимо от состояния STOP#. Если целевое устройство хочет осуществить
еще одну передачу
данных, а затем остановиться, то оно в это же самое время устанавливает в активное состояние TRDY# и
STOP#.
На рисунке 3-5, примеры A и B показывают два разных способа разрыва связи, когда данные передаются
после установления в активное состояние сигнала STOP#. В обоих случаях, целевое устройство заявляет о
своем намерении осуществить еще одну передачу данных при наличии активного TRDY# , когда активен
сигнал STOP#. В примере A данные передаются того, как FRAME# стал неактивным (в такте 3), так
как
мастер не был к этому готов (IRDY# перешел в неактивное состояние в такте 2).
В примере B данные передаются перед установкой FRAME# в неактивное состояние (в такте 2). Если
TRDY# был активным, когда активным был и сигнал STOP#, то TRDY# должен перейти в неактивное
состояние, когда завершится текущая фаза данных. Целевое устройство не может установить в неактивное
состояние STOP# и продолжать транзакцию. Мастер перезапускает любую транзакцию, завершившуюся с
повтором либо
разрывом связи, после запуска синхроимпульсов с адресами следующих, не переданных,
данных. После того, как данные будут переданы, целевое устройство уберет сигнал TRDY#, так как
предполагается, что данные больше не будут передаваться. Обратите внимание, что в заключительной фазе
данные не передаются. Если целевое устройство сохраняло TRDY# активным в течение такта 3, и
задержало активизацию сигнала
STOP# до такта 3, после чего данные будут передаваться в тактах 2 и 3.
Тем не менее, целевое устройство не может завершить более, чем одну передачу данных после того, как
устанавливается в активное состояние сигнал STOP#, как это показано в примере A.
Будучи один раз установленным, сигнал STOP# должен остаться активным, пока не станет неактивным
сигнал FRAME#. Если целевому устройству требуется цикла ожидания в последней фазе данных, то оно
должно отсрочить переход STOP# в активное состояние, пока устройство не станет готово завершить
транзакцию.
Пример С показывает случай, в котором после перехода STOP# в активное состояние данные не передаются,
так как сигнал TRDY# - неактивный. Обратите внимание, что в этом примере, установка сигнала FRAME# в
неактивное состояние отсрочена, до перехода IRDY# в активное состояние. Этот пример показывает повтор,
который является фактически частным случаем, разрыва связи, когда вообще не происходит
никакой
передачи данных. Обобщенный пример повтора - это когда целевое устройство в текущий момент времени
блокировано для монопольного запроса со стороны другого мастера. Другой пример - это когда целевое
устройство должно осуществить запрос к некоторым другим не - PCI ресурсам перед разрешением
транзакции (в этом случае требуется соблюдать осторожность, чтобы убедиться, что какие-либо условия
,
когда повтор непосредственно вел бы к порождению тупикового состояния). Когда текущая транзакция
завершена целевым
Разрыв связи наблюдается, когда активен STOP#, и он остается таким, пока FRAME# не
станет неактивным.
Сигнал FRAME# становится неактивным как можно раньше, после того, как становится
активным STOP#. Пример С показывает появление внешнего цикла, из-за того, что
IRDY# не мог стать активным сразу после того, как сигнал STOP# был установлен в
активное состояние.
STOP# завершает цикл сразу после того, как FRAME# перешел в неактивное состояние.