Продолжая использовать наш сайт, вы даете согласие на обработку файлов cookie, которые обеспечивают правильную работу сайта. Благодаря им мы улучшаем сайт!
Принять и закрыть

Читать, слущать книги онлайн бесплатно!

Электронная Литература.

Бесплатная онлайн библиотека.

Читать: Разработка устройств на основе цифровых сигнальных процессоров фирмы Analog Devices с использованием Visual DSP++ - Олег Дмитриевич Вальпа на бесплатной онлайн библиотеке Э-Лит


Помоги проекту - поделись книгой:

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

Таблица 4.1а Регистр состояния арифметико-логического устройства ASTAT

Разряд Исходное состояние Назначение
7 0 Флаг знака ввода в устройство сдвига SHIFTER (SS)
6 0 Флаг переполнения в умножителе-накопителе MAC (MV)
5 0 Флаг частного АЛУ (AQ)
4 0 Флаг знака ввода порта X в АЛУ (AS)
3 0 Флаг переноса бита в АЛУ (АС)
2 0 Флаг переполнения АЛУ (AV)
1 0 Флаг отрицательного результата в АЛУ (AN)
0 0 Флаг нулевого значения в АЛУ (AZ)

Таблица 4.1б Регистр состояния режима процессора MSTAT

Разряд Исходное состояние Назначение
6 0 Разрешение режима GO
5 0 Разрешение работы таймера
4 0 Результаты умножителя: 0 — дробные, 1 — целые
3 0 Разрешение режима насыщения регистра AR АЛУ
2 0 Разрешение режима фиксации переполнения АЛУ
1 0 Разрешение бит-реверсивной адресации DAG1
0 0 Выбор банка регистров данных: 0 — главный, 1 — теневой

Таблица 4.1в Регистр разрешения прерываний IMASK (0 — запрещено, 1 — разрешено)

Разряд Исходное состояние Назначение
15…10 0 Не используются
9 0 -IRQ2
8 0 -IRQL1
7 0 -IRQL0
6 0 Передатчик SPORT0
5 0 Приемник SPORT0
4 0 -IRQE
3 0 BDMA
2 0 Передатчик SPORT1 или -IRQ1
1 0 Приемник SPORT0 или -IRQ0
0 0 Таймер

Таблица 4.1г Регистр состояния стека SSTAT

Разряд Исходное состояние Назначение
7 0 Стек циклов переполнен
6 1 Стек циклов пуст
5 0 Стек состояний переполнен
4 1 Стек состояний пуст
3 0 Стек счетчика переполнен
2 1 Стек счетчика пуст
1 0 Стек счетчика команд переполнен
0 1 Стек счетчика команд пуст

Таблица 4.1д Регистр управления прерываниями ICNTL

Разряд Исходное состояние Назначение
4 X Вложенность прерываний: 0 — запрещена, 1 — разрешена
3 0 Не используется
2 X Чувствительность -IRQ2: 0 — уровень, 1 — фронт
1 X Чувствительность -IRQ1: 0 — уровень, 1 — фронт
0 X Чувствительность -IRQ0: 0 — уровень, 1 — фронт

Таблица 4.1е Регистр установки и сброса прерываний IFC (только запись)

Разряд Исходное состояние Назначение
15 0 Принудительная установка прерывания -IRQ2
14 0 Принудительная установка прерывания передатчика SPORT0
13 0 Принудительная установка прерывания приемника SPORT0
12 0 Принудительная установка прерывания -IRQE
11 0 Принудительная установка прерывания BDMA
10 0 Принудительная установка прерывания передатчика SPORT1 или -IRQ1
9 0 Принудительная установка прерывания приемника SPORT0 или -IRQ0
8 0 Принудительная установка прерывания таймера
7 0 Сброс прерывания -IRQ2
6 0 Сброс прерывания передатчика SPORT0
5 0 Сброс прерывания приемника SPORT0
4 0 Сброс прерывания -IRQE
3 0 Сброс прерывания BDMA
2 0 Сброс прерывания передатчика SPORT1 или -IRQ1
1 0 Сброс прерывания приемника SPORT0 или -IRQ0
0 0 Сброс прерывания таймера

X — произвольное состояние после сброса.

