Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Шумахер У. Полупроводниковая электроника

.pdf
Скачиваний:
232
Добавлен:
28.03.2015
Размер:
8.01 Mб
Скачать

INFSEMI_2-Text.fm, стр. 282 из 589 (September 3, 2010, 17:05)

282 7. Микроконтроллеры

ми, поступающими от логической схемы

фазы работы конвейера, использование ко-

декодирования команд. Основные характе-

торых позволяет оптимизировать

работу

ристики этих блоков состоят в следующем:

процессорного ядра.

 

1. Высокая скорость выборки и исполне-

ВЫБОРКА — в этой фазе команда извле-

ния команд.

 

 

 

 

кается из внутреннего ПЗУ, ОЗУ или из

2. Высокопроизводительное

арифметико-

внешней памяти, в зависимости от текуще-

логическое устройство с возможностью

го значения счётчика команд.

 

обработки 8- и 16-битных данных.

ДЕКОДИРОВАНИЕ — в этой фазе ранее

3. Развитая система обработки битовых пе-

выбранная команда декодируется, и из па-

ременных и управления вводом/выво-

мяти извлекаются необходимые для её ис-

дом.

 

 

 

 

 

полнения операнды.

 

4. Эффективная система организации ветв-

ИСПОЛНЕНИЕ — в этой фазе извле-

ления программ, вызова подпрограмм и

чённые из памяти операнды обрабатывают-

реализации программных циклов.

ся так, как это предусмотрено командой.

5. Единообразные

и оптимизированные

ОБРАТНАЯ ЗАПИСЬ — в этой фазе ре-

форматы команд.

 

 

 

зультат операции записывается в заданную

6. Программируемая структура прерыва-

область памяти.

 

ний для многоуровневых приоритетов.

Описанный выше конвейер

команд

Все эти характеристики будут подробно

обеспечивает увеличение скорости обра-

рассмотрены ниже.

 

 

 

 

ботки команд и позволяет обслуживать

Высокая скорость выборки и исполнения

большее количество задач и прерываний.

В отсутствие конвейера процесс исполне-

команд

 

 

 

 

 

 

 

 

 

 

ния каждой команды занимал бы четыре

 

 

 

 

 

 

Применяемые

в

микроконтроллерах

машинных цикла.

 

C166 аппаратные решения позволяют ис-

Декодер команд

 

полнять большинство команд в течение од-

 

 

 

ного машинного цикла, который длится 2

Декодирование команды начинается с

периода

тактовой

 

частоты

процессора

момента появления сигналов на выходах

(2 1/fCPU = 4TCLK). Так, например, операции

ПЛА (программно-логического автомата),

сдвига и циклического сдвига всегда испол-

соответствующих выбранной команде. Не

няются в течение одного машинного цикла

используется никакого микрокода, и даль-

независимо от того, на какое количество би-

нейшее управление каждой из ступеней

тов должен быть сдвинут исходный операнд.

конвейера осуществляется сигналами, ко-

Команды ветвления, умножения и деле-

торые были сохранены в управляющих ре-

ния обычно требуют более одного машин-

гистрах ПЛА во время фазы декодирования

ного цикла. Однако и эти команды были

команды. Иногда конвейер команд может

оптимизированы. Команды

ветвления, к

находиться в состоянии ожидания; в основ-

примеру, требуют только одного дополни-

ном это происходит, во время циклов ожи-

тельного машинного цикла, если условие

дания при обращении к внешней памяти, в

ветвления выполняется, а в процессе про-

течение которых сигналы «удерживаются» в

хождения «пустых»

программных

циклов

управляющих регистрах ПЛА. При испол-

большинство команд ветвления не требуют

нении команд микроконтроллера длитель-

дополнительных машинных циклов благо-

ностью в несколько машинных циклов ис-

даря использованию так называемого кэ-

пользуются аппаратные механизмы инжек-

ширования (маскирования) переходов.

ции (вставки) команд и контроля внутрен-

32/16-битное деление занимает 20 пери-

него состояния, которые соответствующим

одов тактовой частоты процессора (TCPU), а

образом видоизменяют управляющие сиг-

умножение двух 16-битных операндов —

налы.

 

10·TCPU. Среднее время исполнения одной

Высокопроизводительное 8- и 16-битное

команды удаётся значительно сократить за

арифметико-логическое устройство

счёт использования

конвейера

команд.

 

 

Благодаря наличию конвейера процессор-

Все стандартные арифметические и ло-

ное ядро может обрабатывать различные

гические операции реализуются в микро-

участки

командных

последовательностей

контроллере с помощью 16-битного ариф-

параллельно. Ниже

перечислены

четыре

 

 

INFSEMI_2-Text.fm, стр. 283 из 589 (September 3, 2010, 17:05)

7.3. Шестнадцатибитные микроконтроллеры 283

