Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
глава 6 готово.doc
Скачиваний:
10
Добавлен:
15.09.2019
Размер:
3.38 Mб
Скачать

Состояния процессора

DSP всегда находится в одном из пяти состояний: нормальное, обработка исключения, сброс, ожидание и останов.

Нормальное состояние процессора связано с выполнением инструкций. Описание выполнения инструкций приведено в описании системы инструкций. Инструкции выполняются с использованием трехуровневого конвейера.

Состояние обработки исключения связано с прерываниями, которые генерируются как внутренними устройствами DSP, так и поступают от внешних источников.

Состояние сброса возникает при появлении сигнала активного уровня на контакте RESET. В этом состоянии происходит сброс внутренних периферийных устройств; регистры модификации устанавливаются в $FFFF; регистр уровней приоритета прерываний очищается; регистр BCR устанавливается в $FFFF, что добавляет 15 состояний ожидания ко всем обращениям к внешней памяти; указатель стека очищается; биты режима масштабирования, режима трассировки, флаг цикла и биты условий в SR сбрасываются, биты маски прерываний в SR устанавливаются в «1»; бит разрешения ПЗУ данных, бит задержки и битстробирования памяти сбрасываются. DSP не выходит из состояния сброса, пока на контакте RESET сохраняется сигнал активного уровня. После выхода из состояния сброса биты операционного режима в OMR загружаются извне по линиям MODA, MODB и выполнение программы начинается с адреса $Е000 в памяти программ в нормальном расширенном режиме или с адреса $0000 в остальных операционных режимах.

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

Состояние останова - это состояние самого низкого энергопотребления, в которое процессор переходит при выполнении инструкции STOP. В этом состоянии генератор частоты отключен. При переходе в состояние останова кристалл сбрасывает все прерывания от периферийных устройств и внешние прерывания. Уровни приоритетов прерываний остаются такими же, как перед выполнением инструкции STOP. Процессор остановлен до тех пор, пока не появится сигнал низкого логического уровня на контакте ¬lRQA или на контакте ¬RESET. Эти события включают генератор, и после стабилизации частоты включается синхронизация всех устройств на кристалле. Период стабилизации частоты определяется битом SD в OMR.

6.2.2. Порта

Порт А может использоваться для расширения памяти или обычного ввода/вывода. Шина данных порта А имеет разрядность 24 бита, шина адреса разрядностью 16 бит обеспечивает доступ к памяти за один машинный цикл (рис. 6.22).

Интерфейс порта а

Во время выполнения инструкции могут быть доступны следующие блоки памяти DSP: Х-память данных, Y-память данных, память программ или несколько блоков сразу.

Каждый из этих блоков памяти может быть внутренним или внешним. Шины данных и адреса порта А обеспечивают доступ к внешней памяти.

На рис. 6.22 показаны сигналы порта А. Все сигналы разделены на три функциональные группы: адресные, данных и управления.

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

На рис. 6.23 показано использование сигнала выбора памяти данных для доступа к двум блокам памяти данных и использование сигнала X¬Y для переключения между ними.

Одиночный блок памяти может использовать сигналы ¬PS, ¬DS, X/¬Y в качестве дополнительных адресных линий для сегментации памяти на три пространства. В табл. 6.17 приведены варианты использования этих сигналов.

Простой вариант подключения периферийных устройств семейства МС6800 заключается в использовании линии X/¬Y для указания R/¬W.

Выбор кристалла периферии должен осуществляться с помощью линий адреса и строба данных так, чтобы регистры периферийных устройств находились в пространствах X и Y по одним и тем же адресам. На рис. 6.24 приведена структурная схема системы ЦОС с внешней памятью на основе DSP56000 и показаны сигналы управления блоками памяти данных и программ.

Для операции чтения применяется чтение памяти X: MOVE X:PERIPHERAL,XO ; X/Y имеет высокий уровень.

Для операции записи применяется запись в память Y: MOVE XO,Y:PERIPHERAL ; X/Y имеет низкий уровень.

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

Использование внешней логики позволяет подключать более быстрые ОЗУ или внешние буферы данных без конфликтов на шине данных.

На рис. 6.25 приведен пример расширенной системы с устройствами разного быстродействия.

Регистр управления шиной (ВСR). Регистр определяет синхронизацию расширения шины с использованием сигналов ¬RD и ¬WR и выходных линий данных. Этот регистр имеет адрес $FFFE в памяти X. Каждое из пространств памяти имеет свой собственный