Блок арифметико-логического устройства ALU включает в себя:

• два 16-разрядных регистра операндов AX0 и AX1;

• два 16-разрядных регистра операндов AY0 и AY1;

• один 16-разрядный регистр результата AR;

• один 16-разрядный регистр обратной связи AF.

Все эти регистры имеют своих двойников — теневые регистры, изображенные на рисунке программно-логической модели процессора в виде теней. Переключение между основными и теневыми регистрами производится программно. Блок умножителя MAC включает в себя:

• два 16-разрядных регистра операндов MX0 и MX1;

• два 16-разрядных регистра операндов MY0 и MY1;

• два 16-разрядных регистра результата MR0 и MR1;

• один 8-разрядный регистра результата MR2;

• один 16-разрядный регистр обратной связи AMF.

Блок устройства сдвига SHIFTER включает в себя:

• два 16-разрядных регистра результата SR0 и SR1;

• один 5-разрядный регистр блочных операций SB;

• один 8-разрядный регистр экспоненты SE;

• один 16-разрядный регистр операнда SI.

Так же как и в ALU, в блоках MAC и SHIFTER все регистры имеют своих двойников — теневые регистры.

Устройство обмена между шинами представляет собой 8-разрядный регистр PX, участвующий в пересылках между шинами адреса и данных.

Остальные регистры процессора распределены между блоками таймера, интерфейсной памяти, портов SPORT0 и SPORT1, портов IDMA и BDMA и блоком программируемых флагов.

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

Всего в процессоре отведено тридцать две ячейки 16-разрядных слов с адреса 0x3FE0 по адрес 0x3FFF для регистров такого типа. Часть ячеек памяти для таких регистров не используется в рассматриваемом процессоре ADSP-2181, но используется в других процессорах семейства ADSP-21XX.

В табл. 4.2 приведено назначение разрядов всех регистров, отображенных на память процессора.

Таблица 4.2а Регистр управления системой SCR, адрес памяти данных = 0x3FFF

Разряд Исходное состояние Назначение
15…13 0 Не используются
12 0 Разрешение порта SPORT0: 0=порт запрещен, 1=порт разрешен
11 0 Разрешение порта SPORT1: 0=порт запрещен, 1=порт разрешен
10 0 Конфигурация режима работы порта SPORT1: 0=сигналы FI FO IRQ0 IRQ1 SCLK, 1=последовательный порт SPORT1
9…3 0 Не используются
2…0 1 Циклы ожидания памяти программ от 0 до 7

Таблица 4.2б Регистр тактов ожидания WSR, адрес памяти данных=0x3FFE

Разряд Исходное состояние Назначение
15 0 Не используется
14…12 1 Циклы ожидания памяти данных от 0 до 7
11…9 1 Циклы ожидания 3-й группы портов ввода-вывода от 0 до 7
8…6 1 Циклы ожидания 2-й группы портов ввода-вывода от 0 до 7
5…3 1 Циклы ожидания 1-й группы портов ввода-вывода от 0 до 7
2…0 1 Циклы ожидания 0-й группы портов ввода-вывода от 0 до 7

Таблица 4.2в Регистры таймера

Разряд Исходное состояние Назначение
Регистр периода таймера TPERIOD, адрес памяти данных=0x3FFD
15…0 X Период таймера от 0 до 0xFFFF
Регистр счетчика таймера TCOUNT, адрес памяти данных=0x3FFC
15…0 X Счетчик таймера от 0 до 0xFFFF
Регистр масштабирования таймера TSCALE, адрес памяти данных=0x3FFB
15…8 0 Не используются
7…0 X Масштабирование таймера от 0 до 0xFF

Таблица 4.2г Регистры последовательного порта SPORT0

