МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
РЯЗАНСКИЙ ГОСУДАРСТВЕННЫЙ РАДИОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
КАФЕДРА РАДИОТЕХНИЧЕСКИХ СИСТЕМ
Лабораторная работа №1
Изучение алгоритма функционирования и программы
цифрового фильтра
Выполнил ст.гр. 310:
Белокуров Е.
Проверил:
Косс
Рязань, 2006
Цель работы
Изучение системы команд МК КР1830ВЕ31, их содержания, способов адресации на примере использования в программе цифрового фильтра. Изучение представления и преобразования данных в МП-системе. Изучение взаимодействия аппаратной части цифрового фильтра и программы. Изучение технологии отладки программы для МК с использованием программного отладчика. Установление истинности результатов выполнения программы цифрового фильтра.
Расчет для положительного входного отсчета максимальной амплитуды:
Разностное уравнение представим в виде:
yn=0,81 xn + xn-2 – 0,81yn-2=kxn + xn-2- kyn-2 ; k=0,81
1) Реализуемый коэффициент масштабирования kMP(число без знака) при 8-разрядном формате беззнаковых коэффициентов:
kM=0,381679389(10); kMP = ,01100001(2) = 61(16) = 0,37890625 (10)
2) Реализуемые коэффициенты разностного уравнения (числа без знака) при 8-разрядном форматё беззнаковых коэффициентов:
k=0,81(10) ; kP = ,11001111(2) = CF(16) = 0,80859375(10)
3) Код для положительного входного отсчета максимальной амплитуды (немасштабированный отсчет):
xn = 0,1111111(2) = 7F(16)
программа адресация цифровой фильтр
4) Масштабированный входной положительный отсчёт максимальной амплитуды:
xn := kMPxn = ,01100001(2). 0,1111111(2) = 61(16). 7F(16) = 30(16) = 0,0110000 (2) = +0,375(10)
5) Зададим состояние памяти после запоминания масштабированных входных отсчётов максимальной амплитуды и отрицательных выходных отсчётов максимальной амплитуды
Адрес ячейки памяти | Содержимое ячейки памяти |
X | xn= 30(16) = 0,0110000(2) = +0,375(10) |
X1 | xn-1= 30(16) = 0,0110000(2) = +0,375(10) |
X2 | xn-2= 30(16) = 0,0110000(2) = +0,375(10) |
Y | Вычисляется программой:yn= 7C(16) |
Y1 | yn-1= D0(16) = 1, 1010000(2) = -0,375(10) |
Y2 | yn-2 = D0(16) = 1, 1010000(2) = -0,375(10) |
P1 | Вычисляется программой:p1n =26(16) |
P2 | Вычисляется программой: p2n= DA(16) |
6) Получим произведениеp1n:
p1n = kPxn = CF(16)30(16) = ,11001111(2). 0,011000 (2) = 26(16) = 0,0100110(2) = + 0,296875(10)
7) Получим модуль произведения отрицательного отсчёта yn-2 на коэффициент kP:
|p2n| = kP|yn-2| = CF(16)30(16) = ,11001111(2). 0,011000 (2) = 26(16) = 0,0100110(2) = 0,296875(10)
8) Вычислим выходной отсчёт:
yn = p1n +xn-2 - (- |p2n|) = 26(16) + 30(16) + 26(16) = 7C(16) = 0,1111100 (2) = +0,96875(10)
Выполнение работы
1. а) Исходное состояние МП-системы, соответствующее аппаратному сбросу по входу RST МК
При включении питания в схеме МП-системы вырабатывается импульс сброса RST для микроконтроллера. По сигналу RST=1 выполняются следующие действия:
1) программный счетчик и все управляющие регистры МК, кроме PCON, IE, IP – устанавливаются в нулевое состояние;
2) в управляющих регистрах PCON, IE, IP – резервные биты принимают случайные значения, все остальные биты сбрасываются в 0;
3) в указателе стека устанавливается адрес SP=70 (вершина стека);
4) запрещаются прерывания от всех источников, запрещается работа таймеров/счетчиков, запрещается работа последовательного порта;
5) выбирается банк 0 POH (текущий банк регистров);
6) порты Р0, Р1, Р2, Р3 настраиваются на ввод для приема данных;
7) в обоих регистрах SBUF последовательного порта устанавливаются случайные значения.
В БИС КР1821РУ55 и КР1821РФ55 исходное состояние после включения питания произвольное, так как импульс RST на их входы сброса не поступает.
1.б) Объём памяти (CSEG), занимаемый программой FZ. Составляет 147 байт.
2) Проверка выполнения всех настроек предусмотренных инициализацией программы:
3) Загрузка в память МП-системы начальных данных:
4). Формирование сигнала запроса прерывания от Т/С0 (Alt + t) и выполнение в пошаговом режиме программного модуля формирования импульса пуска АЦП.
4)Формирование сигнала запроса прерывания от АЦП по входу INT0 (Alt + i) и выполнение в пошаговом режиме рабочего цикла программы.
а) При выполнении программного модуля масштабирования вычисленное программой численное значение масштабированного отсчёта xnравно расчётному и запоминается в заданной ячейке памяти.
б) Вычисленные программой численные значения произведений p1n, p2nравны расчётным и запоминаются в заданных ячейках.
в) Вычисленное программой численное значение выходного отсчёта ynравно расчётному и запоминается в заданной ячейке.
5)Вывод смещенного кода и подготовка следующего рабочего цикла:
а) На ЦАП выведен смещённый входной код.
б) Выполнен сдвиг отсчётов в памяти для подготовки следующего рабочего цикла.
Расчет для отрицательного входного отсчета максимальной амплитуды:
Разностное уравнение представим в виде:
yn=0,81 xn + xn-2 – 0,81yn-2=kxn + xn-2- kyn-2 ; k=0,81
1) Реализуемый коэффициент масштабирования kMP(число без знака) при 8-разрядном формате беззнаковых коэффициентов:
kM=0,381679389(10); kMP = ,01100001(2) = 61(16) = 0,37890625 (10)
2) Реализуемые коэффициенты разностного уравнения (числа без знака) при 8-разрядном форматё беззнаковых коэффициентов:
k=0,81(10) ; kP = ,11001111(2) = CF(16) = 0,80859375(10)
3) Код для отрицательного входного отсчета максимальной амплитуды (немасштабированный отсчет):
xn = 1,0000000(2) = 80(16)
4) Масштабированный входной положительный отсчёт максимальной амплитуды:
|xn| := kMP|xn| = ,01100001(2). 0,1111111(2) = 61(16). 80(16) = 30(16) = 0,0110000 (2) = +0,375(10)
xn := D0(16)
5) Зададим состояние памяти после запоминания масштабированных выходных отсчётов максимальной амплитуды и отрицательных входных отсчётов максимальной амплитуды
Адрес ячейки памяти | Содержимое ячейки памяти |
X | xn= D0(16) = 1, 1010000(2) = -0,375(10) |
X1 | xn-1= D0(16) = 1, 1010000(2) = -0,375(10) |
X2 | xn-2= D0(16) = 1, 1010000(2) = -0,375(10) |
Y | Вычисляется программой:yn= 7C(16) |
Y1 | yn-1= 30(16) = 0,0110000(2) = +0,375(10) |
Y2 | yn-2 = 30(16) = 0,0110000(2) = +0,375(10) |
P1 | Вычисляется программой:p1n =DA(16) |
P2 | Вычисляется программой: p2n= 26(16) |
6) Получим модуль произведения отрицательного отсчёта yn-2 на коэффициент kP:
|p1n| = kP|xn| = CF(16)30(16) = ,11001111(2). 0,011000 (2) = 26(16) = 0,0100110(2) = 0,296875(10)
7) Получим произведениеp1:
p1n = kPyn-2 = CF(16)30(16) = ,11001111(2). 0,011000 (2) = 26(16) = 0,0100110(2) = + 0,296875(10)
8) Вычислим выходной отсчёт:
yn = -p2n +xn-2 - (- |p1n|) = DA(16) + D0(16) - 26(16) = 84(16) = 1,0000100 (2) = -0,96875(10)
6)Загрузка в память МП-системы начальных данных:
Результаты работы программы:
а) При выполнении программного модуля масштабирования вычисленное программой численное значение масштабированного отсчёта xnравно расчётному и запоминается в заданной ячейке памяти.
б) Вычисленные программой численные значения произведений p1n, p2nравны расчётным и запоминаются в заданных ячейках.