4-битовый BCR, который программирует до 15 состояний ожидания (каждое состояние занимает половину цикла инструкции при доступе к памяти - 50 не на частоте 20 МГц). После сброса процессора все разряды регистра равны единице (15 состояний ожидания). Содержимое BCR должно соответствовать используемой памяти, иначе процессор вставит 15 состояний ожидания между выборками из памяти и DSP будет работать медленнее.

На рис. 6.26 показаны все четыре поля регистра BCR для работы с внешней памятью. Все периферийные устройства на кристалле входят в карту памяти, регистры управления ими расположены в диапазоне адресов X:$FFC0 - X:$FFFF.

Таймер DSP56002

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

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

Таймерный модуль, структура которого приведена на рис. 6.27, включает в себя 24-битный регистр статуса/управления таймером, 24-битный регистр таймера/счетчика, логику выбора синхронизации и генерации прерывания.

Программная модель таймерного модуля.

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

Регистр таймера/счетчика (TCR). 24-битный регистр TCR содержит величину, загружаемую в счетчик, если таймер разрешен (ТЕ = 1), или если было декрементировано нулевое значение счетчика и произошло новое событие. Если в TCR загружено число п, то счетчик перезагружается через (п + 1) событий. Если таймер запрещен (ТЕ = 0) и программа пользователя производит запись в TCR, величина, находящаяся там до момента записи, сохраняется и снова загружается в счетчик когда устанавливается разрешение таймера (ТЕ = 1). В режимах 4 и 5 TCR может быть загружен текущим значением счетчика по фронту сигнала ТЮ.

Регистр статуса/управления таймером (TCSR). 24-битный регистр управляет таймером и производит верификацию его состояний. Регистр может быть доступен по инструкциям пересылки или манипуляций с битами.

Разрешение таймера (ТЕ — бит 0).

Бит разрешает или запрещает использование таймера. Установка бита в «1» разрешает использование таймера, счетчик загружается величиной, хранящейся в TCR, и начинает декрементирование при каждом событии. После сброса бит равен нулю.

Разрешение прерываний от таймера (TIE- бит 1).

Установка бита в «1» разрешает прерывания от таймера после установки счетчика в «0» и возникновении нового события. После сброса бит равен нулю.

Инвертор (INV- бит 2).

Бит устанавливает полярность внешнего сигнала на входной линии ТЮ и полярность импульсов на выходной линии ТIO.

Если ТIO запрограммирован как вход и INV = 0, переход сигнала из «О» в «1» на линии ТIO вызывает декрементирование счетчика. Если INV = 1, декрементирование осуществляется при переходе сигнала из «1» в «0».

Если ТIO запрограммирован как выход и INV = 1, импульсы таймера инвертируются перед выдачей на линию ТЮ. Если INV = 0, импульсы таймера не изменяются.

В режиме 4 бит INV определяет, по какому уровню (низкому или высокому) происходит измерение входных импульсов.

В режиме 5 бит INV определяет, по какому фронту измеряется период сигнала.

В режиме обычного ввода/вывода бит определяет, инвертируются ли данные, читаемые/записываемые на линию ТIO (INV = 1), или нет (INV = 0).

После сброса бит равен нулю.

Биты управления таймером (ТС0-ТС2 - биты 3-5).

Биты управляют источником синхронизации, назначением линии ТIO и выбором режима таймера (табл. 6.18).

Стандартный ввод/вывод (GPIO - бит 6).

Если этот бит установлен и биты ТС2 – ТС0 равны нулю, линия ТIO используется как линия обычного ввода/вывода, направление передачи по которой определяет бит DIR. После сброса бит равен нулю.

Статус таймера (TS - бит 7).

Если бит равен единице, это означает, что произошло декрементирование нулевого значения счетчика. Бит сбрасывается при чтении регистра статуса/управления. Также бит сбрасывается при обработке прерывания от таймера. После сброса бит равен нулю.

Направление (DIR - бит 8).

Бит определяет направление передачи данных по линии ТIO, если линия используется для обычного ввода/вывода. Если DIR = 1, то ТIO - выход, иначе - вход.