Разряд Исходное состояние Назначение
Регистр разрешения многоканального приема S0RW1, адрес памяти данных = 0x3FFA
15…0 X Разрешение приема канала 31…16
Регистр разрешения многоканального приема S0RW0, адрес памяти данных = 0x3FF9
15…0 X Разрешение приема канала 15…0
Регистр разрешения многоканальной передачи S0TW1, адрес памяти данных=0x3FF8
15…0 X Разрешение передачи канала 31…16
Регистр разрешения многоканальной передачи S0TW0, адрес памяти данных=0x3FF7
15…0 X Разрешение передачи канала 15…0
Регистр управления S0CR, адрес памяти данных=0x3FF6
15 0 Разрешение многоканальности: 0 — запрещено, 1 — разрешено
14 0 Разрешение внутреннего тактового генератора: 0 — запрещен, 1 — разрешен
13 0 Требование кадровой синхронизации приема: 0 — не требуется, 1 — требуется (в многоканальном режиме — задержка)
12 0 Требование широкого кадрового импульса приемника: 0 — не требуется, 1 — требуется (в многоканальном режиме — задержка)
11 0 Требование кадровой синхронизации передатчика: 0 — не требуется, 1 — требуется (в многоканальном режиме — задержка)
10 0 Требование широкого кадрового импульса передатчика: 0 — не требуется, 1 — требуется (в многоканальном режиме — задержка)
9 0 Разрешение внутреннего тактового генератора передатчика: 0 — запрещен, 1 — разрешен (в многоканальном режиме — число каналов: 0 — 24 канала, 1 — 32 канала)
8 0 Разрешение внутреннего кадрового генератора приемника: 0 — запрещено, 1 — разрешено
7 0 Разрешение инвертирования кадрового генератора передатчика: 0 — запрещено, 1 — разрешено (только в многоканальном режиме)
6 0 Разрешение инвертирования кадрового генератора приемника: 0 — запрещено, 1 — разрешено
5, 4 0 Формат данных: 00 — выравнивание по правому краю, старшие биты=0, 01 — выравнивание по правому краю, старшие биты=знаку, 10 — компандирование по МЮ закону, 11 — компандирование по А закону
3…0 0 Длина слова минус 1
Регистр делителя тактовых импульсов S0CLKDIV, адрес памяти данных = 0x3FF5
15…0 0 Делитель частоты тактовых импульсов = (CLKOUT/2*SCLK)-1
Регистр делителя кадровых импульсов приемника S0RFDIV, адрес памяти данных=0x3FF4
15...0 0 Делитель частоты тактовых импульсов = (SCLK/RFS)-1
Регистр управления авто буферизацией S0ABUF, адрес памяти данных = 0x3FF3
15 0 Не используется
14 0 Бит разрешения CLKOUT
13 0 Не используется
12 0 Бит управления округлением со смещением
11…9 0 Номер индексного регистра передатчика
8, 7 0 Номер регистра модификатора передатчика
6…4 0 Номер индексного регистра приемника
3, 2 0 Номер регистра модификатора приемника
1 0 Разрешение автобуферизации передатчика
0 0 Разрешение автобуферизации приемника

Таблица 4.2д Регистры последовательного порта SPORT1

Разряд Исходное состояние Назначение
Регистр управления S1CR, адрес памяти данных=0x3FF2
15 0 Флаг FO (только чтение)
14 0 Разрешение внутреннего тактового генератора: 0 — запрещен, 1 — разрешен
13 0 Требование кадровой синхронизации приема: 0 — не требуется, 1 — требуется
12 0 Требование широкого кадрового импульса приемника: 0 — не требуется, 1 — требуется
11 0 Требование кадровой синхронизации передатчика: 0 — не требуется, 1 — требуется
10 0 Требование широкого кадрового импульса передатчика: 0 — не требуется, 1 — требуется
9 0 Разрешение внутреннего тактового генератора передатчика: 0 — запрещен, 1 — разрешен
8 0 Разрешение внутреннего кадрового генератора приемника: 0 — запрещено, 1 — разрешено
7 0 Разрешение инвертирования кадрового генератора передатчика: 0 — запрещено, 1 — разрешено
6 0 Разрешение инвертирования кадрового генератора приемника: 0 — запрещено, 1 — разрешено
5, 4 0 Формат данных: 00 — выравнивание по правому краю, старшие биты=0, 01 — выравнивание по правому краю, старшие биты=знаку, 10 — компандирование по МЮ закону, 11 — компандирование по А закону
3…0 0 Длина слова минус 1
Регистр делителя тактовых импульсов S1CLKDIV, адрес памяти данных=0x3FF1
15…0 0 Делитель частоты тактовых импульсов = (CLKOUT/2*SCLK)-1
Регистр делителя кадровых импульсов приемника S1RFDIV, адрес памяти данных=0x3FF0
15…0 0 Делитель частоты тактовых импульсов = (SCLK/RFS)-1
Регистр управления автобуферизацией S1ABUF, адрес памяти данных=0x3FEF
15 0 Блокирование вывода XTAL в режиме пониженной мощности: 0 — активен, 1 — блокирован (этот вывод должен быть блокирован, если к процессору подключен генератор, а не кварцевый резонатор)
14 0 Разрешение задержки запуска процессора из режима пониженной мощности на 4096 циклов: 0 — запрещено, 1 — разрешено
13 0 Принудительный вход в режим пониженной мощности: 0 — нормальный режим, 1 — режим пониженной мощности (осуществляется переход на вектор прерывания пониженной мощности)
12 0 Принудительный перезапуск процессора при подаче питания: 0 — нормальный режим, 1 — программный перезапуск
11…9 0 Номер индексного регистра передатчика
8, 7 0 Номер регистра модификатора передатчика
6…4 0 Номер индексного регистра приемника
3, 2 0 Номер регистра модификатора приемника
1 0 Разрешение автобуферизации передатчика
0 0 Разрешение автобуферизации приемника

