А. В. Комаров цифровые сигнальные процессоры

Вид материалаДокументы
1.16. Порт IDMA
1.16.1. Сигналы IDMA
1.16.2. Функционирование IDMA
1.16.3. Загрузка программ с помощью IDMA
1.17. Система команд
Подобный материал:
1   ...   6   7   8   9   10   11   12   13   ...   26

Таблица 1.18


Форматы BDMA

BTYPE

Адрес

ПП или ПД

Содержимое

ПП или ПД

Адрес БП

Содержимое БП

00

РМ(0х0000)

0xABCDEF

BM(0x0000)

0xAB










BM(0x0001)

0xCD










BM(0x0002)

0xEF

00

PM(0x0001)

0x123456

BM(0x0003)

0x12










BM(0x0004)

0x34










BM(0x0005)

0x56

01

DM(0x0000)

0x9876

BM(0x0006)

0x98










BM(0x0007)

0x76

01

DM(0x0001)

0x3456

BM(0x0008)

0x34










BM(0x0009)

0x56

10

DM(0x0002)

0x9800

BM(0x000A)

0x98

10

DM(0x0003)

0x7600

BM(0x000B)

0x76

11

DM(0x0004)

0x0034

BM(0x000C)

0x34

11

DM(0x0005)

0x0056

BM(0x000D)

0x56


1.15.4. Загрузка программ с помощью BDMA


Загрузка программ с помощью BDMA осуществляется, если при старте процессора выдержаны следующие условия: MMAP = 0 и BMODE = 0. При этом автоматически регистры BDMA инициализируются следующим образом:
  • BWCOUNT = 32 (из БП во внутреннюю ПП будут записываться не более 32-х команд);
  • BDIR = 0 (пересылка из БП во внутреннюю ПП), BMPAGE = 0 (программа расположена на нулевой странице БП), BEAD = 0 (начиная с нулевого адреса), BIAD = 0 (ПП также записывается с нулевого адреса), BTYPE = 0 (пересылаются трехбайтовые коды операций);
  • BCR = 1 (на время пересылок работа процессора запрещена);
  • BMWAIT = 7 (предполагается медленная память).

Пересылаемая программа является загрузчиком исполняемой программы. Если исполняемая программа создавалась с помощью утилиты PROM Splitter, входящей в состав утилит ADSP-2100 Family, то загрузчик подключается автоматически.

После пересылки загрузчика управление передается на нулевой адрес внутренней ПП (на начало загрузчика). Далее загрузчик выполняет всю работу по пересылке исполняемой программы во внутреннюю ПП.


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 также отделяется двумя прямыми слешами).