МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
РЯЗАНСКИЙ ГОСУДАРСТВЕННЫЙ РАДИОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
КАФЕДРА РАДИОТЕХНИЧЕСКИХ СИСТЕМ
Лабораторная работа №1
Изучение алгоритма функционирования и программы
цифрового фильтра
Выполнил ст.гр. 310:
Белокуров Е.
Проверил:
Косс
Рязань, 2006
Цель работы
Изучение системы команд МК КР1830ВЕ31, их содержания, способов адресации на примере использования в программе цифрового фильтра. Изучение представления и преобразования данных в МП-системе. Изучение взаимодействия аппаратной части цифрового фильтра и программы. Изучение технологии отладки программы для МК с использованием программного отладчика. Установление истинности результатов выполнения программы цифрового фильтра.
Расчет для положительного входного отсчета максимальной амплитуды:
Разностное уравнение представим в виде:
yn
=0,81
xn
+
xn
-2
– 0,81
yn
-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
:= kMP
xn
= ,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 | Вычисляется программой:p
1 n =26(16) |
P2 | Вычисляется программой: p
2 n = DA(16) |
6) Получим произведениеp
1
n
:
p
1
n
= kP
xn
= CF(16)
30(16)
= ,11001111(2)
.
0,011000 (2)
= 26(16)
= 0,0100110(2)
= + 0,296875(10)
7) Получим модуль произведения отрицательного отсчёта yn
-2
на коэффициент kP
:
|
p
2
n
|
= kP
|
yn
-2
|
= CF(16)
30(16)
= ,11001111(2)
.
0,011000 (2)
= 26(16)
= 0,0100110(2)
= 0,296875(10)
8) Вычислим выходной отсчёт:
yn
=
p
1
n
+
xn
-2
- (- |
p
2
n
|)
= 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
), занимаемый программой
. Составляет 147 байт.
2) Проверка выполнения всех настроек предусмотренных инициализацией программы:
3) Загрузка в память МП-системы начальных данных:
4). Формирование сигнала запроса прерывания от Т/С0
(Alt
+ t
) и выполнение в пошаговом режиме программного модуля формирования импульса пуска АЦП.
4)Формирование сигнала запроса прерывания от АЦП по входу
INT
0
(Alt
+ i
) и выполнение в пошаговом режиме рабочего цикла программы.
а) При выполнении программного модуля масштабирования вычисленное программой численное значение масштабированного отсчёта xn
равно расчётному и запоминается в заданной ячейке памяти.
б) Вычисленные программой численные значения произведений p
1
n
,
p
2
n
равны расчётным и запоминаются в заданных ячейках.
в) Вычисленное программой численное значение выходного отсчёта yn
равно расчётному и запоминается в заданной ячейке.
5)Вывод смещенного кода и подготовка следующего рабочего цикла:
а) На ЦАП выведен смещённый входной код.
б) Выполнен сдвиг отсчётов в памяти для подготовки следующего рабочего цикла.
Расчет для отрицательного входного отсчета максимальной амплитуды:
Разностное уравнение представим в виде:
yn
=0,81
xn
+
xn
-2
– 0,81
yn
-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 | Вычисляется программой:p
1 n =DA(16) |
P2 | Вычисляется программой: p
2 n = 26(16) |
6) Получим модуль произведения отрицательного отсчёта yn
-2
на коэффициент kP
:
|
p
1
n
|
= kP
|
xn
|
= CF(16)
30(16)
= ,11001111(2)
.
0,011000 (2)
= 26(16)
= 0,0100110(2)
= 0,296875(10)
7) Получим произведениеp
1
:
p
1
n
= kP
yn
-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
равно расчётному и запоминается в заданной ячейке памяти.
б) Вычисленные программой численные значения произведений p
1
n
,
p
2
n
равны расчётным и запоминаются в заданных ячейках.
в) Вычисленное программой численное значение выходного отсчёта yn
равно расчётному и запоминается в заданной ячейке.