Министерство образования Российской Федерации Государственное образовательное учреждение высшего профессионального образ...
26 downloads
318 Views
529KB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
Министерство образования Российской Федерации Государственное образовательное учреждение высшего профессионального образования
Северо-Западный государственный заочный технический университет Кафедра компьютерных технологий и программного обеспечения
Микропроцессорные системы Методические указания к выполнению лабораторных работ
Факультет информатики и систем управления Направление и специальность подготовки дипломированного специалиста: 654600 – информатика и вычислительная техника 220100 – вычислительные машины, комплексы, системы и сети
Санкт-Петербург 2003
Утверждено редакционно-издательским советом университета УДК 681.31 Микропроцессорные системы: Методические указания выполнению лабораторных работ. - СПб.: СЗТУ, 2003. - 26 с. Методические государственного
указания
разработаны
образовательного
на
стандарта
к
основе высшего
профессионального образования по направлению и специальности подготовки дипломированных специалистов 654600 – “Информатика и вычислительная техника”; 220100 – “Вычислительные машины, комплексы, системы и сети”. Методические указания предназначены для студентов пятого курса
и
содержат
сведения,
необходимые
для
правильного
выполнения и оформления четырех лабораторных работ. Рассмотрено на заседании кафедры КТ и ПО 20 января 2003 г. и одобрено методической комиссией факультета информатики и систем управления 17 марта 2003 г.. Рецензенты: В.В.Спиридонов, канд. техн. наук, доц. кафедры компьютерных технологий и программного обеспечения СЗТУ; В.П.Шеремет, канд. техн. наук, ст. научн. сотр. НПО «Аврора».
Составитель
И.Г.Анкудинов, канд.техн.наук, доц.
© Северо-Западный государственный заочный технический университет, 2003
2
Общие указания Целью лабораторного практикума является: • закрепление теоретических знаний по курсу микропроцессорных систем; • приобретение практических навыков по анализу и расчету параметров специализированных МПС (на примере расчета разрядной сетки); • приобретение практических навыков по разработке программ на языке мнемокодов (ассемблера) микроЭВМ (на примере простых программ для МПС на базе микропроцессора КР580). Тематика лабораторных работ связана с заданиями на контрольные работы по курсу МПС. Знания и умения, полученные в лабораторном практикуме, позволят, в случае необходимости, освоить задачи анализа и проектирования МПС на базе других микропроцессорных комплектов. Для подготовки к лабораторным работам следует пользоваться приведенными ниже источниками. К выполнению каждой работы допускаются студенты, выдержавшие собеседование с преподавателем по теоретическим и практическим вопросам, относящимся к тематике работы.
Библиографический список Основной 1. Анкудинов И.Г. Микропроцессорные системы. Архитектура и проектирование: Учеб. пособие.– СПб.: СЗТУ, 2003. − 109 c.
Дополнительный 2. Хвощ С.Т., Варлинский Н.Н., Попов Е.А. Микропроцессоры и микроЭВМ в системах автоматического управления: Справочник. – Л.: Машиностроение, 1987. – 640 с. 3. Угрюмов Е.П. Проектирование элементов и узлов ЭВМ. . – М.: Высш. школа, 1987. – 318 с. 4. Майоров С.А., Кириллов В.В., Приблуда А.А. Введение в микроЭВМ. – Л.: Машиностроение, 1988. – 304 с. 5. Микропроцессорные системы автоматического управления / В.А. Бесекерский, Н.Б. Ефимов, С.И. Зиатдинов и др. – Л.: Машиностроение, 1988. – 386 с. 6. Гуртовцев А.Л., Гудыменко С.В. Программы для микропроцессоров: Справочное пособие. – Минск: Вышейшая школа, 1989. – 352 с. 7. Гольденберг Л.М., Малев В.А., Малько Г.Б. Цифровые устройства и микропроцессорные системы: Задачи и упражнения – М.: Радио и связь, 1992. –256 с.
3
Лабораторная работа 1. Изучение средств разработки программ для микроЭВМ 1.1. Цель работы Целью данной работы является ознакомление со структурой и системой команд микроЭВМ на базе микропроцессора КР580, изучение средств разработки программ – эмуляторов и учебного микропроцессорного комплекта.
1.2. Архитектура микроЭВМ на базе микропроцессора КР580 и средства отладки программ На рис. 1.1 представлена функциональная схема БИС микропроцессора КР580ИК80А, в состав которой входят: • 8-разрядное арифметико-логическое устройство (ALU); • регистр признаков (RS), фиксирующий признаки, вырабатываемые ALU в процессе выполнения команд; • аккумулятор (ACC), или регистр A; • буферный регистр (RG); • регистр команд (IR) для хранения первого байта команды, содержащего код операции; • дешифратор команд (DC); • блок регистров для приема, хранения и выдачи данных в процессе выполнения команды, содержащий программный счетчик (PC), указатель стека (SP), регистр адреса (RGA), шесть регистров общего назначения (B, C, D, E, H, L) и вспомогательные регистры (W и Z); • схема управления и синхронизации (CU), вырабатывающая последовательность управляющих сигналов для работы ALU и блока регистров; • 16-разрядный буферный регистр адреса (BA); • 8-разрядный буферный регистр данных (BD), двунаправленный мультиплексор (MUX) для обмена операндами и результатами операций и блоком регистров по внутренней шине данных (DB). Программный счетчик PC хранит текущий адрес команды и автоматически увеличивается на 1, 2 или 3 в зависимости от формата выполняемой команды.
4
DB (внутренняя) BD D(7-0) MUX W
Z
B
C
D
E
H
L
IR ACC
ALU
RS CU
SP(16) Микроприказы
PC RGA
DC
RG
BA A(15-0)
WR DBIN INTE INT HLDA HOLD WAIT READY SYNC CLK1 CLK2 RESET
Рис. 1.1
Указатель стека SP содержит текущий адрес вершины стека, который автоматически уменьшается на 2 при загрузке данных в стек и увеличивается на 2 при извлечении данных из стека. Для организации стека можно использовать любую область ОЗУ объемом до 64К. Микропроцессор имеет внешнюю 16-разрядную шину адреса A(15-0) с тремя состояниями, 8-разрядную двунаправленную шину данных D(7-0) с тремя состояниями, два вывода (CKL1 и CLK2) для фаз синхронизации, а также четыре входных и шесть выходных выводов управления: WR – сигнал “выдача” (напряжение L-уровня указывает на выдачу байта данных на шину D(7-0) для пересылки в ЗУ или УВВ); DBIN – сигнал “прием” (напряжение H-уровня указывает на прием с шины D(7-0) байта данных, выданного ЗУ или УВВ); INTE – сигнал “разрешение прерывания”; INT – сигнал “запрос на прерывание”; HLDA – сигнал “подтверждение захвата” (напряжение H-уровня указывает на перевод шин адреса и данных в третье состояние); HOLD – сигнал “захват” (напряжение H-уровня указывает на запрос от других системы на управление шинами системы); WAIT – сигнал “ожидание” (напряжение H-уровня указывает на состояние ожидания МП); READY – сигнал “готовность” для синхронизации МП с ЗУ или УВВ (напряжение H-уровня указывает на готовность данных на шине D(7-0) к вводу в МП или на готовность внешних устройств к приему данных);
5
К589ИР12
КР580ИК80А
SYNC – сигнал синхронизации (напряжение H-уровня указывает на начало каждого машинного цикла); RESET – сигнал сброса (устанавливает счетчик команд в нуль, сбрасывает триггеры разрешения прерывания и захвата шин). Длительность машинного такта равна периоду следования тактовых импульсов CKL1 и CLK2, задаваемому генератором CLG, а длительность машинного цикла составляет от трех до D(7 – 0) пяти машинных тактов. Операции, выполняемые МП в INTA WO машинном цикле, характеризуются 8STACK разрядным словом (байтом) состояния HLTA CLK1 процессора. Байт состояния выдается на OUT шину данных в такте Т2 каждого M1 INP машинного цикла. На рис.1.2 приведен CLK1 CLG MEMR пример фиксации слова состояния с помощью многорежимного буферного Рис. 1.2 регистра К589ИР12. Таблица1.1. Сигналы состояния процессора Обозначение сигнала
Разряд ШД
INTA
D0
Подтверждение прерывания; используется для стробирования приеме команды RST в МП из схемы прерывания
WO
D1
Запись; L-уровень сигнала указывает на запись данных из ЗУ или ВУ; H-уровень сигнала – запись в микропроцессор
STACK
D2
Стек; H-уровень сигнала указывает, что на шине адреса установлено содержимое SP
HLTA
D3
Подтверждение останова; H-уровень сигнала указывает на переход МП в состояние останова
OUT
D4
Вывод; H-уровень сигнала указывает, что на шине адреса установлен код ВУ и можно вывести данные из МП по сигналу DBIN=1
M1
D5
H-уровень сигнала указывает, что МП принимает первый байт команды
INP
D6
Ввод; H-уровень сигнала указывает, что на шине адреса установлен код ВУ и можно ввести данные в МП по сигналу DBIN=1
MEMR
D7
Чтение; H-уровень сигнала указывает, что осуществляется чтение содержимого ЗУ по адресу, установленному на шине адреса
Назначение сигнала при
В табл.1.1 приведены сигналы состояния процессора, а в табл.1.2 – разновидности машинных циклов.
6
Таблица 1.2. Разновидности машинных циклов Обозначение сигнала слова состояния процессора Машинный цикл Цикл M1 – выборка команды Цикл чтения из ЗУ Цикл записи в ЗУ Цикл чтения из стека Цикл записи в стек Цикл ввода Цикл вывода Цикл прерывания Цикл останова Цикл прерывания при останове
INTA 0
WO 1
STACK 0
HLTA 0
OUT 0
M1 1
INP 0
MEMR 1
0 0 0 0 0 0 1 0 1
1 0 1 0 1 0 1 1 1
0 0 1 1 0 0 0 0 0
0 0 0 0 0 0 0 1 1
0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 1 0 1
0 0 0 0 1 0 0 0 0
1 0 1 0 0 0 0 0 0
Эмуляторы для создания и отладки программ для микроЭВМ Эмуляторы – это инструментальные программы, работающие на универсальных ЭВМ и предназначенные для создания и отладки программ, написанных для специализированной микроЭВМ. Имеется большое число разнообразных эмуляторов для микроЭВМ на базе МП КР580. Создаваемая программа набирается на языке ассемблера микроЭВМ и после выявления и устранения синтаксических ошибок компилируется в машинный код микропроцессора КР580. В процессе отладки программ для специализированных микроЭВМ эмулятор обеспечивает выполнение следующих функций: • Ввода команд и данных с клавиатуры. • Отображение адресов ячеек памяти и их содержимого. • Отображение содержимого аккумулятора и других внутренних программно-доступных регистров (A, FL, B, C, D, E, H, L, SPH, SPL, PCH, PCL). • Отображение содержимого программного счетчика • Запуск программы в режимы выполнения по машинным циклам и по шагам команды.
7
Учебный микропроцессорный комплект на базе МП КР580 Учебный микропроцессорный комплект (УМК) это микроЭВМ на базе микропроцессора КР580. Он состоит из операционного устройства (ОУ), постоянного запоминающего устройства (ПЗУ), оперативного запоминающего устройства (ОЗУ) и устройства пошагового выполнения программ (рис.1.3).
Сброс
Прерывание
Работа/ шаг
ОЗУ Адрес
Команда/ цикл
ПЗУ
Данные
Устройство пошагового выполнения программ
Управл. сигналы
ОУ
Световая индикация
Шаг
Клавиатура
Дисплей
Рис.1.3 Пульт оператора состоит из клавиатуры, 6-разрядного дисплея, световой индикации и управляющих кнопок СБ (сброс), ПР (прерывание), ШГ (шаг), а также переключателей РБ/ШГ (работа/шаг) и К/Ц (команда/цикл). Клавиатура имеет 24 клавиши, из которых 8 клавиш директивные, а 16 – информационные. Директивные клавиши служат для вызова директив: П – чтение и изменение содержимого памяти; РГ – чтение и изменение содержимого регистров МП; СТ – передача управления программе пользователя; КС – определение контрольной суммы массива памяти; ЗК – заполнение массива памяти константой; ПМ – перемещение массива памяти в адресном пространстве; »_» – клавиша пробела служит для разделения нескольких переменных при вводе; ВП – выполнить, означает конец директивы. Информационные клавиши служат для ввода чисел в 16-ричном коде. Клавиши с 4/PH по Р служат для вызова идентификаторов регистров МП. При неправильной работе с клавиатурой в крайней правой позиции дисплея появляется знак “?”.
Порядок работы на УМК Индикация и изменение содержимого памяти. Нажмите последовательно клавиши П x1 x2 x3 x4 «_» d1 d2 … dN ВП, где x1 x2 x3 x4 – адрес ячейки памяти (четыре последние 16-ричные цифры, задаются с помощью информационных клавиш ); d1 d2 … dN – данные (задаются с помощью информационных клавиш).
8
Нажмите клавишу «_», на дисплее появится адрес ячейки памяти и ее содержимое. Для изменения содержимого индицируемой ячейки памяти наберите новое содержимое и нажмите клавишу «_» Индикация и изменение содержимого регистров. Нажмите клавишу РГ, а затем идентификатор регистра. Для изменения содержимого регистра наберите новое значение (2 цифры) с помощью информационных клавиш и нажмите клавишу «_». Для перехода к следующему регистру нажмите клавишу «_». Для завершения директивы нажмите клавишу ВП. Передача управления программе пользователя. Нажмите последовательно клавиши СТ АДРЕС1 «_» АДРЕС2 «_» АДРЕС3 ВП, где АДРЕС1 – начальный адрес программы; АДРЕС2 и АДРЕС3 – адреса выполнения прерывания программы (могут отсутствовать). Адреса АДРЕС1, АДРЕС2 и АДРЕС3 указывают первый байт команды. При передаче управления по адресу А1 происходит восстановление состояния регистров МП, определенное в момент последнего прерывания. При отсутствии параметра А1 управление передается по адресу, находящемуся в счетчике команд. Определение контрольной суммы массива памяти. Нажмите последовательно клавиши КС АДРЕС1 «_» АДРЕС2 ВП, где АДРЕС1 и АДРЕС2 – начальный и конечный адреса массива. Определяется контрольная сумма массива по модулю 256. Заполнение массива памяти константой.. Нажмите последовательно клавиши ЗК АДРЕС1 «_» АДРЕС2 D ВП, где D – байт данных. Попытка заполнения последних 54 ячеек ОЗУ разрушает стек монитора. Перемещение массива. Нажмите последовательно клавиши ПМ АДРЕС1 «_» АДРЕС2 «_» АДРЕС3 ВП, где АДРЕС1 и АДРЕС2 – начальный и конечный адреса перемещаемого массива ж АДРЕС3 – новый начальный адрес массива Прерывание выполнения программы пользователем. При нажатии кнопки ПР управление передается подпрограмме обработки прерываний, которая сохраняет состояние всех регистров процессора и передает управление монитору. Регистры сохраняются в стеке пользователя, а в случае отсутствия такового, в стеке монитора. На дисплее отображается содержимое счетчика команд, которое на единицу больше адреса последнего байта последней выполненной команды. После этого пользователь может использовать любую директиву. Выполнение прерванной программы возможно, начиная с адреса останова или любого другого адреса.
9
Пошаговое выполнение программы. Имеются два варианта пошагового режима: поцикловый и покомандный. В поцикловом режиме ОУ переводится в состояние ожидания при выполнении каждого рабочего цикла, а в покомандном режиме лишь при чтении первого байта команды. Для вызова пошагового режима: • установите переключатель РБ/ШГ в состояние ШГ (при этом подключается световая индикация); • переключателем КМ/ЦК выберите один из режимов работы; • передайте управление выполняемой программе. После этого световая индикация отобразит начальный адрес программы, данные по этому адресу и содержимое регистра состояния. Для выхода из этого режима выполните одно из следующих действий: нажмите кнопку СБ; установите переключатель РБ/ШГ в состояние РБ и нажмите кнопку ШГ.
1.3. Порядок выполнения лабораторной работы 1. Установить кнопку “~” в отжатое состояние, а переключатель РБ/Ш в состояние РБ. Подключить питание (сеть переменного тока 220В, 50Гц) и включить УМК, нажав кнопку “~”. Нажать кнопку СБ – в левой позиции дисплея должен появится знак “–”, что означает, что УМК готов к работе. 2. Исследовать содержимое памяти, нажимая на клавишу П. Освоить использование клавиш РГ и КС. 3. Освоить запись данных в ОЗУ. 4. Набрать и запустить программу, представленную табл. 1.3. Эта программа извлекает число из ячейки 0B00, инвертирует его и отправляет в ячейку 0B01 Таблица 1.3. Программа пересылки инвертированного числа Адрес
Машинный код
Мнемокод
Комментарий
0800
3A
LDA 0B00
0801 0802 0803 0804 0805 0806
00 0B 2F 32 01 0B
CMA STA 0B01
Загрузить аккумулятор содержимым ячейки ОЗУ с адресом 0B00 Младший байт адреса 0B00 Старший байт адреса 0B00 Инверсия содержимого аккумулятора (рег. А) Запомнить данные в аккумуляторе по адресу 0B01 Младший байт адреса 0B01 Старший байт адреса 0B01
5. Набрать и запустить простую программу, представленную табл. 1.4. Эта программа, аналогичная предыдущей, демонстрирует использование косвенной адресации.
10
Таблица 1.4. Программа пересылки с косвенной адресацией Адрес
Машинный код
0800 0801 0802 0803
21 00 0B 2F
MOV A, M
0804 0805 0806
32 01 0B
CMA INX M MOV M, A
Мнемокод
Комментарий
LXI H, 0B00 Загрузить в регистр H,L адрес 0B00
Младший байт адреса 0B00 Старший байт адреса 0B00 Переслать в аккумулятор число из ячейки с адресом, указанным в регистре H,L Инверсия числа в аккумуляторе Увеличить на 1 число в регистре H,L Записать число из аккумулятора по адресу, указанному в регистре H,L
6. Набрать и запустить простую программу, представленную табл. 1.5. Эта программа демонстрирует использование инкрементных, декрементных и логических команд. Таблица 1.5. Использование инкрементных, декрементных и логических команд Адрес МашинМнемокод Комментарий ный код
0800 0801 0802 0803
21 00 0B 2F
LXI H, 0B00 MOV A, M
0804 0805 0806 0807 0808 0809
3C 3D 87 A7 B7 BF
INR A DCR A ADD A ANA A ORA A CMP A
Загрузить в регистр H,L адрес 0B00 Младший байт адреса 0B00 Старший байт адреса 0B00 Переслать в аккумулятор число из ячейки с адресом, указанным в регистре H,L (A) ← (A) + 1; Инкремент аккумулятора (A) ← (A) – 1; Декремент аккумулятора (A) ← (A) + (A); Арифметическое сложение (A) ← (A) AND (A); Логическое умножение (И) (A) ← (A) OR (A); Логическое сложение (ИЛИ) (A) ← (A) – (A); Сравнение
1.4. Содержание отчета 1. Структурная схема микроЭВМ и описание функций эмулятора и УМК. 2. Табличное представление исследуемых программ. 3. Результаты вычислений в виде таблиц, отражающих содержание ячеек ОЗУ и регистровой памяти, после выполнения каждой команды. 4. Оценка длины программ в байтах и числа тактов, затрачиваемых на выполнение сложения и умножения.
11
Лабораторная работа 2. Исследование подпрограмм арифметических операций для микроЭВМ 2.1. Цель работы Исследование программ для выполнения арифметических операций с плавающей запятой на микропроцессоре К580ИК80.
2.2. Основные теоретические положения 2.2.1. Сложение целых N-байтных чисел Операции сложения и вычитания точных чисел не вносят погрешности в результат. Для чисел ограниченной точности справедливо следующее правило: граничная абсолютная ошибка Δг суммы или разности не превышает суммы граничных ошибок представления слагаемых [ 6 ]: Δг ( ∑i ± xi) = ∑i Δг (xi), где i=1…K. Это правило учитывает наихудший случай распределения ошибок округления слагаемых; когда ошибки не зависимы, и одного знака . При значительном числе слагаемых , полученных методом симметричного округления, происходит взаимная компенсация ошибок разного знака и истинная абсолютная ошибка суммы (разности) лишь в исключительных случаях близка к граничной. Поэтому во многих случаях используют оценку абсолютной среднеквадратической ошибки σ, для которой справедливо соотношение σ2 (∑i ± xi) = ∑i σ2 (xi). В 8-разрядных микропроцессорах разрядность операндов n=8N, где N – количество байтов в представлении числа ( N ≥ 1); N-байтное беззнаковое двоичное число X можно рассматривать как Nразрядное число в смешанной системе счисления с основанием 28=256 , где каждый байт Xi, i=1…N, кодирует соответствующую 256-ричную цифру. В основе программы сложения X+Y=Z лежит следующая вычислительная схема. Пусть X=(XN,…,X1) и Y=(YN,…,Y1) – N -байтные слагаемые ; Z=(ZN,…,Z1) – Nбайтная сумма. Тогда для формирования байта Zi осуществляется операция CYi × 28 + Zi = Xi + Yi+CYi -1,
12
для выполнения которой используется команда сложения с учетом переноса АDС. В этой операции CYi – значение переноса, вырабатываемая в i-м 256ричном разряде, причем CY0=0. В табл. 2.1 приведена подпрограмма сложения С8N целых двоичных чисел с фиксированной запятой без знака [ 6 ]. Таблица 2.1. Подпрограмма сложения целых двоичных чисел Адрес
0800 0801 0802
Машинный код
Мнемокод
53 C5 AF
MOV D, E PUSH B XRA A
0803 0804 0805 0806 0807
0A 8E 02 03 23
цикл :LDAX B ADC M STAX B INX B INX H
0808 0809 080A 080B
1D C2 03 08
DCR E JNZ цикл
080C 080D 080E
C1 5A C9
POP B MOV E,D RET
Комментарий
(D)-сохранение счетчика Сохранение адреса 1 CY=0 многобайтное двоичное сложение Сложение с учетом переноса
Увеличение адреса 1 Увеличение адреса 2 проверка конца цикла Зацикливание конец сложения Восстановление адреса 1 Восстановление счетчика Если CY=1, то переполнение
В этой программе : (В,C) – адрес младшего байта слагаемого 1 ; (H,L) - адрес младшего байта слагаемого 2 ; (Е)-количество байт N; (В,C) – адрес младшего байта суммы. 2.2.2. Умножение целых двоичных чисел с фиксированной запятой Микропроцессор К580ИК80 не имеет команды умножения, поэтому для реализации операции умножения требуется разработка специальных программ. Существует четыре основных схемы умножения, основанных на умножении множимого Х = хn-1 хn-2 … х1х0 на отдельные цифры уi множителя Y = yn-1 yn-2 … y1y0. Величина ЧПi = Х × yi называется частичным произведением. При умножении беззнаковых чисел произведение равно Z = X × Y = X × ∑i yi × 2i = ∑i ЧПi × 2i, где i=0,…, n-1.
13
Рассмотрим схему умножения, при которой умножение начинается со старших разрядов множителя и использует сдвиг суммы частичных произведений СЧП влево: СЧП i = СЧПi-1 × 2 + Х × yn-1, i=1 … n; СЧП0 = 0; Z = X × Y = СЧПn. Подпрограмма У88Б1 [ 6 ], приведенная в табл.2.2, выполняет умножение с фиксированной запятой в формате 8 × 8 = 16 для целых двоичных чисел без знака. Таблица 2.2. Подпрограмма умножения двоичных чисел с фиксированной запятой Адрес
0800
Машинный код
67
0801 0802 0803 0804 0805 0806
16 00 2E 00 06 08
0807 0808 0809 080A
29 8E 0C 08
080B 080C 080D 080E 080F 0810
19 05 07 08 C9
Мнемокод
Комментарий
MOV H, A (D)-сохранение счетчика Обнуление регистров (D),(L) MVI D, 0 Сохранение адреса 1 MVI L, 0 MVI B, 8
Счетчик циклов
Сдвиг множителя и текущей суммы ЧП влево
цикл : DAD H JNC пер
Если разряд множителя = 0
Сложение множимого с текущей суммой ЧП
DAD D
пер: DCR B JNZ цикл
Проверка конца цикла
RET
В этой программе: (А) – множитель; (Е) – множимое; (Н, L) – произведение.
2.3. Порядок выполнения работы 2.3.1. Сложение целых N-байтных чисел 1. Ознакомиться с программой сложения С8N. 2. Подготовить учебную микроЭВМ к работе. 3. Выполнить сложение чисел, заданных преподавателем в режиме покомандного выполнения.
14
4. Составить таблицу, отражающую содержание ячеек ОЗУ, представляющих байты слагаемых и суммы после выполнения каждой команды. 2.3.2. Умножение целых чисел с фиксированной запятой 1. Ознакомиться с программой умножения У88 Б1. 2. Ввести программу умножения и выполнить умножение чисел, заданных преподавателем в покомандном режиме. 3. Составить таблицу, отражающую содержимое регистров А, Е, Н, L после выполнения каждой команды.
2.4. Содержание отчета 1. Программы сложения и умножения. 2. Распределение памяти, включая регистровую. 3. Таблицы, отражающие содержание ячеек ОЗУ и регистровой памяти, представляющих байты слагаемых и суммы после выполнения каждой команды. 4. Оценка длины программ в байтах и числа тактов, затрачиваемых на выполнение сложения и умножения.
Лабораторная работа 3. Исследование программ для микроЭВМ с использованием стека и подпрограмм 3.1. Цель работы Исследование программ, использующих стек и подпрограммы.
3.2. Основные теоретические положения Сдвиг
МН(n)
Управление
CY
ММ(n)
+ Сдвиг
СЧП(n) Рис.3.1
Использование подпрограмм рассмотрим на примере программы умножения. Программа У24 [ 6 ] приведена в виде табл. 3.1 и реализует умножение по схеме, представленной на рис.3.1. Умножение начинается со старших разрядов множителя (МН), причем множимое и сумма частичных произведений (СЧП) в каждом такте умножения сдвигаются влево, а множимое (ММ) остается неподвижным. Формат умножения 16×8, т.е. множимое представлено двумя байтами, а множитель – одним байтом. Таблица 3.1. Программа умножения У24
15
Адрес 0800 0801 0802
Машинный код AF 67 6F
Мнемокод Комментарий XRA A MOV H, A MOV L, A Проверка сомножителей на 0 ADD C RZ Если множитель = 0 XRA A ORA D ORA E RZ Если множимое = 0 MOV A, C (А) – множитель MVI B, 8 Счетчик циклов Сдвиг текущей суммы ЧП и множителя вправо цикл: DAD H RAL JNC пер Если разряд множителя = 0 Сложение множимого с текущей суммой ЧП DAD D ACI Проверка конца цикла пер: DCR B JNC цикл Зацикливание RET
0803 0804 0805 0806 0807 0808 0809 080A
81 C8 AF B2 B3 C8 79 0608
080C 080D 080E
29 17 D21408
0811 0812
19 CE00
0814 0815 0818
05 C20C08 C9
Входные параметры программы: (С) – множитель, (D, E) – множимое. Выходные параметры: (A, H, L) – произведение. В процессе выполнения программы используются все регистры, сохраняются (С) и (D, E). Программа умножения У168, представленная табл. 3.2, позволяет получить произведение в сокращенном формате 16×8 = 16, не превышающем формат множимого. Программа У168 использует программу У24 в качестве подпрограммы. 24-разрядный результат работы У24 округляется по правилам симметричного округления до 16-разрядного формата. Таблица 3.2. Программа умножения У168 Адрес 0820 0821 0822
Машинный код CD 00 08
0823 0824 0825 0826 0827 0828 0829 082A
45 6C 67 78 17 D0 23 C9
Мнемокод CALL У24
Комментарий (A, H, L) – произведение
Округление результата MOV B, L (B) – МЛБ MOV L, H (L) – СРБ MOV H, A (H) – СТБ MOV A, B (A) – МЛБ RAL RNC Если СТР байта = 0 INX H (СТБ, СРБ) + 1 RET
В табл. 3.2 использованы сокращения: МЛБ – младший байт; СРБ – средний байт; СТБ – старший байт; СТР – старший разряд.
16
Таблица 3.3. Программа пересылки массива Адрес
Машинный код
0800 0801 0802
C5 D5 E5
0803 0804 0805 0806 0807 0808 0809 080A
1A 02 03 13 2B 7C B5 C210308
080D 080E 080F 0810
E1 D1 C1 C9
Мнемокод Комментарий Сохранение регистров в стеке PUSH B PUSH D PUSH H Непосредственная пересылка цикл: LDAX D STAX B Если множитель = 0 INX B INX D DCX H MOV A, H Если множимое = 0 ORA L (А) – множитель JNZ цикл Счетчик циклов Восстановление регистров POP H POP D POP B RET
Использование стека В табл. 3.3 приведена подпрограмма [6], демонстрирующая использование стека для перемещения массива данных из одной области ОЗУ в другую. Так как программа предназначена для случая, когда адрес начала массива-источника принадлежит области массива-приемника, пересылка начинается с младших разрядов. Параметры подпрограммы: (D, E) – адрес начала массива-источника; (B, C) – адрес начала массива-приемника; (H, L) – длина массива.
3.3. Порядок выполнения работы 1. Ознакомиться с программами умножения У88 Б1 и У168. 2. Ввести эти программы и выполнить умножение чисел, заданных преподавателем в покомандном режиме. 3. Составить таблицу, отражающую содержимое регистров после выполнения каждой команды. 4. Ввести подпрограмму, демонстрирующую использование стека для перемещения массива данных в ОЗУ. 5. Выполнить перемещение массива по заданию преподавателя.
3.4. Содержание отчета 17
1. Программы сложения, умножения и перемещения массива. 2. Распределение памяти, включая регистровую. 3. Таблица, отражающая содержание ячеек ОЗУ и регистровой памяти после выполнения каждой команды. 4. Оценка длины программ в байтах и числа тактов, затрачиваемых на их выполнение.
Лабораторная работа 4. Автоматизированный расчет разрядной сетки специализированной микроЭВМ 4.1. Цель работы Целью данной работы является освоения методики автоматизированного расчета разрядности входных данных, операндов и выходных данных специализированной микроЭВМ для обеспечения требуемой погрешности вычислений при минимуме аппаратных затрат
4.2. Основные теоретические положения Предполагается, что специализированная микроЭВМ (рис.4.1) предназначена для выполнения системы функциональных преобразований аналоговых сигналов yi = fi (x1, …, xn), i=1…m, причем заданы допустимые погрешности σдоп.i вычисления функций, а на их аргументы наложены ограничения: aj ≤ xj ≤ bj,, j = 1 … n. Вычисление значений функций fi осуществляется в соответствии с циклическим графиком с периодом T . В каждом цикле в момент времени t=0 запускаются процедуры преобразования и ввода аналоговых сигналов xj , j = 1 … n.
АЦПn
xn
ЦАП1
ym = fm(x1, …,xn) Рис. 4.1
18
•••
xn
y1 = f1(x1, …,xn)
x1 МикроЭВМ
АЦП1 •••
x1
ЦАПn
y1
ym
Цель расчета – определить тип АЦП (число разрядов nвх.j , j=1…n, погрешность АЦП), разрядность операндов nоп.i, а также тип ЦАП (число разрядов nвых.i , i=1…m, погрешность ЦАП), при которых достигается минимум аппаратных затрат, при условии выполнения требований к погрешности вычислений σр.i ≤ σдоп.i, i=1…m, где σр.i , σдоп.i – фактическая и допустимая погрешность вычисления функции fi, i=1…m. Предполагается, что заданы приведенные (относительные) среднеквадратические погрешности: методическая δм и датчиков δдат. Для расчета абсолютных погрешностей следует использовать соотношения: σм.i = |yi|max δм/100, i = 1…2; σдат.j = |xj|max δдат/100, j = 1…3. Абсолютные значения допустимых погрешностей следует рассчитывать по формуле σдоп.i = ⎢yi ⎢max δ доп.i / 100 , i =1…2. Учитывая большое число источников погрешности вычислений и случайный характер величины погрешности, создаваемой каждым источником, можно считать, что функция распределения результирующей погрешности имеет вид близкий к нормальному, а для оценки погрешности вычисления fi использовать среднеквадратическое значение, обозначаемое как σр.i. Тогда Δр.i. погрешности вычисления функции fi с максимальное значение вероятностью 0,997 не превосходит 3σр.i. Среднеквадратическую погрешность * вычисления fi можно оценить из условия баланса среднеквадратических погрешностей по формуле ** (1) σр.i2 = σм.i2 + σи.i2 + σт.i2 + σцап.i2, где σм.i – методическая погрешность, обусловленная приближенным характером алгоритма и численного метода, реализующего алгоритм вычисления fi; σи.i – инструментальная погрешность, обусловленная машинными округлениями в процессе выполнения арифметических операций; σт.i – трансформированная погрешность, т.е. вклад в общую погрешность σр.i за счет трансформации функциональной зависимостью yi = fi (x1,… ,xn) погрешностей получения и представления исходных данных (погрешности датчиков и АЦП); σцап.i – погрешность цифро-аналогового преобразования результатов вычисления yi, связанная с нестабильностью параметров ЦАП. *
Фактически речь идет об оценках среднеквадратических отклонений и дисперсий и соответствующих погрешностей. ** Не учитывается динамическая погрешность, обусловленная квантованием входных данных по времени и запаздыванием выдачи результатов на величину времени вычисления функций.
19
Для дальнейшего изложения введем функцию W(x,n), выражающую размер кванта при замене непрерывной величины x n-разрядным двоичным числом W(x,n) = x / (2n – 1). 2 Для оценки инструментальной погрешности используем формулу σи.i = 2 2 σокр.i + σвых.i , где σокр.i – погрешность округления; σвых.i – погрешность представления данных на выходе цифровой части ЭВМ. Погрешность 2 2 округления усечением равна σокр.i = wоп.i (lокр.i / 3), а для симметричного округления оценивается по формуле σокр.i2= wоп.i2 (lокр.i / 12), (2) где lокр.i – число округлений; wоп.i – вес младшего разряда операндов в единицах выходной величины yi , определяемый по формуле wоп.i = W(|yi|max, nоп.i). Для оценки погрешности округления усечением в формуле (2) нужно заменить константу 12 на 3. Разрядность nоп.i операндов определяется разрядностью АЛУ микроЭВМ и выбранным вариантом программной реализации арифметических операций. Конкретные значения nоп.i могут выбираться, например, из условия их кратности 8. Погрешность представления данных на выходе при симметричном округлении 0 при nвых.i ≥ nоп.i; W(|yi|max, nвых.i) / 12 ,
σвых.i =
(3)
где nвых.i – разрядность выходных данных (разрядность ЦАП). Для оценки погрешности округления усечением в формуле (3) нужно заменить 12 на 3 . Трансформированная погрешность оценивается по формуле
σ
2 Т .i
n
[ ]
(4)
= ∑ М 2 d ij ⋅ σ 2j , j =1
где σj - погрешность получения и представления аргумента xj; М[dij] – математическое ожидание значения частной производной d ij = ∂ f i / ∂ x j от
fi(x1,…,xn) по xj. 2
2
2
Погрешность получения и представления аргумента σj =σ дат.j + σ АЦП.j, где σдат.j – погрешность датчика и нормирующего усилителя, σАЦП.j –
20
погрешность аналого-цифрового преобразователя, причем погрешность АЦП σ2АЦП.j = σ2А.j + σ2вх.j, где σА.j – инструментальная погрешность АЦП, связанная с нестабильностью параметров аналоговой части АЦП, σвх.j – погрешность квантования по уровню. (x1, x2, x3) Пример. Порядок выполнения работы поясним на примере расчета 2 разрядной сетки для функций f1 (x1, x2, x3) = (x1+x2 )(x1+x3) и f2 (x1, x2, x3) = (x2 + x3) (x1 + x3), причем δдоп.1=0,4%; δдоп.2=0,2%; δм = 0,1%; δдат=0,5%; b1=10;
b2=20; b3=15.
Находим абсолютные значения погрешностей: σдоп.1 = |y1|max δдоп/100 = f1 (10, 20,15)×0,4 / 100 = 41; σм.1 = |y1|max δм/100 = f1 (10, 20,15)×0,1 / 100 = 10,25; σдоп.2 = |y2|max δдоп/100 = f2 (10, 20,15)×0,4 / 100 = 3,5; σм.2 = |y2|max δм/100 = f2 (10, 20,15)×0,1 / 100 = 0,875; σдат.1 = |x1|max δдат/100 = b1×0,5/100=0,05; σдат.2 = |x2|max δдат/100 = b2×0,5/100=0,1; σдат.3 = |x3|max δдат/100 = b3×0,5/100=0,075. Для оценки трансформированных погрешностей построим матрицу частных производных: [dij(x1, x2, x3)]2×3 =
2x1 + x3+ x22; 2 x2 (x1+ x3);
x1 + x22
x2 + x3;
x1 + x2 + 2x3
x1 + x3;
Для оценки математических ожиданий dij (i=1…2; j=1..3) предположим, что входные аргументы x1,…,x3 распределены независимо и равномерно в интервалах 0 ≤ x1 ≤ b1, 0 ≤ x2 ≤ b2 и 0 ≤ x3 ≤ b3. 4.3. Описание программы MPS1W и порядка выполнения работы С помощью алгоритма, представленного на рис. 4.2, использующего генератор случайных чисел Random с равномерным распределением в диапазоне [0,1], получим оценки математических ожиданий частных производных M[dij]]: [M[dij]]2×3 =
150 ; 250 ; 140 7.5 ; 12.5; 30
21
.
{Исходные данные для программы MPS1W}
Начало
Dij =0 (i =1…n; j =(1…m); N=0
xi =bi*Random (i =1…n)
Dij = Dij + dij(x1, …, xn)] ( i =1…n; j =1…m); N=N + 1 0
N > Nmax 1
M [dij ]= Dij / N ( i =1…n; j =1…m) Конец
Fun 2 {число функций} ARG 3 {число переменных} FUNRMS 0.4 0.2 {доп.погрешность} FUNMAX 10250 875 {макс.зн.выхода} FUNRND 6 5 {число округлений} ARGMAX 10 20 15 {макс. зн. входов} FUNDER {ср.зн. частных производных} 150 250 140 7.5 12.5 30 METRMS 0.1 {методическая погр.} DYNRMS 0.0 {динамическая погр.} SENRMS 0.05 {погрешность датчиков} END ***** Отчет: ************ Разрядность АЦП: 8 8 8 Разрядность операндов:8 16 Разрядность ЦАП: 8 8 Абсолютная ср.кв. погрешность: 31,006677 1,483100 Относительная ср.кв.погр. (%): 0,302504 0,169497 Рис. 4.3
Рис. 4.2
Для многовариантных расчетов разрядной сетки используем специальную программу MPS1W, работающую в среде Windows-95 и выше. Исходные данные для работы программы набираются в виде текстового файла, как показано на рис.4.3. Входной язык программы MPS1W использует следующие ключевые слова: FUN – для числа функций; ARG – для числа аргументов (переменных); FUNRMS – для относительной допустимой среднеквадратической погрешности функций; FUNMAX – для максимального значения функций (выходных переменных) ; FUNRND – для числа округлений; ARGMAX – для максимальных значений аргументов (входных переменных) ; FUNDER – для средних значений частных производных; METRMS – для относительной среднеквадратической методической погрешности; DYNRMS – для относительной среднеквадратической динамической погрешности; SENRMS – для относительной среднеквадратической погрешности датчиков. Ключевое слово END завершает описание исходных данных. Для записи комментариев в текст исходных данных используются фигурные скобки {}.
22
Главное меню программы содержит пункты: Файл, Синтаксис, Таблицы/Текст, Вычислить, Отчет, Справка. После открытия текстового файла с исходными данными, можно отредактировать его, а затем, используя режим Синтаксис, проверить синтаксическую правильность. Кнопка Таблицы/Текст позволяет переходить из режима Текст в режим Таблицы и обратно. Пример окна программы в режиме Таблицы приведен на рис.4.4. Файл
Таблицы / Текст
Синтаксис
Аналого-цифровой преобразователь
Разрядность операндов
АЦП.j
ОП.i
dSy.1/ dNацп.j
Nацп.j
dSy.i/ dNоп.i
Вычислить
Отчет
Справка
Цифро-аналоговый преобразователь
Nоп.i
ЦАП.i
dSy.i/ dNцап.i
Nцап.i
1
-0.03494
8
1
-8.88494
8
1
0.00000
8
2
-0.39045
8
2
0.00000
16
2
-0.27367
8
3
-0.06852
8
Симметричное округление
∨ для операндов ∨ для результатов
Общая погрешность Sy.i и ее составляющие Функция Sвх.i Sвм.i Sвых.i
Sдоп.i
Sy.i
1
6.96341
30.21465
0.00000
41.00000
31.00668
2
0.67288
0.87500
0.99055
1.75000
1.48310
Рис.4.4
Таблица Общая погрешность Sy.i и ее составляющие имеет столбцы: Функция – номер функции; Sвх.i – абсолютная среднеквадратическая погрешность получения и представления аргумента (σj); Sвм.i – абсолютная инструментальная погрешность (σи.i); Sвых.i – абсолютная погрешность представления данных на выходе цифровой части ЭВМ (σвых.i ); Sдоп.i – абсолютное значение допустимой погрешности (σдоп.i ); Sy.i – абсолютное значение погрешности (σр.i ). Таблица Аналого-цифровой преобразователь содержит столбцы: АЦПj – номер АЦП (номер входной переменной); Nацп.j – числом разрядов АЦП; dSy.i/ dNацп.j – частная производная от Sy.i по Nацп.j. Конкретные значения индекса i в столбце dSy.i/ dNацп.j зависят от того, погрешность Sy.i какой функции стремиться уменьшить пользователь. Для выбора интересующей функции следует выделить соответствующую клетку в последнем столбце таблицы Общая погрешность Sy.i и ее составляющие. В примере на рис.4.4 выделена функция 1, причем наибольшее влияние на уменьшение Sy.1 имеет переменная 2, поскольку dSy.1/ dNацп.2 = -0.39045, т.е. имеет наибольшее по абсолютной величине значение.
23
Таблица Разрядность операндов содержит столбцы: Опi, Nоп.i – номер и число разрядов операционного устройства для функции i; dSy.i/ dNоп.i – частная производная от Sy.i по Nоп.i (для оценки влияния Nоп.i на Sy.i). Таблица Цифро-аналоговый преобразователь содержит столбцы: ЦАП.i, Nцап.i – номер и число разрядов ЦАП для функции i; dSy.i/ dNцап.i – частная производная от Sy.i по Nцап.i (для оценкм влияния Nцап.i на Sy.i). Кнопка Вычислить служит для инициализации расчета погрешностей после модификации значений разрядности АЦП, ОП и ЦАП, а также после изменения режима округления. Кнопка Отчет инициализирует сохранение результатов расчета. Как показано на рис. 4.4, сохраняемый результат добавляется в конец текста задачи. В процессе выполнения работы следует выполнить несколько вариантов расчета для исследования зависимости составляющих общей погрешности, например, от разрядности операционной части. Таблица 4.1. Результаты расчета составляющих погрешности Sy.2 Nоп.2 Sвх.2 Sвм.2 Sвых.2 Sдоп.2 Sy.2 6
0.67288
9.00784
0.00000
1.75000
9.03293
7
0.67288
4.53258
0.00000
1.75000
4.58226
8
0.67288
2.38151
0.00000
1.75000
2.47474
9
0.67288
1.40972
0.99055
1.75000
1.84967
10
0.67288
0.87500
0.99055
1.75000
1.48310
12
0.67288
0.87500
0.99055
1.75000
1.48310
В качестве примера в табл. 4.1 приведены результаты расчета составляющих погрешности Sy.2 для рассмотренного выше примера при фиксированном значении Nцап.i =8 .
4.4. Содержание отчета 1. Таблицы результатов расчета погрешности Sy.i и ее составляющих (Sвх.i, Sвм.i, Sвых.i) для нескольких значений разрядности АЦП, операционного устройства и ЦАП. 2. Анализ результатов расчетов и выбор разрядной сетки при заданных допустимых значениях Sдоп.i.
24
СОДЕРЖАНИЕ Общие указания ………………………………………………………….. Библиографический список …..………………………………………… Лабораторная работа 1. Изучение средств разработки программ для микроЭВМ …………. 1.1. Цель работы …………………………………………………… 1.2. Архитектура микроЭВМ на базе микропроцессора КР580 и средства отладки программ ………………………………..….. 1.3. Порядок выполнения лабораторной работы ……………….. 1.4. Содержание отчета ……………………………………………. Лабораторная работа 2. Исследование подпрограмм арифметических операций для микроЭВМ …………………………………………. 2.1. Цель работы ……………………………………………………. 2.2. Основные теоретические положения …………………………. 2.3. Порядок выполнения работы ………………………………….. 2.4. Содержание отчета ……………………………………………… Лабораторная работа 3. Исследование программ для микроЭВМ с использованием стека и подпрограмм ……………………………………………… 3.1. Цель работы ……………………………………………………. 3.2. Основные теоретические положения …………………………. 3.3. Порядок выполнения работы ………………………………….. 3.4. Содержание отчета ……………………………………………… Лабораторная работа 4. Автоматизированный расчет разрядной сетки специализированной микроЭВМ ………………………………… 4.1. Цель работы ……………………………………………………. 4.2. Основные теоретические положения …………………………. 4.3. Описание программы MPS1W и порядка выполнения работы …………………………………………………………… …. 4.4. Содержание отчета ……………………………………………..
25
3 3 4 4 4 10 11 12 12 12 14 15 15 15 15 17 18 18 18 18 21 24
Редактор И.Н.Садчикова Сводный темплан 2003 г. Лицензия ЛР №020308 от 14.02.97 Подписано в печать
Б. кн.-журн.
Формат 60 x 84 1/16
П.л.1,625
Б.л. 0,812 Тираж 130
РТП РИО СЗТУ.
Заказ
Северо-Западный государственный заочный технический университет РИО СЗТУ, член Издательско-полиграфической ассоциации вузов СанктПетербурга 191186, Санкт-Петербург, ул.Миллионная, 5
26