Технические дисциплины - Цифровые устройства и микропроцессоры

Отчёт по лабораторной работе № 1

 

по дисциплине

 

«ЦИФРОВЫЕ УСТРОЙСТВА И МИКРОПРОЦЕССОРЫ»

 

 

 

Исходные данные

 

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

yn = 0,81xn + xn-2 + xn-1 – 0,81yn-2 = kxn + xn-2 + xn-1 – kyn-2, k = 0,81

 

1) Реализуемый коэффициент масштабирования kМР (число без знака) при 8-разрядном формате беззнаковых коэффициентов:

kM = 0,381679389(10); kМР = ,0110 0001(2) = 61(16) = 0,37890625(10)

2) Реализуемый коэффициент разностного уравнения kр (число без знака) при 8-разрядном формате беззнаковых коэффициентов:

k = 0,81(10); kр = ,11001111(2) = CF(16) = 0,80859375(10)

3) Код АЦП для положительного входного отсчёта максимальной амплитуды (немасштабированный отсчёт):

xn = 0111 1111(2) = 7F(16) (записывается в XSEG по адресу 7001)

4) Масштабированный входной отсчёт максимальной амплитуды

xn = kМРxn = ,0110 0001(2)* 0,111 1111(2) = 61(16)* 7F(16) =30(16) = 0,011 0000(2) = +0,375(2)

5) Зададим состояние памяти для положительных входных отсчётов и отрицательных выходных отсчётов максимальной амплитуды:

 

Адрес

ячейки памяти

Содержимое ячейки памяти

 

7001h (записывается в XSEG)

xn = 7F(16)

немасштабированный входной отсчёт

30h

 

 

Вычисляется программой в текущем цикле:

xn = 30(16) = 0,011 0000(2) = +0,375(2)

масштабированный входной отсчёт

31h (записывается в DSEG)

xn-1 = 30(16) = 0,011 0000(2) = +0,375(2)

32h (записывается в DSEG)

xn-2 = 30(16) = 0,011 0000(2) = +0,375(2)

40h

 

Вычисляется программой в текущем цикле:

yn = 7С(16)

41h (записывается в DSEG)

yn-1 = D0(16) = 1,101000(2) = -0,375(2)

42h (записывается в DSEG)

yn-2 = D0(16) = 1,101000(2) = -0,375(2)

50h (записывается в DSEG)

Вычисляется программой в текущем цикле:

p1n = 26(16)

51h (записывается в DSEG)

Вычисляется программой в текущем цикле:

р2n = DA(16)

 

6) Получим произведение p1n = kр*xn = CF(16)* 30(16) =,1100 1111(2)*0,011 0000 = 26(16) = 0,010 0110(2) = +0,296875(10)

7) Получим модуль произведения отрицательного отсчёта yn-2 на коэффициент

kр : |р2n| = kр |yn-2| = CF(16)* 30(16) = ,1100 1111(2)*0,011 0000 = 26(16) = 0,010 0110(2) = +0,296875(10)

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

yn = p1n + xn-2 –(-|р2n|) = p1n + xn-2 + |р2n| = 26(16) + 30(16) + 26(16) = 7C(16) = 0,111 01100(2) = +0,96875(10)

 

 

 

 

Исходное состояние после включения питания.

 

При включении питания в схеме МП-системы вырабатывается импульс сброса RST для МК. По сигналу RST = 1 выполняются следующие действия:

1) программный счётчик и все управляющие регистры МК, кроме PCON, IE, IP - устанавливаются в нулевое состояние;

2) в управляющих регистрах PCON, IE, IP - резервные биты принимают случайные значения, все остальные биты сбрасываются в 0;

3) в указателе стека устанавливается адрес SP = 70 (вершина стека);

4) запрещаются прерывания от всех источников, запрещается работа таймеров/счётчиков, запрещается работа последовательного порта;

5) выбирается банк 0 РОН (текущий банк регистров);

6) порты Р0, Р1, Р2, РЗ настраиваются на ввод для приёма данных;

7) в обоих регистрах SBUF последовательного порта устанавливаются случайные значения.

Из этого следует, что переходу фильтра в рабочий режим должна предшествовать его настройка (инициализация) на обеспечение принятого принципа функционирования, выбранных режимов работы узлов, заданных рабочих характеристик.

 

Формализация настроек для инициализации фильтра

 

Частота синхронизации МК

 

Примем частоту задающего кварцевого генератора Fosc = 12 МГц. Длительность машинного цикла при этом равна Тмц = 1 мкс.

 

Настройка таймера-счётчика Т/С0

 

