Глава 2. Архитектура
В этой главе описывается внутренняя архитектура одного из сигнальных процессоров фирмы 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 аналоговых канала ввода-вывода. Согласитесь — это мощный инструмент, который можно применить во многих областях. Кроме того, порты могут программироваться на внешнюю или внутреннюю синхронизацию. Управляющие выводы портов также могут быть запрограммированы на ввод или вывод.