метико-логического устройства (АЛУ). Кроме того, при операциях с байтами состояние АЛУ отображается значениями шестого и седьмого битов, что позволяет корректно выставлять значения флагов условий. Повышение точности вычислений обеспечивается благодаря использованию в АЛУ сигнала входного переноса CARRYIN, который генерируется в результате предыдущих вычислений в рамках выполнения требуемой арифметической операции. Большинство внутренних исполнительных блоков АЛУ оптимизированы с целью достижения высокой производительности как при реализации 8-битных, так и 16-битных операций. В нормальном режиме, когда конвейер команд полностью загружен, за один машинный цикл выполняется одна команда. Исключение составляют лишь команды умножения и деления. Они реализуют усовершенствованный алгоритм Бута, обеспечивающий умножение 4-битных операндов и деление 2-битных операндов за один машинный цикл. С учётом того, что умножение и деление осуществляется с использованием регистровой пары 16-битных регистров, MDL и MDH, для вычисления результата перемножения двух 16-битных операндов или деления 32-битного операнда на 16-битный операнд требуется соответственно четыре и девять машинных циклов; ещё один машинный цикл занимает процесс начальной установки операндов и коррекции результата. Поскольку ход исполнения команд умножения и деления может быть приостановлен сигналами прерывания, необходимо обеспечить как можно более быструю реакцию микроконтроллера на возникновение прерывания. Существуют также команды увеличения плотности упаковки байтов в памяти с пословной адресацией и, напротив, команды знакового расширения, которые применяются при осуществлении арифметических операций с числами большого формата (имеющими размерность слова). Структура внутренней шины АЛУ при необходимости позволяет получать или принимать от периферийных устройств данные размерностью байт или слово. Набор соответствующих флагов автоматически обновляется в регистре PSW после каждой арифметической, логической, сдвиговой операции или операции пересылки данных. Наличие флагов позволяет организовывать ветвления программы в

зависимости от тех или иных условий. Проверка на соответствие условиям, заданным пользователем, поддерживается как для знаковых, так и для беззнаковых переменных. Состояние флагов автоматически сохраняется при входе в прерывание или в процедуру обработки ошибки. Все адреса, по которым должен будет производиться переход в ходе выполнения операций ветвления, вычисляются центральным АЛУ.

Наличие 16-битного регистра циклического сдвига позволяет осуществлять многократную инжекцию (вставку) битов в течение одного машинного цикла. Данный регистр аппаратно поддерживает операции циклического сдвига и арифметического сдвига (сдвиг с учетом знакового бита).

Расширенная обработка битовых переменных и управления вводом/выводом

Значительное число команд предназначено для работы с битовыми переменными. Эти команды служат для эффективного управления периферийными устройствами и контроля их состояния, что улучшает качество обработки данных. В отличие от других микроконтроллеров, в систему команд микроконтроллеров семейства C166 входят команды, предназначенные для операций с двумя операндами, расположенными непосредственного в адресном пространстве ОЗУ (т.е. значения этих операндов не нужно предварительно переписывать во временные флаги).

Для операций с битами могут использоваться те же самые логические команды, что и для операций со словами и байтами. Это даёт возможность пользователю сравнивать и изменять соответствующий управляющий бит (флаг) периферийного устройства, используя одну команду. Кроме того, микроконтроллер C166 поддерживает несколько команд побитового сдвига (таким образом, для осуществления операции сдвига одного бита не нужно создавать длинные последовательности команд). Все эти команды выполняются за один машинный цикл. Наконец, имеются несколько команд для работы с полями битовых переменных (когда несколько битов операнда могут быть модифицированы одной командой).

INFSEMI_2-Text.fm, стр. 284 из 589 (September 3, 2010, 17:05)

284 7. Микроконтроллеры

Эффективная система организации ветвления программ, вызова подпрограмм и реализации программных циклов

Поскольку программное обеспечение для микроконтроллеров включает в себя большое количество операций ветвления, соответствующие команды должны быть оптимизированы (т.е. дополнительный машинный цикл под их исполнение должен отводиться лишь в тех случаях, когда ветвление действительно осуществляется). Такая оптимизация достигается предварительным расчётом адреса команды ветвления ещё на этапе декодирования команды.

Для того чтобы сократить временные издержки, связанные с выполнением программных циклов, были разработаны следующие усовершенствования:

Во-первых, для осуществления перехода предусмотрен один-единственный машинный цикл после первой итерации программного цикла. Это значит, что в процессе исполнения всей циклической процедуры будет потерян только один машинный цикл. В процедурах, завершение которых происходит после полного перебора команд, на выход из программного цикла требуется больше одного машинного цикла. Для организации программных циклов не предусмотрено специальных команд, а команды ветвления автоматически распознаются в процессе исполнения программного цикла.

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

Третье усовершенствование обеспечивает более гибкое решение, чем пара команд «декрементирование» и «переход, если ноль», обычно используемых для

организации выхода из программного цикла в других микроконтроллерах. Используя команды сравнения и инкрементирования или декрементирования, пользователь может организовывать программные циклы, в которых переменные могут принимать любое заданное значение, что особенно удобно при реализации табличного поиска.