Таблица 4.2е Регистры управления программируемыми флагами

Разряд Исходное состояние Назначение
Регистр управления программируемыми флагами PFTYPE, адрес памяти данных=0x3FE6
15 0 Не используется
14…12 1 Циклы ожидания байтовой памяти данных BDMA от 0 до 7
11 1 Разрешение выборки портов ввода-вывода сигналом -CMS: 0 — запрещено, 1 — разрешено
10 0 Разрешение выборки байтовой памяти данных BDMA сигналом -CMS: 0 — запрещено, 1 — разрешено
9 1 Разрешение выборки памяти данных сигналом -CMS: 0 — запрещено, 1 — разрешено
8 1 Разрешение выборки памяти программ сигналом -CMS: 0 — запрещено, 1 — разрешено
7…0 0 Режим работы программируемых выводов флагов PF7…PF0: 0 — выход, 1 — вход
Регистр управления программируемыми флагами PFDATA, адрес памяти данных=0x3FE5
15…8 X Не используются
7…0 X Данные программируемых выводов флагов PF7…PF0 (чтение/запись)

Таблица 4.2ж Регистры управления портом байтовой памяти BDMA

Разряд Исходное состояние Назначение
Регистр-счетчик слов BWCOUNT, адрес памяти данных=0x3FE4
15, 14 0 Не используются
14…0 0x20/0 Значение счетчика (когда MMAP=0 и BMODE=0 значение счетчика = 0x20, когда MMAP=1 или BMODE=1 значение счетчика = 0)
Регистр управления BDMACR, адрес памяти данных = 0x3FE3
15…8 0 Номер страницы BDMA от 0 до 0xFFFF
7…4 0 Не используются
3 1 Режим работы процессора при выполнении циклов BDMA: 0 — работа, 1 — останов
2 0 Направление передачи данных: 0 — чтение из BDMA, 1 — запись в BDMA
1, 0 0 Тип данных: 00 — память программ 24 разрядов, 01 — память данных 16 разрядов, 10 — память данных 8 старших разрядов, 11 — память данных 8 младших разрядов
Регистр внешнего адреса BEAD, адрес памяти данных = 0x3FE2
15, 14 0 Не используются
13…0 0 Значение внешнего адреса на шине процессора, при обмене через BDMA (от 0 до 0x3FFF)
Регистр внутреннего адреса BIAD, адрес памяти данных = 0x3FE1
15, 14 0 Не используются
13…0 0 Значение внутреннего адреса памяти процессора при обмене через BDMA (от 0 до 0x3FFF)

Таблица 4.2з Регистр управления IDMACR

Разряд Исходное состояние Назначение
15 0 Не используется
14 0 Указатель типа памяти: 0 = память программ РМ, 1 = память данных DM
13...0 0 Значение начального адреса памяти процессора при обмене через IDMA (от 0 до 0x3FFF)

X — произвольное состояние после сброса.

