JTAG
Микроконтроллер содержит модуль JTAG, который поддерживает обязательные и ряд дополнительных пользовательских и нструкции.
Инструкции
Инструкция | Код инструкции | Разрядность регистра данных |
---|---|---|
EXTEST | 000b | – |
TEST_MODE | 001b | – |
SAMPLE/PRELOAD | 010b | – |
JTAG_RAM_ACCESS | 011b | 24 |
JTAG_ROM_ACCESS | 100b | 24 |
IF_ACCESS | 101b | 18 |
DEBUGGER | 110b | 5 |
BYPASS | 111b | 1 |
Структурная схема
На представленном выше рисунке изображены следующие блоки:
- TAP – управляющий рабочий автомат JTAG;
- TDR_IF_ACCESS – блок управления тестовым пользовательским регистром данных инструкции «IF_ACCESS»;
- TDR_JTAG_MASTER – блок управления тестовым пользовательским регистром данных инструкций «JTAG_RAM_ACCESS» и «JTAG_ROM_ACCESS»;
- TDR_DEBUGGER – блок управления тестовым пользовательским регистром данных инструкции «DEBUGGER»;
- CPU_8051 – процессорное ядро;
- SWITCH_CPU/JTAG – блок, дающий доступ к системной шине CPU или JTAG;
- DEBUGGER – отладчик.
Инструкции
TEST_MODE, EXTEST, BYPASS, SAMPLE/PRELOAD
Инструкции «EXTEST» и «SAMPLE/PRELOAD» декодируются TAP-контроллером, но не имеют регистровых цепочек.
Инструкция «TEST_MODE» имеет трехбитовый код 001b и не предполагает использование пользователем.
Инструкция «BYPASS» имеет трехбитовый код 111b и функционирует в соответствии со стандартом IEEE Std 1149.1-2001.
JTAG_RAM_ACCESS
Инструкция «JTAG_RAM_ACCESS» представляет собой дополнительную пользовательскую инструкцию c кодом 011b, в результате выбора которой CPU 8051 будет отключен от системной шины, а в место него будет подключен тестовый пользовательский регистр данных разрядностью 24 бит:
Бит | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
---|---|---|---|---|---|---|---|---|
Назначение | RW | CE_RAM | ADDR | |||||
Начальное значение | 0 | |||||||
Бит | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
Назначение | ADDR | |||||||
Начальное значение | 0 | |||||||
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Назначение | DATA | |||||||
Начальное значение | 0 |
RW – операция чтения или записи:
- 1 – прочитать данные;
- 0 – записать данные.
CE_RAM – обращение в область памяти RAM:
- 1 – обращение в RAM-память или к ведомым устройствам системы;
- 0 – область RAM не задействуется.
ADDR – адрес обращения.
DATA – данные для записи. Младший бит данных находится в бите 0.
При чтении пользовательского тестового регистра данных, считанные с системной шины данные будут переданы со следующим за командой чтения пакетом данных в формате, представленном ниже:
Бит | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
---|---|---|---|---|---|---|---|---|
Назначение | Резерв | |||||||
Начальное значение | х | |||||||
Бит | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
Назначение | Резерв | |||||||
Начальное значение | х | |||||||
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Назначение | DATA | |||||||
Начальное значение | 0 |
При этом во время чтения должна отправляться команда с CE_RAM равным «0». Передача прочитанных данных осуществляется в соответствии со стандартом IEEE Std 1149.1-2001.
Выход из инструкции не обнуляет пользовательский тестовый регистр данных.
JTAG_ROM_ACCESS
Инструкция «JTAG_ROM_ACCESS» представляет собой дополнительную пользовательскую инструкцию c кодом 100b, в результате выбора которой CPU 8051 будет отключен от системной шины, а в место него будет подключен тестовый пользовательский регистр данных разрядностью 24 бит:
Бит | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
---|---|---|---|---|---|---|---|---|
Назначение | RW | CE_ROM | ADDR | |||||
Начальное значение | 0 | |||||||
Бит | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
Назначение | ADDR | |||||||
Начальное значение | 0 | |||||||
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Назначение | DATA | |||||||
Начальное значение | 0 |
RW – операция чтения или записи;
- 1 – прочитать данные;
- 0 – записать данные.
CE_ROM – обращение в область памяти ROM:
- 1 – обращение в ROM-память;
- 0 – область ROM не задействуется.
ADDR – адрес обращения.
DATA – данные для записи. Младший бит данных наход ится в бите 0.
При чтении пользовательского тестового регистра данных, считанные с системной шины данные будут переданы со следующим за командой чтения пакетом данных в формате, представленном ниже:
Бит | - | 24 | ||||||
---|---|---|---|---|---|---|---|---|
Назначение | - | Резерв | ||||||
Начальное значение | - | х | ||||||
Бит | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
Назначение | Резерв | |||||||
Начальное значение | 0 | |||||||
Бит | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
Назначение | Резерв | |||||||
Начальное значение | 0 | |||||||
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Назначение | DATA | |||||||
Начальное значение | 0 |
При этом во время чтения должна отправляться команда с CE_ROM равным «0». Передача прочитанных данных осуществляется в соответствии со стандартом IEEE Std 1149.1-2001.
Выход из инструкции не обнуляет пользовательский тестовый регистр данных.
IF_ACCESS
Инструкция «IF_ACCESS» («Интерфейс доступа») представляет собой дополнительную пользовательскую инструкцию c кодом 101b и пользовательским тестовым регистром данных разрядностью 19 бит.
Выход из инструкции не обнуляет пользовательский тестовый регистр данных.
DEBUGGER
Инструкция «DEBUGGER» («Отладчик») представляет собой дополнительную пользовательскую инструкцию c кодом 110b и пользовательским тестовым регистром данных разрядностью 5 бит.
Выход из инструкции не обнуляет пользовательский тестовый регистр данных.