МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ  РЕСПУБЛИКИ КАЗАХСТАН

Некоммерческое акционерное общество

Алматинский университет энергетики и связи

 

О.Т. Шанаев

ЦИФРОВЫЕ СИСТЕМЫ. МОДЕЛИРОВАНИЕ

 Учебное пособие

 

Алматы 2013

УДК 681.3.06

ББК 32.973.202 Я73

Ш20  Цифровые системы. Моделирование;

Учебное пособие / Шанаев О.Т. Алматы: АУЭС, 2013. – 82 с.

 

ISBN 978-601-7327-45-3

 

В первой и второй частях учебного пособия излагаются математические и структурные основы цифровых систем. Также описаны различные структурные принципы построения устройств памяти, применяемые в производстве соответствующих микросхем.

Изложению структуры микропроцессоров и основных структурных принципов построения микропроцессорных систем посвящена третья часть учебного пособия, где на примере микропроцессора Intel 8085 и соответствующей микропроцессорной системы, рассматриваются структурные компоненты и принципы организации работы микропроцессоров и микропроцессорных систем.

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

Пятый раздел учебного пособия посвящен рассмотрению возможностей практической реализации общих принципов построения микропроцессорной системы, на примере разработки модели такой системы, разработанной в программной среде схемотехнического  моделирования  Electronics Workbench, предназначенной для моделирования и анализа электрических схем.

Ил. 41, табл. 35, библиогр. 10 назв.

ББК 32.973.202 Я73 

РЕЦЕНЗЕНТЫ:

АУЭС, д-р. физ-мат. наук, профессор С.Б. Бимурзаев

КазНТУ, канд. тех. наук, доцент, А.К. Шайхин

                 

Печатается по плану издания Министерства образования и науки Республики Казахстан на 2012 г.

 

ISBN 978-601-7327-45-3

 

© НАО “Алматинский университет энергетики и связи”, 2013 г.

Введение

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

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

В цифровых системах, называемых системами с гибкой логикой, изменение алгоритма работы осуществляется путем установки новой программы работы системы. Примером таких систем являются микропроцессорные системы (МПС), в число которых входит и компьютеры. “Универсальность” таких систем достигается за счет ее аппаратной избыточности, что, соответственно, отрицательно сказывается на скорости работы всей системы и удорожает ее.

При разработке сложных цифровых систем (в том числе и МПС) учитываются два взаимосвязанных и взаимообусловленных фактора: конструирование аппаратной части системы (hardware), обеспечивающей физическую реализацию решения поставленной задачи, и определение системы команд (software), позволяющего составить программу действий и взаимодействий функциональных компонентов системы по решению задачи. Следовательно, для получения наиболее полного знания о современных цифровых системах требуется освоение как принципов их аппаратного построения, так и принципов реализации различных программных структур.

В первой части учебного пособия излагаются математические основы цифровых систем, в частности, приводятся оригинальные методы кодовых преобразований, применяемые автором на практике. Во второй части описываются принципы построения и работы различных типов комбинационных и последовательностных устройств, составляющих структурную основу  цифровых систем, и приводятся практические примеры их оригинального использования. Здесь же описаны различные структурные принципы построения устройств памяти, применяемые в производстве соответствующих микросхем.

Изложению структуры микропроцессоров и основных структурных принципов построения микропроцессорных систем посвящена третья часть учебного пособия, где на примере микропроцессора Intel 8085 и соответствующей микропроцессорной системы, рассматриваются внутренние составные компоненты, сигналы управления, система команд и общий порядок организации работы микропроцессоров и принципы построения микропроцессорных систем.

В четвертой части учебного пособия описываются различные программные структуры, составленные на основе применения разнообразных (по размеру и по способу адресации) команд и предназначенных для организации работы микропроцессорной системы на основе микропроцессора Intel 8085. Также здесь рассматриваются воможности применения соответствующего программного симулятора (8085 Simulator IDE) и его инструментального набора для проверки работоспособности предлагаемых программ.

Пятый раздел учебного пособия посвящен рассмотрению возможностей практической реализации общих принципов построения микропроцессорной системы, на примере разработки модели такой системы, разработанной в программной среде схемотехнического  моделирования  Electronics Workbench, предназначенной для моделирования и анализа электрических схем.

Данное учебное пособие составлено на основе многолетней педагогической деятельности автора и предназначено студентам, обучающимся по специальности 5В070400 – Вычислительная техника и программное обеспечение.

 

1 Математические основы цифровых систем

1.1  Двоичные коды

Работа цифровых систем осуществляется посредством обработки логической информации или физических величин, представленных двоичными кодами. Другими словами, арифметические и логические операции, выполняемые в цифровых системах, осуществляются в двоичной системе счисления.

Двоичная система счисления, применяемая в цифровых системах, относится к позиционным системам счисления. Следовательно, как для представления чисел в двоичной системе счисления, так и при выполнении арифметических операций над числами, представленными в этой системе счисления, применяются соответствующие принципы, привычной нам, десятичной системы счисления, которая также относится к позиционным системам счисления. Поэтому при дальнейших пояснениях относительно двоичной системы счисления, будем исходить из аналогичных положений, применяемых в десятичной системе счисления.

В десятичной системе счисления для представления любых чисел используются десять символов (0 … 9), поэтому она и называется десятичной и основанием этой системы является число 10. Каждому разряду числа, представленного в позиционной системе счисления, назначается определенный вес, выражаемый степенью (соответствующей номеру разряда) основания системы (при этом необходимо иметь в виду, что нумерация разрядов начинается с нуля). Следовательно, вес самого младшего (нулевого) разряда десятичного числа – 1 (100), вес следующего (первого) разряда – 10 (101), вес второго разряда – 10 (102) и т.д. Значение символа, размещенного в определенном разряде числа, выражает количество повторения веса этого разряда в значении представленного числа. Поясним сказанное следующим примером:

.

Итак, в составе представленного числа содержатся 7 единиц, 5 сотен, 3 тысячных, а десятков нет (0).

В двоичной системе счисления для представления числа используются два символа (0 и 1) и соответственно, вес разряда выражается степенью двойки. В этом случае вес самого младшего (нулевого) разряда десятичного числа – 1 (20), вес следующего (первого) разряда – 2 (21), вес второго разряда – 4 (22) и т.д. Значение символа (0 или 1), размещенного в определенном разряде числа, выражает учитываемость веса этого разряда в значении представленного числа. Сказанное поясняет следующий пример:

.

В составе этого числа содержатся единица, двойка и восьмерка (1), а четверки нет (0).

1.1.1 Преобразования десятичных чисел.

Для обработки в цифровой системе числа, представленного в привычной нам десятичной системе счисления, необходимо представить его в виде соответствующего двоичного кода. Представим предлагаемую в соответствующей литературе методику такого преобразования. По этой методике преобразуемое десятичное число и последующие частные последовательно делятся на два (т.е. на основание новой системы счисления) до получения нулевого значения частного. Остатки, полученные в результате последовательных делений и записанные в порядке, обратном их получению, дают двоичный код искомого числа (данную методику определения двоичного кода десятичного числа назовем методом деления). В качестве примера покажем процесс получения двоичного кода, соответствующего десятичному числу 75:

7510 = 10010112.

Разумется, представленным способом можно получить двоичный код любого десятичного числа. Но автор не считает этот способ легко реализуемым и единственным способом: во-первых, последовательно осуществляемые операции деления занимают достаточно продолжительное время (например, попробуйте получить этим способом двоичный код десятичного числа 1000); во-вторых, из-за продолжительности последовательно выполняемых операций деления вероятность совершения ошибок тоже увеличивается. С целью избавления от перечисленных недостатков представленного способа, автор предлагает свои способы получения двоичного кода десятичного числа, используемые им на практике.

Опишем порядок получения двоичного кода десятичного числа по первому способу (в качестве иллюстративного примера используем то же самое число 75):

-         сначала определяется (и записывается) значение числа, выражаемого максимальной степенью двойки (степени основания системы счисления) в пределах искомого десятичного числа (6410 = 26 = 10000002, это число, для удобства дальнейшего пояснения, назовем кодом первого шага);

-         на следующем шаге определенное на первом шаге число вычитается от исходного преобраземого числа (75 – 64 = 11) и относительно полученного результата вычитания выполняется действие, аналогичное действию первого шага, т.е. определяется значение числа, выражаемого максимальной степенью двойки в пределах результата вычитания (810 = 23 = 10002, это число назовем кодом второго шага);

-         аналогично продолжая описанные действия, достигаем значения числа, код которого нам известен (11 – 8 = 3, 310 = 112);

-         складывая между собой коды различных шагов, получаем двоичный код искомого десятичного числа:

.

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

В некоторых случаях может оказаться удобным применение другого способа получения двоичного кода десятичного числа. Например, определение двоичного кода числа 1000 описанным выше способом (методом сложения) растягивается на шесть шагов (512 + 256 + 128 + 64 + 32 + 8). Искомо число ближе к 1024 (210), чем к 512, поэтому возникает мысль, что в данном случае было бы легче вычесть код числа 24 из кода числа 1024. Но операция вычитания, выполняемая между соответствующими двоичными кодами этих чисел (10000000000 и 11000 соответственно), не относится к легко реализуемым операциям (из-за необходимости применения поразрядных заемов). Но в то же время заметим, что двоичный код числа 1023 представляется через 10 единиц (1111111111) и вычитание из него 10111 (код числа 23) весьма легко выполняется:

.

Данный способ получения двоичного кода десятичного числа (назовем этот способ методом вычитания) удобно применять в случаях, когда значение искомого десятичного числа немного меньше ближайшего числа, выражаемого степенью двойки. Получение двоичного кода десятичного числа методом вычитания осуществляется в следующем порядке:

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

-         вычисляется разница между выбранным на первом шаге числом (в качестве первого приближения) и искомым числом. Далее путем применения одного из предложенных способов (метода сложения или вычитания) определяется код полученного результата (разницы);

-         и, наконец, путем вычитания кода разницы из кода числа, принятого в качестве первого приближения, определяется двоичный код искомого десятичного числа.

Обратное преобразование, т.е. определение десятичного значения по представленному его двоичному коду, осуществляется путем сложения весов значимых разрядов (т.е. с единичными значениями) этого кода:

1101100012 = 28 + 27 + 25 + 24 + 20 = 256 + 128 + 32 + 16 + 1 = 43310.

Цифровые системы работают с двоичными числами, но для пользователя работа (например, при определении машинного кода программы, первоначально составленного на языке Ассемблер, или для представления констант, необходимых для работы программы) с этими числами является весьма затруднительной задачей. В таких случаях используется шестнадцатеричная система счисления. В соответствии с названием системы, для представления чисел в этой системе счисления используются 16 символов (1 … 9, A, B, C, D, E, F).

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

-         сначала определяется двоичный код десятичного случая;

-         затем символы в полученном двоичном группируются по четыре, начиная с младших разрядов;

-         последовательная записью шестнадцатеричных символов, соответствующих кодам каждой группы, определяется шестадцатеричный код искомого десятичного числа.

Описанную методику иллюстрирует следующий пример:

.

1.1.2 Арифметические операции над двоичными числами.

Операция сложения двоичных чисел осуществляется аналогично тому, как это осуществляется в десятичной системе счисления:

.

Операции вычитания между двоичными числами осуществляются путем сложения этих чисел в дополнительном коде. Дополнительный код положительного числа совпадает с его прямым кодом, а отрицательного числа получается путем инвертирования значений разрядов искомого двоичного числа и добавления к нему единицы. При этом значение последнего разряда числа, представленного в дополнительном коде, определяет знак числа: 0 – положительный знак, 1 – отрицательный знак. Процесс выполнения операции вычитания проиллюстрируем двумя примерами:

.

Операции умножения в цифровых системах выполняются программным путем или с помощью специального устройства (аппаратного умножителя). Относительно операции деления можно сказать то же самое.

1.2            Логические функции

1.2.1     Основные функции.

Значения сигналов на входах и выходах цифровых (логических) устройств характеризуются двумя уровнями напряжений, называемых лог.0 и лог.1. Эта особенность логических устройств позволяет использовать для их проектирования принципы алгебры логики (или алгебры Буля).

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

Одноаргументная функция НЕ инвертирует значение ее аргумента (см. таблицу 1.1) и часто называется инверсией (inversion – отрицание). Эта функция выражается выражением Y=.

Т а б л и ц а 1.1

Х

0

1

1

0

 

 

Многоаргументная функция ИЛИ выдает 0 только в случае, когда все аргументы принимают значение 0, а в остальных случаях (т.е. в случаях, когда хотя бы один из аргументов принимает значение 1) (см. таблицу 1.2). Эта функция называется дизъюнкцией (disjunction) или логическим сложением (logical addition) и описывается выражением Y=Х1Х0.

Т а б л и ц а 1.2

Х1

Х0

Х1Х0

0

0

0

0

1

1

1

0

1

1

1

1

 

 

 

Многоаргументная функция И выдает 1 только в случае, когда все аргументы принимают значение 1, а в остальных случаях (т.е. в случаях, когда хотя бы один из аргументов принимает значение 0 (см. таблицу 1.3). Эта функция называется конъюнкцией (conjunction) или логическим умножением (logical multiplication) и описывается выражением Y= Х1Х0 (или Х1Х0).

Т а б л и ц а 1.3

Х1

Х0

Х1Х0

0

0

0

0

1

0

1

0

0

1

1

1

 

 

 

 

Ввиду того что с помощью функций НЕ, ИЛИ, И можно описать любую сложную функцию, они составляют функционально полный набор (core set).

1.2.2     Универсальные функции.

Кроме функций НЕ, ИЛИ, И, совместно составляющих функционально полный набор, существуют две функции, каждая из которых также  составляет функционально полный набор, это – функции ИЛИ-НЕ и И-НЕ. Функцию ИЛИ-НЕ также называют функцией Пирса, а функцию И-НЕ – функцией Шеффера. Они описываются выражениями  и  соооответственно, и логика их работы представлена в таблице 1.4.

Т а б л и ц а 1.4

Х1

Х0

0

0

1

1

0

1

0

1

1

0

0

1

1

1

0

0

 

 

 

 

1.2.3     Функции эквивалентности и неэквивалентности.

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

Т а б л и ц а 1.5

Х1

Х0

0

0

0

1

0

1

1

0

1

0

1

0

1

1

0

1

 

 

 

  

1.3            Законы и соотношения алгебры логики

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

Т а б л и ц а 1.6

Законы

Коммутативный (commutativity) закон

Х1Х0 = Х0Х1

Х1Х0 = Х0Х1

Ассоциативный (associativity) закон

Х2(Х1Х0) = (Х2Х1)Х0

Х2 (Х1Х0) = (Х2Х1)Х0

Дистрибутивный (distributivity) закон

Х2Х1Х1Х0 = Х1(Х2Х0)

2Х1)(Х1Х0) = Х1(Х2Х0)

Закон де Моргана

Соотношения

X0 = X

X0 = 0

X1 = 1

X1 = X

XX = X

XX = X

X = 1

X = 0

X1X1X0 = X1

X1(X1X0) = X1

X1X0 = X1X0

X1(X0) = X1X0

 

Эти законы и соотношения симметричны, т.е. они имеют как дизъюнктивные, так и конъюнктивные формы. Некоторые из этих законов подобны соответствующим законам классической алгебры, поэтому их достоверность не вызывает сомнений. Что касается законов и соотношений, не типичных для классической алгебры, то в их достоверности можно убедиться путем подстановки различных значений (0 и 1) аргументов в соответствующие выражения.

1.4            Сложные функции

1.4.1     Формы представления сложных функций.

Функция устройства, в большинстве случаев, задается в табличном виде. Разумеется, она может быть представлена и в виде соответствующего словесного описания логики работы устройства, в таком случае на основе словесного описания устройства составляется соответствующая таблица. Итак, считаем, что логика работы устройства задана в табличном виде. Опишем порядок составления логического выражения на примере устройства, логика работы которого задана таблицей 1.7.

