JTAG - основы и немного теории
Автор: EngineerDeveloper®
1. Что такое JTAG
Когда речь идет о JTAG, прежде всего, подразумевается стандарт: IEEE 1149.1-2001 Test Access Port and Boundary-Scan Architecture (Стандарт IEEE 1149.1-2001 Порт тестового доступа и Архитектура Граничного сканирования).
С ростом степени интеграции БИС, плотности монтажа и появлением многослойных печатных плат, методы диагностики, основанные на подключении к контрольным точкам платы и выводам микросхем, становятся все более сложными в использовании и неэффективными.
Основные недостатки альтернативных способов диагностики были связаны, прежде всего, с отсутствием соответствующих общепринятых стандартов и, как следствие, широкой поддержки проектировщиков и производителей.
В начале 1985 года объединенными усилиями нескольких европейских компаний была создана группа для разработки решения проблем тестирования интегральных схем, цифровых устройств и систем. Эта группа получила имя: Joint European Test Action Group (JETAG). Позднее, в 1988 году к ней присоединились представители североамериканских компаний, и название было изменено на Joint Test Action Group (JTAG).
Результатом работы этой группы явился принятый в 1990 году стандарт IEEE Std.1149.1 и его усовершенствованная версия: стандарт IEEE Std.1149.1a (1993 год).
В основу стандарта положена идея внедрение в компоненты цифрового устройства средств, обеспечивающих унифицированный подход к решению следующих задач:
- Тестирование связей между интегральными схемами, после того, как они были смонтированы на печатной плате или другой основе;
- Наблюдение за работой компонент без вмешательства в их нормальную работу, или непосредственное управление одним или более компонентом;
- Обеспечение стандартизованного доступа к произвольным средствам самотестирования, встраиваемым в БИС;
При этом в общем виде сам процесс тестирования выглядит следующим образом:
Тестируемая плата с расположенными на ней БИС подключается, через последовательный канал передачи данных (JTAG интерфейс), к некоторому ведущему устройству. Ведущее устройство, используя возможности предоставляемые JTAG, решает задачи, связанные с диагностикой тестируемого устройства, локализации неисправностей, загрузкой конфигураций PLD и т.п.
Как правило, ведущим устройством является персональный компьютер, оснащенный соответствующим программным обеспечением. Подключение к ведомому устройству осуществляется через параллельный или последовательный порт, или через плату расширения. Впрочем, если задачи решаемые через JTAG достаточно просты, как загрузка начальной конфигурации в PLD, или тестирование общей работоспособности устройства после включения питания, то роль ведущего устройства может играть простейший микропрограммный автомат постоенный на базе ПЗУ и счетчика.
Таким образом, стандарт JTAG определяет:
- Интерфейс, через который осуществляется обмен тестовыми инструкциями и данными между ведущим устройством и встроенными средствами тестирования (TAP — Test Access Port);
- Минимальный набор средств тестирования, встраиваемых в БИС (средства поддержки метода Граничного Сканирования);
2. Порт тестового доступа: TAP (Test Access Port)
Когда мы говорим о передаче информации через JTAG, то мы подразумеваем обмен между ведущим устройством и встроенными в БИС средствами тестирования. Для этой цели был разработан TAP (Test Access Port)—Порт Тестового Доступа.
Аппаратная поддержка JTAG реализуется достаточно простыми схемами. TAP требует 4-х внешних контактов:
- TDI (Test Data Input)—контакт для получения последовательных данных. На этот контакт последовательно, бит-за-битом подаются данные, которые затем интерпретируются схемой управления;
- TDO (Test Data Output)—контакт вывода последовательных данных. С этого контакта ведущее устройство последовательно считывает данные из БИС (например результат тестовых операций);
- TCK (Test Clock Input)—контакт сигнала синхронизации обмена;
- TMS (Test Mode Select)—этот контакт управляет состоянием внутреннего автомата TAP. В частности, с помощью этого контакта определяется что грузиться: команда или данные, а также определяется начало и конец загрузки;
Следующий контакт не является обязательным для реализации:
- TRST (Test ReSeT)—сброс в начальное состояние контроллера внутреннего автомата TAP
В процессе обмена информацией через TAP, ведущее устройство воспринимает такую БИС как сдвиговый регистр. При этом
- TDI—вход сдвигового регистра;
- TDO—выход сдвигового регистра;
- TCK—сигнал сдвига;
В зависимости от состояния автомата TAP в канал может быть включен либо регистр данных, либо регистр команды.
Регистр команды в JTAG контроллере всегда один.
Регистров данных в JTAG контроллере может быть сколько угодно. Какой именно регистр данных будет выбран для подключения, как правило, определяется загруженной командой.
Стандарт JTAG требует наличия в контроллере одноразрядного регистра данных, называемого BYPASS. Его назначение будет пояснено ниже.
Рассмотрим более подробно схему управления JTAG интерфейсом, встраиваемую в БИС:
В состав схемы входят:
- Три сдвиговых регистра (регистр команд (IR), регистр пропуска (Bypass) и регистр данных (DR);
- Выходной мультиплексор (MUX);
- Контроллер управления (TAP Controller).
Основным регистром является регистр данных, он служит источником и приемником данных при выполнении в JTAG цепочках любых команд. С точки зрения устройства управления, регистр данных является одним из трех сдвигающих регистров, включаемых между контактом для подачи входной информации (контакт TDI) и контактом для получения выходной информации (контакт TDO).
3. Автомат управления TAP (TAP-controller)
Можно выделить два важных режима или состояния TAP:
- Состояние загрузки команд;
- Состояние загрузки данных;
Режим работы определяется текущим состоянием встроенного в TAP конечного автомата. Граф включает в себя 16 состояний. Переход от состояния к состоянию осуществляется по каждому переднему фронту TCK. Ветвь перехода зависит от текущего состояния сигнала TMS.
Начальным состоянием автомата является Test Logic Reset. После включения питания, ведущее устройство "не знает", в каком состоянии окажется автомат TAP тестируемого устройства. Необходим способ гарантированного перевода TAP в начальное состояние. Таких способов два:
- Установить на TMS высокий уровень и подать 5 или более импульсов TCK. В этом случае автомат окажется в состоянии Test Logic Reset;
- Если реализован контакт TRST то автомат можно сбросить импульсом на этом выводе;
Загрузки команды в регистра команды происходит в состоянии Shift-IR.
Загрузка данных происходит в заданный регистр данных происходит в состоянии Shift-DR.
Какой именно регистр данных будет выбран для обмена, определяется текущим содержимым регистра команды.
Ниже приведен более подробное описание каждого состояния:
- Test-Logic-Reset—сброс логики тестирования. В этом состоянии тестирующая логика отключается, регистр команды инициализируется кодом команды BYPASS или кодом команды вывода идентификационного кода интегральной схемы (IDCODE);
- Run Test\Idle—состояние ожидания или выполнения внутренних тестов. Это состояние используется как промежуточное между операциями. Например, если загрузкой некоторой команды и данных, была инициализирована продолжительная тестовая процедура, то на время ее выполнения TAP следует перевести в это состояние;
- Select-DR-Scan—промежуточное состояние автомата, позволяет попасть в ветвь автомата, связанную с загрузкой данных;
- Select-IR-Scan—промежуточное состояние автомата, позволяет попасть в ветвь автомата, связанную с загрузкой команды;
- Capture-DR—это состояние подготовки данных к обмену. Данные, которые должны быть переданы ведущему устройству, загружаются в соответствующий регистр данных контроллера JTAG;
- Shift-DR—в этом состоянии регистр данных включается между выводами TDI и TDO. Данные, подготовленные для ведущего устройства (результат текущей команды загруженной в командный регистр) последовательно выдвигаются наружу, замещаясь данными, которые передаются ведущим устройством;
- Exit1-DR, Exit2-DR, Exit1-IR, Exit2-IR—промежуточные состояния, не оказывают никакого влияния на состояние тестовой логики, предназначены для быстрого перехода в начальное состояние;
- Pause-DR, Pause-IR—эти состояния, позволяют приостанавливать продвижение информации на произвольное количество тактов синхронизации (например, для выполнения каких либо действий в БИС с внешним тактированием);
- Update-DR—это состояние, в котором вдвинутые данные "защелкиваются", в момент выхода из этого состояния тестовая логика приступает к соответствующей операции с использованием загруженных данных;
- Capture-IR—фактически промежуточное состояние, не оказывает никакого влияния на состояние тестовой логики;
- Shift-IR—в этом состоянии регистр команды включается между выводами TDI и TDO. Текущее содержимое регистра последовательно выдвигается наружу, замещаясь командой, которые передаваемой ведущим устройством;
- Update-IR—состояние фиксации и активизации вдвинутой команды;
4. JTAG-цепочка
Если на плате смонтировано несколько ИС, поддерживающих JTAG, то они объединяются в так называемую JTAG цепочку:
Стандарт не вводит никаких ограничений на количество устройств в цепочке.
В процессе обмена вся цепочка представляет собой один сдвиговый регистр, каждой ИС будет соответствовать определенное количество разрядов в этом регистре. Ведущее устройство должно "знать" количество разрядов для каждой БИС.
5. Что такое Граничное Сканирование (Boundary Scan Testing)
Стандарт JTAG определяет минимально-необходимый набор средств, который должен быть включен в состав БИС для того чтобы ее можно было вовлечь в процесс тестирования методом Граничного Сканирования. Главная идея метода—получение ведущим устройством доступа к внешним выводам БИС через JTAG, включая:
- Возможность наблюдения за выводами, без вмешательства в нормальную работу тестируемого устройства,
- Прямое управление выводами БИС.
6. Архитектура поддержки Граничного Сканирования
Рассмотрим подробнее структуру БИС, построенными в соответствии с требованиями JTAG.
Основу архитектурной поддержки метода составляют ячейки граничного сканирования (BSC—Boundary Scan Cell). Последовательность из этих ячеек разделяет внутреннюю логику БИС и ее внешние выводы. С точки зрения обмена эта последовательность представляет собой один регистр данных, который включается в канал JTAG. Такой регистр называется Регистром Граничного Сканирования (Boundary Scan Register). Можно выделить несколько режимов в работе ячейки:
- Режим сдвига, когда в триггера Т1 по сигналу "захват" сохраняется состояние аналогичного триггера предыдущей ячейки. В этом режиме ведущее устройство последовательно выдвигает текущее состояние ячеек и вдвигает новое;
- Режим наблюдения ("Sample") В этом режиме по импульсу текущее состояние вывода фиксируется в триггере, и может быть потом считано ведущим устройством. При этом, в процессе обмена данные получаемая от ведущего устройства фиксируются в триггере. При необходимости, в режиме тестирования (EXTEST) эти данные могут быть выведены на внешний вывод;
- Режим тестирования (EXTEST—Executing Test). В этом режиме на выход подается логическое значение, которое находится в триггере Т2;
В приведенной схеме на каждый вывод БИС приходится один бит регистра граничного сканирования (его роль играет триггер Т1). Однако очень часто встречаются схемы, в которых на каждый вывод приходится 3 бита: бит для вывода значения в тестовом режиме, бит, сохраняющий фактический логический уровень, находящийся на выводе, и бит управляющий переводом вывода в высоко-импедансное состояние.
7. Возможности Граничного Сканирования
Таким образом, ведущее устройство может получить доступ к любому выводу любой БИС, включенной в JTAG-цепочку.

- Выставляя на одних выводах логические уровни и проверяя состояния других ведущее устройство может делать заключение о наличии или отсутствии связей между выводами различных БИС;
- Перехватывая управление выводами можно формировать на выводах областей не охваченных цепочкой тестовые комбинации и проверять корректность реакций. Например, управляя выводами центрального процессора произвести тестирование работоспособности ОЗУ;
- Делать "снимки" состояний контактов интегральных схем цифрового устройства, и на основе их анализа делать заключение о правильности его работы;
©2021 | EngineerDeveloper® | Все права защищены