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

Вид материалаДокументы
Адрес внутренней памяти BDMA, устанавливается в ноль
Тип передаваемого слова BDMA, 24 битное слово команды
Выбор номера страницы BDMA, нулевая
Число состояний ожидания BDMA, 7 состояний на передачу
1.14.3. Флажковые биты
1.14.4. Режим энергосбережения
1.15. Контроллер прямого доступа к байтовой памяти (BDMA)
1.15.1. Общие сведения
1.15.2. Регистры управления BDMA
1.15.3. Функционирование BDMA
Подобный материал:
1   ...   5   6   7   8   9   10   11   12   ...   26

Примечания:
  • НО – значение не определено;
  • НИ – значение не изменяется;
  • символом * отмечены значения, которые имеют место сразу же после начальной загрузки программы через BDMA. Такая загрузка производится процессором при выполнении следующих условий: MMAP = 0, BMODE = 0 (см. п. 1.1).


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

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

После перехода сигнала RESET# в высокий уровень процесс сброса процессора переходит в процесс загрузки программы. Вид загрузки зависит от значения сигналов на входах MMAP и BMODE процессора (см. п. 1.1). Так, если MMAP = 0 и BMODE = 0, то осуществляется BDMA загрузка программы из БП. При этом некоторые регистры процессора будут иметь значения, приведенные в табл. 1.17.

Таблица 1.17

Состояние регистров BDMA после сброса и перезагрузки

Регистр или


Битовое поле

Описание

До


загрузки

После

Загрузки

BIAD

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


0

0х20

BEAD

Адрес внешней памяти BDMA, устанавливается в ноль


0

0х60

BTYPE

Тип передаваемого слова BDMA, 24 битное слово команды


0

0

BDIR

Направление передачи BDMA, из БП


0

0

BMPAGE

Выбор номера страницы BDMA, нулевая


0

0

BWCOUNT

Счетчик слов BDMA, 32 слова


0x20

0

BMWAIT

Число состояний ожидания BDMA, 7 состояний на передачу


0x7

0x7

BCR

Сброс контекста BDMA


1

1


Установка BCR (см. П1.5) приводит к следующей последовательности событий: остановка выполнения программы на время работы BDMA, начало выполнения программы с адреса PM(0x0000) после окончания работы BDMA и разрешение BDMA прерываний. Приведенная последовательность событий осуществляется только после начальной загрузки программы или, если бит BCR установлен до записи в BWCOUNT.

После того или иного варианта сброса процессора выполнение программы начинается с адреса 0х0000.


1.14.2. Внешние прерывания


Все прерывания (состав, приоритеты, векторы прерываний, маскирование, чувствительность к уровню и фронту и т.п., в том числе и внешние) рассмотрены в п. 1.9. В п. 1.12.2 рассмотрено конфигурирование внешних контактов SPORT1 для приема дополнительных внешних запросов на прерывания.

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


1.14.3. Флажковые биты


Процессор имеет три группы флажковых битов:
  • FO, FI, если установлен бит 10 в регистре управления системой (см. П1.1). Бит FI можно использовать для управления программными переходами, используя условия IF FLAF_IN или IF NOT FLAG_IN команд JUMP и CALL. Флаг FO можно использовать для формирования внешнего сигнала общего назначения, его текущее состояние можно проверить, прочитав бит 15 регистра управления SPORT1 (см. п. П1.6). Значение флага FO не определено после сигнала RESET#;
  • FL2-FL0 – выходные флаги общего назначения (см. п. 1.1), как и флаг FO, могут управляться всеми командами манипулирования битами (SET, RESET и TOGGLE, см. п. 1.17.8.г). Если перечисленные команды используются с условием IF CE, то счетчик таймера не декрементируется как в других конструкциях IF CE. После сигнала RESET# флаги имеют единичное значение;
  • PF7-PF0 – программируемые флаги общего назначения. Каждый из этих флагов может запрограммирован как на вход, так и выход. После действия сигнала RESET# все они программируются на ввод. Установить направление передачи можно, используя битовое поле PFTYPE в регистре управления флагами (см. п. П1.7). Ввод/вывод через осуществляется с помощью регистра данных программируемых флагов PFDATA (см. п. П1.8).


