Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МПС для АТП (ЛЕК).doc
Скачиваний:
33
Добавлен:
26.09.2019
Размер:
2.38 Mб
Скачать

8.2.6.Система команд

Философия микропроцессоров семейства МС68000 заключается в том, что все пользовательские программы могут исполняться без модификации на более совершенном процессоре, а программы привилегированного режима требуют лишь незначительных изменений. CPU32 может считаться промежуточным звеном в семействе МС68000. На нем работают программы для МС68000 и МС68010. Плюс к этому, поддерживаются многие инструкции и расширенные режимы адресации МС68020.

Новые команды. Ко множеству инструкций МС68000 были добавлены две новые команды для микроконтроллерных применений. Это инструкции LPSTOP (останов с пониженным энергопотреблением) и TBL (табличная интерполяция).

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

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

8.3.Модуль системной интеграции (sim)

С уществует ряд модификаций Модуля Системной Интеграции, оптимизированных для различных моделей микроконтроллеров. Базовым для всех модификаций является модуль SIM. Различные модификации, такие как SIM40, SIM41, SIMM, полностью повторяют его. Они имеют только количественные отличия, например, в числе линий выбора внешних устройств CS. Более существенные отличия имеют модули системной интеграции для новых микропроцессорных ядер CPU32+ и CPU030. Эти процессоры имеют 32-разрядную шину данных в отличие от 16-разрядной шины данных в CPU32 и следовательно модули системной интеграции для этих процессоров - SIM49, SIM60 имеют также полностью 32-разрядную шину.

Модуль системной интеграции (SIM) состоит из пяти функциональных блоков (Рис. 8 .42), контролирующих внешнюю шину, запуск, инициализацию и конфигурацию микроконтроллера при помощи минимального количества внешних устройств. Блок-схема модуля системной интеграции показана на рисунке

Рис. 8.42. Блок-схема SIM

8.3.1.Функционирование шины

Логика работы шины МК не зависит от того, кто в данный момент ею управляет - МК либо внешнее устройство. Названия циклов и их описание даны с точки зрения устройства, контролирующего шину. Архитектура микроконтроллера поддерживает операнды размером в байт, слово и двойное слово, позволяя иметь доступ к 8- и 16- разрядным данным путем использования асинхронных циклов шины. Циклы контролируются сигналами /SIZx и /DSACKx. Передача данных по шине квитируется двумя сигналами подтверждения: /DSACKx, сигнализирующим об успешном завершении цикла шины, и /BERR, сигнализирующим об ошибке шины, недостоверности данных или другой сбойной ситуации во время цикла шины.

МК имеет немультиплексированную шину адреса и данных. Для адресации к подчиненному устройству МК устанавливает функциональные коды (сигналы FC2-FC0), которые выбирают одно из восьми адресных пространств, к которому относится адрес; сигналы A23-A0 шины, определяющие адрес байта или слова; строб адреса /АЗ, который показывает, что адрес и множество контрольных сигналов установлены необходимым для выполнения цикла образом.

Передача информации осуществляется по сигналам D15-D0, которые составляют двунаправленную немультиплексированную параллельную шину. Операция записи или чтения может за один цикл шины передать 8 либо 16 бит данных (1 или 2 байта).

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

Микроконтроллер начинает цикл шины с установки выходов адреса, размера, функционального кода и сигнала R/W. В начале цикла сигналы размера выставляются вместе с сигналами функционального кода. SIZx показывают число байт, оставшихся для передачи в этом цикле операнда, который состоит из одного или более циклов шины. В Таблица 8 .3 показана интерпретация возможных состояний SIZx. Сигнал R/W определяет направление передачи данных в течение цикла шины. Сигнал RMW выставляется в начале первого цикла шины в операции Чтение-Модификация-Запись и остается в этом состоянии до завершения последнего цикла операции.

Таблица 8.3

SIZ1

SIZ2

Размер

0

1

Байт

1

0

Слово

1

1

3 байта

0

0

Длинное слово

Шина передачи данных в семействе микропроцессоров МС68000 и МК семейства МС68300 использует механизм квитирования при обмене данными с подчиненными устройствами (памятью, функциональными модулям контроллерами и т.д.). Каждое подчиненное устройство устанавливает специальный сигнал /DSACKx подтверждающий успешное завершение шинного цикла. После инициализации адресной части цикла, IV устанавливает строб данных /DS, а также данные в цикле записи, и переходит в состояние ожидания получен сигнала подтверждения от подчиненного устройства.

