Интерфейс JTAG несколько выбивается из ряда вышеописанных, поскольку он используется не для регулярной работы устройств, а только в целях контроля и отладки. Интерфейс, по сути, является внешним, поскольку подразумевает подключение внешнего тестирующего устройства-контроллера.
Стандарт IEEE 1149.1 Boundary Scan Architecture (он же интерфейс JTAG) разработан для тестирования сложных логических схем, установленных в целевое устройство. Тестироваться могут многие современные процессоры, функциональные узлы системных плач, платы расширения (сигналы интерфейса JTAG входят в состав разъема шины PCI). Интерфейс JTAG содержит всего четыре сигнала:
- TMS (Test Mode Select) - сигнал выбора тестового режима. TDI (Test Data Input) — входные данные в последовательном двоичном коде. TDO (Test Data Output) - выходные данные в последовательном двоичном коде. ТСК (Test Clock) — сигнал синхронизации последовательных данных.
Эти сигналы образуют тестовый порт ТАР (Test Access Port), через который тестируемое устройство подключается к тестирующему оборудованию. В задачу тестирующего оборудования входит формирование тестовых сигналов по программе тестирования, определенной разработчиком тестируемого устройства и сравнение полученных результатов с эталонами. Один и тот же контроллер и порт могут использоваться для тестирования любого числа устройств, поддерживающих JTAG. Для этого они соединяются в цепочку (см. рис 9.44), стандартизованный логический формат позволяет контроллеру независимо общаться с каждым из устройств цепочки (для этого, конечно, они должны иметь исправные ячейки JTAG).

