Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KOMAROV.DOC
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.32 Mб
Скачать

1.16. Порт idma

Порт IDMA является КПДП к внутренней ПП или ПД со стороны хост-компьютера. При этом имеется возможность устанавливать адреса чтения/записи не только со стороны процессора (из программы), но и со стороны хост-компьютера (извне).

1.16.1. Сигналы idma

Сигналы IDMA перечислены в п. 1.1. Их совокупность представляет собой простой и удобный интерфейс для доступа к внутренним ПП и ПД со стороны хост-компьютера, напоминающий ISA шину. Действительно, в его состав входит совмещенная двунаправленная шина адрес/данные IAD[15:00]. Как и в ISA шине появление адреса на шине IAD[15:00] отмечается специальным сигналом IAL (аналог ALE). Стробы записи/чтения IWR#/IRD# являются аналогами сигналов MEMW#/MEMR# соответственно.

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

Для управления IDMA существует регистр IDMA Control Register (см. п. П1.13), в который записывается тип внутренней памяти IDMAD и начальный адрес выбранной памяти IDMAA. Запись в этот регистр может осуществляться как из программы (регистр имеет адрес 0x3FE0), так и по сигналу IAL. При записи по сигналу IAL в IDMA Control Register записывается код, который в этот момент времени присутствует на шине IAD[15:00].

1.16.2. Функционирование idma

Блочная схема алгоритма доступа к внутренней памяти процессора со стороны хост-компьютера приведен на рис. 1.13.

Алгоритм рис. 1.13 достаточно полно иллюстрирует особенности IDMA пересылок. Осталось добавить:

  • после каждой пересылки значение IDMAA инкрементируется. Это дает возможность записывать передаваемый блок кодов по возрастающим адресам;

  • во время пересылок процессор продолжает выполнять программу.

1.16.3. Загрузка программ с помощью idma

Загрузка программ с помощью IDMA осуществляется в следующей последовательности:

  • сбросить процессор (RESET#:= 0);

  • установить MMAP = 0 и BMODE = 1 - это условия загрузки программы через IDMA;

  • деактивировать RESET# (RESET#:= 1);

  • загрузить выполняемую программу во внутреннюю ПП в соответствии с п. 1.16.2;

  • произвести запись по адресу РМ(0х0000), чтобы запустить загруженную программу на исполнение.

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

1.17.1. Общие сведения

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

[LABEL:] [IF cond ] COP; [COP;.. COP;][{Commentary}]

где:

  • LABEL – метка, т.е. идентификатор (адрес), присваиваемый следующей за ним команде (СОР). Метка используется для передачи управления отмеченной команде, вызова подпрограммы, а также для отметки последней команды тела цикла DO UNTIL. Метка не обязательна, при ее отсутствии символ : опускается;

  • IF cond – условная часть команды, если она есть в команде, то она проверяется первой. Если условие cond верно, то следующая за ней команда СОР выполняется, в противном случае – нет. Все проверяемые условия приведены в табл. 1.19. Условная часть не обязательна, в ее отсутствии команда считается безусловно выполняемой. Условная часть может находиться не перед всеми командами, так перед КОМАНДАМИ ПЕРЕСЫЛКИ (см. п. 1.17.4) и МНОГОФУНКЦИОНАЛЬНЫМИ КОМАНДАМИ (см. п. 1.17.9) условная часть команды НЕ используется;

  • СОР – (Code OPeration) код операции (команда) заканчивается всегда символом ; (точка с запятой). Это дает возможность писать в одной строке несколько команд;

  • комментарий Commentary, если он есть, всегда пишется в фигурных скобках (в среде VisualDSP также отделяется двумя прямыми слешами).

Таблица 1.19

Условия, проверяемые оператором IF команды

Условие

Описание

Выполняется, когда

EQ

Равно нулю

AZ = 1

NE

Не равно нулю

AZ = 0

LT

Меньше чем ноль

AN.XOR.AV = 1

GE

Больше чем или равно нулю

AN.XOR.AV = 0

LE

Меньше чем или равно нулю

(AN.XOR.AV).OR.AZ = 1

GT

Больше чем ноль

(AN.XOR.AV).OR.AZ = 0

AC

Перенос ALU

AC = 1

NOT AC

Нет переноса ALU

AC = 0

AV

Переполнение ALU

AV = 1

NOT AV

Нет переполнения ALU

AV = 0

MV

Переполнение МАС

MV = 1

NOT MV

Нет переполнения МАС

MV = 0

NEG

Отрицательный знак Х входа

AS = 1

POS

Положительный знак Х входа

AS = 0

NOT CE

Счетчик не исчерпан

FLAG_IN*

Сигнал FI установлен

На входе FI высокий

уровень сигнала

NOT FLAG_IN*

Сигнал FI сброшен

На входе FI низкий уровень сигнала

Примечание: * - только для команд JUMP и CALL.

Примеры команд:

{Сложение содержимых AX0 и AF, если есть перенос ALU}

IF AC AR = AX0 + AF;

{Пересылка содержимого ячейки ПД с адресом 0х1234 в AX0}

AX0 = DM(0x1234);

{Многофункциональная команда МАС. Содержимое MX0 и MY0 перемножаются со знаком, результат суммируется с содержимым MR, после чего регистры MX0 и MY0 загружаются новыми значениями из ПД и ПП соответственно. И все это происходит за один машинный цикл. Запятые разделяют отдельные части многофункциональной команды.}

MR = MR + MX0 * MY0 (SS), MX0 = DM(I0, M0), MY0 = PM(I4, M5);

Процессор ADSP–2181 содержит следующие группы команд:

  • Пересылочные;

  • Вычислительные: ALU, MAC, SHIFTER;

  • Управления потоком команд;

  • Многофункциональные;

  • Прочие.

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