В этой части книги освещается история развития различных сигнальных процессоров и дается обзор технических характеристик сигнальных процессоров семейства ADSP-21XX. Кроме того, в ней приводится практическая схема применения процессора ADSP-2181, описываются его архитектура и программно-логическая модель, дается описание системы прерываний процессора.
В настоящее время большую популярность приобрели цифровые сигнальные процессоры, или сокращенно DSP (digital signal processor). Эта книга приподнимет завесу таинственности этих компонентов и позволит читателям самостоятельно заняться их освоением и применением в собственных разработках.
Свое название сигнальные процессоры получили в связи с встроенной в них возможностью обработки звуковых и видеосигналов. Это реализовано благодаря высокой скорости работы этих процессоров и заложенной в них специальной системе команд поддерживающей функции цифровой фильтрации и быстрого преобразования Фурье. Ниже перечислены основные отличия сигнальных процессоров от обычных микропроцессоров.
• Наличие аппаратного умножителя.
• Наличие специальных блоков обработки данных.
• Специальная система команд для цифровой обработки сигналов.
• Высокое быстродействие.
• Внутренний умножитель тактовой частоты.
• RISC архитектура.
• Возможность одновременного выполнения нескольких команд.
• Гарвардская архитектура построения процессора.
• Наличие конвейеризации команд и данных.
• Наличие циклических буферов.
• Развитая система внешних интерфейсов.
Некоторые типы данного семейства процессоров имеют также встроенные аналого-цифровой преобразователь АЦП и цифро-аналоговый преобразователь ЦАП, что позволяет подавать на процессор непосредственно аналоговые сигналы, которые после оцифровки обрабатываются в цифровом виде этим же процессором. Под обработкой понимается, как правило, спектральный анализ сигнала, т.е. определение наличия в этом сигнале определенной частоты заданной амплитуды, фильтрация сигнала от ненужных частот, сравнение сигнала с эталонным сигналом-шаблоном, синтез и генерация речи, сжатие и декомпрессия звуковых и видеосигналов и т.п. В современном мире существует огромное количество подобных задач в самых различных областях человеческой деятельности. Решение этих задач требуется в радиоэлектронике, радиолокации, навигации, связи, медицине, автомобильной промышленности, космонавтике и др. наукоемких областях. Ввиду своей важности, цифровая обработка сигналов в настоящее время признана даже отдельной областью науки и техники. По всему видно, что для этих процессоров открывается большое будущее. Именно поэтому, находясь у истоков развития сигнальных процессоров, важно вовремя познакомиться с ними, чтобы в дальнейшем они не казались нам недоступными и закрытыми.
Проведем небольшой экскурс в историю развития данного семейства процессоров. Первые сигнальные процессоры появились в начале 80-х годов. Одной из первых компаний начавшей производство этих процессоров, была японская корпорация NEC, выпустившая однокристальный сигнальный процессор MPD7720. Однако этот процессор не получил широкого распространения, поскольку в 1982 г. на смену ему пришел более производительный и развитый процессор TMS32010, выпущенный фирмой Texas Instruments. Благодаря удачной архитектуре и ряду технических решений он стал стандартом де-факто для сигнальных процессоров. Ниже приведены основные технические характеристики данного процессора.
Разрядность данных 16 бит
Производительность 5 млн. операций в секунду
Объем оперативной памяти 256 слов
Объем памяти программ 4 К слов
Объем подключаемой внешней памяти 4 К слов
Разрядность арифметико-логического устройства 32 бит
Разрядность умножителя 6×16 бит с 32-битным результатом
Разрядность портов ввода-вывода 16 бит
Количество портов ввода-вывода 8
Пропускная способность внешней шины 50 Мбит
Освоение новых микронных технологий и, как следствие, повышение степени интеграции микросхем позволили значительно улучшить характеристики процессоров. И уже в середине 1980-х годов появились сигнальные процессоры второго поколения. К ним можно отнести процессоры все той же фирмы Texas Instruments TMS320C25 и TMS320C5X. Эти процессоры более скоростные и имеют больший объем памяти. Кроме того, у них появилась развитая система обработки прерываний и энергосберегающие режимы работы. В некоторых моделях процессоров снижено напряжение питания. Появились теневые регистры для автоматического сохранения результатов работы в случае возникновения аппаратного или программного прерывания программы. В состав архитектуры процессора добавились таймеры и последовательные синхронные порты с развитой конфигурацией настройки.
В свою очередь, фирма Motorola выпустила сигнальные процессоры семейства DSP56000, которые имеют разрядность 24 бита, двойную внутреннюю шину данных X и Y, удобную при операциях с комплексными числами, и обладают высокой степенью конвейеризации и параллелизма. Эти свойства делают данные процессоры еще более производительными и удобными для цифровой обработки сигналов.
Еще один производитель в лице фирмы AT&T Microelectronics выпускает сигнальные процессоры серии DSP16, которые отличаются наличием кэш-памяти и встроенного высокоскоростного, до 30 Мбайт, параллельного порта.
Фирма Analog Devices вышла на рынок сигнальных процессоров со своей серией ADSP-21XX, которые конкурируют с выше рассмотренными моделями по некоторым техническим параметрам, а кроме того, по цене. Например, процессор ADSP-21msp50 имеет встроенные АЦП и ЦАП и в то же время его стоимость составляет несколько долларов.
На этом развитие сигнальных процессоров не остановилось, и уже в конце 1980-х годов на рынке появились процессоры третьего поколения от перечисленных выше фирм. Отличительной особенностью этого поколения стало появление двоичной плавающей арифметики, увеличение разрядности шины данных, емкости памяти и программ. К этому числу процессоров можно отнести TMS320C30 фирмы Texas Instruments, DSP96002 фирмы Motorola, DSP32C фирмы AT&T Microelectronics и ADSP21020 фирмы Analog Devices.
Впоследствии на рынке появились сигнальные процессоры других фирм. Однако в настоящее время, лидирующее положение в этой области занимают фирмы Texas Instruments, Motorola, AT&T Microelectronics и Analog Devices.
История развития сигнальных процессоров на этом не заканчивается, и можно было бы продолжать ее повествование, но целью данной книги является не исторический рассказ, а практическое руководство по освоению и приобретению навыков работы с этими перспективными компонентами. Поэтому я хочу остановиться на более подробном описании внутренней архитектуры и практического применения одного из сигнальных процессоров фирмы Analog Devices. Именно об этом и пойдет речь в следующей главе.
В этой главе описывается внутренняя архитектура одного из сигнальных процессоров фирмы Analog Devices ADSP-2181 и примеры его подключения.
Фирма Analog Devices разработала целые семейства сигнальных процессоров и постоянно продолжает выпускать на рынок новые модели. В настоящее время существуют следующие семейства: ADSP-21XX, Shark DSP, BlackFin DSP и др. Но, несмотря на все многообразие этих групп, все они имеют похожую друг на друга архитектуру. Отличие семейств друг от друга заключается, например, в арифметических блоках, которые поддерживают вычисления с фиксированной или плавающей запятой. Кроме того, семейства отличаются производительностью, разрядностью шин данных, структурой внутренних регистров, интерфейсами и т.п. Отличие процессоров друг от друга внутри семейства состоит в основном в объеме и организации внутренней памяти и типе встроенных интерфейсов. В состав каждого из процессоров этого семейства входят следующие функциональные устройства.
• Арифметико-логическое устройство АЛУ.
• Умножитель-накопитель.
• Устройство сдвига.
• Два генератора адреса данных.
• Программный автомат.
• Таймер.
• Последовательный многоканальный порт.
Ниже приведена табл. 2.1 с отличительными характеристиками сигнальных процессоров семейства ADSP-21XX.
Таблица 2.1. Характеристики сигнальных процессоров семейства ADSP-21XX
Ресурсы | 2101 | 2103 | 2105 | 2111 | 2115 | 21msp58 | 2171 | 2173 | 2181 | 2183 |
---|---|---|---|---|---|---|---|---|---|---|
Объем оперативной памяти программ (слов) | 2K | 2K | 1K | 2K | 1K | 2K | 2K | 2K | 16K | 16K |
Объем оперативной памяти данных (слов) | 1K | 1K | 512 | 1K | 512 | 2K | 2K | 2K | 16K | 16K |
Второй последовательный порт | - | - | - | - | - | - | - | - | + | + |
Порт хост-интерфейса | - | - | - | + | - | + | + | + | - | - |
Порт прямого доступа к памяти | - | - | - | - | - | - | - | - | + | + |
Максимальная внешняя тактовая частота, МГц | 20 | 10,24 | 13,82 | 20 | 20 | 16,67 | 16,67 | 16,67 | 20 | 20 |
Аналого-цифровые преобразователи и фильтры | - | - | - | - | - | + | - | - | - | - |
Режим малого потребления | - | - | - | - | - | + | + | + | + | + |
Напряжение питания, В | 5 | 3,3 | 5 | 5 | 5 | 5 | 5 | 3,3 | 5 | 3,3 |
Количество сигнальных выводов | 68 | 68 | 68 | 100 | 68 | 100 | 128 | 128 | 128 | 128 |
Остановимся на рассмотрении архитектуры одного из самых распространенных на сегодняшний день процессоров семейства ADSP-21XX, а именно на процессоре ADSP-2181. Этот компонент является самым развитым в своем семействе и включает в себя наибольший объем памяти и множество встроенных интерфейсов.
Сигнальный процессор ADSP-2181 представляет собой однокристальный чип, выпускаемый в 128 выводных корпусах типа PQFP-128 или TQFP-128. Из вышеприведенной информации уже можно составить общее представление о возможностях, заложенных в данный процессор. Но для полноты картины рассмотрим структурную схему внутренней архитектуры этого чипа, приведенную на рис. 2.1.
Рис. 2.1. Структурная схема внутренней архитектуры чипа
Процессор имеет сильно развитую структуру внутренних шин адреса и данных. К их числу относятся шина адреса памяти программ PROGRAM MEMORY ADDRESS, шина адреса памяти данных DATA MEMORY ADDRESS, шина данных памяти программ PROGRAM MEMORY DATA и шина данных памяти данных DATA MEMORY DATA.
Слева на схеме изображен базовый блок архитектуры всего семейства ADSP-2100 BASE ARCHITECTURE включаемый в состав любого из процессоров данного семейства. Он состоит из блока генераторов адреса данных DATA ADDRESS GENERATORS, программного автомата PROGRAM SEQUENCER и арифметического блока ARITHMETIC UNITS.
Блок генераторов адреса данных содержит два генератора: DAG1 и DAG2, предназначенных для инвертирования бит адреса во время выполнения процессором операций быстрого преобразования Фурье (БПФ).
Программный автомат осуществляет поддержку операций с условными переходами, вызов подпрограмм и возврат в основную программу, ускоряя тем самым работу процессора в целом.
Арифметический блок включает в себя арифметико-логическое устройство ALU, умножитель с накопителем MAC и устройство сдвига SHIFTER. Первый из этих блоков предназначен для выполнения арифметических и логических операций над данными, а второй для выполнения арифметического умножения чисел. SHIFTER позволяет нормировать числа после выполнения арифметических операций.
Рассмотрим блоки, расположенные справа вверху по схеме. Блок управления пониженным питанием POWER DOWN CONTROL обеспечивает управление процессором для перехода в режим пониженного потребления после выполнения соответствующей инструкции и возврат из этого режима после возникновения прерывания или после перезапуска. Блок памяти MEMORY состоит из памяти данных DATA MEMORY и памяти программ PROGRAM MEMORY. Таким образом, оперативная память всего процессора разделена на две независимых части в соответствии с Гарвардской архитектурой построения процессоров. Тем не менее, система команд этого процессора позволяет использовать память программ для хранения данных. Блок программируемых входов-выходов PROGRAMMABLE I/O позволяет запрограммировать несколько выводов по усмотрению разработчика на ввод или на вывод битовых сигналов, что обеспечивает возможность гибкого применения этих выводов. Блок флагов FLAGS управляет тремя битовыми выводами, организованными как сигнальные выходы. Наконец, блок байтового контроллера прямого доступа к памяти BYTE DMA CONTROLLER, сокращенное и часто употребляемое в дальнейшем название которого BDMA, обеспечивает быстрый аппаратный ввод и вывод байтовых данных через внешнюю шину данных процессора.
Теперь рассмотрим блоки, расположенные справа внизу по схеме. Одним из самых популярных и полезных является блок последовательных многофункциональных портов SERIAL PORTS, который включает в себя два последовательных порта SPORT1 и SPORT2. Отличительной особенностью этих портов является то, что они программируемые, синхронные и многоканальные. Т.е. каждый из этих портов способен принимать и передавать информацию от однословного до тридцатидвухсловного последовательного потока бит. Каждое слово в потоке может иметь длину от трех до шестнадцати бит. Этот формат передачи данных часто применяется при построении телекоммуникационных систем. К такому порту можно подключить одновременно до 32 кодеков и получить на их выходе соответственно 32 аналоговых канала ввода-вывода. Согласитесь — это мощный инструмент, который можно применить во многих областях. Кроме того, порты могут программироваться на внешнюю или внутреннюю синхронизацию. Управляющие выводы портов также могут быть запрограммированы на ввод или вывод.
Следующий блок таймера TIMER, обеспечивает организацию отсчета необходимых интервалов времени и прерываний по таймеру. Прерывание генерируется каждый раз, когда обнуляется счетчик таймера, который после обнуления загружается значением из шестнадцатиразрядного регистра, хранящего период таймера.
И, наконец, блок внутреннего порта INTERNAL DMA PORT IDMA, сокращенное название которого IDMA, предназначен для организации прямого доступа к памяти данных и памяти программ процессора по шестнадцатиразрядной внешней шине. Этот порт играет важную роль при работе с процессором, поскольку позволяет загружать программу и данные непосредственно в память процессора до его старта, стартовать процессор и производить операции чтения и записи данных в память во время его работы, незначительно влияя при этом на производительность процессора.
С внешним миром процессор общается посредством четырнадцатиразрядной шины адреса EXTERNAL ADDRESS BUS, двадцати четырехразрядной шины данных EXTERNAL DATA BUS и шестнадцатиразрядной шины IDMA DMA BUS.
На рис. 2.2 приведена более подробная структурная схема процессора, с указанием разрядности внутренних и внешних шин и более детальным изображением всех описанных выше блоков.
Рис. 2.2. Структурная схема процессора
Более подробную структуру процессора мы рассмотрим позже, когда будем изучать его внутренние регистры и примеры программ.
На рис. 2.3 и 2.4 представлены варианты исполнения процессора в корпусах PQFP-128 и TQFP-128, соответственно. На этих же рисунках изображено назначение всех контактов процессора и приведена их нумерация.
Рис. 2.3. Вариант исполнения процессора в корпусе PQFP-128
Рис. 2.4. Вариант исполнения процессора в корпусе TQFP-128
Изображения дают вид сверху TOP VIEW, выводами вниз PINS DOWN. Сигналы с низкими активными уровнями имеют обозначения с чертой над сигналом. Выводы двойного назначения, определяемого программированием этих выводов, обозначаются через символ «/».
В табл. 2.2 дается описание назначения выводов процессора.
Таблица 2.2 Описание выводов процессора ADSP-2181
Наименование | Вывод I/O | Функция |
---|---|---|
А0…А13 | O | Адресные выводы для адресации области внешней памяти программ, памяти данных, байтовой памяти (BDMA) и устройств ввода-вывода |
D0…D23 | I/O | Выводы данных для обмена данными с внешней памятью программ и памятью данных. Восемь старших разрядов также используются как адрес байтовой памяти. |
-WR | O | Сигнал записи |
-RD | O | Сигнал чтения |
-IOMS | O | Выбор области памяти |
-BMS | O | Выбор байтовой памяти |
-DMS | O | Выбор памяти данных |
-CMS | O | Выбор комбинированной памяти |
-PMS | O | Выбор программной памяти |
FL0, FL1, FL2 | О | Выходы-флаги |
PF0…PF7 | I/O | Программируемые выводы |
MMAP | I | Выбор карты памяти процессора |
-PWD | I | Управление потреблением |
BMODE | I | Режим загрузки 0 — ROM, 1 — IDMA |
PWDACK | O | Контроль низкого потребления питания |
XTAL | I | Соединение с кварцем |
CLKIN | I | Внешний генератор, или соединение с кварцем |
CLKOUT | O | Выходная тактовая частота |
-RESET | I | Сброс процессора |
-ERESET | I | Разрешение сброса |
-IRQL0 | I | Потенциальный запрос прерывания 0 |
-IRQL1 | I | Потенциальный запрос прерывания 1 |
-IRQ2 | I | Динамический или потенциальный запрос прерывания 2 |
-IRQE | I | Динамический запрос прерывания |
-BR | I | Внешний запрос шины |
-BG | O | Внешнее предоставление шины |
-BGH | O | Внешнее предоставление шины, подтянутое к питанию |
IAD0…IAD15 | I/O | Шина адреса/данных порта IDMA |
-IACK | O | Подтверждение доступа к порту IDMA |
-IWR | I | Вход записи в порт IDMA |
-IRD | I | Вход чтения из порта IDMA |
-IS | I | Вход выборки порта IDMA |
IAL | I | Вход защелки адреса порта IDMA |
DT0 | O | Передача данных |
TFS0 | I/O | Кадровая синхронизация передачи |
RFS0 | I/O | Кадровая синхронизация приема |
DR0 | I | Прием данных |
SCLK0 | I/O | Программируемый генератор порта 0 |
DT1/FO | O | Передача данных, или выходной флаг |
TFS1/IRQ1 | I/O | Кадровая синхронизация передачи, или внешний запрос прерывания 1 |
RFS1/IRQ0 | I/O | Кадровая синхронизация приема, или внешний запрос прерывания 0 |
DR1/FI | I | Прием данных, или входной флаг |
SCLK1 | I/O | Программируемый генератор порта 1 |
-EMS | Сигналы, используемые только в режиме эмуляции | |
ЕЕ | ||
ECLK | ||
ELOUTELIN | ||
EINT | ||
-EBR | ||
-EBG | ||
GND | Выводы заземления | |
VDD | Выводы питания |
Примечание: I — вход, О — выход; минус перед сигналом означает низкий активный уровень сигнала.
Способ подключения к процессору различных периферийных устройств показан на структурной схеме, приведенной на рис. 2.5. В качестве примера, на этой схеме показано, как подключаются следующие устройства:
Внешний генератор или кварцевый резонатор с половинной тактовой частотой процессора 1/2x CLOCK OR CRYSTAL.
Последовательные устройства SERIAL DEVICE, например кодеки.
Системный интерфейс или микроконтроллер SYSTEM INTERFACE OR MICROCONTROLLER.
Байтовая память BYTE MEMORY.
До 2048 периферийных устройств ввода-вывода I/O SPACE PERIPHERALS.
Внешняя память OVERLAY MEMORY.
Рис. 2.5. Способ подключения к процессору различных периферийных устройств
При использовании внешней памяти, допускается подключение двух 8К-словных сегмента памяти программ TWO 8К РМ SEGMENTS и двух 8К-словных сегмента памяти данных TWO 8К DM SEGMENTS.
Из схемы видно также, какие именно сигналы процессора используются для подключения всех перечисленных внешних устройств.
На рис. 2.6 показан способ подключения кварцевого резонатора к сигнальному процессору. Конденсаторы должны иметь номинальную емкость от 22 до 33 пФ, а максимальная частота кварцевого резонатора должна быть вдвое ниже максимальной внутренней частоты процессора, поскольку внутри процессора производится аппаратное умножение внешней задающей тактовой частоты. Эта удвоенная частота выводится на сигнальный вывод CLKOUT процессора. Вместо кварцевого резонатора, для формирования задающей частоты синхронизации можно использовать интегральный генератор, который, однако, несколько дороже резонатора. В этом случае выход генератора необходимо подключить к выводу CLKIN процессора, а вывод XTAL оставить неподключенным.
Рис. 2.6. Способ подключения кварцевого резонатора к сигнальному процессору
Карта памяти процессора изображена в табл. 2.3. На первых двух фрагментах таблицы показаны режимы использования памяти программ. Эти режимы задаются с помощью внутреннего регистра PMOVLAY и подключения внешнего вывода процессора MMAP к нулевому потенциалу или к источнику питания соответственно. При сбросе процессора регистр PMOVLAY обнуляется, и подключается внутренняя память. В процессе выполнения программы содержимое этого регистра можно изменить, и переключить тем самым процессор на использование внешней памяти программ. Адресация памяти приведена в шестнадцатеричном формате записи.
Таблица 2.3. Карта памяти процессора
Параметр | Адрес | Память программ | Адрес | Память данных | Адрес |
---|---|---|---|---|---|
8К слов ВНУТРЕННИЕ (PMOVLAY=0, MMAP=0) или 8К слов ВНЕШНИЕ (PMOVLAY=1 или 2, MMAP=0) | 0x3FFF … 0x2000 | 8К слов ВНУТРЕННИЕ (PMOVLAY=0, MMAP=1) | 0x3FFF … 0x2000 | 32 РЕГИСТРА | 0x3FFF … 0x3FE0 |
8160 слов ВНУТРЕННИЕ | 0x3FDF … 0x2000 | ||||
8К слов ВНУТРЕННИЕ | 0x1FFF … 0x0000 | 8К слов ВНЕШНИЕ | 0x1FFF … 0x0000 | 8К слов ВНУТРЕННИЕ (DMOVLAY=0) или 8К слов ВНЕШНИЕ (DMOVLAY=1 или 2) | 0x1FFF … 0x0000 |
Память программ может быть внутренней INTERNAL, т.е. размещенной на кристалле самого процессора, или внешней EXTERNAL, т.е. размещенной во внешних микросхемах памяти. Поскольку память программ организована 24 разрядными словами, суммарный объем внутренней памяти программ процессора может быть равен (8К слов+8К слов) × 3байта = 48 Кбайт.
На последнем фрагменте рисунка приведена карта памяти данных. Ее режим работы, как внешней или внутренней, определяется с помощью внутреннего регистра процессора DMOVLAY, который аналогично регистру PMOVLAY обнуляется при сбросе или включении процессора, обеспечивая тем самым включение режима использования внутренней памяти данных. В самой верхней области памяти данных размещены 32 служебных регистра процессора, которые организованы как память данных. Поэтому память данных усечена по объему на это количество ячеек памяти. Память данных организована шестнадцатиразрядными словами, поэтому суммарный объем внутренней памяти данных процессора составляет (8К слов + 8К слов) × 2байта = 32 Кбайт.
Учитывая разрядность банков памяти программ и памяти данных, суммарная емкость памяти процессора составляет 80 Кбайт. Это довольно большой объем памяти, достаточный для решения многих задач, написанных на языках ассемблера или Си.
В следующих главах, приведены примеры электрических принципиальных схем с применением описываемого сигнального процессора и рассказ о способах его программирования.
В этой главе приводятся примеры принципиальных схем с применением сигнального процессора ADSP-2181, показывающие способ его подключения для применения в различных разработках.
Итак, приступим непосредственно к практике по освоению сигнального процессора. На рис. 3.1 изображена принципиальная схема тестовой платы для изучения процессора и отладки программ. Файл этой схемы, созданный в системе автоматического проектирования PCAD 4.5, записан на компакт-диск, прилагаемый к данной книге. На схеме показан способ включения самого сигнального процессора и периферийных устройств, подключаемых к нему. Рассмотрим последовательно все сигнальные выводы процессора и их назначение.
Рис. 3.1. Принципиальная схема тестовой платы
Рис. 3.1. Принципиальная схема тестовой платы (продолжение)
Рис. 3.1. Принципиальная схема тестовой платы (окончание)
Как видно из схемы, процессор D1 имеет несколько выводов для подключения питания, что связано с необходимостью распределения токоведущих цепей для обеспечения помехоустойчивости. Используемый в схеме сигнальный процессор допускает питание от источника напряжением 4,5…5,5 В. Стабилизированное напряжение питания 5 В поступает с разъема питания XP1. Конденсаторы CP2 и C3–C7 обеспечивают фильтрацию напряжения по низким и высоким частотам соответственно. Индикатор HL4 с токоограничивающим резистором R3 индицирует наличие питания в схеме. Для питания аналоговой части схемы используются дополнительные элементы фильтрации L1 и C8–C10.
Следующими важными цепями являются входы и выходы генераторных сигналов XTAL, CLKIN и CLKOUT. Первые две цепи предназначены для подключения внешнего источника синхронизации. На приведенной схеме показан способ подключения к процессору кварцевого резонатора BQ1. В случае применения интегрального генератора выход генератора подключается к выводу CLKIN, а вывод XTAL не используется. Стоимость генераторов на сегодняшний день еще превышает стоимость кварцевых резонаторов, поэтому к процессору подключен более дешевый кварцевый резонатор. Номинальная резонансная частота такого резонатора или генератора не должна превышать половину предельно допустимой частоты для данного процессора. Так, для процессора с максимальной тактовой частотой 40 МГц она не должна превышать 20 МГц. Конденсаторы C1 и C2 должны быть керамического типа, емкостью от 18 до 30 пФ.
Внутри процессора производится аппаратное умножение внешней частоты, которая затем используется для синхронизации процессора. Внутренняя частота процессора будет составлять 40 МГц, а длительность выполнения команд 25 нс. Внутренняя частота выводится также на CLKOUT процессора и может быть использована для синхронизации других микросхем, подключаемых к процессору.
Временная диаграмма сигналов синхронизации показана на рис. 3.2, а допустимые параметры этих сигналов приведены в табл. 3.1.
Рис. 3.2. Временная диаграмма сигналов синхронизации
Таблица 3.1 Допустимые параметры сигналов синхронизации процессора
Параметр | Минимум | Максимум | Единица измерения |
---|---|---|---|
Сигналы синхронизации | |||
Требуемые длительности: | |||
tCKI | 50 | 150 | нс |
tCKIL | 20 | нс | |
tCKIH | 20 | нс | |
Характеристика переключения: | |||
tCKL | 0,5tCK-7 | нс | |
tCKH | 0,5tCK-7 | нс | |
tCKOH | 0 | 20 | нс |
tCK= 0,5*tCKI
При выборе сигнального процессора необходимо пользоваться табл. 3.2, в которой приведены заводские маркировки и соответствующие им характеристики.
Таблица 3.2 Характеристики сигнальных процессоров
Заводская маркировка | Рабочий температурный диапазон, °С | Максимальная тактовая частота, МГц | Тип корпуса | Условное обозначение корпуса |
---|---|---|---|---|
ADSP-2181KST-115 | 0…+70 | 28,8 | TQFP-128* | ST-128 |
ADSP-2181BST-115 | -40…+85 | 28,8 | TQFP-128 | ST-128 |
ADSP-2181KS-115 | 0…+70 | 28,8 | PQFP-128** | S-128 |
ADSP-2181BS-115 | -40…+85 | 28,8 | PQFP-128 | S-128 |
ADSP-2181KST-133 | 0…+70 | 33,3 | TQFP-128 | ST-128 |
ADSP-2181BST-133 | -40…+85 | 33,3 | TQFP-128 | ST-128 |
ADSP-2181KS-133 | 0…+70 | 33,3 | PQFP-128 | S-128 |
ADSP-2181BS-133 | -40…+85 | 33,3 | PQFP-128 | S-128 |
ADSP-2181KST-160 | 0…+70 | 40 | TQFP-128 | ST-128 |
ADSP-2181 KS-160 | 0…+70 | 40 | PQFP-128 | S-128 |
* TQFP — Plastic Thin Quad Flatpack (пластиковый тонкий четырехугольный плоский корпус).
** PQFP — Plastic Quad Flatpack (пластиковый четырехугольный плоский корпус).
В нашем случае использован процессор ADSP-2181KS-133 в корпусе PQFP-128, как получивший большое распространение и легко доступный. В табл. 3.3 приведено соответствие выводов корпуса этого процессора его сигналам.
Таблица 3.3 Соответствие выводов корпуса сигналам процессора
Вывод | Сигнал | Вывод | Сигнал | Вывод | Сигнал | Вывод | Сигнал |
---|---|---|---|---|---|---|---|
1 | PF0 | 33 | PWD | 65 | EBR | 97 | D23 |
2 | WR | 34 | IRQ2 | 66 | BR | 98 | GND |
3 | RD | 35 | BMODE | 67 | EBG | 99 | IWR |
4 | IOMS | 36 | PWDACK | 68 | BG | 100 | IRD |
5 | BMS | 37 | IACK | 69 | VDD | 101 | IAD15 |
6 | DMS | 38 | BGH | 70 | DO | 102 | IAD14 |
7 | CMS | 39 | VDD | 71 | D1 | 103 | IAD13 |
8 | GND | 40 | GND | 72 | D2 | 104 | IAD12 |
9 | VDD | 41 | IRQL0 | 73 | D3 | 105 | IAD11 |
10 | PMS | 42 | IRQL1 | 74 | D4 | 106 | IAD10 |
11 | А0 | 43 | FLO | 75 | GND | 107 | IAD9 |
12 | A1 | 44 | FL1 | 76 | D5 | 108 | IAD8 |
13 | A2 | 45 | FL2 | 77 | D6 | 109 | IAD7 |
14 | A3 | 46 | DT0 | 78 | D7 | 110 | IAD6 |
15 | A4 | 47 | TFS0 | 79 | D8 | 111 | VDD |
16 | A5 | 48 | RFS0 | 80 | D9 | 112 | GND |
17 | A6 | 49 | DR0 | 81 | D10 | 113 | IAD5 |
18 | A7 | 50 | SCLK0 | 82 | D11 | 114 | IAD4 |
19 | XTAL | 51 | DT1/FO | 83 | D12 | 115 | IAD3 |
20 | CLKIN | 52 | TFS1/IRQ1 | 84 | D13 | 116 | IAD2 |
21 | GND | 53 | RFS1/IRQ0 | 85 | D14 | 117 | IAD1 |
22 | CLKOUT | 54 | GND | 86 | GND | 118 | IAD0 |
23 | GND | 55 | DR1/FI | 87 | VDD | 119 | PF7 |
24 | VDD | 56 | SCLK1 | 88 | GND | 120 | PF6 |
25 | A8 | 57 | ERESET | 89 | D15 | 121 | PF5 |
26 | A9 | 58 | RESET | 90 | D16 | 122 | PF4 |
27 | A10 | 59 | EMS | 91 | D17 | 123 | GND |
28 | A11 | 60 | ЕЕ | 92 | D18 | 124 | IS |
29 | A12 | 61 | ECLK | 93 | D19 | 125 | IAL |
30 | А13 | 62 | ELOUT | 94 | D20 | 126 | PF3 |
31 | IRQE | 63 | ELIN | 95 | D21 | 127 | PF2 |
32 | MMAP | 64 | EINT | 96 | D22 | 128 | PF1 |
Сигнал -RESET обеспечивает сброс процессора в исходное состояние. Этот сигнал должен находиться в активном низкоуровневом состоянии при включении и перезагрузке процессора в течение не менее пяти тактовых периодов внешней синхронизации процессора. Обычно для надежного сброса процессора этот сигнал удерживается в активном состоянии не менее нескольких микросекунд. Формирование сигнала сброса в схеме возможно от любого из двух источников. Первый источник этого сигнала реализован на зарядной цепочке R1, CP1. В момент подачи питания на схему, конденсатор CP1 разряжен и на нем удерживается низкий потенциал в течении времени его заряда, достаточного для приведения процессора в исходное состояние. Диод VD1 обеспечивает быстрый разряд этого конденсатора в момент отключения или кратковременного пропадания питания. Кнопка SB4 предназначена для принудительного сброса процессора вручную. Резистор R2 ограничивает ток разряда, предохраняя контакты кнопки от образования искр, и устраняет дребезг контактов совместно с конденсатором CP1. Вторым источником сигнала сброса является сигнал — RESI с разъема XU1, который буферизуется шинным повторителем D4.1 и поступает на микросхему D6. С помощью элементов D6.3 и D6.4 оба сигнала объединяются в один сигнал сброса процессора в инверсном (-RESET) и неинверсном виде (RESET). Наличие неинверсного сигнала требуется для сброса других микросхем с активным высокоуровневым входом сброса.
Сигнал -ERESET и сигналы на выводах 59…65 и 67 процессора предназначены для подключения к нему специального аппаратного эмулятора EZ-ICE, который можно приобрести через представителей фирмы Analog Device в России. Выводы эмулятора подключены к разъему XEZ в соответствии с рекомендациями по применению данного сигнального процессора. Однако на практике вполне можно обходиться и без этого эмулятора.
Следующая группа сигналов -IRQL0, -IRQL1, -IRQ2 и -IRQE отвечает за передачу процессору внешних прерываний. В качестве источников прерываний могут выступать различные микросхемы, датчики, кнопки и т.п. Так, к сигнальному выводу -IRQE подключена кнопка SB5 через цепочку устранения дребезга контактов R22 и CP4. Резистор R23 предназначен для удержания сигнала прерывания в пассивном состоянии. В дальнейшем с ее помощью можно будет принудительно вызывать прерывание процессора при необходимости.
Следующие три сигнала обеспечивают запрос и предоставление внешней шины процессора другим внешним устройствам. На схеме сигнал запроса шины -BR используется только при подключении к схеме эмулятора EZ-ICE и подключен к разъему XEZ. Этот сигнал подтянут к шине питания для приведения его в пассивное состояние. Выходной сигнал -BG, подтверждающий предоставление шины процессором, также подключен к разъему XEZ. Сигнал -BGH не используется и остается не подключенным.
Далее следует группа важных сигналов порта прямого доступа к памяти процессора. Это шестнадцать мультиплексированных сигналов шины адреса данных IAD0–IAD15 и сигналы управления IACK, -IWR, -IRD, -IS, IAL. Данный порт можно использовать для загрузки программ и данных во внутреннюю память процессора и, кроме того, читать содержимое памяти процессора во время его работы. Это позволяет обходиться без эмулятора EZ-ICE, облегчает отладку программ и дает большую гибкость при разработке многопроцессорных схем. На схеме все эти сигналы подключены через буферные микросхемы D2, D3, D4.1, D5.1, D5.5 и D5.5 к внешнему разъему XU1. В дальнейшем мы рассмотрим специальный адаптер, который позволит нам оперативно загружать программы в процессор, читать и записывать данные в его память и окажет большую помощь в изучении самого процессора и освоении его системы команд и способов программирования. Цепочка элементов R4 и C11 фильтрует высокочастотные импульсы, проникающие на чувствительный вход IAL процессора, обеспечивая тем самым повышенную помехозащищенность. Резисторные сборки RN1 и RN2 подтягивают сигналы порта IDMA и прерываний к высокому пассивному уровню.
Следующие две группы сигналов последовательных портов SPORT0 и SPORT1 обеспечивают работу с последовательными устройствами. К порту SPORT0 в схеме подключен кодек DA1 типа MC14LC5480, который содержит в себе кодер и декодер с фильтрами и компандер. В отличие от аналого-цифрового и цифро-аналогового преобразователей, он отличается тем, что выполняет преобразование сигналов по А-типу или μ-типу. Фактически оба эти типа преобразования являются аппроксимацией логарифмической функции с различной степенью приближения. Они активно применяются в телекоммуникационных системах для цифрового преобразования и сжатия информации с максимальным сохранением соотношения сигнал-шум. Для этого аналоговые сигналы малой амплитуды дискретизируются чаще. Для сжатия цифровой информации используется функция компандирования, встроенная в кодек и сигнальный процессор. С помощью этой функции производится прямое и обратное преобразование 13- или 14-разрядных слов в 8-разрядные, за счет нелинейного прореживания. В цифровых каналах связи используются именно такие 8-битные данные. Для нормальной работы кодеку необходимы сигналы синхронизации и кадровые стробы приемника и передатчика. Эти сигналы формируются портом SPORT0 на выводах SCLK0, RFS0 и TFS0 соответственно. Все перечисленные сигналы синхронизации и стробов программируются в процессоре по направлению, частоте, длительности и фазовому сдвигу. Цифровые данные приемника и передатчика порта транслируются на кодек по сигнальным выводам DR0 и DT0 соответственно. Помимо перечисленных узлов, кодек содержит в себе операционные усилители и источник опорного напряжения для смещения напряжения на входах усилителей относительно нулевого потенциала. Аналоговый сигнал на кодек заведен с разъема XIN типа тюльпан, через развязывающий конденсатор C16.
Стабилитроны VS1 и VS2 защищают вход кодека от сигналов большой амплитуды. Резисторы R9 и R10 определяют коэффициент усиления входного сигнала. Опорное напряжение подведено к неинверсному входу кодека через резистор R12. Цепочка R11-C17 корректирует смещение по высоким частотам. Конденсатор C18 является фильтрующим. Оцифрованный сигнал поступает в процессор на вход DR0 для обработки или цифровой записи. В свою очередь, процессор посылает в кодек цифровые сигналы для последующего их преобразования в аналоговый сигнал. После цифро-аналогового преобразования сигнала DT0 от процессора выходной аналоговый сигнал с кодека поступает через ограничительный резистор R14 на разъем XOUT. Кроме того, этот же сигнал поступает на низкочастотный усилитель, выполненный на транзисторах VT1 и VT2. В нагрузку усилителя, через развязывающий конденсатор CR3, включена миниатюрная динамическая головка BA1. Она позволит прослушивать сигналы, генерируемые процессором через кодек. Резисторы R13 и R16 определяют коэффициент усиления всего каскада, а резистор R15 обеспечивает необходимое смещение на базах транзисторов.
Выводы порта SPORT1 являются многофункциональными. Они могут быть запрограммированы как на работу с последовательными устройствами подобно порту SPORT0, так и в альтернативном режиме как флаги входа-выхода и входы прерывания. В нашей схеме используется второй способ их применения. Вывод 51 порта будет работать как выход, а вывод 55 как вход. Кроме того, задействован вход прерывания IRQ1, для формирования прерывания процессора при поступлении информации по сигнальному выводу FI. Эти выводы задействованы для организации последовательного порта RS-232 или проще — компьютерного СОМ порта. Для этого они подключены к микросхеме преобразования уровней DA2. Эта микросхема преобразует ТТЛ уровни сигнала в уровни стандарта RS-232. Конденсаторы C12–C15 обеспечивают работу внутренних умножителей напряжения в микросхеме. Сигналы порта RS-232 выведены на девятиштырьковый разъем XRS1. Назначение сигналов на этом разъеме соответствует стандарту, принятому для персональных компьютеров IBM PC. В дальнейшем к этому порту можно подключить компьютер, с помощью нуль-модемного кабеля, для загрузки обучающих программ с помощью программного пакета EZ-KIT Lite, распространяемого фирмой Analog Device.
Сигналы А0–А13 являются адресными и предназначены для адресации внешней памяти или устройств ввода-вывода. В схеме они подключены к адресным выводам микросхемы постоянной памяти D7, а некоторые из них, к дешифратору устройств ввода-вывода D9.
Сигналы D0–D23 предназначены для передачи данных и для адресации. Младшие восемь бит этой шины участвуют в обмене данными только с расширенной памятью. В нашей схеме эта память не подключена и, соответственно, сигналы D0–D7 не задействованы. Разряды D8–D15 используются для передачи данных при обращении к байтовой памяти BDMA.
В нашей схеме эту роль выполняет микросхема постоянной флэш-памяти D7. Наконец, старшие разряды этой шины D16–D23 выполняют двоякую роль. При обращении к байтовой памяти они несут функцию старших адресных линий, а при обращении к устройствам ввода-вывода являются старшими разрядами шины данных.
Далее следуют сигналы записи -WR, чтения -RD и выборки внешних устройств. В нашей схеме из внешних устройств будет использоваться байтовая память D7, выбираемая сигналом -BMS с помощью дешифратора D8, и устройства ввода-вывода, выбираемые сигналом -IOMS с помощью дешифратора D9 и логических элементов D13.1, D13.2. В схеме присутствует восьмиразрядный регистр ввода D11 и восьмиразрядный регистр вывода D12. Первый из них позволяет снимать дискретные сигналы с различных цифровых датчиков, контактов и пр. А второй обеспечивает возможность управления цифровыми ключами, индикаторами и т.п. Выводы этих регистров заведены на разъемы XI и ХО соответственно.
Временные диаграммы циклов чтения и записи данных процессором, представлены на рис. 3.3 и 3.4, соответственно. Параметры сигналов для этих циклов приводятся в табл. 3.4 и 3.5.
Рис. 3.3. Временная диаграмма цикла чтения
Рис. 3.4. Временная диаграмма цикла записи
Таблица 3.4 Параметры сигналов для цикла чтения данных процессором
Параметр | Минимум | Максимум | Единица измерения |
---|---|---|---|
Чтение памяти | |||
Требуемые длительности: | |||
tRDD | 0,5 tCK - 9 + w | нс | |
tAA | 0,25 tCK - 10.5 + w | нс | |
tRDH | 0 | нс | |
Характеристика переключения: | |||
tRP | 0,5 tCK - 5 + w | 0,25 tCK + 7 | нс |
tCRD | 0,25 tCK - 5 | нс | |
tASR | 0,25 tCK - 6 | нс | |
tRDA | 0,25 tСK - 3 | нс | |
tRWR | 0,5 tCK - 5 | нс |
Таблица 3.5 Параметры сигналов для цикла записи данных процессором
Параметр | Минимум | Максимум | Единица измерения |
---|---|---|---|
Запись памяти | |||
Характеристика переключения: | |||
tDW | 0,5 tСK - 7 + w | нс | |
tDH | 0,25 tСK - 2 | нс | |
tWP | 0,5 tCK - 5 + w | нс | |
tWDE | 0 | нс | |
tASW | 0,25 tCK - 6 | нс | |
tDDR | 0,25 tCK - 7 | нс | |
tCWR | 0,25 tCK - 5 | нс | |
tAW | 0,75 tCK - 9 + w | 0,25 tСK + 7 | нс |
tWRA | 0,25 tCK - 3 | нс | |
tWWR | 0,5 tCK - 5 | нс |
* w — число циклов задержки * tCK
Из приведенных данных видно, что чтение и запись данных в процессор необходимо производить по нарастающему фронту сигналов чтения или записи соответственно, когда обеспечена достоверность данных на шине.
Следующая группа сигналов FL0-FL2 является битовыми выходными сигналами, которые работают только на вывод. К ним подключены индикаторы HL0-HL2 через буферный повторитель D4.2.
В отличие от FL0-FL2, выводы PF0-PF7 являются двунаправленными битовыми сигналами и могут быть запрограммированы как на ввод, так и на вывод побитно. Так, к выводу PF7 подключен индикатор HL3, а выводы PF0-PF3 будут запрограммированы как входы и к ним подключены кнопки SB0-SB3. Резисторы R5–R8 являются токоограничивающими, а резисторная сборка RN3 подтягивает сигналы управления и входные сигналы к высокому уровню.
Назначение сигнала MMAP было показано в предыдущей главе при рассмотрении способов организации памяти процессора. Поскольку в нашей схеме используется внутренняя память процессора и задействован механизм загрузки процессора, этот вывод подключен к нулевому потенциалу.
Сигнал -PWD отвечает за формирование немаскируемого прерывания при снижении питания процессора ниже нормы. Для его использования необходимо подключить к нему выход узла, отслеживающего напряжение питания и формирующего потенциал низкого уровня для формирования прерывания при снижении напряжения питания ниже установленной границы. В результате процессор успевает сохранить необходимые данные в энергонезависимой внешней памяти или выполнить другие необходимые инструкции для предотвращения неблагоприятных последствий, связанных с пропаданием питания. В нашей схеме данный сигнал подключен непосредственно к плюсовому выводу шины питания и не используется. Также не используется и выходной сигнал PWDACK, предназначенный для транзита сигнала, уведомляющего о снижении питания.
Наконец последний вывод процессора BMODE определяет интерфейс, через который будет производиться загрузка процессора. Если на этот вывод подан нулевой потенциал, загрузка процессора будет производиться через интерфейс BDMA, т.е. из байтовой памяти. В противном случае процедура загрузки будет производиться через интерфейс IDMA. В дальнейшем мы рассмотрим оба варианта загрузки. Для автоматизации процесса загрузки в схеме применен триггер, выполненный на элементах D4.1 и D4.2. В зависимости от источника сброса, триггер переключается в такое состояние, которое обеспечивает установку на выводе BMODE сигнала, необходимого для загрузки через соответствующий интерфейс.
Еще одно внешнее устройство в качестве дополнения схемы приведено на рис. 3.5. Это дополнение схемы не является обязательным и может не распаиваться на основную плату. Но если появится необходимость оснащения рассмотренной выше схемы еще одним последовательным портом типа RS-422, это дополнение поможет в этом.
Рис. 3.5. Внешнее устройство в качестве дополнения схемы процессора
Как видно из рисунка, схема содержит интегрированную микросхему UART D12 с подключенными к ней резонатором BQ2 и вспомогательными конденсаторами C19, C20 для запуска внутреннего генератора. Программирование этой микросхемы производится через сигналы шины данных DD0–DD7. Выходные сигналы микросхемы UART подключены к приемопередатчикам — преобразователям уровней сигналов DA3 и DA4 для организации последовательного порта RS-422. Элементы D5.2 и D5.3 инвертируют выходные сигналы управления UART, обеспечивая отключение приемопередатчиков DA3 и DA4 в момент сброса самого UART или при включении.
Элемент D5.3 инвертирует выходной сигнал запроса прерывания от UART. Резисторы R17–R21 обеспечивают пассивное состояние сигналов при отключенной линии связи. Этот порт позволяет обмениваться информацией со 127 другими устройствами по аналогичному порту на расстоянии до 1200 метров. Все сигналы порта выведены на разъем XRS2.
Вся схема может быть распаяна на небольшой макетной плате или на специально изготовленной плате с разработанной топологией электрических соединений. Для разработки топологии печатной платы необходимо создать файл посадочного места для компонента — процессора, который будет использоваться системой автоматического проектирования САПР. Чертеж корпуса процессора приведен на рис. 3.6.
Рис. 3.6. Корпус процессора
На нем даны все необходимые размеры в двух системах единиц измерения. В скобках приведены размеры в дюймах, а без скобок — в миллиметрах. Ввиду того, что процессор имеет большое количество выводов и мелкий шаг между ними, для изготовления электронных устройств с его применением может потребоваться разработка печатной платы. Однако некоторые умельцы используют другие хитрые приемы для установки таких компонентов на печатной плате. Одним из таких способов является наклейка фрагментов текстолита с контактными площадками по периметру установочного места компонента. После чего выводы компонента припаиваются к контактным площадкам этих фрагментов, и уже после этого тонкими проводниками осуществляется остальной монтаж всего устройства.
Естественно, контактные площадки фрагментов должны совпадать с шагом устанавливаемого компонента. Эти фрагменты можно вырезать, например, с неисправных компьютерных плат или подобрать из наборов, продающихся в специализированных магазинах по электронике.
В следующих главах говорится о внутренней программной модели процессора, а также о средствах и способах программирования сигнального процессора. А приведенная и описанная здесь схема поможет на практике начать освоение сигнальных процессоров.
В этой главе говорится о внутренней программно-логической модели процессора и его системе прерываний.
Прежде чем начать разрабатывать программы для сигнального процессора, необходимо познакомиться с его программно- логической моделью, системой команд и программными инструментами. Освоение данного материала потребует времени и терпения. Но без хорошего знания этих основ невозможно будет научиться программировать сигнальный процессор.
Итак, начнем с программно-логической модели процессора. Такая модель для ADSP-2181 приведена на рис. 4.1.
Рис. 4.1. Программно-логическая модель ADSP-2181
На ней представлены все регистры процессора с указанием их размерности и условными обозначениями. Несмотря на многочисленность этих регистров, все они систематически распределены по логическим блокам процессора, что позволяет понять их назначение без особого труда.
Главный блок регистров представлен на рисунке слева, в процессорном ядре. В первую очередь это блоки регистров программных генераторов адреса DAG1 и DAG2. Данные блоки регистров включают в себя индексные регистры I, регистры длины буфера L и регистры-модификаторы M.
Все перечисленные регистры имеют размерность 14 бит. Эти регистры позволяют организовывать в памяти процессора циклические и линейные буферы, с автоматическим инкрементом адреса слов в этих буферах и отслеживанием их длины. В каждом из блоков генераторов адресов присутствует по четыре группы таких регистров. Использование этих и других регистров будет рассмотрено позже на конкретных примерах.
Блок программного автомата содержит регистры, отвечающие за автоматические операции процессора. В их число входят:
• программный счетчик с 16-уровневым 14-разрядным стеком PC STACK, для организации вызова подпрограмм и обработки прерываний;
• счетчик циклов CNTR с 4-уровневым 14-разрядным стеком COUNT STACK, для организации вложенных программных циклов;
• псевдорегистр OWRCNTR, для обновления значения счетчика CNTR;
• цикловой компаратор LOOP STACK с 4-уровневым 18-разрядным стеком, для обеспечения выполнения программных циклов без тактов ожидания.
Назначение остальных регистров управления и состояния блока программного автомата процессора, приводится в табл. 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.
Все перечисленные выше регистры позволяют осуществлять полный контроль и управление над процессором со стороны программы.
В этой главе описывается система прерываний процессора, позволяющая процессору оперативно реагировать на различные события.
Диспетчер прерываний позволяет процессору реагировать на одиннадцать возможных прерываний и сброс. Все векторы прерываний процессора 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.
В следующей главе будет рассмотрена система команд процессора, с помощью которой осуществляются запись и чтение всех перечисленных здесь регистров и ячеек памяти самого процессора, а также операции сложения, умножения, ввода-вывода, управления программируемыми флагами и др.