Чтение онлайн

на главную - закладки

Жанры

Разработка устройств на основе цифровых сигнальных процессоров фирмы Analog Devices с использованием Visual DSP++

Вальпа Олег Дмитриевич

Шрифт:

|(I7) |

|<addr>|

Переход (вызов подпрограммы) по состоянию вывода флага Flag In:

[IF] |FLAG_IN | |JUMP| <addr>;

|IF NOT FLAG_IN | |CALL|

Изменение состояния вывода флагов:

[IF cond] |SET | |FLAG_OUT | [,...]; {установка флага}

|RESET | |FL0 | {сброс флага}

|TOGGLE | |FL1 | {инверсия флага}

|FL2 |

Возврат из подпрограммы:

[IF cond] RTS;

Возврат из подпрограммы прерывания:

[IF cond] RTI;

Ожидание прерываний:

IDLE;

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

Допустимые значения <term> и <cond> приведены в табл. 18.1 и табл. 18.2

соответственно. Запись <addr> может быть меткой или числовым значением от 0 до 0x3FFF. Примеры команд управления программой:

CNTR=100; {Заполнить счетчик циклов}

DO Met1 UNTIL CE; {Выполнить цикл до метки Met1, пока счетчик циклов не пуст}

AX0 = DM(I0,M0); {Переслать данные через регистр AX0}

Met1: DM(I1 ,M1 )=AX0; {в новую область памяти}

JUMP(I4); {Осуществить переход по адресу в индексном регистре I4}

CALL (I6); {Вызвать подпрограмму по адресу в индексном регистре I6}

SET FLAG_OUT; {Установить в 1 вывод FLAG_OUT}

RESET FL2 {Сбросить флаг FL2}

TOGGLE FL0 {Инвертировать флаг FL0}

Met2: IDLE; {Режим ожидания прерывания}

JUMP Met2:

Таблица 18.1 Допустимые значения <term>

Значение <term> Пояснение
CE Счетчик циклов пуст
EQ Равно нулю
NE Не равно нулю
LT Меньше нуля
GE Больше или равно нулю
LE Меньше или равно нулю
GT Больше нуля
АС Перенос АЛУ
NOT AC Нет переноса АЛУ
AV Переполнение АЛУ
NOT AV Нет переполнения АЛУ
MV Переполнение умножителя
NOT MV Нет переполнения умножителя
NEG Входной операнд «xop» отрицателен
POS Входной операнд «xop» положителен
FOREVER Бесконечный цикл

Таблица 18.2 Допустимые значения <cond>

Значение <cond> Пояснение
EQ Равно нулю
NE He равно нулю
LT Меньше нуля
GE Больше или равно нулю
LE Меньше или равно нулю
GT Больше нуля
AC Перенос АЛУ
NOT AC Нет переноса АЛУ
AV Переполнение АЛУ
NOT AV Нет переполнения АЛУ
MV Переполнение умножителя
NOT MV Нет переполнения умножителя
NEG Входной операнд «xop» отрицателен
POS Входной операнд «xop» положителен
NOT CE Счетчик циклов не пуст
FLAG_IN* Вывод FI=1
NOT FLAG_IN* Вывод FI=0

*Только для команд JUMP, CALL

Глава 19. Генераторы адресов

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

Ранее мы уже рассматривали назначение генераторов адресов (DAG). На этот раз рассмотрим их структуру и команды, которые они позволяют выполнять.

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

поддерживать реверсную адресацию.

Структурная схема генератора адреса приведена на рис. 19.1. Отличия структуры DAG1 от DAG2 показаны на самой схеме.

Рис. 19.1. Структурная схема генератора адреса