Шина микроконтроллера работает асинхронно. Внешние устройства, подключенные к шине, могут работать тактовой частотой, отличающейся от частоты процессора. Для контроля за обменом данными используются лини /AS, /DS, /DSACKx, /BERR, /HALT. Декодированный сигнал с выходов размера и младший разряд адреса А обеспечивают стробирующий сигнал, который выбирает активную часть шины данных. Затем подчиненно устройство (память либо периферия) либо помещает на нужную часть шины данные (в цикле чтения), либо считывает их (в цикле записи). После этого устройство инициирует завершение цикла шины путем установки сигналов /DSACKx соответствующим образом для порта данного размера. Если ни одно из подчиненных устройств не отвечает или обращение к шине неверно, внешняя логика устанавливает для прекращения цикла сигнал /BERR либо для повтора цикла шины сигнал /BERR и /HALT одновременно.

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

Сигнал /BERR также указывает на завершение цикла шины и, при отсутствии /DSACKx, может быть использован для индикации ошибки шины. В некоторых случаях /BERR может выставляться совместно с /DSACKx. Плюс к этому сигналы /BERR и /HALT могут быть установлены одновременно, либо вместе, либо вместо сигналов /DSACKx. Одновременная установка сигналов /BERR и /HALT являются требованием повтора текущего цикла шины. Иногда это просто необходимо при работе с разделяемым ресурсом, например двухпортовой памятью, которая может быть занята в момент обращения к ней.

Для генерации сигнала /BERR во время внутренней передачи данных или во время передачи данных наружу может быть использован внутренний монитор шины. Монитор шины (Bus Monitor) является обязательным элементом шины с квитированием передачи данных. Функция монитора шины состоит в формировании сигнала /BERR в случае, если за определенное время (timeout) не произошло успешного завершения цикла шины по сигналам /DSACKx. Внешнее устройство, управляющее шиной, должно само генерировать сигнал /BERR, т.к. у внутреннего монитора нет никакой информации о передаче данных, начатой этим устройством.

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

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

Таблица 8.4

/DSACK1

/DSACK0

Размер

1

1

Вставить цикл ожидания

1

0

Завершить цикл: 8 бит данных

0

1

Завершить цикл: 16 бит данных

0

0

Зарезервировано

В цикле передачи операнда подчиненное устройство указывает свой размер порта данных и инициирует завершение цикла путем установки соответствующего значения на входах /DSACKx. Интерпретация этих значений приведена в Таблица 8 .4. К примеру, если микроконтроллер исполняет инструкцию, считывающую длинное слово с 16-разрядного порта, то считываются первые 16 бит, а затем начинается еще один цикл для получения оставшейся части данных.

Динамическое определение размера требует, чтобы часть шины, используемая портом определенного размера для передачи данных, была жестко фиксирована. Например, 8-разрядный порт должен пользоваться сигналами D15-D8.

Сигналы SIZx также являются частью протокола. Они показывают, сколько байт осталось передать в текущем цикле.

Для устройств с малым временем доступа схема выборки кристалла может обеспечить передачу данных с быстрым завершением за 2 такта. Так как эта схема управляется тактовым сигналом системы, то завершение цикла шины точно с ним согласовано.

В соответствии с архитектурой шины, для окончания цикла внешнее устройство должно установить сигналы /DSACKx. Отсутствие сигналов /DSACKx и /AVEC указывает на одну из следующих причин:

  • подчиненное устройство не отвечает;

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

  • произошла еще какая-либо ошибка.

Если в течение некоторого времени после выставления /AS ни одно из устройств не отвечает, микроконтроллер получает сигнал /BERR от монитора шины. Это позволяет текущему циклу завершиться, а процессору - начать обработку исключительной ситуации ошибки шины. Для контроля таких ситуаций на шине предусмотрен еще один сигнал (HALT). Он может быть выставлен внешним устройством для того, чтобы в отладочных целях вызвать повторение ошибочного цикла.

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

1. Внешнее устройство устанавливает сигнал запроса шины /BR.

2. Микроконтроллер, показывая, что шина свободна, выставляет сигнал /BG.

3. Внешнее устройство устанавливает сигнал /BGACK в подтверждение того, что оно приняло управление шиной. Запросы шинного арбитража обслуживаются как во время нормального исполнения команд, так и в случае, когда установлен сигнал /HALT или когда процессор находится в состоянии останова из-за двойной ошибки шины.

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

Если /RESET устанавливается каким - либо другим способом, то он удерживается в активном состоянии, как минимум, 512 тактов до тех пор, пока не изменится состояние входа /RESET.

Для полной уверенности в сбросе микроконтроллера необходимо удерживать /RESET в активном состоянии по меньшей мере 590 тактов. Сброс процессора вызывает завершение любого цикла шины так, как будто были выставлены сигналы /DSACK и /BERR. В дополнение к этому, микроконтроллер инициализирует регистры значениями, соответствующими исключительной ситуации по сбросу.