Т а б л и ц а 1.7

X2

X1

X0

Y

0

0

0

0

0

0

1

1

0

1

0

0

0

1

1

1

1

0

0

1

1

0

1

1

1

1

0

0

1

1

1

1

 

Имеются два способа составления логического выражения таблично заданной функции: в виде дизъюнкции конъюнкций и в виде конъюнкции дизъюнкций. Соответствующие формы записи логического выражения называются дизъюнктивной и конъюнктивной формами. Будем описывать их параллельно.

Составление логического выражения по первому способу, т.е. в дизъюнктивной форме, осуществляется в следующем порядке:

-         для наборов аргументов, где функция (Y) принимает единичное значение, записываются соответствующие конънкции, т.е соответствующие логические произведения  аргументов;

-         при записи соответствующих конънкций (они называются конъюнктивными термами) аргументы с единичными значениями представляются в прямом виде, а аргументы с нулевыми значениями – в инверсном виде;

-         записанные конъюнктивные термы объединяются дизъюнкцией.

Таким образом, получаем следующее логическое выражение таблично заданной функции:

.

(1.1)

Составление логического выражения по второму способу, т.е. в конъюнктивной форме, осуществляется в следующем порядке:

-         для наборов аргументов, где функция (Y) принимает нулевое значение, записываются соответствующие дизънкции, т.е соответствующие логические суммы  аргументов;

-         при записи соответствующих дизънкций (они называются дизъюнктивными термами), аргументы с нулевыми значениями представляются в прямом виде, а аргументы с единичными значениями – в инверсном виде;

-         записанные дизъюнктивные термы объединяются конъюнкцией.

Составленное этим способом логическое выражение устройства выглядит следующим образом:

.

(1.2)

1.4.2     Минимизация логических выражений.

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

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

Ниже представлены все осуществленные преобразования для выражений (1.1) и (1.2) соответственно.

Для выражения (1.1):

Для выражения (1.2):

Опишем минимизацию логической функции с помощью карты Карно. Карта Карно – особый способ табличного представления функции, по которой весьма удобно (и наглядно) осуществляется минимизация логической функции. Карта Карно, составленная для предсталенной функции, представлена на рисунке 1.1.

 

 

X1

X2

0

6

1

7

1

5

1

4

0

2

1

3

1

1

0

0

 

X0

Рисунок 1.1

Соседние термы на карте Карно разполагаются, в буквальном смысле, по соседству: в представленной карте видно, что 1-, 3-, 5-, 7-ячейки можно объединить, в результате которого остается только X0, а также видно, что 4-ячейку можно объединить только с 5-ячейкой. На рисунке 1.2 представлен вид карты Карно для функции со четырьмя аргументами.

 

 

X2

 

X3

12

13

9

8

14

15

11

10

X1

 

6

7

3

2

4

5

1

0

 

 

X0

 

Рисунок 1.2

В составе программы программы Electronics Workbench имеется специальный преобразователь (Logic Converter), который позволяет получить логическое выражение таблично заданной функции в полной и минимизированной форме (см.рисунок 1.3).

Рисунок 1.3

2 Структурные основы цифровых систем

Устройства, входящие в состав цифровых систем, делятся на два типа, называемые комбинационными и последовательностными. К комбинационным устройствам относятся устройства, выходной сигнал (или выходные сигналы) которых определяется текущими значениями их входных сигналов, а выходной сигнал (или выходные сигналы) последовательностных устройств определяется не только их входными сигналами, но и зависит от предыдущего состояния устройства, т.е они обладают свойством памяти.

2.1            Логические элементы

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

Логические элементы – устройства, предназначенные для реализации логических функций. На рисунке 2.1 представлены условно-графические обозначения логических элементов, реализующих рассмотренные ранее логические функции.

 

NOT

OR

AND

NOR

NAND

XOR

XNOR

Рисунок 2.1

Логические элементы характеризуются своим быстродействием, которое характеризует быстроту изменения его состояния. На рисунке 2.2 представлена временная диаграмма процесса прохождения сигнала прямоугольной формы через элемент НЕ.

Рисунок 2.2

Здесь видна определенная задержка изменения выходного сигнала относительно изменения входного сигнала. По измерениям, проведенным в системе моделирования  Electronics Workbench, длительность этой задержки составляет порядка 10 ns, что соответствует аналогичному параметру элементов, изготовленных по технолргии ТТЛ. На устройства, работающие со статическими сигналами, такая задержка не оказывает влияния, но в некоторых случаях (например, в последовательностных устройствах), задержка прохождения сигнала может оказать серьезное влияние на работу устройства и его необходимо учитывать. С целью иллюстрации действия задержки рассмотрим логическую сумму двух сигналов, параллельно поданных на входы двух элементов ИЛИ (см. рисунок 2.3). Как показано на схеме, один из сигналов подается на вход второго элемента через два элемента НЕ, что обеспечивает соответствующую задержку.

Рисунок 2.3

В идеальном случае, т.е. при отсутствии задержек на элементах НЕ, сигналы на выходах (OUT1 и OUT2) соответствующих элементов были бы одинаковы (см. рисунок 2.4, a). Эта диаграмма получена с помощью логического анализатора (Logic Analyzer) из состава системы моделирования  Electronics Workbench, которому свойственна некоторая инерционность.

 

a

b

Рисунок 2.4

На диаграмме, полученной с помощью чувствительного осциллографа (см. рисунок 2.4, b), видны паразитные импульсы, возникшие из-за влияния задержки сигнала (продолжительностью 20 ns) на элементах НЕ. Появление таких паразитных импульсов в составе выходного сигнала может отрицательно повлиять на работу устройства, подключаемого на этот выход, из-за чего возникает необходимость их исключения.

Задержку сигнала на элементах можно использовать и с пользой. Например, для формирования узкого сигнала (продолжительностью 10 ns) от каждого нажатия отдельной клавишы (изменения ее состояния) клавиатуры, можно использовать схему на рисунке 2.5.

 

a

b

Рисунок 2.5

2.2            Комбинационные устройства

Разработка схемы комбинационного устройства осуществляется поэтапно, т.е. путем последовательного выполнения следующих действий:

-       на основе словесного пояснения к разрабатываемому устройству составляется соответствующая таблица истинности;

-       на основе табличных данных записывается соответствующее логическое выражение;

-       в случае необходимости (и возможности) полученное логическое выражение минимизируется;

-       производится преобразование полученного минимизированного выражения к виду, составленному на основе запланированного базовового набора элементов (core set);

-       по конечному логическому выражению осуществляется построение схемы устройства.

Первые три этапа приведенного порядка разработки комбинационного устройства были рассмотрены ранее (в разделе 1.4), остается только построение схемы на основе определенного базового набора элементов. Cхема устройства (заданного таблицей 1.7), построенная на основе элементов НЕ, И, ИЛИ, представлена на рисунке 2.6, a.

a

b

Рисунок 2.6

На практике часто возникает необходимость построения схемы устройства на основе однотипных элементов (например, на основе элементов И-НЕ). В таких случаях производится соответствующее преобразование логического выражения (4-этап) по закону де Моргана:

Соответствующая этому выражению схема устройства представлена на рисунке 2.6, b.

2.3            Типовые комбинационные узлы цифровых систем

Разработка цифровых систем, как правило, осуществляется на основе отдельных типовых функциональных узлов. Функциональные узлы цифровых систем, в общем виде, делятся на комбинационные и последовательностные устройства. В этом разделе будут рассмотрены структурные принципы построения и порядок работы типовых комбинационных узлов (шифратор, дешифратор, мультиплексор, демультиплексор, сумматор) цифровых систем.

2.3.1     Шифраторы.

Шифратор (Coder) – устройство, формирующее двоичный код, соответствующий поступившему сигналу (т.е. соответствующий входу, на который поступил сигнал), т.е. он преобразует унитарный код в позиционный код. В качестве примера рассмотрим порядок построения схемы восьмивходового (X7 … X0) шифратора. В соответствии с числом входов (8), он должен формировать трехразрядный код (C2 … C0, CODE) и сигнал квитирования (O, OUT), посредством которого осуществляется запись сформированного кода в буфер памяти. Организация работы отдельных функциональных узлов цифровой системы, как правило, осушествляется в мультиплексном режиме (т.е. по очереди) с помощью соответствующих сигналов инициализации. Соответствующий вход сигнала инициализации (I, Initialization) должен быть и в нашем шифраторе. Необходимо учесть, что в качестве активизирующего уровня сигнала инициализации (также и квитирования), как правило, принимают нулевой уровень. Для практической реализации шифратора желательно, чтобы активизирующий уровень сигналов, поступающих на информационные входы шифратора, также был нулевым.

Приведенное словесное описание шифратора предоставляет достаточно сведений для составления таблицы истинности (см. таблицу 2.1) этого устройства.

Т а б л и ц а 2.1

I

Xi

C2

C1

C0

O

0

0

0

0

0

0

1

0

0

1

0

2

0

1

0

0

3

0

1

1

0

4

1

0

0

0

5

1

0

1

0

6

1

1

0

0

7

1

1

1

0

1

*

0

0

0

1

 

На основе табличных данных можно написать логические выражения для соответствующих выходов шифратора:

;

;

;

.

Эти выражения сначала были написаны в дизъюнктивной форме, а затем преобразованы ( по закону де Моргана) к виду, предназначенному для построения схемы с помощью элементов И-НЕ. Одним из преимуществ построения схем на основе элементов И-НЕ является то, что они обладают более высоким быстродействием (это определяется их внутренней структурой) по сравнению с другими типами элементов. На рисунке 2.7, a представлена схема шифратора, построенная на основе полученных логических выражений.

Шифраторы на схемах цифровых систем, в состав которых они входят, изображаются условно-графическим обозначением (см. рисунок 2.7, b). На рисунке 2.7, c приведен результат оформления построенной ранее схемы шифратора в виде подсхемы (Subcircuit), созданной с использованием возможностей программы Electronics Workbench (выводы этой подсхемы размещены в соответствии с их расположением в разразработанной схеме).

               

   a

b

c

Рисунок 2.7

Разработанная выше схема шифратора обладает некоторым недостатком, который заключается в том, что в случае наличия двух информационных сигналов формируется код, не относящийся ни к одному из поступивших сигналов. С целью исключения таких случаев, микросхемы шифраторов (например, микросхема 74148) выпускаются на производстве в виде приоритетных шифраторов, т.е. они формируют код, соответствующий старшему по приоритету сигналу.

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

Рисунок 2.8

2.3.2     Дешифраторы.

Дешифратор (Decoder) – устройство, формирующее сигнал на выходе, соответствующем поступившему входному коду сигналу, т.е. он преобразует позиционный код в унитарный код. В качестве примера рассмотрим порядок построения схемы дешифратора со четырьмя выходами (Q3 … Q0), формирующего на этих выходах инверсные сигналы. В соответствии с числом выходов (4), к его входам должен подаваться двухразрядный код (A1A0). Активизирующий уровень сигнала инициализации (E, Enable) примем нулевым.

По приведенному словесному описанию дешифратора построим таблицу истинности (см. таблицу 2.2) этого устройства.

Т а б л и ц а 2.2

E

A1

A0

Q3

Q2

Q1

Q0

0

0

0

1

1

1

0

0

1

1

1

0

1

1

0

1

0

1

1

1

1

0

1

1

1

1

*

*

1

1

1

1

 

Логические выражения для соответствующих выходов дешифратора, определенные на основе табличных данных, выглядят следующим образом:

;

;

;

.

Схема дешифратора, построенная по этим выражениям, приведена на рисунке 2.9, a.

              

   a

b

c

Рисунок 2.9

Дешифраторы на схемах цифровых систем, в состав которых они входят, изображаются условно-графическим обозначением (см. рисунок 2.9, b). На рисунке 2.9, c приведен результат оформления построенной выше схемы дешифратора в виде подсхемы в программе Electronics Workbench.

Если обратимся к логическому выражению (1.1), описывающему состояния выходного сигнала рассмотренного в разделе 1.4 комбинационного устройства, можно заметить, что конъюнктивные термы, входящие в его состав, соответствуют логическим выражениям выходов восьмивходового дешифратора с прямыми выходами, а само выражение, фактически, определяет логику работу соответствующего дешифратора Следовательно, объединяя соответствующие выходы дешифратора с прямыми выходами с помощью элемента ИЛИ, можно реализовать это устройство. В случае использования  дешифратора с инверсными выходами (как в нашем случае) необходимо преобразовать выражение (1.1) с помощью закона де Моргана:

.

По полученному в результате преобразования выражению нетрудно догадаться, что в данном случае для объединения соответствующих выходов дешифратора необходимо использовать элемент И-НЕ (см. рисунок 2.10).

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

Рисунок 2.10

2.3.3     Мультиплексоры.

Мультиплексор (Multiplexer) – устройство, направляющее один из информационных сигналов к устройству, подключенному к его выходу, в зависимости от поступившего адресного кода. Соответственно этому определению, различают две группы входов мультиплексора: информационные и адресные; разумеется, должен быть еще вход сигнала инициализации.

Схема мультиплексора, реализованная с помощью дешифратора, и его условно-графическое обозначение приведены на рисунке 2.11.

 

a

b

Рисунок 2.11

Соединяя параллельно несколько мультиплексоров, можно построить так называемый канальный мультиплексор, который отправляет один из информационных слов на выходной канал.

На основе мультиплексоров также можно реализовать работу комбинационного устройства. Рассмотрим два способа реализации этого.

Первый способ применяется для реализации функции с помощью мультиплексора, количество адресных входов которого совпадает с числом аргументов реализуемой функции. В этом случае информационные входы мультиплексора устанавливаются в состояния, соответствующие значениям функции при соответствующих наборах аргументов, а на его адресные входы подаются сигналы, соответствующие значениям аргументов. Реализация функции этим способом, на основе мультиплексора с восемью информационными входами, представлена на рисунке 2.12, a. Заметим, что информационные входы использованной здесь подсхемы мультиплексора выведены на правую сторону, а его адресные входы размещены сверху.

Т а б л и ц а 2.3

X2

X1

X0

Y

0

0

0

1

0

0

1

0

0

1

0

0

0

1

1

1

1

0

0

1

1

0

1

1

1

1

0

0

1

1

1

0

 

a

b

Рисунок 2.12

Второй способ применяется для реализации функции с помощью мультиплексора, количество адресных входов которого меньше числа аргументов реализуемой функции. В этом случае на адресные входы мультиплексора подаются сигналы, соответствующие значениям части аргументов, а остальные используются для настройки информационных входов мультиплексора. Реализация функции этим способом, на основе мультиплексора со четырьмя информационными входами, представлена на рисунке 2.12, b.

2.3.4     Демультиплексоры.

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

Схема демультиплексора, реализованная с помощью дешифратора, и его условно-грфическое обозначение приведены на рисунке 2.13.

 

a

b

Рисунок 2.13

2.3.5     Сумматоры.

Сумматор – устройство, реализующее выполнение операции арифметического сложения двух чисел. Сложение многоразрядных чисел осуществляется с помощью соответствующего числа одноразрядных сумматоров. Поэтому сначала рассмотрим принципы построения одноразрядных сумматоров.

В процессе сложения двух одноразрядных чисел должны быть получены результат их суммирования (S, Sum) и перенос (C, Carry) на следующий разряд, следовательно, работу одноразрядного сумматора можно представить таблицей 2.4. 

Т а б л и ц а 2.4

A

B

S

C

0

0

0

0

0

1

1

0

1

0

1

0

1

1

0

1

 

Логические выражения для соответствующих выходов сумматора, определенные на основе табличных данных, выглядят следующим образом:

.

Схема сумматора, построенная по этим выражениям, и соответствующая подсхема, подготовленная в программе Electronics Workbench, представлены на рисунке 2.14, a.

 

a

b

Рисунок 2.14

