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


Книга предназначена для самостоятельного изучения и применения на практике цифровых сигнальных процессоров DSP (Digital Signal Processor). На примере популярной микросхемы ADSP2181 фирмы Analog Devices рассмотрены устройство, архитектура и технические характеристики цифрового сигнального процессора. Приведено описание вычислительных блоков процессора, средств разработки программного обеспечения, языка программирования и системы команд процессора. Разработанные автором книги практические схемы с применением сигнального процессора, исходные тексты программ и схемы вспомогательных устройств, полезных при отладке программ для процессора помогут получить необходимые практические навыки, с помощью которых читатель легко освоит другие типы сигнальных процессоров. На прилагаемом к книге диске находятся исходные тексты и исполняемые файлы программ, а так же некоторые полезные утилиты и средства разработки программного обеспечения для сигнальных процессоров.

Для специалистов в области разработки цифровой электронной аппаратуры, будет полезна студентам и аспирантам.

Содержание:

  • Предисловие 1

  • Часть I. Схемотехника 1

  • Часть II. Программирование 10

  • Часть III. Вычислительные и аппаратные устройства 29

  • Часть IV. Среда разработки Visual DSP++ 42

  • Заключение 48

  • Список литературы 48

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

Предисловие

В настоящее время цифровые сигнальные процессоры, или сокращенно DSP (Digital Signal Processor), приобрели большую популярность в мире и даже признаны отдельной областью науки и техники.

Эта книга является практическим руководством по самостоятельному изучению и применению на практике одного из цифровых сигнальных процессоров фирмы Analog Devices. Она включает в себя подробное описание процессора, схемы для его практического применения и технологию программирования.

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

Состоит из четырех частей: часть I посвящена схемотехнике сигнальных процессоров; в части II рассмотрено программирование устройств; далее в части III описаны вычислительные и аппаратные устройства; в части IV представлены установка, запуск, работа, спектральный анализ сигнала, а также программирование на СИ в среде разработки Visual DSP++.

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

Изучив материалы этой книги, читатель получит фундаментальные знания, с помощью которых легко освоит другие типы сигнальных процессоров.

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

Автор

Часть I. Схемотехника

В этой части книги освещается история развития различных сигнальных процессоров и дается обзор технических характеристик сигнальных процессоров семейства ADSP-21XX. Кроме того, в ней приводится практическая схема применения процессора ADSP-2181, описываются его архитектура и программно-логическая модель, дается описание системы прерываний процессора.

Глава 1. Обзор

В настоящее время большую популярность приобрели цифровые сигнальные процессоры, или сокращенно 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. Именно об этом и пойдет речь в следующей главе.

Глава 2. Архитектура

В этой главе описывается внутренняя архитектура одного из сигнальных процессоров фирмы Analog Devices ADSP-2181 и примеры его подключения.

Фирма Analog Devices разработала целые семейства сигнальных процессоров и постоянно продолжает выпускать на рынок новые модели. В настоящее время существуют следующие семейства: ADSP-21XX, Shark DSP, BlackFin DSP и др. Но, несмотря на все многообразие этих групп, все они имеют похожую друг на друга архитектуру. Отличие семейств друг от друга заключается, например, в арифметических блоках, которые поддерживают вычисления с фиксированной или плавающей запятой. Кроме того, семейства отличаются производительностью, разрядностью шин данных, структурой внутренних регистров, интерфейсами и т.п. Отличие процессоров друг от друга внутри семейства состоит в основном в объеме и организации внутренней памяти и типе встроенных интерфейсов. В состав каждого из процессоров этого семейства входят следующие функциональные устройства.

• Арифметико-логическое устройство АЛУ.

• Умножитель-накопитель.

• Устройство сдвига.

• Два генератора адреса данных.

• Программный автомат.

• Таймер.

• Последовательный многоканальный порт.

Ниже приведена табл. 2.1 с отличительными характеристиками сигнальных процессоров семейства ADSP-21XX.

Таблица 2.1. Характеристики сигнальных процессоров семейства ADSP-21XX

Ресурсы2101210321052111211521msp582171217321812183
Объем оперативной памяти программ (слов)2K2K1K2K1K2K2K2K16K16K
Объем оперативной памяти данных (слов)1K1K5121K5122K2K2K16K16K
Второй последовательный порт--------++
Порт хост-интерфейса---+-+++--
Порт прямого доступа к памяти--------++
Максимальная внешняя тактовая частота, МГц2010,2413,82202016,6716,6716,672020
Аналого-цифровые преобразователи и фильтры-----+----
Режим малого потребления-----+++++
Напряжение питания, В53,3555553,353,3
Количество сигнальных выводов68686810068100128128128128

Остановимся на рассмотрении архитектуры одного из самых распространенных на сегодняшний день процессоров семейства 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, предназначен для организации прямого доступа к памяти данных и памяти программ процессора по шестнадцатиразрядной внешней шине. Этот порт играет важную роль при работе с процессором, поскольку позволяет загружать программу и данные непосредственно в память процессора до его старта, стартовать процессор и производить операции чтения и записи данных в память во время его работы, незначительно влияя при этом на производительность процессора.

Дальше