- Любовные романы
- Фантастика и фэнтези
- Ненаучная фантастика
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Юмор
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Работа с клиентами
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Зарубежная литература о культуре и искусстве
- Пословицы, поговорки
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
Разработка устройств на основе цифровых сигнальных процессоров фирмы Analog Devices с использованием Visual DSP++ - Олег Вальпа
Шрифт:
Интервал:
Закладка:
При вычислении спектра сигнала методом БПФ используют различные алгоритмы. Алгоритм по основанию два (Radix2) разделяет полное вычисление ДПФ на комбинацию двухточечных ДПФ. Каждое двухточечное ДПФ использует базовую операцию умножения с накоплением (так называемую «бабочку»). При этом число точек в БПФ должно быть степенью двойки. Если количество точек является степенью числа четыре, то можно использовать алгоритм по основанию четыре (Radix4). Эти алгоритмы хорошо реализуются в программах для сигнальных процессоров, поскольку в них имеются генераторы адреса с битреверсивной адресацией, предназначенной как раз для реализации подобных алгоритмов.
Глава 26. Программирование на языке СИ
Это заключительная глава книги, в которой рассматриваются примеры программ на языке программирования Си и их выполнение в среде разработки Visual DSP++.
Кроме ассемблерных программ, среда разработки Visual DSP++ позволяет транслировать программы, написанные на языке программирования «Си». Рассмотрим пример простой программы, написанной на языке «Си», которая вычисляет значения тригонометрической функции синуса для четырех заданных значений аргумента.
Создайте новый проект с именем «С» и подключите к проекту новый файл с именем «c1.c», набрав в нем текст программы, приведенный ниже:
#include <math.h>
#define PI 3.14159 /* Число Пи */
int y1, y2, y3, y4;
main() {
y1 = sin(0);
y2 = sin(PI/2.0);
y3 = sin(PI);
y4 = sin(PI+PI/2.0);
}
Здесь используются стандартные директивы и операторы языка «Си». В начале программы оператор включения подключает библиотеку математических функций math.h. Далее производится определение символьного имени PI. Ниже объявляются целочисленные переменные y1–y4. В данном примере переменные объявлены целочисленными для наглядности представления результата работы программы. Главный цикл программы main состоит из четырех однотипных операций вычисления значений функции синуса для различных значений аргумента. В данном случае аргумент принимает значения, кратные PI/2. Результатом данной программы будут значения функции синус, которые очевидно должны принимать значения 0, 1, 0 и -1.
Выполните трансляцию этой программы, нажав клавишу F7. Затем выполните ее, нажав клавишу F5. После выполнения программы в правой части экрана откроется окно дизассемблера, в котором будет присутствовать текст программы на языке ассемблера. Этот текст позволяет увидеть соответствие операторов языка «Си» набору ассемблерных инструкций. Для просмотра результата работы программы необходимо открыть окно памяти данных с помощью команды Memory→Data. По умолчанию, в этом окне данные отображаются в шестнадцатеричном виде. Для отображения результатов в знаковом целочисленном виде щелкните на окне правой кнопкой мыши и в открывшемся контекстном меню (рис. 26.1) выберите формат Select Format→Signed Integer.
Рис. 26.1. Контекстное меню
В результате данные в окне будут представлены в более привычном для человека виде (рис. 26.2).
Рис. 26.2. Данные в окне представлены в более привычной для человека форме
Как видно, результат работы программы оказался абсолютно точен. Заметьте, что благодаря лаконичности записи, присущей языку высокого уровня «Си», программа для вычисления тригонометрических функций состоит всего лишь из несколько строк. Для написания подобной программы на ассемблере понадобилось бы несколько десятков строк.
Теперь немного усложним программу, изменив ее текст на тот, что приведен ниже:
#include <math.h>
#define PI 3.14159 /* Число Пи */
#define D PI/180.0 /* Число Дельта */
#define N 100 /* Число отсчетов */
float y1[N], y2[N];
main() {
int i;
for (i=0; i<N; i++) {
y1[i] = sin(10.0*i*D);
y2[i] = cos(10.0*i*D);
}
}
Здесь определены два массива y1 и y2 с данными в формате float. Значения этих массивов будут вычисляться в цикле for для N значений аргумента функций синуса и косинуса.
Выполните трансляцию программы и установите точку останова на последней строчке программы. После чего запустите программу на выполнение. Через несколько секунд выполнение программы завершится. Для просмотра результата ее работы откройте новое окно графопостроителя. Для этого выполните команду View→Debug Windows→Plot→New. В открывшемся окне задайте значения всех полей в соответствии с рис. 26.3 и нажмите программную кнопку «Browse».
Рис. 26.3. Окно для задания значений полей
В новом открывшемся окне (рис. 26.4) найдите и выделите в памяти данных строку с массивом y1, после чего нажмите кнопку «OK».
Рис. 26.4. Окно для сопровождения работы программы
Нажмите в окне Plot Configuration программную кнопку «Add». При этом в поле Data sets появится запись Data set1. Теперь еще раз нажмите программную кнопку «Browse» и выделите в памяти данных строку с массивом y2, после чего нажмите кнопку «OK». Вновь нажмите в окне Plot Configuration программную кнопку Add. После этих действий в поле Data sets появится новая запись Data set2. Убедитесь, что строке Data set1 соответствует адрес y1, а строке Data set2 — адрес y2, выделяя по очереди каждую из строк в окне Plot Configuration. Для обеих строк данные должны иметь тип float. Если это не так — исправьте формат данных на float.
Теперь нажмите в окне кнопку «OK», разверните окно с графиками результатов работы программы (рис. 26.5).
Рис. 26.5. Кривые функций синуса и косинуса
Как видно из рисунка, графики представляют собой кривые функций синуса и косинуса, полученные из результатов работы программы.
С помощью графопостроителя можно увидеть и спектр сигналов. Для этого необходимо щелкнуть правой кнопкой мыши по окну с графиками и в открывшемся контекстном меню выбрать команду Modify Setting.
Далее в открывшемся окне Plot Setting открыть закладку Data Processing и выделить в поле Data Process строку FF Magnitude (рис. 26.6).
Рис. 26.6. Окно для сопровождения дальнейшей работы программы
После чего закрыть окно, нажав кнопку OK. В результате график преобразуется к виду, приведенному на рис. 26.7.
Рис. 26.7. Функция косинуса и спектр функции синуса
Здесь отображены одновременно функция косинуса и спектр функции синуса.
Подобным образом можно производить вычисление и других математических функций, для которых существуют готовые библиотеки в трансляторе языка Си. Среда разработки Visual DSP++ содержит ряд других примеров, в том числе на языке Си, изучив которые, можно расширить объем знаний в этой области. Кроме того, встроенная справочная система среды разработки дает большой объем дополнительной информации по многим вопросам, возникающим в процессе программирования.
Заключение
Дорогие читатели, вы познакомились с материалами, посвященными сигнальному процессору ADSP2181 и средствам для его программирования.
Данная книга позволяет пройти путь изучения сигнального процессора от самых основ до самостоятельного программирования и разработки на его базе устройств с цифровой обработкой сигнала.
В ней были изложены как схемотехнические решения, так и программные материалы. Однако возможности сигнальных процессоров фирмы Analog Devices, а также средств разработки Visual DSP++ не исчерпываются приведенными в этой книге материалами и примерами. Это связано не только с краткостью изложения материала, но и с непрерывным развитием, как самих процессоров, так и программных средств для них.
Появление на рынке электроники новых процессоров приводит к необходимости постоянного обновления и углубления знаний в этой области.
Автор надеется, что изложенный материал уже помог и еще поможет тем, кто захочет заняться изучением и применением сигнальных процессоров в своей практике.
Список литературы
1. http://www.analog.com/
2. ADSP-2181 DSP Microcomputer. Data Sheet. Rev.B., Analog Devices Inc.
3. ADSP-2100 Family User's Manual. Edition 3, Analog Devices Inc.
4. Сато Ю. Обработка сигналов. Первое знакомство./Пер. с яп.; под ред. Есифуми Амэмия. — М.: Издательский дом «Додэка-XXI», 2002. — 176 с.: ил.
5. Калабеков Б.А. Микропроцессоры и их применение в системах передачи и обработки сигналов. — М.: Радио и связь, 1988.