Детальная информация о состоянии системы сохраняется во внутреннем системном стеке. Это означает, что можно обойтись без команд, предназначенных для сохранения слова состояния системы при входе и возврате из процедур обработки прерывания или ошибки. Команда вызова подпрограммы сохраняет значение указателя команд в системном стеке, и времени на это уходит не больше, чем требуется для исполнения команды условного или безусловного перехода. Кроме того, существуют команды перехода и вызова подпрограмм с возможностью косвенной адресации. Этим обеспечивается поддержка команд множественного ветвления CASE, реализованных в виде ассемблерных макросов, или соответствующих команд в языках высокого уровня.

Совместимые и оптимизированные форматы команд

Для достижения оптимальной производительности при использовании конвейерной архитектуры был разработан набор команд с использованием принципов, характерных для архитектуры с сокращенным набором команд (RISC). Такой подход позволяет реализовать быстрое декодирование команд и операндов и сокращает время простоя конвейера. При разработке системы команд микроконтроллеров семейства C166 преследовались следующие цели:

1.Предусмотреть особые команды для выполнения таких регулярно осуществляемых операций, которые обычно реализовывались путём последовательного выполнения нескольких команд. Исключить обмен данными с промежуточными регистрами, такими как аккумулятор или флаг переноса. Обеспечить параллельное исполнение различных задач, например, при сохранении состояния системы в процессе входа в програм- му-обработчик прерывания или в другую подпрограмму.

INFSEMI_2-Text.fm, стр. 285 из 589 (September 3, 2010, 17:05)

7.3. Шестнадцатибитные микроконтроллеры 285

2.Упростить кодирование команд, т.е. предусмотреть в формате команды стандартные поля для размещения операндов, а также исключить редко используемые сложные схемы адресации. Это позволяет сократить время исполнения команд и, кроме того, упрощает процесс разработки компиляторов и ассемблеров.

3.Длина (формат) наиболее часто используемых команд должна составлять одно 16-битное слово, а остальных команд — не более двух слов. Таким образом, размер каждой из команд, находящихся в памяти программ, будет кратен размеру слова (так называемое выравнивание по границе слова), что позволяет обойтись без сложных схем аппаратного выравнивания. А это, в свою очередь, расширяет область применения команд относительного ветвления.

Для того чтобы программист мог в полной мере задействовать высокопроизводительные аппаратные средства ЦПУ микроконтроллеров семейства C166, была разработана чрезвычайно функциональная система команд, в состав которой входят следующие классы команд:

арифметические команды;

логические команды;

команды для работы с битовыми переменными;

команды сравнения и управления программными циклами;

команды сдвига и циклического сдвига;

команды задания уровня приоритета;

команды управления потоками данных;

команды управления системным стеком;

команды перехода и вызова подпрограмм;

команды возврата из подпрограмм;

команды управления режимами работы микроконтроллера;

прочие команды.

Вкачестве операндов этих команд могут использоваться биты, байты и слова. Некоторые команды поддерживают преобразование (расширение) байтов в слова. При обращении к операндам может использоваться прямая, косвенная и непосредственная адресация.

Система прерываний с программируемой многоуровневой структурой приоритетов

Для того чтобы микроконтроллеры семейства C166 могли работать с большим количеством источников прерываний, в сис-

тему прерываний были внесены следующие улучшения:

1.Был разработан контроллер периферийных событий (PEC). Его применение позволяет разгрузить ЦПУ от обработки большинства запросов на прерывание. Потери времени, связанные с входом и выходом из прерывания или программы обработки ошибки, были устранены за счёт осуществления управляемой прерыванием передачи данных размером байт или слово между любыми двумя точками адресного пространства в пределах нулевого сегмента памяти. Процесс передачи занимает один машинный цикл, при этом возможно инкрементирование ре- гистров-указателей источника или назначения. Таким образом, в ходе обработки прерывания контроллером PEC у исполняющейся в данный момент основной программы будет «украден» один-единственный машинный цикл.

2.Контроллер прерываний имеет большое количество уровней приоритета; тому или иному прерыванию может быть присвоен любой требуемый уровень приоритета. Прерывания можно объединять в группы, чтобы программы обработки этих прерываний не оказывали влияния друг на друга. Каждому из возможных источников прерываний соответствует свой управляющий регистр, в состав которого входят флаг запроса на прерывание, флаг разрешения прерывания и битовое поле, использующееся для задания уровня приоритета. Программа обработки прерывания может быть приостановлена только при поступлении запроса на прерывание с более высоким уровнем приоритета. Стандартная схема обработки прерываний организована таким образом, что под адрес программы-обработчика для каждого из возможных источников прерывания зарезервировано определённое место в адресном пространстве микроконтроллера (вектор прерывания).

3.Микроконтроллер имеет несколько независимых банков регистров. Это даёт пользователю возможность разместить до 16 регистров общего назначения в любом удобном месте ОЗУ. Для переключения с одной задачи на другую (с одного банка регистров на другой) требуется всего одна команда длительностью в один машинный цикл.

INFSEMI_2-Text.fm, стр. 286 из 589 (September 3, 2010, 17:05)

286 7. Микроконтроллеры

4. В микроконтроллерах семейства C166

ных ресурсов, интегрированных на одном

