Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЦУ курсовая АЦП ЦАП.doc
Скачиваний:
30
Добавлен:
11.09.2019
Размер:
647.17 Кб
Скачать

Исходные определения и ручной расчёт результатов работы программы: "Цифровой фильтр (верхних частот)"

Для положительных отсчетов

Разностное уравнение представим в виде:

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·

6) Поучим модуль произведения отрицательного отсчета yn-1 на коэффициент kP :

= kP · xn-1 =7Е(16) · 32(16) = 01111110 (2) · 00110010 (2) = 18(16) =00011000(2) = 0.1875 (10).

7) Вычислим выходной отсчёт:

yn = xn – xn -1 – (– )= 00110010(2) – 11001110(2) + 00011000(2) = 01(16) = 00000001 (2) =+0,96875(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 = 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. Ручной расчет произведен правильно, программа работает правильно, результаты полученные в эмуляторе соответствуют результатам полученным при ручном расчете.