
2 Разработка схемы электрической структурной
Рисунок 2 – Электрическая структурная схема микропроцессорного устройства на микропроцессорном комплекте КР580.
На рисунке 2 представлена структурная схема микропроцессорного устройства на микропроцессорном комплекте КР580.
Генератор тактовых импульсов (ГТИ) формирует две импульсные последовательности Ф1 и Ф2, необходимые для тактирования работы микропроцессора (рис. 3.4). Импульсы двух последовательностей не должны перекрываться во времени, должны иметь амплитуду 12 В.
Общий принцип функционирования микропроцессорного устройства заключается в следующем. Из микропроцессора на шину адреса выдается адрес очередной команды. Считанная по этому адресу из памяти (например, из ПЗУ) команда поступает на шину данных и принимается в микропроцессор, где она исполняется. В счетчике команд микропроцессора формируется адрес следующей команды. После окончания исполнения данной команды на шину адреса поступает адрес следующей команды и т. д. В процессе исполнения команды могут потребоваться дополнительные обращения к памяти для вызова в микропроцессор дополнительных байтов команды (в случае двух-, трехбайтовых команд), операндов или записи в память числа, выдаваемого из микропроцессора. Входные и выходные сигналы также поступают через шины данных, адреса и управления.
Буферы данных и буферы адреса обеспечивают связь центрального процессора с внешними шинами данных и адреса. Особенность буферов состоит в том, что в каждом разряде они используют логические элементы с тремя состояниями. В них, кроме состояний лог. 0 и лог. 1, предусмотрено еще третье состояние, в котором они имеют практически бесконечное выходное сопротивление и оказываются отключенными от соответствующих шин. Использование таких буферов позволяет процессору отключаться от внешних шин устройств, а также позволяет использовать одну и ту же шину данных как для приема данных (т. е. в качестве входной шины), так и для выдачи данных (т. е. в качестве выходной шины). Такое использование шины данных позволяет сократить число выводов микросхемы. [5],[7]
3 Построение алгоритма решения поставленной задачи
Исходные
данные для проектирования: входной
сигнал
длина входного сигнала 1 байт; длина
выходного сигнала 2 байта.
Таким
образом для входа сигнала будут
использованы два порта ввода-вывода, и
один порт ввода вывода будет использован
для вывода выходного сигнала
.
Беззнаковое число длинной 1 байт в десятичном виде может принимать значение от 0 до 255. Таким образом, если не ввести ограничения на входные сигналы то значение выходного сигнала M(t) может превысить 2 байта (в десятичном виде два байта представляют собой диапазон чисел от 0 до 65355). Также очевидно что в результате вычислений может получится не целое число с дробной частью равной 0,5.
Из выше сказанного следует, что в выходном сигнале должно хранится значение остатка (для этого необходимо в выходном сигнале выделить 1 бит под хранение остатка), и следует ограничить значение входных сигналов.
Под значение наличия остатка 0,5 в результате выделим старший бит старшего байта выходного сигнала. Таким образом для хранения целой части результата останется 15 бит(в десятичном виде – диапазон от 0 до 32767).
Вычислим ограничение на входной сигнал для случая, когда допустимые диапазоны входных сигналов для x(t) и y(t) одинаковые.
Пусть максимальное число диапазона равно s тогда
Решим уравнение для случая строгого равенства и округлим полученный результат до ближайшего целого значения
Таким образом получили, что значение входных сигналов не должно превышать 77.
Составим аналитически общий алгоритм решения поставленной задачи.
В программе будут использоваться 4 ячейки памяти ОЗУ, три из них – для хранения значения регистров(адреса 1000H, 1001H, 1002H), и одна – для хранения значения остатка(адрес 1003H).
В начале в программе должны осуществляться инициализация портов ввода вывода и вспомогательных ячеек(для этого используется директива EQU) .
Далее на стеке организуется очередь для опережающего входного сигнала y(t) (y(t) будет хранится в очереди).
Затем последовательно осуществляется ввод входных сигналов x(t), z(t). Входной сигнал x(t) будем хранить в регистровой паре DE, а входной сигнал z(t) сразу же будет использован для вычислений.
Далее
последовательно находим значения
,
(для этого вычисляем значения
,
и складываем их между собой).
При вычислении проверяем наличие остатка (в случае наличия остатка значений ячейки ОЗУ с адресом 1003H изменяем на 1).
Далее
вычисляем значение выходного сигнала
.
Затем формируем выходные байты, в Старшем байте, если значение ячейки ОЗУ с адресом 1003H равно 1, то присваиваем старшему биту значение 1, в противном случае оставляем его без изменения; и последовательно выводим старший и младшие байты выходного сигнала (блок схема алгоритма приведена в графическом материале).
Также в программе используется подпрограмма выполнения умножения двухбайтовых чисел (подпрограмма MUL). Для умножения в регистровую пару HL заносится множимое, в регистр A- множитель и вызывается подпрограмма MUL. Регистровая пара DE используется для хранения частичной суммы, а регистр B используется как счетчик (перед вызовом подпрограммы MUL необходимо сохранить значение регистра В в ОЗУ по адресу 1002H, регистровая пара DE сохраняется в самой подпрограмме).
Рисунок 3 – Блок-схема алгоритма