Ознакомление с одним из приложений процессоров цифровой обработки сигналов - формированием сигналов заданной формы и частоты; программирование и использование таймера и прерываний от него. Разработка и отладка программ для реального времени.
2.1. Изучить следующие вопросы:
Назначение и структура таймера.
Регистры и инструкции управления таймером и прерываниями.
Программирование таймера и прерываний.
Последовательность выполнения инструкций при обработке прерывания.
Назначение и работа инструкции IDLE.
Использование кольцевых буферов в программе.
Построение графика в VisualDSP++.
Материалы для освоения указаны в разделе 3.
Контрольные вопросы см. в разделе 7.
2.2. Домашнее задание:
Проанализировать программу генерации синусоидального сигнала gener.asm. Составить графический алгоритм. Изменить параметры таймера для получения частоты сигнала f, указанной для бригады в таблице 6.1. В чётных вариантах время цикла процессора составляет 100 нс, в нечётных – 80 нс.
Таблица 6.1 – Исходные данные для бригад
№ бригады |
1 |
2 |
3 |
4 |
5 |
6 |
f (кгц) |
1.25 |
5.0 |
3.1 |
2.5 |
6.25 |
1.0 |
Задания повышенной сложности:
Преобразуйте алгоритм в gener.asm так, чтобы обеспечить формирование программным путем тех 16-и чисел, которые сейчас берутся из файла sine.dat:
1. Использовать для этого массив констант array_new[16];
2. Использовать для этого операции над содержимым регистра: инкремент и AND 0F;
3. Использовать для этого счётчик цикла CNTR=16.
3.1. Материалы к лабораторной работе № 6 (см. файл ЛР6_материалы.doc и Приложениие, программы к ЛР № 6).
3.2. Инструкции управления ходом исполнения программы, различные инструкции (Справочные материалы по ADSP-21XX, стр.1).
3.3. Учебное пособие “Работа с VisualDSP++”, разделы 13.2, 12, 14.2.
3.4. Материал лекций по указанным вопросам.
4. Задание к работе в лаборатории
4.1. Cоздать исполняемый файл gener.dxe, используя файлы gener.asm и sine.asm и загрузить его.
4.2. Проверить работу программы с прерываниями в пошаговом режиме, используя IREQ - регистр запросов прерывания. Отобразить последовательность выполнения инструкций в связи с возникновением и обработкой прерываний.
4.3. Измерить период возникновения отсчётов выходного сигнала.
4.4. Выполнить программу, рассмотреть выводимый программой массив отсчётов синусоиды в области памяти с именем dm_y и построить график.
5.1. Программа состоит из двух модулей: программы gener.dsp и подпрограммы sine.dsp.
Скопируйте из папки Лр6 в Ваш рабочий каталог папку Gen_Sine c файлами .asm, .ldf и .dat. ( файл sine.asm лучше взять из прошлой работы – он отлажен ).
5.2. Запустите программу VisualDSP++. Проделайте все этапы создания нового проекта с именем gen_sine.prj и исполняемого файла .dxe для программы, состоящей из двух модулей .asm и файлов .ldf и .dat. Загрузите исполняемый файл gen_sine.dxe.
5.3. При обследовании программы с прерываниями в пошаговом режиме следует использовать IREQ - регистр запросов прерывания. Это не регистр процессора, а регистр имитатора; он показывает, какие прерывания ожидаются, и обеспечивает удобства, позволяя вызвать возникновение прерывания и выйти из состояния ожидания прерывания (IDLE). Разряды IREQ соответствуют разрядам регистра IMASK процессора.
5.4. Обратите внимание на очерёдность выполнения инструкций программы в связи с возникновением и обработкой прерываний, а также на роль инструкции IDLE. Отобразите стрелками очерёдность выполнения инструкций в тексте программы или на схеме алгоритма.
5.5. Установите контрольную точку на инструкции вывода отсчёта и, производя запуски имитатора, фиксируйте каждый раз число циклов в окне Register / Program Control. Период прерывания равен разности числа циклов между вырабатываемыми отсчётами. Убедитесь в соответствии периода заданной частоте генерации.??
5.6. Убрав контрольную точку, можно запустить программу в режиме прогона. Остановка произойдёт по команде Halt. Чтобы наблюдать последовательность выходных отсчётов, можно использовать формирование в памяти массива выходных данных dm_y. Соответствующие инструкции в программе имеются. Чтобы вывести на экран область памяти с массивом, имеющим имя, следует, находясь в окне этой памяти, вызвать меню, дать команду GoTo, выбрать имя массива и выбрать дробный формат.
5.7. Создайте график зависимости y(n), пользуясь указаниями раздела 14.2.
5.8. После демонстрации преподавателю результатов работы следует закрыть проект Gen_Sine командой Project/Close и закрыть программу VisualDSP++. Папку Gen_Sine из своей рабочей области удалить.
6.1. Цель работы.
6.2. Графический алгоритм программы gener.asm.
6.3. Расчёт параметров таймера для формирования заданной частоты.
6.4. Очерёдность выполнения строк программы в связи с возникновением и обработкой прерываний показать стрелками.
6.5. Измеренное значение периода следования отсчётов.
6.6. Полученные результаты работы программы (таблица и график).
7.1. Расскажите о блоке таймера, его функциональном назначении и внутренней структуре.
7.2. Рассчитайте максимальный временной интервал, который можно задать с помощью таймера при тактовой частоте ADSP-2101 fCLKIN = 10 Мгц.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.