Каждый генератор имеет в своем составе три регистровых блока: блок регистров модификации (M), блок индексных регистров (I) и блок регистров длины (L). Каждый из регистровых блоков состоит из четырех регистров разрядностью 14 бит. Чтение и запись данных в эти регистры осуществляется через шину данных DMD. Индексные регистры I содержат действительные адреса, используемые для доступа к памяти. При косвенной адресации данных адрес, находящийся в выбранном индексном регистре, становится адресом памяти. Разряды адреса на выходе DAG1 могут быть переставлены в обратном порядке за счет установки соответствующего бита режима в регистре состояний режима MSTAT или при помощи команды ENA BIT_REV. Реверс адреса (адресация с перестановкой разрядов в обратном порядке) необходим для выполнения операций БПФ (быстрого преобразования Фурье) для цифровых значений сигнала. Данную операцию часто называют скремблированием (от английского слова scramble — смешивать). Сброс бита режима реверса адреса в регистре состояний режима MSTAT производится командой DIS BIT_REV. Для наглядности сказанного в табл. 19.1 приведен нормальный и реверсивный порядок адресов для 2-, 3- и 4-разрядных адресов. Из таблицы видно, каким образом при этом перемешиваются значения адреса.

Таблица 19.1 Нормальный и реверсивный порядок адресов для 2-, 3- и 4-разрядных адресов

Значение адреса Нормальный порядок Реверсивный порядок Значение адреса
2-разрядный адрес
0 00 00 0
1 01 10 2
2 10 01 1
3 11 11 3
3-разрядный адрес
0 000 000 0
1 001 100 4
2 010 010 2
3 011 110 6
4 100 001 1
5 101 101 5
6 110 011 3
7 111 111 7
4-разрядный адрес
0 0000 0000 0
1 0001 1000 8
2 0010 0100 4
3 0011 1100 12
4 0100 0010 2
5 0101 1010 10
6 0110 0110 6
7 0111 1110 14
8 1000 0001 1
9 1001 1001 9
10 1010 0101 5
11 1011 1101 13
12 1100 0011 3
13 1101 1011 11
14 1110 0111 7
15 1111 1111 15

Генераторы адреса используют пост-модификацию. Т.е. после доступа к данным при использовании косвенной адресации содержимое заданного регистра модификации M прибавляется к содержимому индексного регистра I для формирования нового значения регистра I. Выбор регистров M и I в пределах одного DAG произволен. Т.е. любой из индексных регистров I0–I3 DAG1 может быть модифицирован содержимым любого из регистров модификации M0–M3. Для DAG2 аналогично используются регистры I4–I7 и M4–M7. Значения модификации, содержащиеся в регистрах модификации M, являются знаковыми числами, поэтому следующий вычисленный адрес может быть больше или меньше предыдущего.

Поделиться:
Популярные книги

Дракон - не подарок

Суббота Светлана
2. Королевская академия Драко
Фантастика:
фэнтези
6.74
рейтинг книги
Дракон - не подарок

Бастард Императора. Том 8

Орлов Андрей Юрьевич
8. Бастард Императора
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 8

Чужая дочь

Зика Натаэль
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Чужая дочь

Эра Мангуста. Том 2

Третьяков Андрей
2. Рос: Мангуст
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Эра Мангуста. Том 2

Идеальный мир для Лекаря 14

Сапфир Олег
14. Лекарь
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 14

Один на миллион. Трилогия

Земляной Андрей Борисович
Один на миллион
Фантастика:
боевая фантастика
8.95
рейтинг книги
Один на миллион. Трилогия

Помещицы из будущего

Порохня Анна
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Помещицы из будущего

Шлейф сандала

Лерн Анна
Фантастика:
фэнтези
6.00
рейтинг книги
Шлейф сандала

Черный маг императора 2

Герда Александр
2. Черный маг императора
Фантастика:
юмористическая фантастика
попаданцы
аниме
6.00
рейтинг книги
Черный маг императора 2

Император

Рави Ивар
7. Прометей
Фантастика:
фэнтези
7.11
рейтинг книги
Император

Бандит 2

Щепетнов Евгений Владимирович
2. Петр Синельников
Фантастика:
боевая фантастика
5.73
рейтинг книги
Бандит 2

На границе империй. Том 9. Часть 2

INDIGO
15. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 9. Часть 2

Князь Серединного мира

Земляной Андрей Борисович
4. Страж
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Князь Серединного мира

Чайлдфри

Тоцка Тала
Любовные романы:
современные любовные романы
6.51
рейтинг книги
Чайлдфри