Ознакомление с одним из приложений процессоров цифровой обработки сигналов - генерацией случайных чисел c равномерным законом распределения. Программирование и использование таймера и прерываний от него. Разработка и отладка программ для реального времени.
2. Подготовка к работе
2.1. Изучить следующие вопросы:
Назначение и структура таймера.
Регистры и инструкции управления таймером и прерываниями.
Программирование таймера и прерываний от него.
Последовательность выполнения инструкций программы при обработке прерывания.
Назначение и работа инструкций IDLE, RTI.
Материалы для освоения указаны в разделе 3.
Контрольные вопросы см. в разделе 7.
2.2. Домашнее задание:
Проанализировать подпрограмму генерацииравномерно распределенных случайных чисел random.asm. Составить графический алгоритм основной программы.
Изменить параметры таймера для получения частоты следования отсчётов f, указанной для бригады в таблице 7.1. В чётных вариантах время цикла процессора составляет 100 нс, в нечётных – 80 нс.
Таблица 7.1. – Исходные данные для бригад
№ бригады |
1 |
2 |
3 |
4 |
5 |
6 |
f (кгц) |
15.0 |
50.0 |
31.0 |
25.0 |
62.0 |
10.0 |
Чтобы рассмотреть получаемую последовательность случайных чисел, следует дополнить программу 5-ю инструкциями для формирования в памяти массива выходных данных dm_y. Такой приём был использован в лабораторной работе № 6. Размер массива – несколько десятков чисел.
Задание повышенной сложности:
Преобразуйте алгоритм так, чтобы обеспечить формирование программным путем случайных чисел с треугольным распределением.
3.1. Материалы к лабораторной работе № 7 (см. файл ЛР7_материалы.doc и Приложение, программы к ЛР № 7).
3.2. Материалы к лабораторной работе № 6 (см. файл ЛР6_материалы.doc и Приложение, программы к ЛР № 6 ).
3.3. Учебное пособие “Работа с VisualDSP++”, разделы 12, 13.2.
3.4. Материал лекций по указанным вопросам.
4. Задание к работе в лаборатории
4.1. Cоздать исполняемый файл main.dxe, используя файлы main.asm и random.asm и загрузить его.
4.2. Проверить работу программы с прерываниями в пошаговом режиме, используя IREQ - регистр запросов прерывания. Проанализировать причину ошибки, возникающей на этапе выполнения программы. Внести исправление в программу.
4.3. Отобразить последовательность выполнения инструкций в связи с возникновением и обработкой прерываний.
4.4. Измерить период следования отсчётов выходного сигнала.
4.5. Выполнить программу и получить в памяти массив случайных чисел с именем dm_y.
5.1. Программа состоит из двух модулей: программы main.asm и подпрограммы random.asm. Скопируйте из папки Лр7 в Ваш рабочий каталог папку Random c файлами .asm и .ldf .
5.2. Запустите программу VisualDSP++. Проделайте все этапы создания исполняемого файла .dxe для проекта, состоящего из двух модулей .asm и файла .ldf. Загрузите исполняемый файл random.dxe.
5.3. При обследовании программы с прерываниями в пошаговом режиме следует использовать IREQ - регистр запросов прерывания. Это не регистр процессора, а регистр имитатора; он обеспечивает удобства при отладке, позволяя создать запрос прерывания. Тем самым искусственно вызывается возникновение прерывания и досрочный выход из состояния ожидания прерывания (IDLE). Разряды IREQ соответствуют разрядам регистра IMASK процессора.
5.4. На этапе выполнения программы возникает сообщение об ошибке. Для локализации места возникновения логической ошибки и выявления причины сообщения (неработающей инструкции) следует использовать пошаговый режим с контролем записи результатов выполнения каждой инструкции и логический анализ программы. Ошибка устраняется внесением поправки в программу и повторным формированием..
5.5. Проследите за очерёдностью выполнения инструкций программы в связи с возникновением и обработкой прерываний, а также обратите внимание на роль инструкций IDLE и RTI. Отобразите стрелками очерёдность выполнения инструкций в тексте программы main.asm.
5.6. Установите контрольную точку на инструкции вывода отсчёта и, производя запуски имитатора, фиксируйте каждый раз число циклов в окне Register/Program Control. Период прерывания равен разности числа циклов между вырабатываемыми отсчётами. Убедитесь в соответствии периода следования отсчётов заданной частоте генерации.
5.7. Убрав контрольную точку, можно запустить программу в режиме прогона. Остановка происходит по команде Halt. Чтобы наблюдать последовательность выходных отсчётов, используйте формирование в памяти массива выходных данных dm_y. Убедитесь, что соответствующие инструкции включены Вами в программу по аналогии с ЛР №6. Чтобы вывести на экран область памяти с массивом, имеющим имя, следует, находясь в окне этой памяти, вызвать меню, дать команду GoTo, выбрать имя массива и выбрать формат.
5.8. Генерируемые программой числа с равномерным распределением являются целыми без знака в интервале от 0 до 0хFFFF, т. е. до 216-1. Для формирования случайных чисел в дробном формате в интервале 0…1, то-есть от 0 до 0х7FFF, дополните программу инструкцией сдвига вправо на 1 разряд, так как шестнадцатеричные представления таких чисел меньше в два раза. Запишите массив из 15-20-и получаемых случайных чисел в дробном формате и попытайтесь визуально оценить, получен ли равномерный закон распределения.
5.9. После демонстрации преподавателю результатов работы следует закрыть проект Random командой Project/Close и закрыть программу VisualDSP++. Папку Randomиз своей рабочей области удалить.
6.1. Цель работы.
6.2. Расчёт параметров таймера для формирования отсчётов с заданной частотой.
6.3. Очерёдность выполнения строк программы в связи с возникновением и обработкой прерываний показать стрелками.
6.4. Измеренное значение периода следования отсчётов.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.