- •Цифровые сигнальные процессоры
- •Содержание
- •1. Архитектура adsp-2181
- •1.1. Описание выводов процессора
- •1.2. Структурная схема adsp-2181
- •Генераторы адресов данных dag1 и dag2, регистр команд instruction register и программный конвейер program sequencer.
- •1.3. Память программ
- •1.4. Память данных
- •1.5. Функциональная схема alu
- •1.6. Функциональная схема мас
- •1.7. Функциональная схема shifter
- •Значения выходного кода сдвигателя при различных значениях
- •1.8. Функциональная схема программного конвейера
- •1.9. Система прерываний
- •1.9.3. Конфигурирование прерываний.
- •1.10. Регистры состояния и стек состояния
- •1.11. Передача данных
- •1.11.1. Генераторы адресов
- •1.11.2. Узел обмена данными
- •1.12. Последовательные порты
- •1.12.1. Общие сведения
- •1.12.2. Программирование sport
- •Функциональное назначение конфигурационных регистров
- •1.12.3. Пример конфигурирования последовательных портов
- •{Программа инициализации sport0, sport1}
- •1.12.4. Сжатие данных
- •1.12.5. Автобуферизация
- •1.12.6. Пример программирования автобуферизации
- •1.12.7. Многоканальность
- •1.13. Таймер
- •1.14. Системный интерфейс
- •1.14.1. Сигналы синхронизации
- •Состояние регистров процессора после сброса и перезагрузки
- •Состояние регистров bdma после сброса и перезагрузки
- •1.14.2. Внешние прерывания
- •1.14.3. Флажковые биты
- •1.14.4. Режим энергосбережения
- •1.15. Контроллер прямого доступа к байтовой памяти (bdma)
- •1.15.1. Общие сведения
- •1.15.2. Регистры управления bdma
- •1.15.3. Функционирование bdma
- •1.15.4. Загрузка программ с помощью bdma
- •1.16. Порт idma
- •1.16.1. Сигналы idma
- •1.16.2. Функционирование idma
- •1.16.3. Загрузка программ с помощью idma
- •1.17. Система команд
- •1.17.1. Общие сведения
- •1.17.2. Методы адресации
- •1.17.3. Условные обозначения
- •1.17.4. Команды пересылки данных
- •1.17.5. Команды alu
- •Б) вычитание X-y/вычитание X-y с заемом
- •1.17.6. Команды мас
- •1.17.7. Команды shifter
- •Допустимые регистры xop и условия cond см. П. 1.17.7.А.
- •Допустимые регистры xop и условия cond см. П. 1.17.7.А.
- •Допустимые регистры xop и условия cond см. П. 1.17.7.А.
- •Допустимые регистры xop и условия cond см. П. 1.17.7.А.
- •Допустимые регистры xop см. П. 1.17.7.А.
- •Допустимые регистры xop см. П. 1.17.7.А.
- •1.17.8. Команды управления потоком программы
- •Допустимые условия cond:
- •Допустимые условия cond см. П. 1.17.8.А.
- •1.17.9. Многофункциональные команды
- •1.17.10. Прочие команды
- •1.18. Инструментальные средства разработки программного обеспечения
- •1.18.1. Инструментальные средства для dos
- •1.18.2. Инструментальные средства для windows
- •1.18.3. Создание проекта в VisualDsp
- •1.18.4. Загрузка программы в ez-kit Lite
- •1.19. Примеры программирования в среде VisualDsp
- •1.19.1. Формирование эхо-сигнала
- •Architecture(adsp-2181) // определение типа процессора
- •1.19.2. Эмуляция интерфейса rs-232
- •1.19.3. Эмуляция интерфейса rs-232 (смешанный вариант)
- •Architecture(adsp-2181) // определение типа процессора
- •2. Архитектура системы на основе adsp-2181
- •2.1. Структурная схема вычислительной (управляющей)
- •2.2. Цепи синхронизации и запуска процессора
1.12.3. Пример конфигурирования последовательных портов
Ниже приводится пример конфигурирования портов SPORT0 и SPORT1. SPORT0 генерирует сигналы битовой синхронизации (SCLK), сигналы фреймовой синхронизации, а также сжимает данные по –закону. Это типичный пример установок для связи с комбинированным кодеком.
SPORT1 использует внешнюю битовую синхронизацию, внешнюю фреймовую синхронизацию, отсутствие сжатия 16-битных данных и автобуферизацию. Это типичный пример установок для связи с другими процессорами многопроцессорной системы.
В примере инициализируются только самые необходимые конфигурационные регистры. Инициализация производится перед разрешением последовательных портов. Кроме этого, перед разрешением прерываний необходимо сбросить все внешние запросы на прерывания от последовательных портов.
{Программа инициализации sport0, sport1}
{Сначала инициализируем SPORT1}
AX0 = 0x0017;
DM(0x3FEF) = AX0; {разрешение автобуферизации}
{авто буфер ТХ использует I0 и M0}
{авто буфер RХ использует I1 и M1}
AX0 = 0x280F;
DM(0x3FF2) = AX0; {внешние SCLK, RFS и TFS}
{ RFS и TFS требуются, нормальный фреймовый}
{режим, отсутствие сжатия, 16 бит}
{Далее инициализируем SPORT0}
{Предполагаем, что Fclkin = 12.288 МГц}
AX0 = 255;
DM(0x3FF4) = AX0; {RFSDIV + 1 = 256, частота фреймовой}
{cинхронизации = 8 КГц}
AX0 = 2;
DM(0x3FF5) = AX0; {SCLKDIV + 1 = 3, частота битовой}
{cинхронизации = 2.048 МГц}
AX0 = 0x6B27;
DM(0x3FF2) = AX0; {внутренние SCLK, RFS и TFS}
{ RFS и TFS требуются, нормальный фреймовый}
{режим, сжатие по -закону, 8 бит}
{И, наконец, разрешаем работу портов и прерывания}
IFC = 0x1E; {очищаем все SPORT запросы на прерывания}
ICNTL = 0; {запрещаем вложенные прерывания}
AX0 = 0x1C1F; {разрешаем оба SPORT, BWAIT и PWAIT}
DM(0x3FFF) = AX0; {оставляем по умолчанию}
IMASK = 0x1E; {разрешаем все прерывания SPORT}
1.12.4. Сжатие данных
Сжатие данных или в более широком смысле компандинг (от COMpressing и exPANDing – сжатие и расширение данных) – это процесс логарифмического кодирования и декодирования данных с целью уменьшения числа передаваемых битов. Процессор содержит один узел сжатия данных (см. рис. 1.10) на два порта, который за один машинный цикл может произвести одно сжатие или одно расширение данных. При наличии коллизий приоритет имеет SPORT0.
Процессор поддерживает два наиболее широко распространенных алгоритма сжатия: А и . Компандинг производится в соответствии с протоколом G.711, рекомендованного CCITT. Тип компандинга может выбран независимо для каждого порта с помощью битов 5 и 4 (битовое поле DTYPE) в регистрах управления портами (см. пп. П1.4, П1.6). Так код 11 в этих битах устанавливает алгоритм сжатия А, а код 10 – алгоритм сжатия .
Оставшиеся комбинации кода в этих битах определяют формат полученных данных длиною меньше 16 бит при отключенном компандинге. Так комбинация 01 определяет правое выравнивание и заполнение старших битов знаковым битом переданного слова, а комбинация 00 – правое выравнивание и заполнение старших битов нулем.
Если компандинг включен, то в регистрах RX0, RX1 находится значение с правым выравниваем и распространенным знаковым битом – расширенное из восьми принятых битов. Подобно этому запись в регистры ТХ0, ТХ1 вызывает сжатие 16-битного числа в восьми битное с правым выравниванием и распространением знака. Сжатие происходит перед перезаписью числа из регистра передаваемых данных в сдвиговый регистр передачи (см. рис. 1.10). Если абсолютное значение передаваемого числа выходит за пределы 13 бит для алгоритма А или 14 бит для алгоритма , то такое число автоматически сжимается до максимального положительного или отрицательного значения.
