Курсовая работа: Разработка микропроцессорной системы
Очевидно, что демультиплексор активируется, когда происходит цикл обращения к внешним устройствам ( ) и хотя бы один из сигналов или равен нулю.
.
Сокращённая схема подключения устройств ввода\вывода изображена на рис. 3.
Общий вид МПС достигается совмещением рис. 1–3 на одном и соединением магистралей (шины данных, адреса и управления).
Рисунок 3. Проектирование устройств ввода\вывода
Разработка программного обеспечения
В соответствии с заданием программа разрабатывается на Ассемблере с использованием системы команд выбранного процессора.
Логически программа состоит из двух частей:
· основная часть программы для задания констант;
· программа обработки прерывания – получения входного шестнадцатибитного кода, выполнение математической операции и выдача шестнадцатибитного кода – результата математической операции:
. (1)
Интеграл и дифференциал
Интеграл и дифференциал считаются по приближённым формулам:
·
· .
В данных выражениях – период внешнего синхросигнала. В расчётах этот множитель участвовать не будет, а результат будет выдаваться пропорционально его значению.
Операция умножения восьмибитных чисел
В системе команд процессора Z80 нет операции умножения, поэтому умножение осуществляется с помощью операций сложения и сдвига. Операция умножения восьмибитных чисел в тексте программы выполнена в виде процедуры MUL8_8. В данной процедуре представлен один из вариантов умножения байтов – умножение младшими разрядами вперёд со сдвигом частичной суммы вправо.
Расположение операндов:
– множимое, – множитель, – двухбайтный результат, используется в качестве счётчика регистр L.
Операция умножения шестнадцатибитных чисел со знаком
Операция умножения шестнадцатибитных чисел построена на операции умножения восьмибитных чисел и выполнена в виде процедуры MUL16_16. Метод вычисления 32‑х битного результата представлен на рис. 4.
Рисунок 4. Схема умножения 16-битных чисел
Т.к. входной код, равно как и константы, могут быть отрицательным числом, записанным в дополнительном коде, необходимо контролировать знак произведения. При этом все отрицательные сомножители входят в произведение по модулю, а знак произведения изменяется на противоположный, если сумма минусов, стоявших перед сомножителями, равна 1 (младший бит равен 1).
Расположение операндов в памяти:
– множимое, – множитель, причём коэффициент всегда располагается на месте множителя.
Четырёхбитный результат помещается в память, начиная с адреса, указанного перед процедурой в парном регистре H-L.
Контроль знаков
Поскольку коэффициенты ПИД-регулятора по заданию постоянны, то нет смысла хранить их со знаком и при каждой операции умножения заново выделять знак и инвертировать при необходимости. Целесообразно хранить модули коэффициентов в одних ячейках памяти (KP, KI, KD), а знаки – в специальной ячейке памяти (далее «знаковой ячейке»), устройство которой представлено на рис. 5. Старшая тетрада является незначащей. Младшие четыре бита отвечают за отрицательность соответсвующего элемента, причём 1 означает, что соответсвующий коэффициент изначально отрицательный. В изображённом случае все коэффициенты положительны, кроме KP. Биты трёх коэффициентов остаются постоянными с момента запуска программы.
Рисунок 5. Организация знаковой ячейки
Значение же коэффициента E () изменяется не только при поступлении нового значения. Эта ячейка отвечает также за знак разности при приблизительном подсчёте дифференциала. Поэтому дифференциал целесообразно считать в последнюю очередь.