Этот сумматор пригоден только для суммирования значений первых разрядов многоразрядных чисел (поэтому он называется полусумматором), а для суммирования значений остальных разрядов чисел используются полные одноразрядные сумматоры, у которых имеется третий вход, куда поступает перенос из предыдущего разряда. Схема такого сумматора, реализованная на основе полусумматоров, и соответствующая подсхема представлены на рисунке 2.14, b

Схема четырехразрядного сумматора, реализованная на основе одноразрядных сумматоров, соответствующая подсхема и условно-графическое обозначение представлены на рисунке 2.15. 

a

b

c

Рисунок 2.15

2.4            Последовательностные устройства

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

2.4.1     Триггеры.

Триггеры – устройства с двумя устойчивыми состояниями, предназначенные для хранения значений одноразрядных чисел. Одно из их состояний соответствует состоянию лог.1, а другое – лог.0. Как правило, триггеры снабжаются двумя выходами, один из которых называется прямым выходом, а другой – инверсным. Состояние триигера определяется состоянием его прямого выхода, т.е. уровнем сигнала на этом выходе.

В зависимости от порядка осуществления записи триггеры делятся на асинхронные и синхронные.

Изменение состояний асинхронных триггеров определяется изменениями информационных сигналов, подаваемых на их входы. Асинхронные RS-триггеры можно реализовать на основе элементов ИЛИ-НЕ или И-НЕ. Схема асинхронного RS-триггера, реализованная на основе элементов ИЛИ-НЕ, приведена на рисунке 2.16, a.

a

b

Рисунок 2.16

Работу устройства рассмотрим в порядке записи данных в таблице 2.5.

Т а б л и ц а 2.5

 

R

S

Q

Q’

1

0

0

?

?

2

1

0

1

3

0

1

1

4

1

1

0

5

0

1

0

6

1

1

0

0

7

0

0

???

???

 

На первой строке таблицы: R = 0, S = 0; на одном из входов обоих элементов – лог.0, а уровни сигналов на входах обратной связи неизвестны, следовательно неизвестны уровни сигналов на выходах (Q и Q’).

На второй строке: R = 1, S = 0; ввиду того, что на одном из входов верхнего элемента – лог.1, и в соответствии с логикой работы этого элемента, на его выходе (Q), а также на верхнем входе нижнего элемента, будет лог.0, в результате чего на выходе нижнего элемента (Q’) будет лог.1; Итак, триггер устанавливается в состояние лог.0.

На третьей строке: R = 0, S = 0; изменение сигнала на входе R на 0 не повлияет на состояние триггера, так как уровни сигналов на остальных входах элементов не изменились, следовательно, триггер остается в предыдущем состоянии.

На четвертой строке: R = 0, S = 1; ввиду того, что на одном из входов нижнего элемента – лог.1, и в соответствии с логикой работы этого элемента, на его выходе (Q’), а также на нижнем входе верхнего элемента, будет лог.0, в результате чего на выходе верхнего элемента (Q) будет лог.1; Итак, триггер устанавливается в состояние лог.1.

На пятой строке: R = 0, S = 0; изменение сигнала на входе S на 0 не повлияет на состояние триггера, так как уровни сигналов на остальных входах элементов не изменились, следовательно, триггер остается в предыдущем состоянии.

Из рассмотренных случаев можно сделать следующий вывод: случай подачи R = 1, S = 0 соответствует записи в триггер нуля (установки его в состояние лог.0); случай R = 0, S = 1 – записи 1 (установки его в состояние лог.1); а случай R = 0, S = 0 – режиму хранения триггера.

В случае подачи на входы триггера R = 1, S = 1 (шестая строка), на выходах обоих элементов будет лог.0, и когда триггер переводится в режим хранения (седьмая строка), неизвестно, в какое состояние он установится, это – случайный процесс. Следовательно, необходимо исключить такой случай; поэтому данный случай называется запрещенным режимом триггера.

Итак, рабочие режимы рассмотренного триггера кратко можно представить в виде таблицы 2.6.

Т а б л и ц а 2.6

R

S

Q

Q’

Режимы работы

0

0

Q0

Q0

Режим хранения

0

1

1

0

Режим записи ‘1’

1

0

0

1

Режим записи ‘0’

1

1

Запрещенный режим

 

Ввиду того что режимы записи рассмотренного триггера реализуются единичным уровнем соответствующего сигнала (S – Set, R – Reset), такой триггер называется триггером с прямыми входами. Его условно-графическое обозначение приведено на рисунке 2.16, b.

Схема асинхронного RS-триггера, реализованная на основе элементов И-НЕ, приведена на рисунке 2.17, a.

 

a

b

Рисунок 2.17

Работу устройства рассмотрим в порядке записи данных в таблице 2.7.

Т а б л и ц а 2.7

 

R

S

Q

Q’

1

1

1

?

?

2

0

0

1

3

1

0

1

4

0

1

0

5

1

1

0

6

0

0

1

1

7

1

1

???

???

На первой строке таблицы: R = 1, S = 1; на одном из входов обоих элементов – лог.1, а уровни сигналов на входах обратной связи неизвестны, следовательно неизвестны уровни сигналов на выходах (Q и Q’).

На второй строке: R = 0, S = 1; ввиду того, что на одном из входов нижнего элемента – лог.0, и в соответствии с логикой работы этого элемента, на его выходе (Q’), а также на нижнем входе верхнего элемента, будет лог.0, в результате чего на выходе нижнего элемента (Q) будет лог.1, а на выходе верхнего элемента (Q) будет лог.0; Итак, триггер устанавливается в состояние лог.0.

На третьей строке: R = 1, S = 1; изменение сигнала на входе R на 1 не повлияет на состояние триггера, так как уровни сигналов на остальных входах элементов не изменились, следовательно, триггер остается в предыдущем состоянии.

На четвертой строке: R = 1, S = 0; ввиду того, что на одном из входов нижнего элемента – лог.0, и в соответствии с логикой работы этого элемента, на его выходе (Q), а также на верхнем входе нижнего элемента, будет лог.1, в результате чего на выходе верхнего элемента (Q’) будет лог.0; Итак, триггер устанавливается в состояние лог.1.

На пятой строке: R = 1, S = 1; изменение сигнала на входе S на 1 не повлияет на состояние триггера, так как уровни сигналов на остальных входах элементов не изменились, следовательно, триггер остается в предыдущем состоянии.

Из рассмотренных случаев можно сделать следующий вывод: случай подачи R = 0, S = 1 соответствует записи в триггер нуля (установки его в состояние лог.0); случай R = 1, S = 0 – записи 1 (установки его в состояние лог.1); а случай R = 1, S = 1 – режиму хранения триггера.

В случае подачи на входы триггера R = 0, S = 0 (шестая строка), на выходах обоих элементов будет лог.1, и когда триггер переводится в режим хранения (седьмая строка), неизвестно, в какое состояние он установится, это – случайный процесс. Следовательно, необходимо исключить такой случай; поэтому данный случай называется запрещенным режимом триггера.

Итак, рабочие режимы рассмотренного триггера кратко можно представить в виде таблицы 2.8.

Т а б л и ц а 2.8

R

S

Q

Q’

Режимы работы

0

0

Запрещенный режим

0

1

1

0

Режим записи ‘0’

1

0

0

1

Режим записи ‘1’

1

1

Q0

Q0

Режим хранения

 

Ввиду того что режимы записи рассмотренного триггера реализуются нулевым уровнем соответствующего сигнала (S – Set, R – Reset), такой триггер называется триггером с инвверсными входами. Его условно-графическое обозначение приведено на рисунке 2.17, b.

Переходим к рассмотрению синхронных триггеров. Перевод синхронных триггеров в состояние, соответствующее информационным сигналам, осуществляется специальными сигналами управления. В зависимости от характера сигналов управления различают триггеры со статическим управлением и триггеры с динамическим управлением.

Схему триггера со статическим управлением (т.е. управляемого уровнем сигнала) можно построить построить путем присоединения схемы управления, составленного из двух элементов И-НЕ (см. рисунок 2.18, a).

 

a

b

Рисунок 2.18

Режимы работы этого триггера представлены в таблице 2.9.

Т а б л и ц а 2.9

С

R

S

Q

Q’

Режимы работы

0

x

x

Q0

Q0

Режим хранения

1

0

0

Режим хранения

0

1

1

0

Режим записи ‘1’

1

0

0

1

Режим записи ‘0’

1

1

Q0

Q0

Запрещенный режим

 

При C = 0 триггер находится в режиме хранения. Изменение состояния триггера в соответствии с уровнями сигналов на входах R и S осуществляется при С = 1. Условно-графическое обозначение синхронного RS-триггера приведено на рисунке 2.18, b.

Схема и условно-графическое обозначение D-триггера (Delay) приведена на рисунке 2.19, а режимы его работы представлены в таблице 2.10.

 

a

b

Рисунок 2.19

  

Т а б л и ц а 2.10

С

D

Q

Q’

Режимы работы

0

x

Q0

Q0

Режим хранения

1

0

0

1

Режим записи ‘0’

1

1

0

Режим записи ‘1’

 

В дальнейшем рассмотрим три разновидности триггеров с динамическим управлением: D-триггер, JK-триггер и T-триггер.

Перевод триггеров с динамическим управлением в новое состояние осуществляется соответствующим перепадом (фронтом или срезом) сигнала управления. Триггеры с динамическим управлением обычно строят, по так называемой, трехтриггерной структуре. Не останавливаясь на схемной реализации триггеров с динамическим управлением, ознакомимся только с режимами их работы.

Условно-графическое обозначение D-триггера с динамическим управлением приведено на рисунке 2.20, a, а режимы его работы представлены в таблице 2.11.

 

a

b

Рисунок 2.20

Т а б л и ц а 2.11

С

D

Q

Q’

Режимы работы

0

0

1

Режим хранения

1

1

0

Режим записи

 

Изменение состояния этого триггера в соответствии уровнем информационного сигнала (D) осуществляется по положительному перепаду (фронту) управляющего сигнала (С), что отмечено соответствующим знаком на условно-графическом обозначении (а также в таблице).

JK-триггер имеет четыыре рабочих режима (см. таблицу 2.12): три его режима аналогичны соответствущим режимам (запись ‘0’, запись ‘1’, хранение) RS-триггера, а четвертый режим называют счетным режимом; в этом режиме триггер изменяет свое текущее состояние на противоположное. На условно-графическом обозначении JK-триггера (см. рисунок 2.20, b) и в таблице режимов его работы (см. таблицу 2.12) имеются соответствующие знаки о том, что управление работой этого триггера осуществляется по отрицательному перепаду (по срезу).

 

 

Т а б л и ц а 2.12

С

J

K

Q

Q’

Режимы работы

0

0

Q0

Q0

Режим хранения

0

1

0

1

Режим записи ‘0’

1

0

1

0

Режим записи ‘1’

1

1

Q0

Q0

Счетный режим

 

T-триггер – триггер, работающий только в счетном режиме. На рисунке 2.21 представлены схемные реализации работы Т-триггера на основе D-триггера и JK-триггера.

 

a

b

Рисунок 2.21

В виде микросхем выпускаются только D-триггеры и JK-триггеры. В их микросхемах, кроме выводов для информационных и управляющих сигналов, устанавливаются выводы для подачи сигналов предварительной установки (см. рисунок 2.22). Асинхронные сигналы, подаваемые на эти входы, имеют более высокий приоритет по сравнению с остальными сигналами.

 

a

b

Рисунок 2.22

2.4.2     Регистры.

Регистр – устройство, предназначенное для хранения слова, представленного в виде многоразрядного двоичного числа. Они могут быть построены на основе триггеров (например, D-триггеров). В зависимости от способа записи слова в регистр различают регистры с последовательным вводом и с параллельной записью.

В регистрах с последовательным вводом выход каждого триггера подключен к информационному входу следующего триггера. Значения разрядов слова, представленного в виде многоразрядного двоичного числа, последовательно вводятся на первый триггер соответствующим перепадом тактового сигнала, а значения ранее записанных в триггеры разрядов сдвигаются на следующие триггеры. Разумеется, что для записи всего слова требуется столько тактовых сигналов, сколькими разрядами представлено слово.

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

Имеются универсальные регистры, где охвачены оба способа ввода информации. Примером такого регистра может служить микросхема 74194, выполняющая функцию четырехразрядного универсального регистра (см. рисунок 2.23).

Рисунок 2.23

Функции выводов (т.е. соответствующих сигналов) микросхемы 74194:

-       VCC, GND – выводы подключения источника питания и земли;

-       A, B, C, Dвыводы для параллельного ввода информации;

-       QA, QB, QC, QD – выходы регистра;

-       SR – вывод для ввода информации при сдвиге налево;

-       SL – вывод для ввода информации при сдвиге направо;

-       S1, S0 – выводы для сигналов, определяющих режимы работы регистра: S1 = 0, S0 = 0 – режим хранения; S1 = 0, S0 = 1 – режим сдвига налево; S1 = 1, S0 = 0 – режим сдвига направо; S1 = 1, S0 = 1 – режим параллельного ввода информации;

-       CLK – вывод тактового сигнала;

-       CLR’ – вывод сигнала очистки.

2.4.3     Счетчики.

Счетчик – устройство, изменяющее свое содержимое на единицу при каждом соответствующем перепаде (по фронту или по срезу) поступающих импульсов. В зависимости от направления изменения содержимого, счетчики разделяют на суммирующие, вычитающие и реверсивные (или универсальные). Счетчики строят на основе Т-триггеров.

Примером простого счетчика может служить микросхема 7493, выполняющая функцию 4-разрядного суммирующего (см. рисунок 2.24, a).

 

a

b

Рисунок 2.24

В его составе имеются одноразрядный и трехразрядный счетчики.

Функции выводов микросхемы 7493:

-       VCC, GND – выводы подключения источника питания и земли;

-       CKA, QA – вход и выход одноразрядного счетчика;

-       CKB, QB, QC, QD – вход и выходы трехразрядного счетчика;

-       R01, R02 – вывод сигнала очистки счетчика.

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

Примером реверсивного (универсального) счетчика может служить микросхема 74169 (см. рисунок 2.24, b).

Функции выводов микросхемы 74169:

-       VCC, GND – выводы подключения источника питания и земли;

-       A, B, C, D – выводы для параллельного ввода информации;

-       LOAD’ – вывод сигнала параллельного ввода информации;

-       QA, QB, QC, QD – выводы счетчика;

-       D/U’ – вывод сигнала, определяющего направление счета;

-       ENP’, ENT’ – выводы сигналов инициализации;

-       CLK вывод тактового сигнала;

-       RCO’ – сигнал достижения модуля счета.

2.5            Устройства памяти

Устройства памяти (или по-другому, запоминающие устройства) служат для хранения информации в цифровых системах, в состав которых они входят. Цифровые системы, в зависимости от выполняемых ими функций, могут включать в свой состав различные типы устройств памяти: регистровая память, являющаяся составной частью микропроцессоров; кэш-память, позволяющая повысить быстродействие цифровых систем; основная память (оперативная, постоянная), работающая в режиме непосредственного обмена с процессором и согласованная с ним по быстродействию; внешняя память, предназначенная для хранения больших объемов информации и др.

2.5.1     Характеристики устройств памяти.

Важнейшими параметрами, описывающими функциональные возможности устройств памяти, являются:

-       информационная емкость – максимально возможный объем хранимой информации, выражаемой в битах, в байтах или в словах. Чаще всего этот параметр представляют в виде произведения числа хранимых слов на их разрядность;

-       быстродействие устройств памяти, оцениваемой временами считывания, записи и длительностями циклов чтения/записи. Время считывания (или записи) – интервал между моментами подачи сигнала управления (чтения/записи) и завершения соответствующей операции. Длительность циклов чтения/записи – минимально допустимый интервал между последовательными операциями.

Кроме перечисленных традиционных временных параметров, для описания работы некоторых систем памяти могут быть использованы дополнитеьные параметры. Например, для описания систем памяти, работающих с пакетами данных, вводят параметр времени доступа при первом обращении (Latency) и темпа передач для последующих слов пакета (Bandwidth).

