Генератор случайных чисел. Ознакомление с одним из приложений процессоров цифровой обработки сигналов

Страницы работы

Содержание работы

Лабораторная работа № 7    

ГЕНЕРАТОР  СЛУЧАЙНЫХ ЧИСЕЛ

1. Цель работы

Ознакомление с одним из приложений процессоров цифровой обработки сигналов - генерацией случайных чисел 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. Материалы к работе

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.  Указания к работе в лаборатории

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. Содержание отчёта

6.1. Цель работы.

6.2. Расчёт параметров таймера для формирования отсчётов с заданной частотой.

6.3. Очерёдность выполнения строк программы в связи с возникновением и обработкой прерываний показать стрелками.

6.4. Измеренное значение периода следования отсчётов.

Похожие материалы

Информация о работе