разрешены прерывания в процессе ис-

кристалле с ЦПУ. Такая комбинация ресур-

полнения команд, занимающих несколь-

сов обеспечивает высокую производитель-

ко машинных циклов (например, команд

ность микроконтроллеров.

умножения и деления). Благодаря этому

Ниже в данной главе рассматриваются

удалось сократить время задержки при

ресурсы, доступные для использования на

обработке прерываний. Время реакции

момент написания книги. Однако не ис-

на прерывание (если запрос на это пре-

ключено, что не все из описанных ресурсов

рывание поступает в ходе исполнения

будут присутствовать в конкретных моделях

команд из внутренней памяти) находит-

микроконтроллеров семейства С166.

ся в диапазоне 5…10 периодов fCPU, т.е.

Контроллер периферийных событий

микроконтроллер

способен

исключи-

(PEC) и управление обработкой

тельно быстро реагировать на любые не-

прерываний

детерминированные

события.

Входы

 

быстрых внешних прерываний микро-

Использование контроллера периферий-

контроллера опрашиваются

в

каждом

ных событий (Peripheral Event Controller —

машинном цикле, что позволяет обнару-

PEC) позволяет свести ответ на запрос на

живать даже очень быстро меняющиеся

прерывание к операции однократной пере-

внешние сигналы.

 

 

 

 

 

дачи данных (слова или байта). Эта опера-

В микроконтроллерах семейства С166

ция занимает всего один машинный цикл, а

реализован ещё один превосходный меха-

сохранять и затем восстанавливать состоя-

низм идентификации и обработки исклю-

ние системы не требуется. В каждом машин-

чительных ситуаций или ошибок, возника-

ном цикле блок управления прерываниями

ющих в процессе работы системы, — так

назначает каждому из источников прерыва-

называемое системное прерывание («аппа-

ний свой уровень приоритета. При наличии

ратная ловушка»). При возникновении сис-

прерывания, обслуживаемого PEC, начина-

темного прерывания в микроконтроллере

ется передача данных. При обнаружении за-

немедленно генерируется

немаскирован-

проса на обработку прерывания в первую

ный запрос на его обработку, как и при вы-

очередь проверяется хранящийся в регистре

полнении стандартной

задачи

обработки

PSW текущий уровень приоритета прерыва-

внешнего прерывания (т.е. происходит пе-

ний, для того чтобы определить, не обраба-

редача управления по адресу, указанному в

тывается ли в настоящий момент прерыва-

соответствующем векторе

прерывания).

ние с более высоким уровнем приоритета.

Возникновение системного

(аппаратного)

Если запрос на обработку прерывания удов-

прерывания индицируется состоянием со-

летворён, то текущее состояние процессора

ответствующего бита в регистре флагов

сохраняется во внутреннем системном сте-

TFR, и это событие приостанавливает ис-

ке, и происходит передача управления по

полнение любой текущей программы, за

соответствующему этому периферийному

исключением уже запущенной программы

устройству вектору прерывания.

обработки системного прерывания с более

Контроллер периферийных событий со-

высоким приоритетом. В то же время, вы-

держит набор регистров специальных фун-

полнение задачи по обработке аппаратного

кций, в которых для каждого из восьми воз-

прерывания не останавливается при воз-

можных каналов передачи хранятся биты

никновении программного (обычного или

управления и сведения о длине передавае-

PEC) прерывания. Для того чтобы это про-

мого пакета данных. Кроме того, PEC ис-

изошло, необходимо

выполнить

команду

пользует зарезервированную за ним область

Trap, задавая в качестве параметра индиви-

ОЗУ для хранения адресов источников дан-

дуальный номер аппаратной ловушки (но-

ных и адресов их назначения. Управление

мер прерывания).

 

 

 

 

 

контроллером периферийных событий осу-

7.3.6. Встроенные ресурсы

 

 

ществляется таким же образом, как и всеми

 

 

остальными периферийными устройства-

микроконтроллера

 

 

 

 

 

 

ми микроконтроллера — с помощью регис-

 

 

 

 

 

 

Микроконтроллеры семейства С166 ха-

тров специальных функций, в которых со-

рактеризуются наличием мощных систем-

храняется конфигурация для каждого из ка-

налов передачи данных.

INFSEMI_2-Text.fm, стр. 287 из 589 (September 3, 2010, 17:05)

7.3. Шестнадцатибитные микроконтроллеры 287

Счётчик передаваемых данных контроллера периферийных событий декрементируется в фоновом режиме при каждом сеансе передачи данных, за исключением режима непрерывной передачи. Когда значение счётчика становится равным нулю, осуществляется переход по вектору обычного прерывания, источник которого связан с соответствующим каналом. PEC-прерыва- ния очень хорошо подходят, например, для управления процессом записи данных из регистров в таблицы, размещённые в памяти (и наоборот). Каждый из восьми каналов PEC позволяет осуществлять такую, управляемую прерываниями передачу данных.

Распределение памяти

