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
Ниже схематически показана ИС со встроенной схемой поддержки JTAG.
Рис. 1. ИС со встроенной схемой поддержки JTAG
В процессе обмена информацией через TAP, ведущее устройство воспринимает такую БИС как сдвиговый регистр. При этом
* TDI—вход сдвигового регистра;
* TDO—выход сдвигового регистра;
* TCK—сигнал сдвига;
В зависимости от состояния автомата TAP в канал может быть включен либо регистр данных либо регистр команды.
Регистр команды в JTAG контроллере всегда один.
Регистров данных в JTAG контроллере может быть сколько угодно. Какой именно регистр данных будет выбран для подключения, как правило, определяется загруженной командой.
Стандарт JTAG требует наличия в контроллере одноразрядного регистра данных, называемого BYPASS. Его назначение будет пояснено ниже.
Рассмотрим более подробно схему управления JTAG интерфейсом, встраиваемую в БИС:
Рис. 2. Схема управления 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—cостояние фиксации и активизации вдвинутой команды;
4. JTAG-цепочка.
Если на плате смонтировано несколько ИС, поддерживающих JTAG, то они объединяются в так называемую JTAG цепочку:
Рис 3. Схема 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-цепочку.
Рис. 4. Плата с поддержкой JTAG.
* Выставляя на одних выводах логические уровни и проверяя состояния других ведущее устройство может делать заключение о наличии или отсутствии связей между выводами различных БИС;
* Перехватывая управление выводами можно формировать на выводах областей не охвеченных цепочкой тестовые комбинации и проверять корректность реакций. Например, управляя выводами центрального процессора произвести тестирование работоспособности ОЗУ;
* Делать "снимки" состояний контактов интегральных схем цифрового устройства, и на основе их анализа делать заключение о правильности его работы;