Помимо указанных выше динамических параметров, существует ряд режимных параметров, определяющих взаимное расположение нескольких сигналов управления во времени и их длительности.

Управление работой устройств памяти осуществляется следующими сигналами:

-         A (Address) – адрес, разрядность которого (n)  определяется числом ячеек устройства памяти, т.е. максимально возможным числом хранимых в нем слов (N=2n);

-         CS (Chip Select) или CE (Chip Enable) – сигнал выбора микросхемы или ее инициализации;

-         R/W (Read/Write) – сигнал выполнения соответствующей операции;

-         DI (Data Input) и DO (Data Output) – шины входных и выходных данных. В некоторых системах памяти эти линии могут быть объединены.

В зависимости от способа доступа к данным, устройства памяти делятся на устройства с адресным доступом, устройства с последовательным доступом и устройства с ассоциативным доступом.

При адресном доступе код на адресных входах устройства памяти указывает ячейку, с которой ведется обмен. Такие устройства памяти наиболее разработаны, и другие виды памяти часто строят на их основе с соответствующими модификациями.

Адресные устройства памяти, в свою очередь, делятся на RAM (Random Access Memory) и ROM (Read-Only Memory). В RAM хранятся данные, участвующие в обмене при исполнении текущей программы, и которые могут быть изменены в произвольный момент времени. Запоминающие элементы RAM, как правило, не обладают энергонезависимостью.

По характеру элементов памяти RAM делятся на статические (SRAM, Static RAM) и динамические (DRAM, Dynamic RAM). Элементами памяти SRAM являются триггеры, а в DRAM данные хранятся в виде зарядов конденсаторов, образуемых элементами МОП-структур. Саморазряд конденсаторов ведет к разрушению данных, поэтому они должны периодически (каждые несколько миллисекунд) регенерироваться. В то же время плотность упаковки динамических элементов памяти в несколько раз превышает плотность упаковки, достижимую в статических RAM.

Динамические RAM характеризуются наибольшей информационной емкостью и невысокой стоимостью, поэтому именно они используются как основная память ЭВМ. Статические RAM в несколько раз дороже (из-за сложности элементов памяти) динамических и приблизительно во столько же раз меньше по информационной емкости. Их достоинством является высокое быстродействие, а типичной областью использования – схемы кэш-памяти.

Устройства памяти типа ROM характеризуются тем, что информация в них в рабочем режиме никогда не изменяется. В некоторых их разновидностях информация может изменяться, но только не в оперативном режиме.

В зависимости от способа (и места) программирования, различают несколько разновидностей ROM: ROM(M), PROM, EPROM и EEPROM.

Устройства типа ROM(M) программируются при изготовлении методами интегральной технологии с помощью одной определенной маски (Mask).

Устройства типа PROM (Programmable ROM) программируются (но однократно) самим пользователем.

В устройствах типа EPROM (Electrically Programmable ROM) и EEPROM (Electrically Erasable Programmable ROM) можно стереть старую информацию и записать новую (перепрограммировать). В устройствах EPROM предварительное стирание информации осуществляется с помощью ультрафиолетового излучения (на специальных устройствах), а EEPROM – электрическими сигналами. Запись данных в обоих случаях производится электрическими сигналами.

В устройствах памяти с последовательным доступом считывание осуществляется слово за словом либо в порядке записи, либо в обратном порядке. Прямой порядок считывания имеет место в буферах FIFO, работающих по принципу первый пришел – первый вышел (First In – First Out), а также в файловых и циклических системах памяти. Считывание в обратном порядке свойственно стековым организациям памяти, для которых реализуется принцип последний пришел – первый вышел. Такие устройства памяти называют буферами LIFO (Last In – First Out).

В устройствах памяти с ассоциативным доступом поиск информации осуществляется по некоторому признаку (tag), а не по ее расположению в памяти (адресу или месту в очереди). Основная область применения ассоциативной памяти в больших цифровых системах (например, в современных ЭВМ) кэширование данных.

2.5.2     Структура устройств памяти типа RAM.

Построение статических RAM осуществляется по структурам 2D, 3D и 2DM.

В структуре 2D (см. рисунок 2.25) m-разрядные элементы памяти присоединены к соответствующим выходам дешифратора, т.е. они размещены линейно относительно друг друга, поэтому такую структуру часто называют линейной структурой.

Рисунок 2.25

Дешифратор адресного кода DC при наличии разрешающего сигнала CS (Chip Select –  сигнал выбора микросхемы) активизирует одну из выходных линий, осуществляя доступ к соответствующей ячейке. Соответствующие элементы столбцов (разрядов) соединены вертикальной линией –  внутренней линией данных (разрядной линией, линией записи/считывания). Элементы столбца хранят одноименные биты всех слов. Направление обмена определяется усилителями чтения/записи под воздействием сигнала R/W (Read –  чтение, Write –  запись).

Структура 3D (также называемая матричной структурой) позволяет резко упростить дешифраторы адреса с помощью двухкоординатной выборки запоминающих элементов (см. рисунок 2.26).

Здесь код адреса разрядностью n делится на две половины, каждая из которых декодируется отдельно. Выбирается запоминающий элемент (или ячейка), находящийся на пересечении активных линий выходов обоих дешифраторов. Число таких пересечений будет 2n/2 х 2n/2 = 2n. Суммарное число выходов обоих дешифраторов составляет 2n/2 + 2n/2 = 2n/2+1, что гораздо меньше, чем число выходов дешифратора в структуре 2D (2n).

Рисунок 2.26

В структурах типа 2DM (2D модифицированная), предназначенной для организации систем памяти в больших цифровых системах (в частности, в компьютерах), сочетаются достоинства структур 2D и 3D – упрощается дешифрация адреса и не требуются запоминающие элементы с двухкоординатной выборкой.

Матрица ЗЭ структуры 2DM (см. рисунок 2.27) имеет как бы характер структуры 2D: возбужденный выход дешифратора выбирает целую строку. Однако в отличие от структуры 2D, длина строки не равна разрядности хранимых слов, а многократно ее превышает. Для выбора одной из строк служат часть адресного кода An–1... Ak. Остальные разряды адреса (от Ak–1... A0) используются, чтобы выбрать необходимое слово из того множества слов, которое содержится в строке и которое выполняется с помощью мультиплексоров. На выходах мультиплексоров формируется выходное слово и по разрешению сигнала CS, поступающего на входы ОЕ управляемых буферов с тремя состояниями, это слово передается на внешнюю шину.

Рисунок 2.27

2.5.3     Элементы устройств памяти типа ROM.

Устройства памяти типа ROM (Read Only Memory) хранят информацию, которая либо вообще не изменяется (в ЗУ типов ROM(M) и PROM), либо изменяется редко и не в оперативном режиме (в ЗУ типов EPROM и EEPROM).

Программирование постоянной памяти заключается в том или ином размещении элементов связи между горизонтальными и вертикальными линиями матрицы запоминающих элементов. В матрице ROM(M), как правило, в качестве элементов памяти, размещаемыых в узлах координатной сетки, применяются биполярные диоды, МОП-транзисторы и др. В матрице диодного ROM(M) (см. рисунок 2.28) горизонтальные линии являются линиями выборки слов, а вертикальные – линиями считывания. Считываемое слово определяется расположением диодов в узлах координатной сетки. При наличии диода высокий потенциал выбранной горизонтальной линии передается на соответствующую вертикальную линию, и в данном разряде слова появляется сигнал логической единицы. При отсутствии диода потенциал близок к нулевому, так как вертикальная линия через резистор связана с землей. В изображенной матрице при возбуждении линии выборки В0 считывается слово 11010001, а при возбуждении линии В1 – 10101011. Шины выборки являются выходами дешифратора адреса, каждая адресная комбинация возбуждает свой выход дешифратора, что приводит к считыванию слова из адресуемой ячейки (строки).

Рисунок 2.28

В матрице ROM(M), изготовленных по технологии МОП, в качестве элементов памяти, размещаемыых в узлах координатной сетки, применяются МОП-транзисторы, (см. рисунок 2.29). В МОП-транзисторах, соответствующих хранению нуля, увеличивают толщину подзатворного окисла, что ведет к увеличению порогового напряжения транзистора. В этом случае рабочие напряжения системы не в состоянии открыть транзистор. Постоянно закрытое состояние транзистора аналогично его отсутствию. В МОП-транзисторах, соответствующих хранению единицы, толщину подзатворного окисла уменьшают до таких размеров, чтобы они могли открываться сигналом выборки, поступающих от дешифратора,

Рисунок 2.29

Устройства памяти типа ROM(M) отличаются компактностью элементов памяти и, следовательно, высоким уровнем интеграции. При больших объемах производства масочное программирование предпочтительно, однако при недостаточной их тиражности затраты на проектирование и изготовление шаблона для технологического программирования устройств памяти окажутся чрезмерно высокими. Отсюда видна и область применения устройств памяти типа ROM(M) – хранение стандартной информации, имеющей широкий круг потребителей. В частности, устройства памяти типа ROM(M) имеют в качестве прошивки коды букв алфавитов (русского и латинского), таблицы типовых функций (синуса, квадратичной функции и др.), стандартное программное обеспечение и т. п.

Микросхемы памяти типа PROM программируются устранением или созданием специальных перемычек. В исходной заготовке имеются (или отсутствуют) все перемычки. После программирования остаются или возникают только необходимые.

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

Создание части перемычек соответствует схемам, которые в исходном состоянии имеют непроводящие перемычки в виде пары встречно включенных диодов (см. рисунок 2.30, b). В исходном состоянии сопротивление такой цепочки настолько велико, что практически равноценно разомкнутой цепи, и элемент памяти хранит логический нуль. Для записи единицы к диодам прикладывают повышенное напряжение, пробивающее диод, смещенный в обратном направлении. Диод пробивается с образованием в нем короткого замыкания и играет роль появившейся проводящей перемычки.

 

a

b

Рисунок 2.30

В репрограммируемых устройствах памяти типов EPROM и EEPROM возможно стирание старой информации и замена ее новой в результате специального процесса, для проведения которого ЗУ выводится из рабочего режима. Рабочий режим (чтение данных) – процесс, выполняемый с относительно высокой скоростью. Замена же содержимого памяти требует выполнения гораздо более длительных операций.

Элементами памяти в устройствах памяти типов EPROM и EEPROM являются транзисторы типов МНОП ((Металл, Нитрид, Окисел, Полупроводник)) и ЛИЗМОП (добавление ЛИЗ к обозначению МОП происходит от слов Лавинная Инжекция Заряда), работа которых основана на создании плавучих затворов [1].

3 Микропроцессоры и микропроцессорные системы

3.1            Структурные принципы микропроцессорных систем

Микропроцессор (МП) является центральным устройством в составе вычислительных, контрольно-измерительных и управляющих систем, обобщенно называемых микропроцессорной системой (МПС), осуществляющим обработку и всевозможную пересылку информации. Процесс выполнения микропроцессором поставленной задачи определяется соответствующей программой, составленной в виде последовательности команд из системы команд данного микропроцессора.

В состав микропроцессорной системы, наряду с микропроцессором, входят устройства памяти и устройства ввода/вывода информации. Набор микросхем, пригодных (по техническим и информационным параметрам) для применения в составе микропроцессорной системы, называют микропроцессорным набором.

При определении структуры микропроцессорной системы учитывается реализация трех основных принципов, это – принцип магистральности, принцип модульности и принцип микропрограммного управления.

Магистральный принцип определяет характер связи между различными функциональными блоками МПС; все блоки системы соединены к общей системной магистрали и обмениваются между собой информацией через эту магистраль.

Модульный принцип обусловливает построение МПС на основе отдельных, функционально законченных модулей. Каждый модуль снабжается входом, уровнем сигнала на котором, управляется инициализация данного модуля, т.е. подключение его к магистали, или перевод его в третье (высокоимпедансное) состояние.

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

В состав системной магистрали входят три основных информационных шин: это – адресная шина АВ (Address Bus), шина данных DB (Data Bus) и шина управления СВ (Control Bus).

Шина данных – основная (и двунаправленная) шина, по которой осуществляется обмен данными между модулями системы.

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

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

Сигналы на линиях шины управления определяют тип цикла и отмечают временные моменты, соответствующие различным его частям и зонам. Наряду с этим, сигналы управления согласовывает работу процессора (или другого хозяина магистрали, ведущего, master) с работой памяти или устройств ввода/вывода (ведомого устройства, slave).

Основные сигналы управления – стробы обмена, т.е. стробы записи (вывода) и чтения (ввода). Процессор, формируя эти сигналы, определяет моменты соответствующих пересылок данных.

Для присоединения устройств ввода/вывода (УВВ)  или внешних устройств (ВУ) к системной магистрали, их сигналы должны соответствовать стандартам соответствующих интерфейсов, через которые осуществляется связь.

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

3.2            Микропроцессор Intel 8085

Микропроцессор (МП) – наиболее важный блок, входящий в состав сложных цифровых систем (например, компьютеров), и осуществляющий обработку информации.

Основные структурные принципы и порядок организации работы микропроцессоров удобно рассмотреть на примере конкретного микропроцессора. В качестве такого образца рассмотрим простейший микропроцессор Intel 8085, являющийся праотцом современных микропроцессоров. Несмотря на свой солидный возраст, он до сих пор выпускается производством или служит основой при создании новых типов микропроцессоров. Разумеется, область его применения – не компьютеры, в которых сейчас применяют более мощные и производительные микропроцессоры. Микропроцессоры типа Intel 8085, в основном, используются в системах управления, где их возможностей хватает.

3.2.1     Структура микропроцессора.

Структура микропроцессора Intel 8085 представлена на рисунке 3.1. Обмен информацией между его составными блоками осуществляется через его внутреннюю восьмиразрядную шину данных. Рассмотрим составные блоки микропроцессора:

AC (Accumulator) – регистр-аккумулятор, где хранится один из операндов или результат операции;

TR (Temporary Register) – регистр временного хранения одного из операндов;

ALU (Arithmetic-Logic Unit) — арифметико-логическое устройство, выполняющее действия над двумя словами-операндами, подаваемыми на его входы. Аккумулятор служит источником и приемником данных, TR – источником слова данных, хранимым на время выполнения операции. АЛУ функционирует согласно соотношению А:= А*В, где В хранится в TR, второй операнд поступает от аккумулятора, в него же поступает результат операции. АЛУ непосредственно выполняет лишь операции сложения, вычитания, сдвига, сравнения слов, поразрядные логические операции (конъюнкцию, дизъюнкцию, сложение по модулю 2). Более сложные операции (умножение, деление и др.) выполняются по подпрограммам. В АЛУ имеется схема перевода двоичных чисел в двоично-десятичные (DA, Decimal Adjust);

Рисунок 3.1

RF (Register Rags) – регистр флагов, т. е. битов, указывающих признаки результатов арифметических или логических операций, выполненных в АЛУ. Указываются пять признаков: Z (Zero) – нулевой результат, С (Carry) – перенос, AC (Auxiliary Carry) – вспомогательный перенос, S (Sign) – знак, P (Parity) –, четность веса слова. Признак вспомогательного переноса (переноса между младшей и старшей тетрадами восьмиразрядного слова) нужен при выполнении операций в двоично-десятичном коде. Смысл остальных признаков ясен из их наименований. Признаки служат для управления ходом процесса обработки информации.

В, С, D, E, H, L – регистры общего назначения (РОН). каждый из них Эти восьмиразрядные регистры могут применяться либо по отдельности, либо в виде пар В-С, D-E, H-L, играющих роль 16-разрядных регистров. Пары регистров именуются по первым регистрам пары как пары В, D, Н. Пара H-L, как правило, используется для размещения в ней адресов при косвенной регистровой адресации.

W және Z – программно недоступные регистры, предназначенные для временного хранения данных.