Адресное пространство памяти микроконтроллеров семейства С166 сконфигурировано в соответствии с фон-неймановской архитектурой, согласно которой память программ, память данных, регистровая память и адреса портов ввода/вывода должны находиться в пределах одного линейного адресного пространства объёмом до 16 Мбайт. При обращении к пространству памяти оно может рассматриваться как множество байтов или множество двухбайтных слов. Обращение к некоторым из областей внутренней памяти может производиться побитно.

Внутреннее 16-битное ОЗУ (IRAM) обеспечивает быстрый доступ к регистрам общего назначения (GPR), пользовательским данным (переменным) и системному стеку. Эта область ОЗУ может также использоваться и для хранения кода программы. Хорошо продуманная схема адресации предоставляет пользователю гибкие возможности по размещению во внутреннем ОЗУ банков регистров и оптимизирует процедуры высвобождения пространства ОЗУ для последующего размещения данных пользователя.

ЦПУ работает с текущим набором регистров, содержащим до 16 выровненных по границе слова и/или байта регистров общего назначения. Физически они расположены во внутреннем ОЗУ. Регистр указателя контекста (Context Pointer — CP) содержит адрес активного (текущего) банка регистров.

Количество банков регистров ограничено только доступным объёмом внутреннего ОЗУ. Адресные пространства различных банков регистров могут перекрываться, что облегчает обмен параметрами (контекстом) между ними.

Системный стек имеет размер 512/1024/1536 слов в зависимости от объёма внутреннего ОЗУ; допускается его использование для хранения промежуточных данных. Организация доступа ЦПУ к содержимому системного стека осуществляется с помощью указателя стека (SP — Stack Pointer). При каждом обращении к нему содержимое двух выделенных регистров специальных функций (STKOV и STKUN) сравнивается в фоновом режиме со значением, находящимся в указателе стека, чтобы определить, не произошел ли выход за верхнюю или нижнюю границу стека. Аппаратная привязка выбранной области памяти к её фактическому расположению происходит во внутреннем дешифраторе адресов памяти, что позволяет осуществлять прямую или косвенную адресацию памяти и получать желаемые данные без использования промежуточных регистров и специальных команд.

Расположенное непосредственно на кристалле микроконтроллера 16-битное XRAM (расширенное ОЗУ) обеспечивает пользовательской программе быстрый доступ к данным (переменным), пользовательскому стеку и коду программ. XRAM входит в состав так называемой X-перифе- рии (т.е. расширенной периферии) и с точки зрения программного обеспечения является частью внешнего ОЗУ. Из-за этого невозможно задействовать данную область памяти для размещения банков регистров, а также использовать при обращении к ней побитовую адресацию.

Опционально на кристалле может размещаться также внутреннее ПЗУ/ ОППЗУ/флэш-память, предназначенные для хранения кода программы и констант. Эта область памяти соединяется с ЦПУ 32-битной шиной данных, т.е. команда размером 2 слова (4 байт) может быть полностью извлечена из памяти программ за один машинный цикл. ПЗУ (Read Only Memory — ROM) программируется масочным способом на заводе при производстве микроконтроллера, тогда как однократно программируемое ПЗУ, или ОППЗУ (One Time Programmable ROM — OTP ROM) и флэшпамять могут быть запрограммированы непосредственно в приложении. Размещение программы во внутренней (расположенной на кристалле микроконтроллера) памяти программ обусловливает наиболее высокую скорость её выполнения.

INFSEMI_2-Text.fm, стр. 288 из 589 (September 3, 2010, 17:05)

288 7. Микроконтроллеры

Для размещения регистров специальных

В немультиплексированных режимах ра-

функций зарезервированы 1024 байт адрес-

боты шины порт 1 используется для переда-

ного пространства. Первые 512 байт отведе-

чи адреса, а порт 0 — для ввода/вывода дан-

ны под стандартный блок регистров специ-

ных. В мультиплексированных режимах ра-

альных

функций

(SFR),

а

оставшиеся

боты шины порт 0 используется как для пе-

512 байт представляют собой расширенную

редачи адреса, так и для ввода/вывода дан-

область

регистров

специальных

функций

ных. Порт 4 используется для передачи

(ESFR).

 

 

 

 

 

 

старших битов адреса (А16…), если эти ад-

Регистры (E)SFR имеют

разрядность,

реса были выбраны.

 

 

 

равную одному слову, и используются как

Важные временные характеристики вне-

управляющие и функциональные регистры

шней шины (время ожидания, длитель-

различных встроенных ресурсов. Незадей-

ность сигнала ALE, задержки при чте-

ствованные адреса (E)SFR зарезервирова-

нии/записи) теперь могут быть запрограм-

ны для будущих модификаций микроконт-

мированы, что даёт пользователю возмож-

роллеров семейства С166 с расширенными

ность варьировать их в зависимости от ис-

функциями.

 

 

 

 

 

пользуемых типов памяти и периферийных

7.3.7. Интерфейс внешней шины

устройств. Обращение к очень медленным

устройствам памяти и периферийным уст-

Часто

пользователю

не

хватает объёма

ройствам осуществляется с помощью спе-

циальной функции Ready.

 

 