Таймер-счётчик Т/С0 должен работать в непрерывном режиме таймера (без блокирования сигна­лом INT0) для формирования импульсов с частотой дискретизации Fд. Вы­бираем поэтому режим 2 с перезагрузкой после каждого цикла счёта. Управ­ляющие биты GATE0 = 0, С/Т 0 = 0 и код режима 10 записываются в состав управляющего слова (константа #02) для регистра TMOD при инициализации фильтра - команда MOV 89, #02.

Задание частоты дискретизации Fд = 10000 Гц. Длительность интер­вала дискретизации Тд = 100 мкс. Количество машинных циклов Тмц, укладывающихся на интервале дискретизации: N = Тд / Тмц =100 т.е. Т/С0 должен иметь в режиме с перезагрузкой коэффициент счёта kсч = N = 100. Максимальный коэффициент пересчёта 8-разрядного счётчика (без перезагрузки) равен kМАКС = 28 = 256. Чтобы в режиме суммирования 8-разрядный Т/С0 имел требуемый коэффициент пересчета N = kсч при переза­грузке в него должно записываться число Nисх = kМАКС = 156 = 9С.

Константа #9С обеспечивающая требуемую частоту дискретизации, при инициализации фильтра должна быть записана для хранения в регистр ТНО (прямой адрес 8С) - команда MOV 8C, #9С

 

Управляющее слово для регистра TMOD (прямой адрес 89)

TMOD.7

TMOD.6

TMOD.5

TMOD.4

TMOD.3

TMOD.2

TMOD.1

TMOD.0

x(0)

x(0)

x(0)

x(0)

0

0

1

0

GATE1

C/T 1

M1.1

M0.1

GATE0

C/T 0

M1.0

M0.0

 

Пуск Т/С0 осуществляется путём установки в регистре TCON управляющего бита TR0 = 1 при инициализации фильтра - команда SETB 8C.

Вывод импульса переполнения Т/С0 для запуска АЦП выполняет­ся по прерыванию от флага TF0, устанавливающегося при переполнении Т/С0. Подпрограмма обработки прерывания от флага TF0 имеет стартовый адрес 000В и содержит команды: CLR 90, SETB 90 - сброс и установка линии Р1.0 (порт Р1), так как исходное состояние линии – 1.

 

Настройка прерываний

 

В результате сброса МК при включении питания всем источникам прерываний назначается одинаковый, нулевой приоритет. Поскольку обра­ботка прерываний от таймера Т/С0 и по входу INT0 не могут совпадать по времени, переопределять приоритеты прерываний не требуется.

После сброса МК все прерывания запрещены. Поэтому при инициа­лизации требуется разрешить прерывания вообще (установить бит ЕА = 1), и, в частности, разрешить прерывания от Т/С0 (ЕТ0 = 1) и по входу INT0 (ЕХ0 = 1). Команда записи управляющего слова (константы #83) в регистр IE: MOV A8, #83.

 

Управляющее слово для регистра IE (прямой адрес A8)

IE.7

IE.6

IE.5

IE.4

IE.3

IE.2

IE.1

IE.0

1

0

0

0

0

0

1

1

EA

-

-

ES

ET1

EX1

ET0

EX0

 

 

Настройка портов БИС КР1821РУ55

 

Порт РА РУ55 настраивается на ввод, а порт РВ - на вывод. Это сделано потому, что вывод информации должен быть по сигналам квитирования, чего не поддерживают порты КР1821РФ55. Для этого соответствующий бит РВ = 1 записывается в состав управляющего слова РУ55, биты РС2, РС1 управляющего слова той же БИС устанавливаются в 1 (при этом она настраивается на работу с квитированием, PC5 - вход управляющего строба STB B). Для настройки порта РВ БИС КР1821РФ55 на прием необходимо установить регистр направления передачи порта РВ в 0 (прием).

 

Управляющее слово для РУС РУ55 (адрес 7000)

D.7

D.6

D.5

D.4

D.3

D.2

D.1

D.0

x(0)

x(0)

x(0)

x(0)

x(0)

x(0)

1

0

TM2

TM1

IE B

IE A

PC2

PC1

PB

PA

 

 

Организация стека

При сбросе МК в указатель стека загружается адрес SP = 70, - во внутренней памяти данных назначается стек (16 ячеек ОЗУ) с начальным ад­ресом 70. Глубина стека достаточна для решаемой задачи, поэтому переопре­деление стека не требуется.

 

Распределение памяти ПЗУ (РФ55)

0000h - команда перехода к программе инициализации по сигналу RST;

0003h - команда перехода к программе вычисления и вывода выходного отсчёта по сигналу на входе INT0;

000Bh - команда перехода к программе формирования импульса запуска АЦП по сигналу переполнения Т/С0;

00A0h ... 00CFh - программа инициализации;

00D0h ... 00FFh - программа формирования импульса запуска АЦП;

0100h ... 07FFh - программа вычисления и вывода выходного отсчета.

 

Распределение памяти ОЗУ (ВЕ31)

70h - 7Fh - стек;

30h, 31h, 32h - хранение отсчётов xn0, xn-1, xn-2;

40h, 41h, 42h - хранение отсчётов yn0, yn-1, yn-2;

50h, 51h, - хранение отсчётов p1n, p2n.

 

;Разностное уравнение Yn = 0,81 Xn + Xn-2 - 0,81 Yn-2

 

 

;Определение символических имён операндов

 

B0:      .EQU 90h      ;линия P1.0 для вывода импульса

;запуска АЦП

PA:      .EQU 7001h  ;порт PA РУ55

PB:      .EQU 7002h  ;порт PB РУ55

RGRU:           .EQU 7000h  ;регистр управляющего слова РУ55

SRU:   .EQU 02h      ;управляющее слово для настройки

;портов РУ55

TMOD:           .EQU 89h      ;регистр управления режимами

;таймеров-счётчиков

STMOD:         .EQU 02h      ;управляющее слово для настройки

;таймера-счётчика

TH0:    .EQU 8Ch     ;старший байт Т/С0

STH0: .EQU 9Ch     ;управляющее слово для задания

;частоты переполнения T/C0

TR0:    .EQU 8Ch     ;управляющий бит пуска T/C0

IE:       .EQU A8h     ;регистр разрешения прерываний

SIE:     .EQU 83h      ;слово разрешения прерываний

;от T/C0 и входа INT0

B:        .EQU F0h      ;регистр В

K:        .EQU CFh     ;коэффициент разностного уравнения

KM:    .EQU 61h      ;коэффициент масштабирования

X:        .EQU 30h      ;ячейка хранения отсчёта Xn

X1:      .EQU 31h      ;ячейка хранения отсчёта Xn-1

X2:      .EQU 32h      ;ячейка хранения отсчёта Xn-2

Y:        .EQU 40h      ;ячейка хранения отсчёта Yn

Y1:      .EQU 41h      ;ячейка хранения отсчёта Yn-1

Y2:      .EQU 42h      ;ячейка хранения отсчёта Yn-2

PR1:    .EQU 50h      ;ячейка хранения произведения PR1n

PR2:    .EQU 51h      ;ячейка хранения произведения PR2n

 

 

 

 

 

Выполнение работы.

 

После запуска программного отладчика EMU51.exe

1) в него был загружен файл программы для отладки FZ.tsk

2) в пошаговом режиме был выполнен программный модуль инициализации