SP (Stack Pointer) – 16-разрядный указатель стека. стека. Стек предназначен для хранения массива слов, без применения адресации. Порядок ввода слов в стек и их считывания предопределены его устройством. При организации типа LIFO (Last In – First Out) последнее записанное в стек слово при считывании появляется первым. Основное назначение стека – обслуживание прерываний программы и выполнения подпрограмм. При этом в стеке автоматически сохраняется состояние счетчика команды. Операции со стеком – Push (запись слова) и Pop (считывание слова). Аппаратно стек реализуется в ОЗУ, где для него выделяется определенная область. Указатель стека SP содержит адрес последней занятой ячейки. При выполнении операций Push и Pop значение SP уменьшается или увеличивается. При байтовой организации памяти и занесении в стек содержимого регистровой пары старший байт запоминается по адресу SP-1, а младший – по адресу SP-2, содержимое SP уменьшается на 2. При выборке содержимое двух верхних ячеек стека помещается в соответствующие регистры, а содержимое SP увеличивается на 2.

IP (Instruction Pointer) –  16-разрядный счетчик команд. Содержимое счетчика команд после выборки очередного байта из памяти автоматически ментируется, в результате чего в IP оказывается адрес следующей команды, если текущая команда была однобайтовой, или следующего байта текущей команды в противном случае. Второй и третий байты команды поступают в регистры W и Z.

Схема INC/DEC (Increment/Decrement) изменяет передаваемые через нее слова на +1 или –1.

IR (Instruction Register) – регистр команды. Он принимает из памяти первый байт команды, т.е. код команды.

DC – дешифратор команд. Он, в соответствии с кодом команды в регистре команды (IR), определяет соответствующую микропрограмму выполнения текущей команды.

Блок Synchronising and Control – блок синхронизации и управления.  Он под управлением сигнала дешифратора команды (DC) формирует сигналы, необходимые для реализации машинных циклов текущей операции.

Назначение блоков управления прерыванием (Interrupt Control) и последовательным вводом/выводом (Sequentional Control) ясно из их названий.

При обмене между МП и памятью или ВУ адрес соответствующей ячейки памяти или ВУ от выбранной команды или одной из регистровых пар передается в буфер адреса AВ. Буфер адреса с тремя состояниями выхода выдает сигналы старших разрядов адреса на линии адресной шины А15-8. Буфер шины адресов/данных A/DB с тремя состояниями выхода передает на шину A/D с разделением во времени младший байт адреса или байт данных.

Внутренняя восьмиразрядная шина данных передает байты между различными внутренними регистрами или обменивается с другими модулями МПС через мультиплексируемую шину адресов/данных.

При естественном следовании команд МП, начав работу, выбирает из памяти и выполняет одну команду за другой, пока не дойдет до команды HLT. Выборка и выполнение одной команды образуют командный цикл (КЦ). Командный цикл состоит из одного или нескольких машинных циклов (МЦ). Каждое обращение к памяти или ВУ требует машинного цикла, который связан с передачей байта в МП или из него. В свою очередь машинный цикл делится на то или иное число тактов Т, число которых зависит от типа машинного цикла.

Микропроцессор Intel 8085 имеет следующие типы машинных циклов:

1) Выборка команды (OF, Opcode Fetch).

2) Чтение из памяти (MR, Memory Read).

3) Запись в память (MW, Memory Write).

4) Чтение из ВУ (IOR, Input-Output Read).

5) Запись в ВУ (IQW, Input-Output Write).

6) Подтверждение прерывания (INA, Interrupt Acknowledge).

7) Освобождение шин (BI, Bus Idle).

8) Останов (HLT).

В начале каждого машинного цикла генерируются сигналы состояния, идентифицирующие тип цикла и действующие в течение всего цикла.

3.2.2     Выводы и сигналы микропроцессора.

A15-8 –  выходные линии с тремя состояниями для выдачи старшего байта адреса памяти или полного адреса ВУ. Переходят в третье состояние в режимах HOLD, HALT и RESET;

D7-0 –  двунаправленные мультиплексированные линии с тремя состояниями для выдачи младшего байта адреса памяти или полного адреса ВУ в первом такте машинного цикла, после чего используются как шина данных;

ALE –  строб разрешения загрузки младшего байта адреса памяти во внешний регистр для его хранения в течение машинного цикла. Появляется в первом такте машинного цикла. Регистр загружается задним фронтом сигнала ALE;

,  – стробы чтения или записи. Выводы переходят в третье состояние в режимах HOLD, HALT и RESET;

READY –  входной сигнал, свидетельствующий, что память или ВУ готовы к обмену с МП. Если готовности памяти или ВУ нет, МП входит в состояние ожидания, которое может длиться любое число тактов, вплоть до появления единичного уровня сигнала READY;

S1, S0 –  сигналы состояния МП, сообщаемые внешней среде. Формируются в начале и сохраняются во время всего машинного цикла;

IO/М –  сигнал выбора памяти или внешнего устройства. При высоком уровне происходит обращение к ВУ, при низком –  к памяти.

Совместно с сигналами S1, S0 сигнал IO/М идентифицирует тип машинного цикла. Значения сигналов состояния и управляющие сигналы ,  и  для различных машинных циклов, представлены в таблице 3.1.

Т а б л и ц а 3.1

МЦ

Сигналы состояния

Сигналы управления

IO/M

S1

S0

OF

0

1

1

0

1

1

MR

0

1

0

0

1

1

MW

0

0

1

1

0

1

IOR

1

1

0

0

1

1

IOW

1

0

1

1

0

1

INA

1

1

1

1

1

0

BI

3S

x

x

1

1

1

HALT

3S

0

0

3S

3S

1

 

В таблице через 3S обозначено третье (высокоимпедансное) состояние.

 

x1, x2 –  выводы, присоединяемые к кварцевому резонатору или другим частотно-задающим цепям для обеспечения работы внутреннего генератора синхроимпульсов МП. Частота на выводах x1 и x2 в 2 раза выше рабочей частоты;

 () – вход сигнала сброса МП в начальное состояние. Сигнал может поступить в любое время по команде оператора. Автоматически формируется при включении питания. Под его воздействием сбрасываются регистры IP и IR, триггеры разрешения прерывания, подтверждения захвата и др.;

CLK – выход синхроимпульсов для микропроцессорной системы. Частота этих импульсов в два раза ниже частоты на выводах x1 и x2.

RESET – выходной сигнал сброса для внешних модулей системы, привязанный к тактовым импульсам CLK, т. е. отличающийся от сигнала  по фазе;

INTR (Interrupt Request) – вход запроса векторного прерывания, вызывающий генерацию строба , если прерывание разрешено программой. Адрес подпрограммы, вызываемой этим входом, выдается внешним устройством. При сбросе прием сигнала запрещается (прерывания запрещены);

 (Interrupt Acknowledge) – выход строба подтверждения векторного прерывания после завершения текущего командного цикла. Используется для чтения вектора прерывания;

RST 5,5; RST 6,5; RST 7,5 – входы запросов радиального прерывания типа RSTn (n = 5,5; 6,5; 7,5). Начальные адреса подпрограмм обслуживания равны 8п. Приоритеты фиксированы, высший приоритет у входа RST 7,5. Приоритеты всей группы запросов выше приоритета запроса INTR. Запросы маскируемые, причем независимо друг от друга;

TRAP – вход запроса немаскируемого прерывания, имеющий максимальный приоритет;

SID, SOD (Serial Input Data, Serial Output Data) – вход и выход последовательной передачи данных. По команде RIM входной бит загружается в старший разряд аккумулятора, по команде SIM выводится из этого разряда;

HOLD – сигнал запроса захвата шин. Формируется внешним устройством;

HLDA – сигнал подтверждения захвата (Hold Acknowledge). Является ответом на сигнал HOLD, формируемым в конце текущего машинного цикла. Свидетельствует об отключении МП от системных шин. При этом шины и линии управляющих сигналов RD, WR, IO/M и ALE переводятся в третье состояние.

3.2.3     Организация работы микропроцессора.

Командный цикл (КЦ) начинается с выборки команды (Opcode Fetch, OF). Первый машинный цикл Ml всегда OF, в нем МП получает первый байт команды. После этого могут быть еще один или два машинных цикла типа MR (Memory Read), поскольку команда может быть однобайтной, двухбайтной или трехбайтной.

Первый байт содержит код операции, сведения о способе адресации, а если команда однобайтная, то и адрес операнда. Наличие адреса возможно для операций типа регистр-регистр с короткими адресами. Для адресации 8 регистров общего назначения достаточны трехразрядные адреса, а для адресации регистровых пар даже двухразрядные. Второй байт содержит младший полуадрес операнда, если команда трехбайтная, или непосредственный операнд либо адрес ВУ, если команда двухбайтная. Третий байт содержит старший полуадрес операнда или байт непосредственных данных при загрузке пары регистров. Адреса регистров и регистровых пар даны в таблице 3.2.

Т а б л и ц а 3.2

Регистры

Регистровые пары

B

C

D

E

H

L

M

A

B

D

H

SP

000

001

010

011

100

101

110

111

00

01

10

11

 

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

Машинный цикл состоит из тактов, в которых выполняются типовые действия, рассмотренные ниже. Число тактов в различных машинных циклах – 3...6. Большинство машинных циклов содержат три такта. В командном цикле может содержаться от 4 до 18 тактов.

Сигналы, реализующие тот или иной МЦ, генерируются блоком управления МП на основании информации, содержащейся в первом байте команды. Проиллюстрируем сказанное примером выполнения команды STA D3D2 (Store Accumulator Direct), передающей содержимое аккумулятора в ячейку памяти при прямой адресации, т.е. указании адреса ячейки в самой команде. Команда трехбайтная, для ее передачи в МП требуются три машинных цикла, в первом из которых байт b1, передается в регистр команд IR, в последующих байты b2 и b3 передаются в регистры временного хранения W и Z. После получения всей команды МП выполняет ее, передавая байт из аккумулятора в ячейку памяти, адрес которой поступил в МП. Таким образом, цикл команды составится из четырех машинных циклов в следующем порядке OF-MR-MR-MW.

Каждый машинный цикл делится на такты (состояния) — интервалы между одноименными фронтами тактовых импульсов.

Типовые действия, выполняемые в тактах машинного цикла:

T1 – Адрес памяти или ВУ выставляется на AD7-0 и на A15-8, генерируется сигнал ALE для фиксации битов AD7-0. На линиях IO/М, S1 и S0 выставляется информация, определяющая тип цикла. Проверяется флаг HALT.

Т2 – Проверяются входы Ready и Hold. Программный счетчик инкрементируется, если данный машинный цикл есть часть выборки команды. Во всех машинных циклах, кроме цикла BI (освобождения шин), один из управляющих стробов ,  или  переходит из единичного состояния в активное нулевое.

Tw – Появляется при неготовности памяти или ВУ к обмену (на линии READY низкий уровень напряжения). Состояния линий адресов, данных и управления остаются теми же, что и в конце такта. Сигнал READY проверяется в каждом такте ожидания.

Тз – Байт команды или данных передается в микропроцессор или из него. Уровень активного управляющего строба изменяется с нулевого на единичный.

Т4 – Декодируется содержимое регистра команд.

Т5,6 – Используются при необходимости для завершения некоторых команд. Системные шины не используются.

Машинный цикл всегда содержит такты Т1...Т3, иногда имеет большее число тактов, но для чтения или записи требуется только три такта.

3.2.4     Система прерывания.

При работе микропроцессорной системы в ней или вне ее могут произойти события, требующие немедленной реакции. Такая реакция обеспечивается прерыванием программы и переходом к обслуживанию источников запросов на прерывание. Внутри системы запросы возникают при сбоях в работе, переполнении разрядной сетки, попытке деления на нуль и т. д., а также при требованиях обслуживания от внешних устройств. Извне могут поступать сигналы аварийных ситуаций в управляемых объектах, неисправности источников питания и др.

Прерывания по запросам от медленно действующих внешних устройств увеличивают производительность системы, позволяя ВУ занимать время процессора только при их готовности к обмену. Когда ВУ нуждается в обслуживании, оно устанавливает триггер запроса прерывания, и сигнал запроса сохраняется, пока не будет воспринят и обработан микропроцессором. В ответ на принятый запрос прерывания в микропроцессорной системе завершается выполнение текущей команды, запоминается состояние МП, выполняется подпрограмма обслуживания прерывания, восстанавливается состояние МП, и затем возвращается управление соответствующей команде основной программы.

Микропроцессор Intel 8085 имеет пять входов прерывания и один выход управления им INTA. Прерывание должно ввести в действие команду CALL, согласно которой состояние программного счетчика PC передается в стек, а в IP загружается адрес подпрограммы, подлежащей выполнению. Инициатива ввода команды CALL принадлежит аппаратным средствам микропроцессорной системы. Если прерывания разрешены, то они осуществляются микропроцессором в конце выполнения текущей команды.

Входы МП, связанные с прерываниями, называются TRAP; RST 5,5; RST 6,5; RST 7,5; INTR. При организации прерываний решаются задачи маскирования запросов и определяются их уровни приоритета при конфликтах из-за одновременного поступления нескольких запросов.

Маскирование состоит в запрещении действия соответствующего входа. Входы запросов прерывания могут быть маскируемыми или не маскируемыми, т. е. принимаемыми всегда.

Вход TRAP является немаскируемым и имеет наивысший приоритет. Он не может быть запрещен командами программы. К этому входу подключают сигналы, оповещающие о наиболее важных событиях в микропроцессорной системе, появление которых требует безусловной реакции (например, сигнал, оповещающий об аварии питания, требующей немедленных мер). Начальный адрес подпрограммы обслуживания прерывания TRAP размещен в фиксированной ячейке памяти с адресом 24Н. Таким образом, появление запроса прерывания по входу TRAP независимо ни от чего вызовет соответствующее прерывание после завершения выполнения текущей команды.

Обозначение входов RSTn (n = 5,5; 6,5; 7,5) происходит от слова Restart. Прерывания по этим входам маскируемые, т. е. могут быть разрешены или запрещены командами El (Enable Interrupt) и Dl (Disable Interrupt), действующими на все три входа одновременно. Начальный сброс микропроцессора запрещает обслуживание этих запросов, для их последующего разрешения следует подать команду EI. Имеется также возможность раздельного маскирования запросов RSTn с помощью специальной команды SIM (Set Interrupt Mask), no которой маски устанавливаются в соответствии со значениями битов А0...А2 содержимого аккумулятора. Загрузив предварительно 1 в соответствующий бит, можно запретить (замаскировать) тот или иной вход. Приоритеты входов RSTn фиксированы, они снижаются в порядке RST 7,5; RST 6,5; RST 5,5. Начальные адреса подпрограмм обслуживания прерываний типа RSTn известны. Команды RSTn заканчиваются загрузкой в программный счетчик числа 8п. Цифры 5,5; 6,5 и 7,5 определяют начальные адреса 002СН, 0034Н и ООЗСН. Иными словами, для входов этого типа векторы прерывания определяются автоматически и их не требуется передавать в МП из внешних устройств.

Вход RST 7,5 является динамическим, реагирует на положительный фронт сигнала, а входы RST 6,5 и RST 5,5 — статические, реагируют на уровень сигнала и, следовательно, автоматически снимаются при исчезновении запросов по этим входам. Запрос RST 7,5, принимаемый триггером с динамическим входом, после снятия сигнала запроса не снимается и сохраняется, пока не будет обработано прерывание или до команды SIM или RESET.

При поступлении запроса по входу INTR (Interrupt) вектор прерывания должен быть передан в МП извне. К этому входу, в частности, подключают контроллер прерываний — блок, который воспринимает несколько запросов от внешних устройств, решает задачу приоритетности и маскирований и вырабатывает для МП единственный сигнал INTR, с пересылкой в МП соответствующего вектора прерывания. В данном случае также выполняется команда RSTn, но n зависит от источника прерываний. Появление запроса INTR при разрешенных прерываниях ведет к ответу микропроцессора сигналом INTA, который поступает на входы разрешения выхода буферных усилителей.

Во время обработки прерываний, пока не выполнится команда EI, запрещаются другие прерывания, кроме TRAP. Немаскируемое же прерывание TRAP блокирует другие прерывания, но сохраняет состояние разрешения поступившего уже сигнала прерывания.