внутренней памяти программ или памяти

 

 

Для приложений, требующих для своей

данных микроконтроллера. Для того чтобы

работы

менее

64 Кбайт адресного

про-

расширить её до потенциально возможных

странства, может быть выбрана несегмен-

16 Мбайт, к микроконтроллеру через внеш-

тированная модель памяти, в рамках кото-

нюю шину могут быть подключены допол-

рой вся доступная память может быть адре-

нительные модули ПЗУ и/или ОЗУ. Приме-

сована

с

помощью

16-битного

адреса

нение интегрированного в структуру микро-

(А0…А15). При этом не будет необходимос-

схемы контроллера внешней шины (External

ти задействовать порт 4 для вывода старших

Bus Controller — EBC) обеспечивает макси-

битов адреса (А16…Аxx), которые использу-

мальную гибкость при организации доступа

ются в сегментированной модели памяти.

к внешней памяти и/или периферийным ус-

Встроенная шина XBUS является внут-

тройствам. Вид шины (мультиплексирован-

ренним «отображением» внешней систем-

ная/немультиплексированная), её

ширина,

ной шины, и её использование позволяет

или разрядность (8 бит/16 бит) и даже вре-

организовать доступ

к интегрированным

менные характеристики цикла обращения к

специализированным

периферийным мо-

памяти

(время ожидания,

временные за-

дулям тем же способом, что и к внешним

держки сигналов) могут быть выбраны неза-

периферийным

устройствам.

Подобный

висимо друг от друга для пяти различных

принцип

организации обмена данными

диапазонов адресов. Это позволяет получать

обеспечивает стандартизированный подход

прямой доступ к различным видам памяти и

к подключению специализированных пе-

периферийных устройств с

максимальной

риферийных модулей. Примерами такого

эффективностью.

Если

микроконтроллер

рода X-периферии являются

встроенные

работает не в однокристальном режиме, ког-

модули памяти XRAM, контроллера интер-

да для его функционирования не требуется

фейса I2C и контроллера шины CAN.

 

внешней памяти, то EBC может управлять

 

 

 

 

 

 

 

 

доступом к внешним устройствам в одном из

7.3.8. Встроенные периферийные модули

перечисленных ниже режимов работы:

 

 

 

 

 

 

 

16/18/20/24-битный адрес, 16-битные

У микроконтроллеров семейства

С166

данные, немультиплексированная шина;

периферийные функции отделены от про-

16/18/20/24-битный

адрес,

8-битные

цессорного ядра. Такая структура обеспечи-

данные, немультиплексированная шина;

вает возможность параллельного исполне-

16/18/20/24-битный адрес, 16-битные

ния максимально возможного количества

данные, мультиплексированная шина;

задач и позволяет добавлять или убирать

16/18/20/24-битный

адрес,

8-битные

периферийные функциональные модули из

данные, мультиплексированная шина.

любого контроллера этого семейства без не-

INFSEMI_2-Text.fm, стр. 289 из 589 (September 3, 2010, 17:05)

7.3. Шестнадцатибитные микроконтроллеры 289

обходимости вносить какие-либо изменения в процессорное ядро. Каждый функциональный модуль работает независимо от других; обмен данными осуществляется через общие шины данных. Встроенные периферийные модули управляются путём записи соответствующих значений в регистры специальных функций (SFR). Эти регистры располагаются как в стандартной области адресного пространства (00’FE00h...00’FFFFh), так и в расширенной (ESFR) области адресов памяти (00’F000h...00’F1FFh). Регистры и области памяти, назначенные для обслуживания встроенных периферийных модулей, подключённых к шине XBUS (X-пери- ферии), расположены в отдельных страницах памяти. Через эти периферийные модули ЦПУ обменивается информацией с внешним миром, а способ их подключения к шине XBUS позволяет интегрировать в состав микроконтроллера функциональные блоки, которые в ином случае пришлось бы делать внешними.

Базовый набор периферийных модулей микроконтроллеров семейства С166 включает в себя:

порты ввода/вывода с большим количеством альтернативных функций;

два блока таймеров общего назначения (GPT1 и GPT2);

сторожевой таймер;

последовательные интерфейсы (ASC, SSC);

модули захвата/сравнения (CAPCOM1, CAPCOM2, CAPCOM6);

четырёхканальный блок широтно-им- пульсной модуляции (ШИМ);

АЦП;

часы реального времени.

Кшине XBUS подключается следующая периферия:

высокоскоростной SSP (синхронный последовательный порт);

дополнительный USART (ASC1);

интерфейс I2C (400 Кбит/с, 10-битный адрес);

CAN-интерфейс (Rev.2.0B active, full- CAN/basic-CAN);

USB-интерфейс (максимальная скорость, 8 конечных точек);

модуль последовательной передачи данных (SDLM), соответствующий стандарту J1850 Class 2.

Примечание. Вполне возможно, что не все перечисленные выше периферийные

модули включены в состав каждого из микроконтроллеров семейства С166. Кроме того, одни и те же периферийные модули выпускаются в различных модификациях.

Периферийные интерфейсы