Условные обозначения регистров в таблицах соответствуют их названиям на программно-логической модели, изображенной на рис. 4.1.

Все перечисленные выше регистры позволяют осуществлять полный контроль и управление над процессором со стороны программы.

Глава 5. Система прерываний

В этой главе описывается система прерываний процессора, позволяющая процессору оперативно реагировать на различные события.

Диспетчер прерываний позволяет процессору реагировать на одиннадцать возможных прерываний и сброс. Все векторы прерываний процессора ADSP-2181 представлены в табл. 5.1.

Таблица 5.1 Векторы прерываний сигнального процессора ADSP-2181

Приоритет Источник прерывания Адрес (HEX)
Высший приоритет 0 Сброс (или выход из режима пониженной мощности при установке 12-го разряда регистра S1ABUF=1) 0000
1 Снижение потребляемой мощности (немаскируемое прерывание) 002C
2 IRQ2 0004
3 IRQL1 0008
4 IRQL0 000C
5 SPORT0 Передатчик 0010
6 SPORT0 Приемник 0014
7 IRQE 0018
8 BDMA прерывание 001C
9 SPORT1 Передатчик или IRQ1 0020
10 SPORT1 Приемник или IRQ0 0024
11 Низший приоритет Таймер 0028

Прерывания в процессоре имеют различную приоритетность, от 0 до 11. При возникновении любого из прерываний, процессор выполняет переход на подпрограмму обработки соответствующего прерывания, адрес которой заложен в векторе данного прерывания. Адреса векторов прерываний расположены в самом начале программной памяти процессора через четыре 24-разрядных слова команды, что позволяет производить простую обработку или выход из прерывания на месте, без перехода на подпрограмму обработчика прерывания. В противном случае может быть выполнен безусловный переход на подпрограмму обработчика прерывания командой jump.

Процессор ADSP-2181 имеет четыре вывода для поддержки внешних прерываний: IRQ2, IRQL0, IRQL1 и IRQE. Кроме того, благодаря возможности SPORT1 быть переконфигурированным на выводы флагов FLAG_IN, FLAG_OUT и прерываний IRQ0, IRQ1, процессор может иметь еще два входа внешних прерываний вместо внутренних прерываний SPORT1. В результате, в общей сложности процессор может иметь шесть внешних прерываний.

Помимо внешних прерываний, процессор имеет и внутренние источники прерываний. Источниками внутренних прерываний являются таймер, байтовый порт BDMA, два последовательных порта SPORT1 и SPORT2, программное прерывание сброса и прерывание, вызываемое снижением напряжения питания.

Все прерывания, кроме немаскируемого и сброса, можно запретить с помощью регистра IMASK (см. табл.1). Кроме того, можно программно сгенерировать или сбросить некоторые прерывания с помощью регистра IFC.

Процессор реагирует на уровень сигналов на выводах прерываний IRQL0 и IRQL1. Прерывание IRQE возникает по фронту изменения сигнала на этом выводе. Чувствительность процессора к сигналам IRQ0, IRQ1 и IRQ2 определяется программно, с помощью регистра ICNTL.

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

Часть II. Программирование

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

Глава 6. Первая программа

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

Начнем изучение программирования сигнального процессора с конкретного примера программы, приведенной ниже. Эта программа поможет нам в изучении структуры программы, системы команд процессора и средств разработки, а также позволит на практике освоить процедуру отладки и загрузки программы в память процессора.

Введите текст этой программы в компьютер с помощью любого текстового редактора и сохраните в файле с именем mem_clr.dsp или скопируйте с компакт-диска, прилагаемого к данной книге.

/***********************************************************/

/* Программа mem_clr загружается в память программ и после */

/* запуска заполняет память данных сигнального процессора  */

/* с адреса 0x0000 по адрес 0x3fdf числовыми значениями    */

/*                                                         */

/* Версия: 1.0                                             */

/* Автор:  О.Д.Вальпа                                      */

/***********************************************************/

.module/RAM/ABS=0 mem_clr;       { Модуль памяти mem_clr с адреса 0  }

.include <def2181.h>;            { Включить файл определений         }

.var/dm/ram/circ buf_dm[0x3fdf]; { Циклический буфер в памяти данных }



Поделиться книгой:

На главную
Назад