3.2.5     Система последовательного ввода/вывода.

Микропроцессор имеет два вывода для передач последовательных данных, это – SOD и SID (Serial Output Data и Serial Input Data). Вывод SOD управляется командой SIM, а сигнал с вывода SID считывается командой RIM. Эти команды упоминались ранее как команды установки и сброса масок для входов прерываний RSTn, они же используются и для управления последовательным вводом-выводом.

До выполнения команды SIM в аккумуляторе формируется управляющее слово (см. таблицу 3.3).

 

Т а б л и ц а 3.3

7

6

5

4

3

2

1

0

SOD

SOE

x

R7,5

MSE

M7,5

M6,5

M5,5

 

Биты управляющего слова интерпретируются следующим образом:

SOD – последовательный выход данных;

SOE (Serial Input Enable) – сигнал, единичное значение которого передает последовательные данные SOD на соответствующий выход микропроцессора;

R7,5 – сигнал сброса запроса по входу RST7,5 (напомним, что сигнал по этому входу принимается триггером с динамическим управлением);

MSE (Mask Set Enable) – сигнал, активное состояние которого разрешает действие битов 2...0;

М7,5...М5,5 – маскирование запросов по входам RST7,5...RST5,5, если соответствующий бит имеет единичное значение.

 

Например, установка SOD = 1, разрешение RST 6,5, сброс триггера RST 7,5 и маскирование RST 7,5 и RST 5,5 будут выполнены двумя командами по программе:

 

MVI А, b2 ; установка битов аккумулятора

SIM            ; изменение масок и бита SOD

 

Команда MVI А, b2 передает в аккумулятор байт b2, т. е. выполняет действие пересылки в аккумулятор данных при непосредственной адресации. Байт b2 в данном случае имеет вид: 11x11101.

Т а б л и ц а 3.4

7

6

5

4

3

2

1

0

SID

I7,5

I6,5

I5,5

IE

M7,5

M6,5

M5,5

 

Для ввода последовательных данных через контакт SID используется команда RIM, обеспечивающая ввод последовательных данных и чтение масок прерывания. После выполнения команды RIM в аккумуляторе фиксируется слово (см. таблицу 3.4) со следующим значением битов:

SID – последовательные данные ввода через контакт SID;

I7,5; I6,5; I5,5 – логические уровни на выводах RST7.5; RST6.5 и RST5.5, соответственно;

IE – сигнал разрешения прерывания;

М 7,5...М 5,5 – логические уровни масок.

 

Биты I7,5...I5,5 индицируют соответствующие уровни во время команды RIM. Бит IE показывает, какая из команд EI и DI выполнялась последней, на него влияет также наличие в данное время режима прерывания, поскольку он сопровождается сбросом триггера IE, запрещая другие прерывания. Биты М7.5...М5,5 индицируют текущие состояния масок прерывания.

3.3            Система команд микропроцессора Intel 8085

Команды МП приведены в таблице (см. таблицу 3.5). В первой графе таблицы даны мнемокоды команд с обозначениями регистров через r, пар регистров через rp, ячеек памяти через М, третьего и второго байтов команды через b3b2, адресов ВУ через port. Ссылки на ячейки памяти М подразумевают косвенную адресацию адреса этих ячеек берутся из регистровой пары Н (регистров Н и L) и, следовательно, не нуждаются в указании в самой команде.

Т а б л и ц а 3.5

Мнемокод

Код

Флаги

Байт

Такт

Цикл

Пояснения

1

2

3

4

5

6

7

Команды пересылок

MOV r1, r2

01DDDSSS

1

4

1

r1 ← (r2)

MOV M, r

01110SSS

1

7

2

[(HL)] ← (r)

MOV r, M

01DDD110

1

7

2

(r) ← [(HL)]

MVI r, b2

00 DDD110

2

7

2

r1 ← b2

MVI M, b2

36

2

10

3

[(HL)] ← b2

LXI rpb3b2

00PP0001

3

10

3

rp ← b3b2

LDA b3b2

3A

3

13

4

A ← b3b2

STA b3b2

32

3

13

4

b3b2 ← (A)

LHLD b3b2

2A

3

16

5

HL ← b3b2

SHLD b3b2

22

3

16

5

b3b2 ← (HL)

LDAX rp

00PP0010

1

7

2

A ← [(rp)]

STAX rp

00PP1010

1

7

2

[(rp)] ← (A)

XCHG

EB

1

4

1

(HL) ↔ (rp)

Команды арифметических и логических операций

ADD r

10000SSS

+

1

4

1

A ← (A) + (r)

ADD M

86

+

1

7

2

A ← (A) + [(HL)]

ADI b2

C6

+

2

7

2

A ← (A) + b2

ADC r

10001SSS

+

1

4

1

A ← (A) + (r) + (TC)

ADC M

8E

+

1

7

2

A ← (A) + [(HL)] + (TC)

ACI b2

CE

+

2

7

2

A ← (A) + b2 + (TC)

SUB r

10010SSS

+

1

4

1

A ← (A) – (r)

SUB M

96

+

1

7

2

A ← (A) – [(HL)]

SUI b2

D6

+

1

7

2

A ← (A) – b2

SBB r

10011SSS

+

1

4

1

A ← (A) – (r) – (TC)

SBB M

9E

+

1

7

2

A ← (A) – [(HL)] – (TC)

SBI b2

DE

+

2

7

2

A ← (A) – b2 – (TC)

INR r

00DDD100

(+)

1

4

1

r ← (r) + 1

INR M

34

(+)

1

10

3

[(HL)] ← [(HL)] + 1

DCR r

00DDD101

(+)

1

4

1

r ← (r) – 1

Т а б л и ц а 3.5 (продолжение)

1

2

3

4

5

6

7

DCR M

35

(+)

1

10

3

[(HL)] ← [(HL)] – 1

INX rp

00PP0011

1

6

1

rp ← (rp) + 1

DCX rp

00PP1011

1

6

1

rp ← (rp) – 1

DAD rp

00PP1001

1

10

3

[(HL)] ← [(HL)] + (rp)

DAA

27

+

1

4

1

A ← (A)2-10

ANA r

10100SSS

+

1

4

1

A ← (A) ۸ (r)

ANA M

A6

+

1

4

1

A ← (A) ۸ [(HL)]

ANI b2

E6

+

2

7

2

A ← (A) ۸ b2

XRA r

10101SSS

+

1

4

1

A ← (A)  (r)

XRA M

AE

+

1

7

2

A ← (A)  [(HL)]

XRI b2

EE

+

2

7

2

A ← (A)  b2

ORA r

10110SSS

+

1

7

2

A ← (A) ۷ (r)

ORA M

B6

+

1

7

2

A ← (A) ۷ [(HL)]

ORI b2

F6

+

2

7

2

A ← (A) ۷ b2

CMP r

10111SSS

+

1

4

1

 (A) – (r)

CMP M

BE

+

1

4

1

 (A) – [(HL)]

CPI b2

FE

+

2

7

2

 (A) – b2

CMA

2F

1

4

1

 A ←  

STC

37

C

1

4

1

 TC ← 1

CMC

3F

C

1

4

1

 TC

RLC

07

C

1

4

1

 A7-1 ← (A6-0), A0 ← (TC), TC←A7

RRC

0F

C

1

4

1

 A6-0 ← (A7-1), A7 ← (TC), TC←A0

RAL

17

C

1

4

1

 A7-1 ← (A6-0), A0 ← (A7), TC←A7

RAR

1F

C

1

4

1

 A6-0 ← (A7-1), A7 ← (A0), TC←A0

Команды управления

JMP b3b2

C3

3

10

3

PC ← b3b2

Jcond b3b2

11CCCC01

3

10

3

Cond = 1: PC ← b3b2

CALL b3b2

CD

3

18

5

SP ← (PC), PC ← b3b2

Ccond b3b2

11CCC100

3

2/5

9/18

Cond = 1:

SP ← (PC), PC ← b3b2

RET

C9

3

10

3

PC ← [(SP)]

Rcond

11CCC100

3

17/11

5/3

Cond = 1: PC ← [(SP)]

RST n

111nnn111

1

11

3

PC ← 8n

SPHL

E9

1

6

1

SP ← (HL)

 

Т а б л и ц а 3.5 (продолжение)

1

2

3

4

5

6

7

Специальные команды

PUSH rp

11PP0101

1

11

3

SP ← (SP) – 2;

 [(SP)];[(SP) + 1]← (rp)

PUSH PSW

F5

1

11

3

SP ← (SP) – 2;

[(SP)],[(SP) + 1]←(A),(F)

POP rp

11PP0001

1

10

3

rp ← [(SP)],[(SP) + 1],

SP ← (SP) + 2

POP PSW

F1

1

10

3

F,A ← [(SP)],[(SP) + 1];

SP ← (SP) + 2

XTHL

E3

1

18

5

(HL) ↔ [(SP)],[(SP) + 1]

PCHL

F9

1

5

1

PC ← (HL)

IN port

DB

2

10

3

A ← (port)

OUT port

D3

2

10

3

port ← (A)

EI

FB

1

4

1

Разрешение прерывания

ВI

F3

1

4

1

Запрещение прерывания

HLT

76

1

7

2

Останов

NOP

00

1

4

1

Нет операции

RIM

20

1

4

1

Чтение маски прерывания

SIM

30

1

4

1

Запись маски прерывания

 

Во второй графе коды первого байта команды b1 даются в двоичном восьмиразрядном представлении, если требуется указать в них адреса операндов, или в двухразрядном шестнадцатиричном представлении в иных случаях. Разряды обобщенных адресов регистров – источников данных выражены буквами S (Data Source), регистров – приемников данных – буквами D (Data Destination), пар регистров – буквами P (Pair). Подставляя вместо буквенных символов определенные адреса, получим коды конкретных вариантов команды. Коды условий, при выполнении которых осуществляется указанная в команде операция, обозначены буквами C (Condition), расшифровка которых представлена в таблице 3.6.

Т а б л и ц а 3.6

ССС

Мнемокод (cond)

Условия

000

NZ

Неравенство нулю

001

Z

Равенство нулю

010

NC

Отсутствие переноса

011

C

Наличие переноса

100

PO

Нечетность

101

PE

Четность

110

P

Плюс

111

M

Минус

 

Признаки формируются в регистре флажков, формат которого представлен в таблице 3.7.

Т а б л и ц а 3.7

S

Z

0

AC

0

P

1

C

 

В коде команды рестарта RST три разряда, отмеченные буквами n, формируются системой прерываний или указываются программистом.

Операция сравнения производится вычитанием операндов с установкой признаков результата (Z и S).

В третьей графе прочерк означает, что выполнение команды не сопровождается выработкой флажков-признаков, знак плюс говорит об установке всех признаков, знак плюс в скобках – об установке всех признаков, кроме признака наличия или отсутствия переноса С, а символ С означает, что вырабатывается только признак наличия или отсутствия переноса.

3.4            Способы адресаций

Для выполнения операции, соответствующей определенной команде, наряду в кодом операции, должны быть указаны источник и приемник данных. В микропроцессоре Intel 8085 формирование адресов осуществляется четырьмя способами, это – прямая адресация, регистровая адресация,  косвенная адресация и  непосредственная адресация.

При прямой адресации код адреса содержится в составе команды. Ввиду того что число разрядов адресного кода определяется объемом памяти, этот способ адресации увеличивает объем команды. Например, для памяти, содержащей 216 ячеек, адресация осуществляется шестнадцатиразрядным кодом, и такие команды являются трехбайтными. Адресация внешних устройств осуществляется восьмиразрядным кодом, и такие команды являются двухбайтными.

При регистровой адресации операнд содержится в одном из внутренних регистров микропроцессора. Ввиду того что микропроцессор Intel 8085 содержит не более восьми регистров общего назначения, для их адресации достаточно трехразрядного адреса, поэтому такие команды являются однобайтными.

При косвенной адресации указывается регистровая пара, содержащая адрес необходимого операнда. Такие команды (как и команды с регистровой адресацией) компактны, но они требуют предварительного занесения адреса в соответствующую регистровую пару. В микропроцессоре Intel 8085 в качестве регистра косвенной адресации используются регистры H и L (регистровая пара HL). Косвенная адресация удобна для обработки последовательных данных, в этом случае адрес устанавливается один раз, а следующий адрес определяется его инкрементированием (или декрементированием).

При непосредственной адресации операнд (одно- или двухбайтный) содержится в составе самой команды, соответственно, такие команды являются двух- или трехбайтными.

Кроме описанных, имеются и более сложные способы адресаций (индексная адресация, относительная адресация и др.), но они в простых микропроцессорах типа Intel 8085 не используются.

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

4 Программирование микропроцессорных систем

Работа микропроцессорных систем осуществляется под управлением программ, составленных в виде последовательностей команд. Программы для специализированных цифровых систем, как правило, составляются на языке ассемблер. Специальная программа, предназначенная для перевода программ, составленных на языке ассемблер, на машинный язык также называется Ассемблером. Программа на машинном языке сохраняется в модули памяти и в дальнейшем работа этой программы осуществляется путем последовательной выборки ее команд и их выполнения.

Запись программы на языке ассемблер осуществляется в определенном порядке (см. рисунок 4.1).

 

{Метка:}

Мнемокод

{Операнд(ы)}

; {Комментарий}

Рисунок 4.1

В фигурные скобки заключены элементы, которые могут и отсутствовать. Метка, мнемокод и операнды разделяются пропусками.

Метка – символьный адрес команды, на которую имеется переход в программе. В командах перехода и вызова подпрограмм название метки используется в качестве операнда.

Мнемокод – обозначение команды на языке ассемблер. Мнемокоды команд составлены на основе соответствующих смысловых понятий: ADD (ADDition), SUB (SUBtraction), XCHG (eXCHanGe).

Операнды разделяются запятым. В случае присутствия в составе команды двух операндов, первый из них является приемником данных, а второй – источником.

Комментарии предназначены только для пояснения выполняемых действий, и им должен предшествовать точка с запятой.

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

Работоспособность рассматриваемых программ, т.е. отсутствие в них как орфографических, так и функциональных ошибок, можно проверить с помощью соответствующего программного симулятора 8085 Simulator IDE. Для этого вам следует установить этот симулятор на вашем компьютере и вовсю пользоваться им для полноценного изучения предлагаемых программ.

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

4.1            Пересылки данных

Предлагаемая в этом разделе программа предназначена для изучения характера действий при выполнении различных (по размеру и по способу адресации) команд пересылок данных. В этой программе (Transfers), составленной в виде нескольких блоков, осуществляются пересылки данных между процессором и памятью. В первом блоке (Single Writing) осуществляется одиночная пересылка в память командой с прямой адресацией. Во втором блоке (Serial Writing-1) реализуется передача массива данных (в виде членов арифметической прогрессии) в память командой с косвенной адресацией. Более практичный способ передачи массива данных представлен в следующем блоке (Single Writing-2). В следующих трех блоках (Data Access, Data Access and Conversion, Single Writing) осуществляются пересылки данных из одного участка памяти в другой с использованием аналогичных использованным ранее командам (только в обратном порядке).

Работа с симулятором осуществляется в следующем порядке:

-         запустить программу симулятора иконой  и в открывшемся основном окне симулятора (см. рисунок 4.2) выбрать Tools/Assembler, а в окне AssemblerFile/New;

Рисунок 4.2

-         сдвинув курсор на табулированное расстояние (например, клавишей Tab), ввести первую команду представленной ниже программы и нажать Enter. Аналогично продолжить ввод остальных команд программы. Метки записываются в начале строки;

-         сохранить программу (File/Save As) под именем Transfers (Пересылки), в результате чего создается файл с расширением asm. Затем, в окне Assembler выбрать Tools/Assemble&Load. Создаются файлы с расширениями hex, lst, obj;

-         в основном окне симулятора выбрать Tools/Breakpoints Manager и установить контрольные точки после каждого блока, т.е. в строках с командой nop;

