- •1 Постановка задачи
- •2 Формализация задачи
- •2.1 Функциональная схема цифрового фильтра
- •2.2 Исходное состояние фильтра после включения питания
- •2.3 Формализация настроек для инициализации фильтра
- •2.4 Формализация определений для рабочего цикла фильтра
- •3 Разработка и описание общего алгоритма функционирования фильтра
- •4 Обоснование построения аппаратной части фильтра
- •5 Разработка и отладка программы на языке команд мк
- •5.1 Исходные определения и ручной расчет результатов работы программы: "Цифровой фильтр (нижних частот)"
- •6 Расчет быстродействия фильтра
- •7 Анализ характеристик фильтра для заданных и реальных значений коэффициентов (нули и полюса, ачх, фчх, оценка устойчивости)
- •8 Заключение (оценка результатов проектирования)
- •9 Список использованных источников
5.1 Исходные определения и ручной расчет результатов работы программы: "Цифровой фильтр (нижних частот)"
Разностное уравнение представим в виде:
yn = xn + xn-1+ 0,9xn-2 +0,9xn-3+ 0,4уn-1 = хn +xn-1 + k1 xn-2 + k1xn-3 +k2 уn-1;
k1 = 0,9; k2 = 0,4.
1) Реализуемый коэффициент масштабирования kМР (число без знака) при 8-разрядном формате беззнаковых коэффициентов:
kМ = 0,239095(10); kМР = 0,001111(2) = 3C(16) ≈ 0,234375 (10).
2) Реализуемые коэффициенты разностного уравнения k1, k2 (числа без знака) при 8-разрядном формате беззнаковых коэффициентов:
К1 = 0,9(10); kP1 =,11100110 (2) = Е6(16) = 0,89843754 (10).
K2 = 0,4(10); kP2 =,01100110 (2) = 66(16) = 0,39843752 (10).
3) Код АЦП для положительного входного отсчёта максимальной амплитуды (немасштабированный отсчёт):
xn = 01111111(2) = 7F(16).
4) Масштабированный входной положительный отсчёт максимальной амплитуды:
xn = kMP xn = 0,001111(2) · 0,1111111(2) = 3C(16) · 7F(l6) ≈ 1D(16) = 0,0011101(2)=
=+0,227 (10).
5) Зададим состояние памяти для положительных входных отсчетов и отрицательных выходных отсчётов максимальной амплитуды:
Адрес ячейки памяти |
Содержимое ячейки памяти |
0800 h (порт РA РФ55) |
xn = 7F(l6) немасштабированный входной отсчет |
30h |
Вычисляется программой в текущем цикле: xn = 1D(16) = 0,0011101(2)= +0,227 (10) масштабированный входной отсчет |
31h |
xn-1 = 1D(16) = 0,0011101(2)= +0,227 (10) |
32h |
xn-2 = 1D(16) = 0,0011101(2)= +0,227 (10) |
33h |
xn-3 = 1D(16) = 0,0011101(2)= +0,227 (10) |
40h |
Вычисляется программой в текущем цикле: yn=7E(16) |
41h |
yn-1 = 1D(16) = 0,0011101(2)= +0,227 (10) |
50h |
Вычисляется программой в текущем цикле: p1n =04(16) |
51h |
Вычисляется программой в текущем цикле: P2n =28(16)
|
52h |
Вычисляется программой в текущем цикле: P3n =28(16) |
6) Получим произведение p1n:
p1n = kP1 xn-2 = E6(16)·1D16)=0,1110011(2)·0,0011101(2)= 0,0001101 (2)=1A(16)=0,203123(10).
6.1) Получим произведение p2n:
p2n = kP1 xn-3 = E6(16)·1D16)=0,1110011(2)·0,0011101(2)=0,0001101(2)=1A(16)=0,203123(10).
7) Получим произведение p3n:
P3n= kP2 yn-1= 66(16) · 1D16)=0,0110011(2)·0,0011101(2)=0B(16)=0,00001011(2)=0,090277(10).
8) Вычислим выходной отсчёт:
yn=хn+xn-1+k1xn-2+k1xn-3+k2уn-1=1D(16)+1D(16)+1A(16)+1A(16)+B(16)=79(16)=
=0,1111001(2)=+0,950523 (10).
Полученные расчётные значения следует рассматривать как контрольные при сопоставлении с результатами, которые вычисляет программный отладчик. Расчетные значения и соответствующие им значения, вычисляемые программой, идентичны программа работает правильно (без переполнения и логических ошибок).