Идея тестирования любой цифровой схемы иллюстрируется рис. 9.45. На ней показана условная цифровая система, имеющая входные, выходные (возможно, с третьим состоянием) и двунаправленные сигналы. Ячейки тестирования B/S врезаются между реальными внешними выводами устройства и собственно логическим устройством — то есть располагаются на логической границе (boundary) устройства. ТАР-контроллер способен сканировать ячейки — управлять
ими и считывать с них информацию. Отсюда и пошло название Boundary Scan, которое можно перевести как «сканирование границ». При включенном тестовом режиме ТАР-контроллер может логически отсоединить сигналы от внешних выводов, после чего задавать входные воздействия и считывать результаты — собственно, это и все, что необходимо для тестирования последовательных схем (автоматов с памятью). Прелесть JTAG заключается в том, что независимо от сложности устройства, оно тестируется с помощью всего лишь четырех сигналов — все сложности прячутся в достаточно простые ячейки, «окутывающие» его сигнальные выводы.
Тестовая логика, встраиваемая в устройство, поддерживающее JTAG, состоит из следующих элементов:
- Тестовый порт ТАР (четыре интерфейсных сигнала). ТАР-контроллер, управляющий тестовыми регистрами. Регистр инструкций IR (Instruction Register), который принимает последовательный код со входа TDI. Код инструкции используется для выбора исполняемой тестовой операции или регистра тестовых данных, к которым производится обращение. Регистры тестовых данных: В PR (By Pass Register), DID (Device Identification Register) и BSR (Boundary Scan Register).
Регистры инструкций и данных представляют собой независимые сдвиговые регистры, соединенные параллельно. На их входы (старшие биты) приходит сигнал TDI, с выходов (младшие биты) снимается сигнал TDO. По каждому положительному перепаду данные продвигаются на один бит.
Регистр BPR имеет длину в один бит. Он используется как кратчайший обходной путь для последовательных данных, когда остальные регистры не участвуют в обмене.
Регистр BSR представляет собой длинный сдвигающий регистр, каждым битом которого являются пограничные ячейки, установленные на всех входных и выходных сигналах процессора. Для двунаправленных сигналов (или их групп), кроме собственно информационных ячеек регистра, соответствующих внешним сигналам, имеются и управляющие ячейки, задающие режим работы информационных ячеек.
32-битный регистр DID содержит идентификатор производителя, код устройства и номер версии, по которым ТАР-контроллер может распознать, с каким устройством он имеет дело.
Кроме этих обязательных регистров, устройство может иметь и специфические дополнительные регистры. Например, процессоры с интерфейсом JTAG имеют однобитный регистр RUNBIST, из которого может быть считан код результата выполнения встроенного теста BIST (Built-In Self Test). Перед запуском BIST в этот регистр записывается единица, его нулевое значение после выполнения теста указывает на успешное завершение.
4-битный регистр инструкций позволяет задавать выполняемый тест и адресоваться к одному из вышеперечисленных регистров. Из 16 возможных кодов инструкций для всех устройств обязательными являются инструкции EXTEST, SAMPLE, IDCODE и BYPASS. Остальные инструкции могут быть определены для
конкретных тестируемых устройств. Например, процессоры имеют инструкцию RUNBIST, по которой запускается встроенный тест BIST.
Инструкция EXTEST (код 0000) предназначена для проверки внешних соединений тестируемого устройства. При этом на выходные линии подаются сигналы, предварительно записанные в регистр BSR, а состояние входных сигналов фиксируется в этих регистрах. Двунаправленные сигналы конфигурируются соответствующими им управляющими битами ячеек BSR.
Инструкция SAMPLE/PRELOAD (код 0001) имеет два назначения. Когда ТАР-контроллер находится в состоянии Capture-DR, эта инструкция позволяет выполнить моментальный «снимок» состояния всех внешних сигналов без воздействия на работу устройства. Значение сигналов фиксируется по положительному перепаду ТСК. В состоянии Update-DR по этой инструкции данные загружаются в выходные ячейки (но еще не на выходы устройства), откуда впоследствии они будут выводиться на внешние выводы по инструкции EXTEST. Данные предварительно загружаются по спаду сигнала ТСК.
Инструкция IDCODE (код 0010) подключает к интерфейсу регистр DID, позволяя считать его содержимое (поступающие входные данные не могут изменить его значение).
Инструкция BYPASS (код 1111) предназначена для подключения однобитного обходного регистра, обеспечивая скорейшее прохождение данных через устройство, при этом оно никак не реагирует на проходящий поток. Вход TDI обычно «подтягивают» резистором к высокому уровню, при этом разрыв цепочки JTAG приведет к подключению обходных регистров во всех устройствах после точки обрыва. Это исключает возможные непредсказуемые действия устройств в случае обрыва.
Контроллер тестового порта (TAP-controller) представляет собой синхронный конечный автомат, изменяющий состояние по фронту сигнала ТСК и по включении питания. Сменой состояний управляет сигнал TMS (Test Mode State), воспринимаемый по положительному перепаду ТСК.
- В исходное состояние Test-Logic-Reset контроллер автоматически переходит по включении питания и из любого другого состояния может быть переведен высоким уровнем TMS, удерживаемым не менее пяти тактов ТСК. В этом состоянии тестовая логика запрещена и устройство работает в нормальном режиме. Состояние Run-Test/Idle является промежуточным между выполнением тестовых операций. В этом состоянии регистры не изменяют своего значения. В состоянии Capture-DR во время выполнения инструкций EXTEST и SAMPLE/ PRELOAD сканирующий регистр фиксирует только данные на входных линиях. В состоянии Shift-DR данные с TDI продвигаются через подключенный сдвиговый регистр на выход TDO. В состоянии Pause-DR контроллер временно запрещает продвижение данных через сдвиговый регистр. В состоянии Update-DR по спаду ТСК сигналы из сдвигового регистра фиксируются на выходах тестовых ячеек. В состоянии Capture-IR контроллер загружает в сдвиговый регистр инструкций код 0001 — код «безобидной» инструкции SAMPLE. В состоянии Shift-IR в цепь между TDI и TDO включается сдвиговый регистр инструкций, но еще исполняется предыдущая инструкция. В состоянии Pause-IR контроллер временно запрещает продвижение данных через сдвиговый регистр инструкций.
· В состоянии Update-IR по спаду ТСК фиксируется новая исполняемая инструкция и в цепь TDI-TDO включается соответствующий ей регистр.

Кроме этих основных состояний контроллера, определяющих действия тестового оборудования, имеются и временные промежуточные состояния, необходимые для реализации переходов автомата. К ним относятся Select - DR-Scan, Exit1-DR, Exit2-DR, Select-DR-Scan, Exit1-IR и Exit2-IR. Граф состояний и переходов
управляющего автомата изображен на рис. 9.46. Около стрелок переходов указаны значения сигнала TMS во время фронта ТСК.
Для интерфейса JTAG существует специальный язык описания устройств BSDL (Boundary Scan Description Language). Состав и порядок следования информационных и управляющих ячеек в сдвиговом регистре данных специфичен для каждого устройства (для чего и существует идентификационный регистр) и сообщается его разработчиками.
В процессорах Pentium в использовании порта ТАР пошли дальше: ввели дополнительный сигнал прерывания R/S#, по которому процессор переходит в зондовый режим отладки. В этом режиме с помощью дополнительных инструкций ТАР возможно общение с регистрами процессора. Таким образом могут быть реализованы отладочные средства, абсолютно не зависящие (и не блокируемые) от программного кода, исполняемого процессором.