-         в основном окне симулятора выбрать скорость моделирования (Rate/…), например, Rate/Normal и запустить работу симулятора (Simulation/Start);

-         после каждой остановки программы в контрольных точках проанализировать действия команд в выполненном блоке и полученные результаты, т.е. соответствующие персылки данных (в регистрах микропроцессора и в соответствующих ячейках памяти). Окно памяти открывается путем выбора Tools/Memory Editor;

-         продолжить работу симулятора, выбрав скорость моделирования (Rate/…).

Текст программы представлен ниже:

 

;Transfers

;=========================================

                ;Single Writing

                mvi A,0FH                            ;Direct Loading

                sta 00D0H                             ;Direct Writing

                nop

;---------------------------------------------------------------------

                ;Serial Writing-1

                mvi C,07h                              ;Data Counter

                lxi D,00D0h                           ;Initial Address

                mvi A,00h                             ;Cleaning

T0           adi 13h                   ;Expansion Step

                inx D                                      ;Address Increment

                stax D                    ;Indirect Writing

                dcr C                                      ;Monitoring of the Data Counter

                jnz T0                     ;Continue

                xchg                                       ;Exchange

                nop

;---------------------------------------------------------------------

                ;Serial Writing-2

                mvi C,08h                              ;Data Counter

T1           adi 09h                   ;Expansion Step

                inx H                                      ;Address Increment

                mov M,A                              ;Indirect Writing

                dcr C                                      ;Monitoring of the Data Counter

                jnz T1                     ;Continue

                nop

;---------------------------------------------------------------------

                ;Data Access and Writing

                lxi D,00EFh                           ;Initial Address

                mvi C,08h                              ;Data Counter

T2           mov A,M                              ;Indirect Loading

                stax D                    ;Indirect Writing

                dcx H                                     ;Address Decrement

                dcx D                                     ;Address Decrement

                dcr C                                      ;Monitoring of the Data Counter

                jnz T2                     ;Continue

                nop

;---------------------------------------------------------------------

                ;Data Access, Conversion and Writing

                mvi C,07h                              ;Data Counter

T3           mov A,M                              ;Indirect Loading

                rlc;                                         Left Shift

                xchg                                       ;Exchange

                mov M,A                              ;Indirect Writing

                dcx H                                     ;Address Decrement

                dcx D                                     ;Address Decrement

                xchg                                       ;Exchange

                dcr C                                      ;Monitoring of the Data Counter

                jnz T3                     ;Continue

                nop

;---------------------------------------------------------------------

                ;Single Access and Writing

                lda 00D0h                             ;Direct Loading

                sta 00E0h                              ;Direct Writing

;---------------------------------------------------------------------

                hlt                                          ;Ending

4.2            Однобайтная арифметика

Следующая программа (Single-Byte Arithmetic) предназначена для изучения характера действий при выполнении однобайтных арифметических операций, реализуемых с помощью команд add и sub, а также для ознакомления с принципами организации циклических программных структур и порядком работы с периферийным устройством ввода/вывода данных.

В блоке Data Array программы осуществляются формирование данных в виде значений членов арифметической прогрессии и сохранение их в памяти. В блоке Cumulative Summation осуществляется последовательное суммирование, сохраненных до этого в памяти, значений (членов арифметической прогрессии). В справедливости полученного результата суммирования (в регистрах B и A) можно убедиться путем ручного определения (вычисления) суммы членов арифметической прогрессии по формуле . Блок Retention of Result обеспечивает сохранение полученного перед этим результата (суммы) в памяти.

В блоке Series Subtraction осуществляется последовательное вычитание сохраненных в памяти значений чисел из предыдущего результата суммирования. В результате осуществленных последовательных вычитаний, регистры B и A должны обнулиться.

В блоке Alternative of the Single-Byte Summation, состоящем из двух подблоков (Data и Cumulative Summation-A), реализован альтернативный вариант этапов формирования членов арифметической прогрессии и их суммирования. В этом случае с помощью устройства ввода/вывода (Peripheral Devices) осуществляется ввод следующих данных (см. рисунок 4.3):

-         числа, принимаемого за базовое (Initial Operand) для вычисления значений членов арифметической прогрессии;

-         числа членов арифметической прогрессии (Data Quantity);

-         шага наращивания членов арифметической прогрессии (Step).

Результат суммирования также выводится с помощью устройства ввода/вывода.

Рисунок 4.3

Текст программы выглядит следующим образом:

 

                ;Single-Byte Arithmetic

;=========================================

                ;Data Array (arithmetical progression)

                lxi H,00E0h                            ;Initial Address

                mvi C,0Ah                            ;Data Quantity

                mvi A,00h                             ;Cleaning

                mov M,C                               ;Writing in the Memory

SD          inx H                                      ;Address Increment

                adi 15h                   ;Increment Step of the Linear Series

                mov M,A                              ;Writing in the Memory

                dcr C                                      ;Monitoring of the Data Counter

                jnz SD                    ;Continue

                nop

;---------------------------------------------------------------------

                ;Cumulative Summation

                ;Sum=((2a1+(n-1)d)/2)n

                ;a1-first operand, n-quantity, d-step,

                lxi H,00E0h                            ;Initial Address

                mvi A,00h                             ;Cleaning

                mov B,A                               ;Cleaning

                mov C,M                               ;Installation of the Data Counter

C1           inx H                                      ;Address Increment

                add M                    ;Addition

                jnc C2                    ;Carry Monitoring

                inr B                                       ;Carry Accumulation

C2           dcr C                                      ;Monitoring of the Data Counter

                jnz C1                     ;Continue

                nop

;---------------------------------------------------------------------

                ;Retention of Result

                inx H

                mov M,A                              ;Low Byte

                inx H

                mov M,B                               ;High Byte

                nop

;---------------------------------------------------------------------

                ;Series Subtraction

                lxi H,00E0h                            ;Initial Address

                mov C,M                               ;Installation of the Data Counter

S1           inx H                                      ;Address Increment

                sub M                                   ;Subtraction

                jnc S2                                    ;Borrow Monitoring

                dcr B                                      ;Borrow Subtraction

S2           dcr C                                      ;Monitoring of the Data Counter

                jnz S1                                     ;Continue

                nop

;=========================================

                ;Alternative of the Single-Byte Summation

;=========================================

                ;Data

                in 01h                                    ; Initial Operand

                mov E,A

                in 01h                                    ;Data Quantity

                mov C,A

                in 02h                                    ;Step

                mov D,A

                lxi H,0000h

                nop

;---------------------------------------------------------------------

                ;Cumulative Summation-A

A1          mov A,E

                add D

                mov E,A                                ; Active Operand

                mov A,L

                add E

                jnc A2                    ;Carry Monitoring

                inr H                                      ;Carry Accumulation

A2          mov L,A

                dcr C                                      ;Monitoring of the Data Counter

                jnz A1

                mov A,L

                out 03H                 ; Result (Low Byte)

                mov A,H

                out 04H                 ; Result (High Byte)

 

;---------------------------------------------------------------------

                hlt                                          ;Ending

4.3            Двухбайтная арифметика

Следующая программа (Double-Byte Arithmetic) предназначена для изучения характера действий при выполнении двухбайтных арифметических операций, реализуемых с помощью команд с регистровой (add, adc, sub, sbb) и и непосредственной (adi, aci, sui, sbi) адресацией.

В блоке Data Array программы осуществляются формирование данных в виде двухбайтных значений членов арифметической прогрессии и сохранение их в памяти. В блоке Cumulative Summation осуществляется последовательное суммирование, сохраненных до этого в памяти, значений (членов арифметической прогрессии). В справедливости полученного результата суммирования (в регистрах H и L) можно убедиться путем ручного определения (вычисления) суммы членов арифметической прогрессии по формуле . В блоке Addition with Direct Addressing выполняется единичная операция арифметического сложения с помощью команд с непосредственной адресацией. Затем полученный общий результат суммирования сохраняется в памяти (блок Retention of Result).

В блоках Series Subtraction и Subtraction with Direct Addressing осуществляется последовательное вычитание сохраненных в памяти значений чисел и непосредственно заданных данных из предыдущего результата суммирования. В результате осуществленных последовательных вычитаний регистры H и L должны обнулиться.

В блоке Alternative of the Double-Byte Summation реализован альтернативный вариант последовательного суммирования, сохраненных до этого в памяти (блоке Data Array), чисел с помощью стековой команды pop и команды двухбайтного сложения dad.

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

Текст этой программы представлен внизу:

 

                ;Double-Byte Arithmetic

;=========================================

                ;Data Array (arithmetical progression)

                lxi H,00E0h                            ;initial address

                mvi C,0Ah                            ;data quantity

                mov M,C

                mvi A,00h                             ;low byte

                mvi B,12h                              ;high byte

DD          adi 15h                   ;step of the low byte=15H

                inr B                                       ;step of the high byte=01H

                inx H

                mov M,A                              ;saving of the low byte

                inx H

                mov M,B                               ;saving of the high byte

                dcr C                                      ;monitoring of the data counter

                jnz DD                   ;continue

                nop

;---------------------------------------------------------------------

                ;Cumulative Summation

                ;SUM=((2a1+(n-1)d)/2)n

                ;a1-first operand,n-quantity,d-step

                lxi H,00E0h                            ;initial address

                lxi D,0000h                            ;temporary repository for the result

                mov B,M                               ;installation of the data counter

                mov C,B                ;doublet of the data counter

CS           mov A,E

                inx H

                add M                    ;low byte

                mov E,A

                mov A,D

                inx H

                adc M                                    ;high byte

                mov D,A

                dcr B                                      ;monitoring of the data counter

                jnz CS                    ;continue

                nop

;---------------------------------------------------------------------

                ;Addition with Direct Addressing

                mov A,E

                adi 3Dh                  ;low byte

                mov E,A

                mov A,D

                aci 5Ah                  ;high byte

                mov D,A

                nop

;---------------------------------------------------------------------

                ;Retention of the Result

                inx H

                mov M,E                               ;low byte

                inx H

                mov M,D                              ;high byte

                nop

;---------------------------------------------------------------------

                ;Series Subtraction

                lxi H,00E0h

S0           mov A,E

                inx H

                sub M                                   ;low byte

                mov E,A

                mov A,D

                inx H

                sbb M                                   ;high byte

                mov D,A

                dcr C                                      ;monitoring of the data counter

                jnz S0                                     ;continue

                nop

;---------------------------------------------------------------------

                ;Subtraction with Direct Addressing

                mov A,E

                sui 3Dh                  ;low byte

                mov E,A

                mov A,D

                inx H

                sbi 5Ah                 ;high byte

                mov D,A

                nop

;---------------------------------------------------------------------

                ;Alternative of the Double-Byte Summation

                lda 00E0h

                mov C,A                               ;data counter

                lxi SP,00E1h          ;initial address

                lxi H,0000h                            ;Double-Byte Accumulator

AS          pop D                                    ;Pulling

                dad D                                    ;Double-Byte Summation

                dcr C                                      ;monitoring of the data counter

                jnz AS                    ;continue

                lxi B,5A3Dh

                dad B

;---------------------------------------------------------------------

                hlt

4.4            Программа умножения

В микропроцессоре Intel 8085 отсутствует команда умножения, поэтому для операции умножения приходится составлять соответствующую программу. Определим алгоритм умножения. С целью наглядного объяснения машинного алгоритма, ниже приведены три варианта реализации процесса умножения десятичных чисел по известному со школьной скамьи алгоритму:

 

 

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

-        ввиду того что результат умножения восьмиразрядных чисел будет шестнадцатиразрядным числом и в связи с тем, что частичные сложения выполняются также над шестнадцатиразрядными числами, в качестве шестнадцатиразрядного аккумулятора была принята регистровая пара HL, которая очищается в начале выполнения программы;

-       В регистр E регистровой пары DE вводится первое число (множимое), а регистр D обнуляется, в результате чего множимое становится шестнадцатиразрядным числом;

-       с целью обеспечения возможности сдвига, второе число (множитель) помещается в аккумуляторе (во избежания путаницы его в дальнейшем будем называть регистром A);

-       для обеспечения контроля над числом операций сдвига, число разрядов множителя (восемь) помещается в регистр С;

-       перед осуществлением каждого частичного умножения накопившийся до этого результат (в регистровой паре HL) сдвигается влево (путем удваивания);

-       очередное значение зазряда множителя определяется путем сдвига содержимого регистра A (множителя) влево и в случае равенства его нулю –частичное умножение этим и завершается (т.е. предыдущим сдвигом регистровой пары HL), а при равенства его единице – к содержимому регистровой пары HL добавляется содержимое регистровой пары DE.

После каждого частичного умножения содержимое счетчика сдвига убавляется на единицу и при равенстве его нулю – программа умножения завершает свою работу.

В программе (Multiplication) представлена реализация рассмотренного алгоритма умножения:

 

M:           ;Multiplication

;================

                ;Data

                in 01H

                mov E,A

                mvi D,00h

                in 02h

                lxi H,0000h

                mvi C,08h

;---------------------------

                ;Implementation

M1:         dad H

                rlc

                jnc M2

                dad D

M2:         dcr C

                jnz M1

                mov A,L

                out 03H

                mov A,H

                out 04H

;---------------------------

                hlt

4.5            Организация работы с подпрограммами

В составе программы работы микропроцессорной системы, как правило, содержится несколько подпрограмм, вызываемых из основной части программы и предназначенных для решения определенных задач. При вызове подпрограммы необходимо обеспечить возможность продолжения работы основной программы после завершения работы подпрограммы (последняя команда любой подпрограммы – ret), т.е. возврат из подпрограммы. Для этого определенная область памяти выделяется в качестве области стека, и адрес верхней ячейки этой области назначается в качестве верхушки стека, т.е. записывается в указатель стека SP. При вызове подпрограммы адрес следующей команды основной программы, т.е. содержимое счетчика команды в момент ухода в подпрограмму, сохраняется в стеке и, в дальнейшем, при возврате из подпрограммы, с этого адреса продолжается работа основной программы.

При необходимости можно организовать сохранение в стеке содержимого регистров (точнее, регистровых пар) при уходе в подпрограмму (командой push) и восстановить их при возврате из подпрограммы (командой pop). Эти операции обычно выполняются в начале и в конце подпрограммы, соответственно.

С целью изучения структуры и порядка организации работы с подпрограммами и со стеком, внизу представлена программа (Stack) вычисления по выражению y = a1*a2 + a3*a4 + .

На начальном участке основной программы (в блоке Preset) выполняются подготовительные операции к работе со стеком, а именно: назначается содержимое указателя стека SP и определяется информация, предназначенная для организации работы подпрограммы вывода и отображения результатов.

В блоках Mul1, Mul2 и Sum(ai,n,d) осуществляется ввод данных для выполнения операций умножения и суммирования, после которых вызываются соответствующие подпрограммы. Сохранение частичных результатов (умножений и суммирования) и вывод их на периферию осуществляется в подпрограмме Per. В блоке Total Sum осуществляется определение конечного результата, т.е. суммирование частичных результатов, полученных в предыдущих этапах.

Наблюдение за продвижением данных в стеке (при проверке работы программы на симуляторе) дает ясную картину его работы (см.рисунок 4.4).

Рисунок 4.4

Текст программы представлен внизу:

 

                ;Stack...Sum=a1*a2+a3*a4+sum(ai,n,d)

;=========================================

                ;Preset

lxi SP,0FFh

                mvi B,0A0h

nop

;---------------------------------------------------------------------

                ;Mul1=a1*a2

                in 01h                                    ;first multiplier

                mov E,A

                in 02h                                    ;second multiplier

                call Mul

                push H

                call Per

                nop

;---------------------------------------------------------------------

                ;Mul2=a3*a4

                in 01h                                    ;first multiplier

                mov E,A

                in 02h                                    ;second multiplier

                call Mul

                push H

                call Per

                nop

