JTAG - основы и немного теории

 

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.

* Выставляя на одних выводах логические уровни и проверяя состояния других ведущее устройство может делать заключение о наличии или отсутствии связей между выводами различных БИС;

* Перехватывая управление выводами можно формировать на выводах областей не охвеченных цепочкой тестовые комбинации и проверять корректность реакций. Например, управляя выводами центрального процессора произвести тестирование работоспособности ОЗУ;

* Делать "снимки" состояний контактов интегральных схем цифрового устройства, и на основе их анализа делать заключение о правильности его работы;