1.14.4. Режим энергосбережения


Режим энергосбережения позволяет понизить потребляемую мощность до 1mW при условии малой нагрузки на выходы и малой активности сигналов на входах процессора. Режим особенно актуален для устройств с батарейным питанием.

Характерные особенности режима:
  • Запрещена внутренняя синхронизация;
  • Содержимое регистров и памяти процессора сохраняется;
  • Возможность выхода из режима менее чем за 100 периодов CLKIN;
  • Возможность запрещать внутренний генератор при использовании кварцевого резонатора;
  • Поддержка выполнения предопределенной части программы (housekeeping) перед входом в режим и при выходе из режима;
  • Выбираемый пользователем контекст при выходе из режима.

Управлять параметрами режима можно с помощью битов управления режимом энергосбережения, которые входят в состав регистра управления автобуферизацией SPORT1 (см. п. П1.5). В ним, в частности, относятся XTALDIS, XTALDELAY, PDFORCE и PUCR.

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

Перевод в процессора в режим энергосбережения обычно производится следующим образом:
  • Инициировать переход в режим энергосбережения можно аппаратно, активизируя входной сигнал PWD#, или программно, установив в 1 бит PDFORCE регистра управления режимом энергосбережения (см. п. П1.5);
  • Процесс переходит на немаскируемый вектор прерывания powerdown по адресу 0х002С;
  • Начиная с этого адреса, перед переходом в режим энергосбережения выполняется любое количество команд (предопределенный фрагмент программы). Обычно этот фрагмент программы определяет параметры режима энергосбережения, запрещает внутрипроцессорную периферию и очищает необработанные запросы на прерывание;
  • Перевод процессора в режим энергосбережения осуществляет команда IDLE (см. п. 1.17.8.з) даже, если этот переход инициирован аппаратно. Если в предопределенном фрагменте программы перед командой IDLE будет стоять команда RTI, то процессор вернется из обработчика прерывания powerdown без перехода в режим энергосбережения, т.е., в принципе, это прерывание можно использовать, как немаскируемое прерывание общего назначения.

Выход из режима энергосбережения могут инициировать два внешний сигнала: PWD# (переход из низкого уровня в высокий) или RESET#. Далее, в зависимости от различных факторов, переход на выполнение программы может производиться различными путями.

Если выход из режима энергосбережения инициирован дезактивацией сигнала PWD#, то программист может установить, по крайней мере, два параметра выхода: длительность задержки и контекст. Первый параметр зависит от значения бита XTALDELAY регистра управления режимом энергосбережения (см. п. П1.5). Если этот бит сброшен, то переход на программу составляет 100 периодов CLKIN. Такое значение бита XTALDELAY устанавливается обычно, если используется внешний тактовый генератор. Если бит XTALDELAY установлен, то переход на программу составляет 4096 периодов CLKIN. Такое значение XTALDELAY бита устанавливается обычно, если используется внутренний тактовый генератор.

Контекст зависит от значения бита PUCR регистра управления режимом энергосбережения (см. п. П1.5). Если этот бит сброшен, то процессор перейдет на следующую команду (обычно RTI) после команды IDLE. Если бит PUCR установлен, то при выходе из режима энергосбережения очищаются стеки PC, STATUS, LOOP и CNTR, регистры IMASK и ASTAT. В регистр SSTAT записывается 0х55. Процессор начинает выполнять программу с адреса 0х0000.

Сигнал PWDACK (Power Down Acknowledge – подтверждение режима энергосбережения) является ответным на сигнал PWD#. Сигнал PWDACK устанавливается, когда выполняется команда IDLE, и сбрасывается, когда начинает выполняться первая команда после выхода процессора из режима энергосбережения. Низкий уровень этого сигнала гарантирует наличие сигнала CLKOUT.

Если сигнал RESET# активизируется, когда процессор находится в режиме энергосбережения, то начинается обычный процесс сброса процессора (см. п. 1.14.1). Если этот сигнал используется только для выхода из режима энергосбережения, то он должен иметь определенную длительность. Расчет длительности сигнала RESET# для различных вариантов работы процессора приводится в [1].


1.15. Контроллер прямого доступа к байтовой памяти (BDMA)


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


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