;---------------------------------------------------------------------

                ;Sum(ai,n,d)

                in 01h                                    ;quantity - n

                mov C,A

                in 02h                                    ;step - d

                mov D,A

                in 01h                                    ;initial operand - a1

                mov D,A

                lxi H,0000h

                call Sum

                call Per

                nop

;---------------------------------------------------------------------

                ;Total Sum

                pop D

                dad D

                pop D

                dad D

                call Per

;---------------------------------------------------------------------

                hlt

;=========================================

Mul        ;Multiplication (subroutine)

                mvi D,00h

                lxi H,0000h

                mvi C,08h

M1          dad H

                rlc

                jnc M2

                dad D

M2          dcr C

                jnz M1

                ret

;=========================================

Sum        ;Cumulative Summation (subroutine)

CS3         mov A,E

                add D

                mov E,A

                mov A,L

                add E

                jnc CS4

                inr H

CS4         mov L,A

                dcr C

                jnz CS3

                ret

;=========================================

Per          ;Displaying on the Periphery

                ;and Writing on the Memory (subroutine)

                mov C,B

                mvi B,00h

                mov A,L

                out 03h

                stax B

                inr C

                mov A,H

                out 04h

                stax B

                inr C

                mov B,C

                ret

5 Модель микропроцессорной системы

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

При разработке микропроцессорных систем учитываются два взаимосвязанных и взаимообусловленных фактора: конструирование аппаратной части системы (hardware), обеспечивающей физическую реализацию решения поставленной задачи, и определения системы команд (software), позволяющей составить программу действий и взаимодействий функциональных компонентов системы по решению задачи. Следовательно, для получения наиболее полного знания о микропроцессорной системе требуется освоение как ее аппаратной, так и программной составляющих.

Материал данного раздела посвящен рассмотрению возможностей практической реализации общих принципов построения микропроцессорной системы, на примере разработки модели такой системы с оригинальной системой команд. Модель разработана в программной среде схемотехнического  моделирования  Electronics Workbench [2], предназначенной для моделирования и анализа электрических схем.

С целью обеспечения наибольшей простоты модели и наглядности ее функционирования она была рассчитана для работы с 4-разрядными данными (тетрадами) и построена на основе общих принципов построения микропроцессорной системы и по архитектуре фон-Неймана.

5.1            Структура модели MP4M

Общий вид модели 4-разрядной микропроцессорной системы, содержащий в своем составе микропроцессор (MP4M), устройство ввода данных (In), систему памяти (Mem) и блок выбора режима работы системы (Regime), приведен на рисунке 5.1.

 Рисунок 5.1

В состав микропроцессора (см. рисунок 5.2) входят следующие блоки, объединенные в соответствующие подсхемы:

-         набор специализированных регистров (RGs, Registers);

-         арифметико-логическое устройство (ALU, Arithmetic-Logic Unit);

-         регистр команд (IR, Instruction Register);

-         дешифратор команд (DC_16, Decoder 16-bit);

-         таймер (CLK, Clock);

-         микропрограммное устройство (Combi, Combinational Circuit.

Рисунок 5.2

5.1           Функциональные узлы модели MP4M

Набор регистров (RGs) содержит в своем составе (см. рисунок 5.3) следующие регистры, каждый из которых предназначен для выполнения определенных функций:

Рисунок 5.3

-         регистр A выполняет функцию аккумулятора (Accumulator), где хранится один из операндов, участвующих в выполнении арифметических и логических операций или результат выполнения операции. Загрузка аккумулятора осуществляется из памяти (команда LD A) или из ALU (после выполнения арифметической или логической операции);

-         регистр A1 предназначен для накопления переносов при организации циклического суммирования. Он обнуляется при запуске программы и при загрузке аккумулятора (регистра A) командой LD A. Вывод его содержимого на индикаторы (аккумулятора) осуществляется кратковременным нажатием клавиши Space;

-         регистр B выполняет функцию адресного регистра для команд пересылок между памятью и внутренними регистрами микропроцессора (команды LD C, LD IP, LD SP, LD A). После выполнения команд LD C, LD SP, LD A происходит приращение содержимого регистра B (т.е. увеличение на единицу). Загрузка этого регистра осуществляется командой LD B, в качестве адресного регистра для которого используется регистр C. Он обнуляется при запуске программы;

-         регистр C выполняет функцию адресного регистра для второго операнда, участвующего в выполнении арифметических и логических операций. После выполнения этих команд происходит приращение содержимого регистра C, но в отличие от регистра B знак приращения регистра C может быть изменен, он устанавливается клавишей I. Ее состояние показывает индикатор (I) - Dcr/Inr: при I=0 – положительное (Increment), а при I=1 – отрицательное (Decrement) приращение. Его содержимое может быть оставлено и в неизменном состоянии, о котором будет изложено при описании режимов работы системы. Загрузка этого регистра осуществляется командой LD C. При запуске программы этот регистр устанавливается в состояние 1111. Ввиду того что любая программа содержит в своем составе команды пересылок, первой командой программы должна быть загрузка регистра B (команда LD B) данным, содержащимся в ячейке памяти данных с адресом 1111. В состав регистра C включена схема, предназначенная для определения нулевого состояния регистра, по которому осуществляется условный переход при организации циклических операций;

-         регистр SP выполняет функцию указателя стека (Stack Pointer), т.е. он выполняет функцию адресного регистра при выполнении команд PUSH и POP:  перед выполнением команды PUSH происходит отрицательное приращение его содержимого (Predecrement), а после выполнения команды POP – положительное приращение (Postincrement). Загрузка этого регистра осуществляется командой LD SP. При запуске программы этот регистр устанавливается в состояние 1111;

-         регистр IP выполняет функцию указателя команды (Instuction Pointer). После выборки кода текущей команды и сохранения его в регистре команды происходит приращение его содержимого. Загрузка этого регистра осуществляется командой LD IP. Его содержимое изменяется и при выполнении условий перехода, определяемых в некоторых альтернативных режимах работы системы. Он обнуляется при запуске программы.

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

Арифметико-логическое устройство (ALU, Arithmetic-Logic Unit) осуществляет выполнение арифметических и логических операций и содержит в своем составе  различные подблоки (sum, not, and, or, xor), предназначенные для реализации соответствующих операций и буферные регистры для временного хранения операндов и результата выполненной операции.

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

Таймер (CLK) определяет временное распределение сигналов управления, передаваемых  к устройствам, участвующим в выполнении команд.

Микропрограммное устройство комбинационного типа (Combi, Combinational Circuit) формирует пространственные и временные сигналы управления, обеспечивающие выполнение текущей команды.

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

Блок управления памяти (MCon, Memory Control) обеспечивает выбор одного из блоков памяти (кодов или данных) и режим его работы (ввода, записи, считывания) в зависимости от управляющих сигналов, поступающих от устройства ввода или от микропроцессора.

5.2            Режимы работы и система команд модели MP4M

Система может работать в нескольких режимах, которые определяются в зависимости от состояний клавиш в блоке выбора режима ее работы (Regime). Состояние этих клавиш показывают соответствующие индикаторы. Опишем эти режимы.

 Загрузка памяти от устройства ввода осуществляется при M=1. Если при этом P=1, то запись происходит в программную память (программа должна завершаться командой остановки с кодом F), а при P=0 – в память данных. Проверка содержимого памяти осуществляется изменением адреса ячейки памяти путем кратковременного нажатия клавиши Space. При переключении клавиши P происходит обнуление адреса соответствующего блока памяти.

Запуск программы к работе осуществляется переключением клавиши M в состояние M=0. Если при этом P=1, то при выполнении арифметических и логических команд происходит изменение содержимого регистра C (соответственно значению I), а при P=0 его содержимое остается неизменным.

При S=0 по командам ADS (без переноса) и ACS (с переносом) выполняются операции сложения, а при S=1 – соответствующие операции вычитания.

При V=0 по команде AND выполняется обычная операция логического умножения между двумя операндами, а при V=1 – реализуется битовая операция по поиску единичного бита в определенном разряде данных, для чего в аккумулятор должно быть загружено число, содержащее единицу только в искомом разряде. Описанная битовая операция имитирует поиск сигнала запроса от внешнего устройства или квитирования в реальных прикладных системах.

Перевод системы в один из описанных режимов осуществляется перед запуском программы к работе, но может быть осуществлен и в процессе работы программы, что расширяет программные возможности системы. Например, в процессе работы можно операции сложения изменять на вычитание и наоборот. Аналогично конъюнкцию можно изменять на битовую операцию по определению единичного бита в определенном разряде данных.

Мнемоники команд микропроцессорной модели MP4M и описания выполняемых этими командами действий в основном и различных альтернативных режимах работы системы представлены в таблице 5.1, а порядок установки режимов работы – в таблице 5.2.

Т а б л и ц а 5.1

Мн-ка

Коды

Операции

Hex

V=0

P

S

V=1; I=1

LD B

0

B←[(C)];  C(C)+1

 

 

 

LD C

1

C←[(B)];  B(B)+1

 

 

 

LD IP

2

IP←[(B)]

 

 

 

LD SP

3

SP←[(B)]; B(B)+1

 

 

 

LD A

4

A←[(B)];  B(B)+1

 

 

 

ST

5

[(B)]←(A);B(B)+1

 

 

 

INR

6

A←(A)+1

 

 

 

NOT

7

A←

 

 

 

ADS

8

A←(A)±[(C)]; TC

P=1: C←var(I)

P=0: C = invar

S=1: SUB (–)

S=0:ADD,ADC (+)

Zc = 0:       IP←IP+1

ACS

9

A←(A)±[(C)±TC; TC

 

 

 

AND

A

A←(A)۸[(C)]

 

 

Zc۸Za=0:  IP←IP+1

OR

B

A←(A)۷[(C)]

 

 

 

XOR

C

A←(A)[(C)]

 

 

 

PUSH

D

SP←(SP)–1; (SP)]←(A)

 

 

 

POP

E

A←(SP)]; SP←(SP)+1

 

 

 

HLT

F

IP = invar

 

 

 

Т а б л и ц а 5.2

Ключи и

инд-ры

M/R = 1

M/R → 0: Running: A,B,IP ← 0; C,SP ← F

P=1:   C←var(I);               P=0:     C = invar

S = 0

P/D = 1:

MemPr←IN

P/D = 0:

MemD←IN

Addition         (+)

A ← (A) + [(C)]

S = 1

Subtraction     (–)

A ← (A) – [(C)]

I = 1

PostDecrement  C(C) –1

C←(C)–1; (C)=0: Zc ← 0

I = 0

PostIncrement   C(C) +1

C ← (C) + 1

V = 0

Logical Operation

A ← (A) {۸ / ۷ / } [(C)]

V = 1

Verifying of Byte

(A)=0010…bi = 1: Za ← 0

 

5.3           Примеры организации работы модели MP4M

Для иллюстрации возможностей модели приведем описания двух программ организации ее работы. Представленная ниже программа предназначена для суммирования данных, размещенных в ячейках блока данных системы памяти рассматриваемой модели (в приведенной программе – в ячейках 1-5).

 

Адрес

Команды

Коды

Адрес

Данные

Адрес

Данные

0

LD B

0

0

1

LD C

1

1

A

7

5

2

ADS

8

2

B

8

2

3

LD IP

2

3

C

4

HLT

F

4

D

 

 

 

 

 

5

E

F

7

 

После завершения выполнения этой программы значение младшего разряда результата суммирования отображается в индикаторах регистра A (число С), а значение старшего разряда определяется кратковременным нажатием клавиши Space (число 3).

Следующая программа, путем выполнения битовых операций, реализует процесс обнаружения единичного бита в третьем разряде среди данных, размещенных в ячейках с адресами 1…5 (в данном конкретном случае – число D, размещенное в ячейке с адресом 2).

 

Адрес

Команды

Коды

Адрес

Данные

Адрес

Данные

0

LD B

0

0

6

1

LD C

1

1

8

7

5

2

LD A

4

2

D

8

4

3

AND

A

3

A

9

3

4

LD IP

2

4

9

5

HLT

F

5

B

F

7

После обнаружения искомого числа программа информирует о завершении поиска миганием индикатора (Bit) и завершает работу, а обнаруженное число отображается в индикаторах регистра A1 (число D).

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

Оригинальная структура рассмотренной модели, заключающаяся в многовариантности режимов ее работы и ее многовариантная система команд, предоставляют возможности для составления различных типов программ работы системы и способствуют развитию творческих возможностей ее пользователей.

 

Список литературы

1.        Угрюмов Е. П. Цифровая схемотехника. – СПб.: БХВ-Петербург, 2004.

2.        Уэйкерли Дж. Ф. Проектирование цифровых устройств: Пер. с. англ. – М.: Постмаркет, 2002.

3.        Хамахер К. И др. Организация ЭВМ. Пер. с. англ. – СПб.: Питер, 2003.

4.        Токхейм Р. Основы цифровой электроники: Пер. с. англ. – М.: Мир, 1988.

5.        Токхейм Р. Микропроцессоры. Курс и упражнения: Пер. с. англ. – М.: Мир, 1988.

6.        Бойко В.И. и др. Схемотехника электронных устройств. Циффровые устройства. – СПб.: БХВ-Петербург, 2004.

7.        Бойко В.И. и др. Схемотехника электронных устройств. Микропроцессоры и микроконтроллеры. – СПб.: БХВ-Петербург, 2004.

8.        Сугано Т. Дж., Уидмер Н. С. Цифровые системы. Теория и практика: Пер. с англ. – М.: Издательский дом “Вильямс”, 2004.

9.        Шанаев О.Т. Система моделирования Electronic Workbench / на казахском и русском языках. – Алматы: 2003.

10.     Шанаев У.Т. Основы цифровой техники / Учебное пособие. – Алматы: АГУ, 1999.

 

Содержание

Введение  3

1 Математические основы цифровых систем  5

1.1 Двоичные коды   5

1.1.1 Преобразования десятичных чисел. 6

1.1.2 Арифметические операции над двоичными числами. 8

1.2 Логические функции  9

1.2.1 Основные функции. 9

1.2.2  Универсальные функции. 10

1.2.3 Функции эквивалентности и неэквивалентности. 10

1.3 Законы и соотношения алгебры логики  11

1.4 Сложные функции  12

1.4.1 Формы представления сложных функций. 12

1.4.2 Минимизация логических выражений. 13

2 Структурные основы цифровых систем  15

2.1 Логические элементы   15

2.2 Комбинационные устройства  17

2.3 Типовые комбинационные узлы цифровых систем  17

2.3.1 Шифраторы. 18

2.3.2 Дешифраторы. 20

2.3.3 Мультиплексоры. 22

2.3.4 Демультиплексоры. 23

2.3.5 Сумматоры. 24

2.4 Последовательностные устройства  25

2.4.1 Триггеры.  25

2.4.2 Регистры.  31

2.4.3 Счетчики.  32

2.5 Устройства памяти  33

2.5.1 Характеристики устройств памяти. 34

2.5.2 Структура устройств памяти типа RAM. 36

2.5.3 Элементы устройств памяти типа ROM. 38

3 Микропроцессоры и микропроцессорные системы   41

3.1 Структурные принципы микропроцессорных систем  41

3.2 Микропроцессор Intel 8085  42

3.2.1 Структура микропроцессора. 42

3.2.2 Выводы и сигналы микропроцессора. 45

3.2.3 Организация работы микропроцессора. 47

3.2.4 Система прерывания. 48

3.2.5 Система последовательного ввода/вывода. 50

3.3 Система команд микропроцессора Intel 8085  52

3.4 Способы адресаций  55

4 Программирование микропроцессорных систем  56

4.1 Пересылки данных  57

4.2 Однобайтная арифметика  59

4.3 Двухбайтная арифметика  62

4.4 Программа умножения  65

4.5 Организация работы с подпрограммами  67

5 Модель микропроцессорной системы   70

5.1 Структура модели MP4M   71

5.1 Функциональные узлы модели MP4M   72

5.2 Режимы работы и система команд модели MP4M   74

5.3 Примеры организации работы модели MP4M   76

Список литературы   78