Вход данных (DI — бит 9.

Если ТIO используется как линия ввода, содержимое DI соответствует сигналу на линии ТЮ. После сброса бит равен нулю.

Выход данных (DO - бит 10).

Если ТIO используется как линия вывода, содержимое DO выдается на линию ТIO. После сброса бит равен нулю.

Режимы таймера.

Ниже перечислены возможные режимы работы таймера.

Режим 0 (стандартный режим таймера, внутренняя синхронизация, нет выхода таймера). Если таймер разрешен (ТЕ = 1), счетчик загружается значением, содержащимся в TCR. Счетчик декрементируется на каждом такте внутренней частоты DSP, деленной на два (CLK/2). Если декрементирование осуществляется из нулевого значения счетчика, бит TS устанавливается в «1» и генерируется прерывание от таймера. Счетчик снова загружается значением TCR и процесс продолжается, пока таймер не запрещен (ТЕ = 0).

Режим 1 (стандартный режим таймера, внутренняя синхронизация, разрешены выходные импульсы). Если таймер разрешен (ТЕ = 1), счетчик загружается значением, содержащимся в TCR. Счетчик декрементируется на каждом такте внутренней частоты DSP, деленной на два (CLK/2). Если декрементирование осуществляется из нулевого состояния, бит TS устанавливается в «1» и генерируется прерывание от таймера. На линию ТIO поступают импульсы шириной в два цикла синхронизации, полярность которых определяется значением бита INV. После обработки прерывания счетчик снова загружается значением TCR и процесс продолжается, пока таймер не запрещен (ТЕ = 0).

Режим 3 (стандартный режим таймера, внутренняя синхронизация, разрешены выходные переключения). Если таймер разрешен (ТЕ =1), счетчик загружается значением, содержащимся в TCR. Счетчик декрементируется на каждом такте внутренней частоты DSP, деленной на два (CLK/2). Если декрементирование осуществляется из нулевого состояния, бит TS устанавливается в «1» и генерируется прерывание от таймера. По каждому декрементированию из нулевого значения выход ТIO переключается. Полярность выхода определяется значением бита INV. После обработки прерывания счетчик снова загружается значением TCR и процесс продолжается, пока таймер не запрещен (ТЕ = 0).

Режим 4 (режим измерения длительности импульса). В этом режиме события на линии ТЮ являются сигналом для начала синхронизации. Если таймер разрешен (ТЕ = 1), счетчик работает с тактовой частотой DSP, деленной на два. При возникновении первого события на линии ТIO счетчик загружается нулем и начинается инкрементирование. По первому фронту сигнала противоположной полярности на линии ТЮ счетчик останавливается, бит ТS устанавливается в «1» и, если TIE = 1, генерируется прерывание. Содержимое счетчика загружается в TCR и может быть прочитано пользователем. Процесс повторяется, пока таймер не запрещен. Бит INV определяет, по какому уровню сигнала на линии ТЮ начинается счет.

Режим 5 (режим измерения периода). Счетчик работает с тактовой частотой DSP, деленной на два. Если таймер разрешен, по первому фронту сигнала на линии ТIO счетчик загружается значением, содержащимся в TCR, и начинается инкрементирование. По каждому фронту сигнала одной и той же полярности на линии ТЮ бит TS устанавливается в «1» и генерируется прерывание, если прерывания от таймера разрешены. Значение счетчика загружается в TCR и может быть прочитано пользователем. Бит INV определяет, по какому фронту измеряется период сигнала: по переходу из «0» в «1» (INV = 0) или по переходу из «1» в «0» (INV = 1).

Режим 6 (стандартный режим счетчика, внешняя синхронизация). Если таймер разрешен, счетчик загружается дополнительным кодом значения, содержащегося в TCR. Счетчик инкрементируется при возникновении событий на линии ТIO. После каждого инкрементирования значение счетчика загружается в TCR. Если происходит декрементирование из нулевого состояния, бит TS устанавливается в «1» и генерируется прерывание от таймера. Процесс продолжается, пока таймер не запрещен.

Режим 7 (стандартный режим таймера, внешняя синхронизация). Если таймер разрешен, счетчик загружается значением, содержащимся в TCR. Счетчик декрементируется при возникновении события на линии ТIO. Если происходит декрементирование из нулевого состояния, бит TS устанавливается в «1» и генерируется прерывание от таймера. Процесс продолжается, пока таймер не запрещен. Бит INV определяет, по какому фронту сигнала на линии ТЮ декрементируется счетчик: по переходу из «О» в «1»(INV = 0) или по переходу из «1» в «0» (INV = 1).

При выполнении инструкции WAIT таймер не останавливается.