На рис. 1.12 приведена схема подключения БП к процессору ADSP-2181. Как показывает рис. 1.12 шина адреса БП состоит из шины адреса процессора (ADDR[13:0]) и старшего байта шины данных (DATA[23:16]), поэтому имеет размерность 22 бита (ADDR[21:00]). Это дает возможность адресоваться к 4МБ байтовой памяти. Большой объем БП по сравнению с внутренними ПП и ПД, а также быстрота доступа через специальный узел (BDMA) делает БП похожей на жесткий диск персонального компьютера.





Шина данных состоит из среднего байта шины данных процессора (DATA[15:08]) и имеет размерность 8 битов, что и послужило названием этого вида памяти. Селектирующий сигнал BMS# процессора служит сигналом выбора микросхемы для БП. Следует отметить, что стробы записи и чтения процессора (WR# и RD# соответственно) на рис. 1.12 условно не показаны.

Для расчета продолжительности Т передачи (в циклах процессора) N слов с помощью байтового КПДП используется следующая формула:


T = N * (BPW * (WPB + 1) + 1) + HO (1.3)


где: BPW – число байт в передаваемом слове; WPB – число состояний ожидания при передаче байта; НО – число циклов останова работы байтового КПДП (обслуживание запроса захвата шины (см. п. 1.1), выполнение автобуферизации (см. п. 1.12.5) и т.п.).

Для примера подсчитаем длительность пересылки 100 слов (N = 100) программного кода (BPW = 3) с пятью состояниями ожидания (WPB = 5) без циклов останова работы байтового КПДП (НО = 0). По формуле (1.3) получаем Т = 100 * (3 * (5 + 1) + 1) = 1900 циклов или 1900 * 33 = 62,7 мкс.


1.15.2. Регистры управления BDMA


Регистры управления BDMA приведены в ПРИЛОЖЕНИИ 1 (см. пп. П1.9 – П1.12). В регистр счетчика слов BDMA (см. п. П1.9) записывается число пересылаемых слов BWCOUNT. Этот регистр по разному инициализируется в зависимости от значений входных сигналов процессора MMAP и BMODE. Если MMAP = 0 и BMODE = 0 (загрузка программы при сбросе производится из БП, см. п. 1.14.1), то BWCOUNT = 0х20 (этот случай представлен в п. П1.9), в противном случае (MMAP = 1 или BMODE = 1), то BWCOUNT = 0.

В регистр управления BDMA Control Register (см. п. П1.10) записывается код режима работы байтового КПДП, который определяет: тип пересылаемых кодов (поле BTYPE), направление пересылки (поле BDIR), значение бита контекста сброса (поле BCR) и номер страницы БП (поле BMPAGE). Содержимое последнего поля во время пересылки устанавливается на линиях DATA[23:16] (см. п. 1.15.1).

В регистр внешнего адреса BDMA External Address Register (см. п. П1.11) записывается начальный адрес БП BEAD, с которого начнется пересылка кодов. Содержимое этого регистра во время пересылки устанавливается на линиях ADDR[13:00] (см. п. 1.15.1).

В регистр внутреннего адреса BDMA Internal Address Register (см. п. П1.12) записывается начальный адрес внутренней ПП или ПД BIAD, с которого начнется пересылка кодов.


1.15.3. Функционирование BDMA


Перед запуском BDMA необходимо определить значения BEAD, BIAD (см. п. 1.15.2), а также код режима работы BDMA (содержимое регистра BDMA Control Register, см. п. 1.15.2). Запуск производится записью не нулевого значения в регистр BWCOUNT (см. п. 1.15.2).

Далее начинаются пересылки в соответствии с кодом режима работы байтового КПДП. После каждой пересылки значения BEAD и BIAD инкрементируются, а BWCOUNT – декрементируются. Этот процесс продолжается пока BWCOUNT не станет нулевым. Этот момент времени отмечается формированием запроса на прерывание от BDMA (см. п. 1.9.1).

Если прерывание от BDMA не используется, то окончание BDMA пересылок может быть определено по нулевому содержимому BW­CO­UNT. Если необходимо срочно (аварийно) прервать работу BDMA, то в BW­CO­UNT необходимо записать единицу.

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