Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЦПОС - Методические указания к курсовому проект...doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
960.51 Кб
Скачать

2. Методические указания по выполнению задач

2.1.Составление программы

2.1.1. Программа реализации ких фильтра

Пример программы реализации нерекурсивного фильтра с подробными комментариями приведен в разделе 4.1. Программа является заведомо не оптимальной и оставляет простор для творчества. В частности, в ней не используются циклические буферы для коэффициентов и отсчетов фильтра, комбинированные команды типа LTD, MADD.

В программе реализуется ввод отсчетов входного сигнала по прерываниям через параллельный порт процессора. В соответствии с вариантами заданий возможно использование трех внешних прерываний и прерывания по таймеру. Вид прерывания сказывается в программе только на используемой команде перехода в таблице векторов прерывания. (Вид используемого прерывания будет влиять на отладку программы в имитаторе). Подпрограмма прерывания, при выполнении которой производится ввод входного отсчета и вычисление выходного, одинакова для всех типов прерываний.

Программа реализации фильтра состоит из нескольких секций.

Основная программа (секция "Init_main") содержит команды настройки процессора на необходимые режимы работы и бесконечную (пустую) петлю ожидания прихода очередного отсчета входного сигнала (запроса на прерывание). При поступлении запроса происходит переход к выполнению подпрограммы обработки прерывания - производится ввод входного отсчета сигнала и вычисление очередного выходного отсчета фильтра.

Соответственно подпрограмма обработки прерывания содержит следующие основные части.

  • Секция "Vvod" : ввод отсчета, умножение его на масштабный множитель, запись в буфер отсчетов.

  • Секция "Filter": вычисление значения выходного отсчета фильтра; при этом производится сдвиг входных отсчетов в буфере, необходимый для правильного вычисления последующего очередного отсчета.

  • Секция "Vivod": вывод выходного отсчета фильтра, восстановление разрешения прерывания, так как при переходе к обработке прерывания процессор запрещает все маскируемые прерывания; возврат в основную программу для ожидания прихода очередного входного отсчета.

В программе используются три секции данных. Секция .data содержит текущие входной и выходной отсчеты фильтра и масштабный коэффициент. Именованная секция "BUFFER1" содержит коэффициенты фильтра. Именованная секция "BUFFER2" является неинициализированной и резервирует место для хранения предыдущих отсчетов входного сигнала.

В зависимости от варианта задания в программе могут изменяться следующие величины (значения).

  • Количество коэффициентов N (порядок фильтра).

  • Значения коэффициентов, записываемые в буфер .sect "BUFFER1". Правило задания коэффициентов директивой .word очевидно из приведенных комментариев.

  • Значение масштабного множителя MM (секция .data). Если величина масштабного множителя равно 1, то в программе необходимо подставить значение 0,999 или вообще убрать умножение на него.

Размещение секций программы в памяти определяется в командном файле компоновки. Пример командного файла компоновки с подробными комментариями приведен в разделе 4.2. В соответствии с вариантами задания необходимо изменять начальные адреса блоков конфигурируемой памяти системы для размещения секций программы по требуемым адресам. Длина блоков памяти задаётся исходя из оценки длины соответствующих секций с некоторым запасом. Точные значения объема секций можно увидеть в файле таблицы компоновки после её выполнения.