Встроенные периферийные модули поддерживают два типа интерфейсов: интерфейс ЦПУ и интерфейс внешних устройств. Взаимодействие между процессором и периферийными модулями осуществляется с помощью регистров специальных функций (SFR) и системы прерываний. Регистры специальных функций предназначены для управления, контроля и обмена данными с периферией. Прерывания генерируются периферийными модулями в тех случаях, когда в процессе их работы возникает так называемая исключительная ситуация (например, завершение операции, ошибка и т.п.)

Для взаимодействия с внешним оборудованием используются отдельные линии параллельных портов ввода/вывода, функции которых назначаются в соответствии с требованиями периферийных устройств. Они могут использоваться как выходы для управления внешним оборудованием со стороны встроенного периферийного модуля микроконтроллера, либо как входы для сигналов управления встроенным периферийным модулем, поступающих от внешнего оборудования. Это пример реализации так называемых альтернативных функций выводов порта, в том смысле, что их работа в качестве входов/выходов встроенного периферийного модуля альтернативна обычной функции цифрового порта ввода/вывода.

Временные характеристики периферийных модулей

Взаимодействие ЦПУ и встроенных периферийных модулей микроконтроллера основано на использовании сигналов так-

товой частоты ЦПУ (fCPU). Эти сигналы формируются на выходе внутреннего гене-

ратора микроконтроллера, и их частота определяется параметрами внешнего кварцевого резонатора или внешними тактовыми импульсами. Тактовый сигнал, предназначенный для управления периферийными устройствами, формируется независимо от тактового сигнала, предназначенного для синхронизации работы ЦПУ. В режиме ожидания генерация тактового сигнала

INFSEMI_2-Text.fm, стр. 290 из 589 (September 3, 2010, 17:05)

290 7. Микроконтроллеры

ЦПУ приостанавливается, в то время как

ды АЦП. Все выводы порта, не имеющие

периферийные модули продолжают функ-

альтернативных функций, могут быть ис-

ционировать. В свою очередь, блок управ-

пользованы в качестве стандартных линий

ления энергопотреблением может времен-

ввода/вывода общего назначения.

но приостанавливать работу группы пери-

Таймеры общего назначения (GPT)

ферийных модулей, отключая подаваемый

 

 

 

на них тактовый сигнал. ЦПУ может полу-

Блок таймеров GPT представляет собой

чить доступ к регистрам специальных

гибкую многофункциональную структуру

функций (SFR) периферийных

модулей

на основе таймера/счётчика, которая при-

один раз за такт. Если пользовательская

меняется при решении многих задач, свя-

программа попытается осуществить запись

занных с измерением времени. С его помо-

в регистр SFR периферийного модуля в то

щью могут быть определены временные ха-

время, когда в этот регистр производит за-

рактеристики и произведён подсчёт числа

пись периферийный модуль, то действия

событий, измерены длительность импульса

программы будут обладать более высоким

и коэффициент заполнения

(скважность)

приоритетом, чем действия периферии. Бо-

импульсной

последовательности, а также

лее подробные описания временных харак-

сгенерированы импульсы или осуществле-

теристик периферийных модулей можно

но перемножение импульсов. Каждый из

найти в соответствующих разделах техни-

таймеров блока GPT может функциониро-

ческих описаний микроконтроллеров.

вать независимо от других в одном из четы-

Параллельные порты

 

рёх основных режимов или же работать сов-

 

местно с другими таймерами из этого же

 

 

 

Входы и выходы микроконтроллеров се-

модуля. Поддерживаются следующие режи-

мейства С166 сгруппированы в порты вво-

мы работы: таймер, стробируемый таймер,

да/вывода. Каждая из линий порта поддер-

таймер/счётчик, а также (для таймеров

живает индивидуальную (побитовую) адре-

GPT1) режим интерфейса инкрементных

сацию и с помощью регистра направления

датчиков. В режиме таймера входной такто-

может быть сконфигурирована как вход или

вый сигнал формируется путём деления

выход. Порты ввода/вывода являются пол-

внутреннего тактового сигнала ЦПУ на

ностью двунаправленными. При конфигу-

программируемый коэффициент, тогда как

рировании в качестве входов они перево-

в режиме счётчика синхронизация таймера

дятся в высокоимпедансное («третье») со-

осуществляется внешними сигналами (че-

стояние.

 

 

рез вход TxIN). Режим таймера со строби-

Выходные драйверы некоторых портов

рованием используется для измерения дли-

ввода/вывода

могут быть индивидуально

тельности входных импульсов или коэффи-

(побитно) запрограммированы через управ-

циента заполнения импульсной последова-

ляющие регистры как двухтактные каскады

тельности, при этом таймер управляется

или как каскады с открытым стоком. В про-

внешними

стробирующими

сигналами,

цессе внутреннего сброса микроконтролле-

поступающими на вход TxIN.

 

ра все выводы его портов конфигурируются

В режиме интерфейса инкрементных

как входы. Входные каскады некоторых

датчиков таймеры GPT1 могут быть напря-

портов ввода/вывода могут быть сконфигу-

