
- •Постановка задачи (введение)
- •Формализация задачи (определение функций аппаратной части и программы и способов их реализации)
- •Функциональная схема цифрового фильтра
- •Исходное состояние Фильтра после включения питания.
- •2.3Формализация настроек для инициализации фильтра.
- •Формализация определений для рабочего цикла фильтра.
- •Согласование кодов мк и цап
- •Разработка и описание общего алгоритма функционирования фильтра
- •Аппаратно - реализуемые операции Программно - реализуемые операции
- •5.Разработка и отладка программы на языке команд мк
- •Исходные определения и ручной расчёт результатов работы программы: "Цифровой фильтр (верхних частот)"
- •6.Составление электрической принципиальной схемы и описание функционирования фильтра
- •7. Расчет быстродействия фильтра
- •8. Анализ характеристик фильтра для заданных и реальных значений коэффициентов (нули и полюса, ачх, фчх, оценка устойчивости)
- •9.Заключение
- •10. Список использованных источников
Исходные определения и ручной расчёт результатов работы программы: "Цифровой фильтр (верхних частот)"
Для положительных отсчетов
Разностное уравнение представим в виде:
yn = xn - xn-1 - 0,49501875 уn-1 = xn - xn-1 - k уn-1; k = 0,49501875
1) Реализуемый коэффициент масштабирования kМР (число без знака) при 8-разрядном формате беззнаковых коэффициентов:
kМ = 1/ ynmax = 0,400390625(10); kМР = 0,01100110(2) = 66(16) ≈ 0.4(10).
2) Реализуемые коэффициенты разностного уравнения k (числа без знака) при 8-разрядном формате беззнаковых коэффициентов:
k = 0,4950187510); kP =,01111110 (2) = 7Е(16) = 0,49501875(10);
3) Код АЦП для положительного входного отсчёта максимальной амплитуды (немасштабированный отсчёт):
xn = 0'1111111(2) = 7F(16).
4) Масштабированный входной положительный отсчёт максимальной амплитуды:
xn = kMP xn = ,011001101(2) · 0,1111111(2) = 66(16) · 7F(l6) = 32(16) = ,0110010(2)=
=+0,390(10).
5) Зададим состояние памяти для положительных входных отсчетов и отрицательных выходных отсчётов максимальной амплитуды:
Адрес ячейки памяти |
Содержимое ячейки памяти |
0801 h (порт РB РФ55) |
xn = 7F(l6) немасштабированный входной отсчет |
30h |
Вычисляется программой в текущем цикле: xn = 32(16) = ,0110010(2)= +0,390(10). масштабированный входной отсчет |
31h |
xn-1 = 32(16) = , 0110010 (2)= +0,390(10). |
40h |
Вычисляется программой в текущем цикле: yn =01(16) |
41h |
yn-1 = C1(16) = ,1001110(2)= -0,390(10). |
50h |
Вычисляется программой в текущем цикле: p1n =18(16) |
=kP·
7) Вычислим выходной отсчёт:
Для отрицательных отсчетов
Разностное уравнение представим в виде:
yn = xn - xn-1 - 0,49501875 уn-1 = xn - xn-1 - k уn-1; k = 0,49501875
1) Реализуемый коэффициент масштабирования kМР (число без знака) при 8-разрядном формате беззнаковых коэффициентов:
kМ = 1/ ynmax = 0,400390625(10); kМР = 0,01100110(2) = 66(16) ≈ 0.4(10).
2) Реализуемые коэффициенты разностного уравнения k (числа без знака) при 8-разрядном формате беззнаковых коэффициентов:
k = 0,4950187510); kP =,01111110 (2) = 7Е(16) = 0,49501875(10);
3) Код АЦП для положительного входного отсчёта максимальной амплитуды (немасштабированный отсчёт):
xn = 1,0000000(2) = 80(16).
4) Масштабированный входной отрицательный отсчёт максимальной амплитуды:
xn = kMP xn = ,011001101(2) ) · 1,0000000(2) = 66(16) · 80(l6) ≈ 33(16) = ,00110011(2) .
П
ри
помощи дополнительного кода: 11001100
+
1
11001101(2) = СD(16) = -0,4(10).
5) Зададим состояние памяти для положительных входных отсчетов и отрицательных выходных отсчётов максимальной амплитуды:
Адрес ячейки памяти |
Содержимое ячейки памяти |
0801 h (порт РB РФ55) |
xn = 80(l6) немасштабированный входной отсчет |
30h |
Вычисляется программой в текущем цикле: xn = CD(16) = ,11001101(2)= -0,4(10). масштабированный входной отсчет |
31h |
xn-1 = CD(16) = ,11001101(2)= -0,4(10). |
40h |
Вычисляется программой в текущем цикле: yn =E7(16) |
41h |
yn-1 = 33(16) = ,00110011(2)= +0,390(10). |
50h |
Вычисляется программой в текущем цикле: p1n =19(16) |
6) Получим произведение p3n:
P1n = kP yn-1 = 7E(16) · 33(16) =,01111110 (2) · ,00110011 ( (2) ≈ 19(16) =,00011001=
=+0,19
7) Вычислим выходной отсчёт:
yn = xn - xn-1 - k уn-1 = CD(16) - CD(16) - 19(16) = (16) = 11100111(2) = E7(16)
Полученные расчётные значения следует рассматривать как контрольные при сопоставлении с результатами, которые вычисляет программный отладчик. Запустим эмулятор (файл Emu.exe). В него загружаем файл osk.tsk. Входим в меню редактирования. Загружаем в память МП-системы(DSEG) значения входных и выходных отсчетов, в (XSEG) адрес0801 загружаем максимальное значение немасштабированного входного отсчёта 7F(16). В пошаговом режиме выполняем рабочий цикл. Видим, что все значения, вычисленные программой равны расчётным, заполнение памяти соответствует набранной программе PR1n сохраняется в 50 DSEG . Так же для отрицательных отсчетов в ХSEG в ячейку 0801 записываем максимальный отрицательный отчет=80(16), видим, что все расчетные значения равны значениям вычисленным программой. Программа работоспособна и нет переполнений. Выходной отчет не превышает для положительных 1 и для отрицательных -1. Ручной расчет произведен правильно, программа работает правильно, результаты полученные в эмуляторе соответствуют результатам полученным при ручном расчете.