3) проверено выполнение всех настроек, предусмотренных инициализацией МП-системы (период переполнения T/C0 и INT0, порт РА РУ55 – ввод, порт РВ РУ 55 – вывод)

 

 

 

4) в память МП-системы (DSEG) загружены расчётные значения входных и выходных отсчётов xn-1, xn-2, yn-1, yn-2 (заданные для определения правильности работы программы)

 

 

 

5) в память МП-системы (XSEG) загружено максимальное значение немасштабированного положительного входного отсчёта xn

 

 

6) сформирован сигнал запроса прерывания от T/C0 и выполнен в пошаговом режиме программный модуль формирования импульса пуска АЦП

 

 

 

 

 

 

 

 

 

 

7) был сформирован сигнал запроса прерывания от АЦП по входу INT0 и выполнен в пошаговом режиме рабочий цикл программы

 

 

 

 

8) был произведён расчёт быстродействия фильтра

 

Быстродействие фильтра в рабочем режиме оценим как время, необ­ходимое для выполнения всех операций, требуемых для получения входного отсчёта, вычисления выходного, выдачи его на ЦАП, подготовки следующе­го цикла. Для проектируемого фильтра это время складывается как сумма за­трат времени на преобразование аналогового входного отсчёта в код, обра­ботку прерывания от Т/С0 и обработку прерывания от входа INT0.

Длительность машинного цикла МК (1 мкс) постоянная, поэтому за­траты времени на обработку прерываний можно оценивать количеством требуемых для этого машинных циклов.

Таким образом, для выполнения одного цикла работы проектируе­мого фильтра Тф (с момента прерывания от Т/С0 до выхода на метку STOP:) требуется время, равное

Тф = 79ТМЦ + ТАЦП = 80,3 < ТД = 100 мкс,

где ТМЦ = 1 мкс - длительность машинного цикла, ТАЦП = 1,3 мкс - длитель­ность преобразования АЦП, Тд = 1 / FД = 1 /10000 - интервал дискретизации фильтра.

 

9) был повторно выполнен п. 4, при изменении знака у масштабированных отсчётов xn-1, xn-2, yn-1, yn-2 (xi – отрицательные значения, yi – положительные)

 

10) в память МП-системы (XSEG) загружено максимальное значение немасштабированного отрицательного входного отсчёта xn, после чего был повторен п. 6 и п.7

 

Выводы.

 

В результате проделанной работы были закреплены навыки работы с системной программой (EMU51.exe), предназначенной для локализации и исправления логических ошибок (расчет контрольных точек, ввод их в программу отладчик, редактирование и проверка правильности работы программы).

 

 

 

Добавить комментарий


Защитный код
Обновить