Ранее мы уже рассматривали назначение генераторов адресов (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-разрядный адрес | |||
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 |