мую подключены к квадратурным выходам

рированы с использованием их управляю-

A и B инкрементного датчика через соот-

щих регистров таким образом, чтобы соот-

ветствующие входы TxIN и TxEUD. Из этих

ветствовать ТТЛлибо КМОП-уровням.

сигналов модуль GPT1 формирует счётные

Для большинства выводов портов пре-

импульсы и сигнал направления счёта, в ре-

дусмотрены

программируемые

альтерна-

зультате чего содержимое таймера Tx соот-

тивные функции. Эти выводы могут, на-

ветствует положению датчика. Третий сиг-

пример, работать как линии передачи адре-

нал датчика (TOP0) может быть подключён

са и данных при обращении к внешнему ус-

к входу прерываний.

 

тройству памяти, входы выбора микросхе-

Направление счёта для каждого таймера

мы (CS), входы быстрых внешних

(прямое/обратное) задаётся программно и

прерываний и тактовых сигналов, вхо-

может изменяться динамически подачей

ды/выходы таймеров, линии последова-

внешнего сигнала (TxEUD), например, что-

тельных интерфейсов или аналоговые вхо-

бы упростить отслеживание положения.

INFSEMI_2-Text.fm, стр. 291 из 589 (September 3, 2010, 17:05)

7.3. Шестнадцатибитные микроконтроллеры 291

На выходе базового таймера каждого из модулей GPT (T3 для GPT1 и T6 для GPT2) имеется триггерная защёлка (TxOTL), которая изменяет своё состояние при каждом переполнении таймера (как при прямом, так и при обратном счёте). Кроме того, сигналы с выхода этих защёлок используются при объединении базовых таймеров с соответствующими дополнительными таймерами для формирования 32/33-битных таймеров/счётчиков, позволяющих с высокой точностью измерять временные интервалы большой длительности.

Микроконтроллеры семейства C166 поддерживают большое количество различных режимов захвата/перезагрузки. Они предназначены для перезагрузки таймеров либо для реализации функции захвата (фиксации текущего значения таймера). Захват/перезагрузка осуществляется под управлением внешнего сигнала или по заданному фронту (нарастающему или спадающему) сигнала на выходе триггерной защёлки TxOTL.

Максимальное разрешение таймеров модуля GPT1 составляет 8 тактов сигнала ЦПУ (= 16 TCLK). Используя таймер GPT2, который имеет максимальное разрешение 4

такта сигнала ЦПУ (= 8 TCLK), можно с большей точностью измерять временные

интервалы и определять момент наступления внешнего события.

Сторожевой таймер

Сторожевой таймер — это важный элемент обеспечения безопасности, основной функцией которого является предотвращение опасности длительной некорректной работы микроконтроллера. После сброса микроконтроллера сторожевой таймер всегда находится в активном режиме, отключить его можно только в интервале времени между сбросом микроконтроллера и исполнением команды EINIT (End of INITialization — конец инициализации). Таким образом, процедура начальной загрузки микроконтроллера всегда проходит под контролем сторожевого таймера. При разработке прикладного программного обеспечения всегда следует учитывать необходимость обслуживания сторожевого таймера, не допуская его переполнения. Если (например, вследствие аппаратной или программной ошибки) эта задача не будет реализована, то произойдёт переполнение сторожевого таймера, что вызовет сброс

микроконтроллера; при этом выход RSTOUT будет установлен в НИЗКОЕ состояние, разрешая тем самым процесс аппаратного сброса внешних устройств.

Сторожевой таймер представляет собой 16-битный таймер с входной частотой, равной тактовой частоте ЦПУ, делённой на 2/4…/128/256. Старший байт регистра счётчика сторожевого таймера может быть установлен в заранее заданное значение (оно хранится в регистре WDTREL), что позволяет более точно задавать длительность отслеживаемого интервала времени. Каждый раз, когда прикладная программа обращается к регистрам сторожевого таймера, производится перезагрузка указанного выше значения в старший байт счётчика.

Каналы последовательного обмена данными

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

Интерфейс ASC обратно совместим с последовательными портами 8-битных микроконтроллеров компании Infineon и поддерживает дуплексный асинхронный обмен на скорости до 625 Кбит/с и полудуплексный синхронный обмен на скорости до 2.5 Мбит/с при тактовой частоте процессора, равной 20 МГц. Для получения всех необходимых для работы интерфейса стандартных частот используется специальный генератор, благодаря чему исключается необходимость подстройки частоты тактового генератора микроконтроллера.

Для передачи, приёма данных и обработки ошибок предусмотрены отдельные вектора прерывания. В асинхронном режиме могут передаваться и приниматься 8- и 9-битные пакеты в сопровождении одного старт-бита и двух стоп-битов. Для межпроцессорного обмена предусмотрен встроенный механизм, позволяющий различать байты адреса и байты данных (8 бит данных плюс бит выхода из спящего режима).

В синхронном режиме интерфейс ASC передаёт или принимает байты (8 бит) синхронно с тактовым сигналом сдвига, который он сам же и генерирует. В интерфейсе ASC предусмотрено, что младший знача-

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]