Обнаружение конфликтов управления и коллизий 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Обнаружение конфликтов управления и коллизий



Во избежание конфликтов управления, когда и PDI и программатор пытаются одновременно управлять линией PDI_DATA), предусмотрен механизм обнаружения коллизий. Этот механизм заключается в способе управления выводом данных интерфейса PDI на линию PDI_DATA. Как показано на рисунке 7, драйвер выхода активизируется только тогда, когда необходимо изменить состояние выхода (из 0 в 1 или из 1 в 0). Это означает, что, если подряд передаются два или более бит с одним и тем же значением, для передачи этого значения драйвер активен только во время первого цикла синхронизации. По окончании первого цикла происходит отключение драйвера и в дальнейшем его выход находится в высокоимпедансном состоянии, а за поддержание установленного уровня на линии PDI_DATA вплоть до момента очередной активизации драйвера отвечает схема адаптивной подтяжки.

Рисунок 29.7. Управление выводом данных на линию PDI_DATA с использованием адаптивной подтяжки

Ситуация, когда программатор и PDI одновременно управляют линией PDI_DATA, показана на рисунке 29.8. Возможность определить корректность уровня, присутствующего на линии PDI_DATA, интерфейс PDI получает в тех случаях, когда подряд передается два или более бит с одним и тем же значением. Коллизия обнаруживается, если программатор перевел линию PDI_DATA в состояние, которое противоположно ожидаемому интерфейсом PDI состоянию.

Рисунок 29.8. Обнаружение конфликтов управления и коллизий на линии PDI_DATA

Если же PDI будет передавать чередование единиц и нулей, то коллизию нельзя будет обнаружить, т.к. драйвер выхода будет постоянно активен, исключая возможность выполнения опроса линии PDI_DATA. Тем не менее, каждая посылка содержит как минимум одну последовательность двух одинаковых бит (единичные стоп-биты) и, поэтому, при передаче каждой посылки коллизия может быть обнаружена как минимум один раз.

Последовательный прием

После обнаружения старт-бита, приемник переходит к приему 8 бит данных с помощью сдвигового регистра. Если принятый бит паритета не равен паритету принятых бит данных, возникает ошибка паритета. Если один или оба стоп-бита равны нулю, возникает ошибка посылки. Если бит паритета имеет корректное значение и ошибка посылки не обнаружена, принятые биты данных становятся доступными для считывания PDI-контроллером в параллельном формате.

Обнаружение символа BREAK

Когда PDI находится в режиме передачи, переданный программатором символ BREAK будет интерпретирован не как символ BREAK, а как коллизия передачи данных. Если же PDI работает в режиме приема, символ BREAK будет распознаваться по назначению. При передаче двух подряд символов BREAK (должны быть отделены одним или большим числом единичных бит), последний символ BREAK будет всегда распознаваться по назначению, независимо от того, в режиме чтения или передачи изначально находился PDI.

Изменение направления

Для обеспечения корректности временной диаграммы полудуплексной передачи, предусмотрен простой механизм защитного интервала (Guard Time), который вступает в действие при каждом изменении направления передачи интерфейса PDI. Когда PDI переключается из режима приема в режим передачи, перед передачей старт-бита вставляются дополнительные биты IDLE, количество которых задается пользователем. Минимальная задержка перехода из режима RX в режим TX равна двум циклам IDLE. Увеличить длительность такой задержки можно записью соответствующего значения в биты GUARDTIME регистра управления контроллера PDI. Значение по умолчанию бит GUARDTIME приводит к максимальному увеличению задержки на 128 бит.

Рисунок 29.9. Изменение направления PDI путем вставки бит IDLE

Программатор теряет управление над линией PDI_DATA в точке, где целевой PDI переходит из режима RX в режим TX. Введение защитного интервала позволяет сделать менее критичной данную фазу передачи. Если программатор переходит из режима RX в режим TX, то перед передачей старт-бита должен быть вставлен минимум один бит IDLE.

Трансивер JTAG

Трансивер JTAG отвечает за последовательную передачу по четырем линиям ввода-вывода (TMS, TCK, TDI и TDO). Он поддерживает обнаружение условия BREAK, обнаружение ошибок паритета и генерацию паритета. Более детально об этом см. в разделе 28 "IEEE 1149.1-совместимый интерфейс граничного сканирования JTAG".

Разрешение работы

Для разрешения работы интерфейса JTAG необходимо запрограммировать Fuse-бит JTAGEN и сбросить бит JTAG Disable в регистре управления МК. По умолчанию, fuse-бит JTAGEN запрограммирован и работа интерфейса JTAG разрешена. Когда в JTAG регистр инструкции вводится инструкция PDICOM, в качестве регистра данных, включенного между выводами TDI и TDO, выбирается коммуникационный регистр PDI. В этом режиме, интерфейс JTAG может использоваться для доступа к возможностям программирования и отладки интерфейса PDI.

Отключение

Отключить интерфейс JTAG можно либо переводом fuse-бита JTAGEN в незапрограммированное состояние, либо путем программной установки бита JTAG Disable в регистре управления микроконтроллером.

Набор инструкций JTAG

Набор инструкций JTAG микроконтроллеров XMEGA состоит из восьми инструкций, относящихся к граничному сканированию и доступу к контроллеру PDI в целях программирования энергонезависимой памяти. Более детально о наборе инструкций см. в 28.4 "JTAG-инструкции".

Инструкция PDICOM

Выбирает в качестве регистра данных 9-битный коммуникационный регистр PDI. Команды вводятся в регистр последовательностью сдвигов, при этом, аналогичным образом выводится результат выполнения предыдущей команды. Активные состояния TAP-контроллера:

· ЗАХВАТ_РД: выполняется выборка параллельных данных из контроллера PDI в коммуникационный регистр PDI.

· СДВИГ_РД: выполняется ввод данных сдвигом с входа TCK в коммуникационный регистр PDI.

· МОДИФ_РД: команды или операнды фиксируются в параллельном формате в регистрах контроллера PDI.

Формат посылки и символов

Трансивер JTAG использует фиксированный формат посылки. Последовательная посылка определена как один символ, состоящего из восьми бит данных и следующего за ними одного бита паритета.

Рисунок 29.10. Формат последовательной посылки интерфейса JTAG

Таблица 1

(0-7) Биты данных/команды (0…7), младший бит передается первым
P Бит паритета, используется четный паритет

Специальные символы данных

Предусмотрено три специальных символа данных. У всех этих символов бит паритета инвертирован. Это необходимо для того, чтобы при приеме возникала ошибка паритета. Символ BREAK (0xBB+P1) используется внешним программатором для того, чтобы принудительно прервать любую выполняющуюся контроллером PDI операцию и перевести его в известное состояние. Символ DELAY (0xDB+P1) используется контроллером PDI для сигнализации программатору о том, что у него нет готовых данных программатора и что он не собирается выполнять передачу (т.е. PDI находится в режиме приема).

Рисунок 29.11. Специальные символы данных



Поделиться:


Последнее изменение этой страницы: 2016-12-30; просмотров: 302; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.147.72.11 (0.006 с.)