Главная страница
Навигация по странице:

  • Цель работы

  • Подготовка к работе

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

  • Лабораторная работа 8 по цуиМП изучение алгоритма функционирования и программы цифрового фильтра Выполнил ст гр. 7011 Проверил


    Скачать 1.53 Mb.
    НазваниеЛабораторная работа 8 по цуиМП изучение алгоритма функционирования и программы цифрового фильтра Выполнил ст гр. 7011 Проверил
    Дата25.04.2022
    Размер1.53 Mb.
    Формат файлаdoc
    Имя файлаLR_8_TsUiMP_Ilya.doc
    ТипЛабораторная работа
    #494907

    Министерство науки и высшего образования РФ

    ФГБОУ ВО

    «Рязанский государственный радиотехнический университет

    имени В.Ф. Уткина»

    Кафедра РТС

    Лабораторная работа №8 по ЦУиМП:

    «ИЗУЧЕНИЕ АЛГОРИТМА ФУНКЦИОНИРОВАНИЯ И ПРОГРАММЫ ЦИФРОВОГО ФИЛЬТРА»

    Выполнил ст.гр.7011:

    Проверил:

    Рязань, 2021

    Цель работы: Изучение системы команд МК КР1830ВЕ31, их содержания, способов адресации. Изучение представления и преобразования данных в МП-системе. Изучение взаимодействия аппаратной части цифрового фильтра и программы. Изучение технологии отладки программы для МК с использованием программного отладчика. Установление истинности результатов выполнения программы цифрового фильтра.

    Подготовка к работе

    Ручной расчёт результатов работы программы:

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

     

    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) Зададим состояние памяти после запоминания масштабированных входных отсчётов максимальной амплитуды и отрицательных выходных отсчётов максимальной амплитуды:



    Адрес ячейки памяти

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

    7001h

    (порт PA РУ55)

    xn=7F(16)

    30h

    xn= 30(16) = 0,0110000(2) = +0,375(10) 

    31h

    xn-1= 30(16) = 0,0110000(2) = +0,375(10) 

    32h

    xn-2= 30(16) = 0,0110000(2) = +0,375(10) 

    40h

    Вычисляется программой:yn= 7C(16)

    41h

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

    42h

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

    50h

    Вычисляется программой:p1n =26(16)

    51h

    Вычисляется программой: p2n= DA(16)



    6) Получим произведениеp1n :

    p1n = kP xn = CF(16) 30(16) = ,11001111(2). 0,011000 (2) = 26(16) = 0,0100110(2) = + 0,296875(10)

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

    |p2n| = kP |yn-2| = CF(16) 30(16) = ,11001111(2). 0,011000 (2) = 26(16) = 0,0100110(2) = 0,296875(10)

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

    yn = p1n + xn-2 - (- |p2n|) = 26(16) + 30(16) + 26(16) = 7C(16) = 0,1111100 (2) = +0,96875(10).

    Выполним все те же действия для отрицательного входного отсчета максимальной амплитуды.

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

     

    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,0000001(2) = 81(16)

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

    |xn| := kMP|xn| = ,01100001(2). 0,1111111(2) = 61(16). 7F(16) = 30(16) = 0,0110000 (2) = +0,375(10)

    xn := D0(16) = 1, 1010000(2) = -0,375(10)

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


    Адрес ячейки памяти

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

    7001h

    (порт PA РУ55)

    xn=81(16)

    30h

    xn= D0(16) = 1, 1010000(2) = -0,375(10)

    31h

    xn-1= D0(16) = 1, 1010000(2) = -0,375(10) 

    32h

    xn-2= D0(16) = 1, 1010000(2) = -0,375(10)

    40h

    Вычисляется программой:yn= 84(16)

    41h

    yn-1 = 30(16) = 0,0110000(2) = +0,375(10)

    42h

    yn-2  = 30(16) = 0,0110000(2) = +0,375(10)

    50h

    Вычисляется программой:p1n = DA(16)

    51h

    Вычисляется программой: p2n= 26(16)

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

    |p1n| = kP|xn| = CF(16) 30(16) = ,11001111(2). 0,011000 (2) = 26(16) = 0,0100110(2) = 0,296875(10)

    7) Получим произведениеp1n :

    p1n = kPyn-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)

    Если расчётные значения и соответствующие им значения, вычисляемые программой, идентичны – программа работает правильно (без переполнения и логических ошибок).

    По сигналу 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 последовательного порта устанавливаются случайные значения.
    Выполнение работы

    Распределение памяти:





    Далее приведем алгоритм:


    Текст программы FZ.asm



















    Листинг программы:























    1. Открыть папку МП Лаб работы.

    Запустить программный отладчик EMU51.exe. Загрузить файл программы, подлежащий отладке: FZ.tsk. Объяснить исходное состояние МП-системы, соответствующее аппаратному сбросу по входу RST МК, по всем сегментам памяти: RSEG &SFR, DSEG, XSEG, CSEG, BSEG. Определить объём памяти (CSEG), занимаемый программой FZ.asm.



    Представим на рисунках все занятые ячейки в области CSEG:



    В данном случае занято 9 ячеек.

    Далее представлены рисунки с занятыми ячейками модулей 00A0h, 00D0h и 0010h.



    На левом рисунке занято 55 ячеек

    На правом рисунке занято 82 ячейки

    Всего занято 146 ячеек.

    2. Выполнить в пошаговом режиме программный модуль инициализации. Объяснить содержание использованного способа останова программы после выполнение инициализации системы.

    3. Проверить выполнение всех настроек, предусмотренных инициализацией МП-системы (период переполнения Т/С0, пуск Т/С0, разрешение прерываний от Т/С0 и INT0, порт PA РУ55 – ввод, порт PB РУ55 – вывод).



    Значение 83h в регистре IE говорит о разрешении прерываний от T/C0 и INT0.

    Задание периода переполнения можно проследить в регистре RSEG . При этом в TH0 видим значение 9С.



    Значение 02 в ячейке 7000h (XSEG) говорит о настройке портов.

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



    В ячейках 31h и 32h (DSEG) введены значения 30h, а в ячейках 41h и 42h введены значения D0h.

    Рассчитанные текущие значения масштабированного входного отсчёта, выходного отсчёта и произведений (xn, yn, p1n, p2n) не загружаются. Выделенные для хранения xn, yn, p1n, p2n ячейки памяти загружаются программой в отлаживаемом рабочем цикле.

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



    В ячейке 7001h видим загруженное максимальное значение немасштабированного положительного входного отсчёта xn (7F).

    6. Формируем сигнал запроса прерывания от Т/С0 (Alt + t) и выполняем в пошаговом режиме программный модуль формирования импульса пуска АЦП.



    Убедились, что на линии P1.0 формируется импульс нулевого уровня.



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

    а) Убеждаемся, что при выполнении программного модуля масштабирования, что вычисленное программой численное значение масштабированного отсчёта xn равно расчётному и запоминается в заданной ячейке памяти.



    Получили в ячейке 30h (DSEG) значение 30h

    б) Убеждаемся, что вычисленные программой численные значения произведений p1n, p2n равны расчётным и запоминаются в заданных ячейках.



    В ячейках 50h и 51h (DSEG) получили значения 26h и DAh.

    в) Убеждаемся, что вычисленное программой численное значение выходного отсчёта yn равно расчётному и запоминается в заданной ячейке.



    В ячейке 40h (DSEG) получили значение 7Сh.

    г) Убеждаемся, что на ЦАП выведен смещённый входной код и выполнен сдвиг отсчётов в памяти для подготовки следующего рабочего цикла.



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

    9. Повторяем выполнение программы с отрицательным входным отсчётом xn. Обращаем внимание на изменение трассы программы и убеждаемся в истинности полученных результатов.



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



    В ячейках 31h и 32h (DSEG) введены значения D0h, а в ячейках 41h и 42h введены значения 30h.

    а) Убеждаемся, что при выполнении программного модуля масштабирования вычисленное программой численное значение масштабированного отсчёта xn равно расчётному и запоминается в заданной ячейке памяти.



    Получили в ячейке 30h (DSEG) значение D0h.

    б) Убеждаемся, что вычисленные программой численные значения произведений p1n, p2n равны расчётным и запоминаются в заданных ячейках.



    В ячейках 50h и 51h (DSEG) получили значения DAh и 26h.

    в) Убеждаемся, что вычисленное программой численное значение выходного отсчёта yn равно расчётному и запоминается в заданной ячейке.



    В ячейке 40h (DSEG) получили значение 7Сh.

    г) Убеждаемся, что на ЦАП выведен смещённый входной код и выполнен сдвиг отсчётов в памяти для подготовки следующего рабочего цикла.



    10. Получили длительность программы 95 машинных циклов, что соответствует 95 мкс.

    Всё данные, полученные расчётным путем, совпали с теми, что были получены в ходе выполнения программы. Данный факт говорит о правильности ручного расчёта.

    По результатам выполненной работы можно сделать следующие выводы:

    • Вычисленное программой численное значение масштабированного отсчёта xn равно расчётному и запоминается в заданной ячейке памяти.

    • Вычисленное программой численные значения произведений p1n, p2n равны расчётным и запоминаются в заданных ячейках.

    • Вычисленное программой численное значение выходного отсчёта yn равно расчётному и запоминается в заданной ячейке.

    • На ЦАП выведен смещенный входной код

    • Выполнен сдвиг отсчётов в памяти для подготовки следующего рабочего цикла.

    Также в ходе работы были выполнены все цели, поставленные перед началом работы.



    написать администратору сайта