Группа команд управления и работы со стеком
Команды этой группы предназначены для управления работой микропроцессора, устройствами ввода/вывода и стеком. Команды этой группы не оказывают влияния на флаги. Рассмотрим в качестве примера работу некоторых команд из этой группы. Команда XTHL — однобайтовая команда с восьмеричным номером 343Q. Является примером наиболее длинных по времени исполнения команд - занимает 18 машинных тактов. В процессе выполнения команды содержимое регистра L меняется на содержимое ячейки памяти по адресу, содержащемуся в указателе стека, и наоборот. Содержимое регистра Н меняется на содержимое ячейки памяти по адресу, на единицу большему, чем содержимое указателя стека, и наоборот (рис. 4.12,я). На это уходит пять машинных циклов. Команды IN <B2>, OUT <B2>. Эти команды предназначены для ввода данных от входного порта в аккумулятор и вывода данных из аккумулятора в выходной порт соответственно. Первая команда имеет восьмеричный код 333 Q, вторая — 323 Q. Обе команды — двухбайтовые. Второй байт обеих команд отведен под адрес соответствующего входного и выходного портов. В результате выполнения первой команды данные от входного порта по двунаправленной шине данных передаются в аккумулятор. В результате выполнения второй команды данные выводятся по той же шине данных из аккумулятора в выходной порт (рис. 4. 12,6, в).
Рис. 4.12. Примеры размещения некоторых команд управления в байтах
На этом закончим рассмотрение примеров размещения в байтах команд описанных выше групп и перейдем к вопросу о том, как составляется программа решения на ПМ-ЭВМ задачи с использованием приведенного в приложении 1 списка команд.
ПРОГРАММИРОВАНИЕ ПМ-ЭВМ
Как уже отмечалось в гл. 3, ПМ-ЭВМ не имеет программного обеспечения, позволяющего пользоваться для решения задач языками высокого уровня. Поэтому запись программы для ПМ-ЭВМ осуществляется пользователем на машинном языке с применением команд описанных выше групп. Полный перечень команд, приведенных в сжатой форме в табл. 4.1 — 4.3, должен быть хорошо известен пользователю, решающему свою задачу. Это даст ему возможность варьировать при составлении своих программ различными командами и способами их включения в программы с целью составления программ либо более коротких, либо экономящих используемую память, либо сокращающих время счета. В ряде случаев способ решения той или иной задачи становится более понятным, если он представлен в виде специальной схемы, называемой схемой алгоритма решения и имеющей вид ориентированной сети с вершинами различных типов, соответствующими используемым операциям. В качестве примера рассмотрим решение задачи суммирования первых 20 чисел натурального ряда, схема которой приведена на рис. 4.1 3,а. Для реализации первых двух операторов (не считая Start) можно воспользоваться двухбайтовой командой MVI г, осуществляющей непосредственную загрузку в какой-либо регистр данных, содержащихся во втором байте команды (в данном случае - чисел OD). Для осуществления операции S = S + N можно воспользоваться командой ADD r, выполняющей суммирование содержимого какого-либо регистра с содержимым аккумулятора и запись результата в аккумулятор. Для выполнения операции N = N + 1 в машинном языке ПМ-ЭВМ предусмотрена специальная команда INR г, осуществляющая увеличение на единицу содержимого какого-либо регистра. Остается еще организовать в программе цикл с использованием условного оператора. Для этой цели подошла бы команда JNZ, осуществляющая переход в программе при отсутствии нуля в результате какой-либо предшествующей переходу операции (в нашем случае — операции вычитания: 21 — N).
Однако этого можно и не делать, построив несколько иначе схему решения задачи. Вместо того чтобы суммировать последовательно увеличивающиеся числа от О D до 20 D, можно суммировать последовательно уменьшающиеся числа от 20 D до OD. Тогда содержимое регистра, хранящего число N, на некотором шаге выполнения программы обратится в нуль и этот результат можно будет использовать при организации условного перехода. Итак, новая схема алгоритма может быть построена следующим образом. Шаг 1. Заносим число О D в аккумулятор (А). Шаг 2. Заносим число 20 D в какой-нибудь регистр, например в регистр D. Шаг 3. Суммируем содержимое регистров А и D. Шаг 4. Уменьшаем содержимое регистра Она единицу. Шаг 5. Если содержимое регистра Вне равно нулю, осуществляем переход к шагу 3; в противном случае переходим к следующему шагу. Ш а г 6. Переписываем содержимое регистра А в какой-нибудь из портов вывода, например в порт Р0оо- Ш а г 7. Конец работы программы. Соответствующая схема представлена йа рис. 4.13,6. Приступим к программированию этой схемы. Для этой цели нам понадобятся все указанные выше команды, за исключением команды INR г (увеличение содержимого регистра на единицу). Вместо нее следует взять команду DCR г (уменьшение содержимого регистра на единицу), которая будет использована применительно к регистру D. Кроме того, нам будут необходимы еще следующие две команды: OUT — двухбайтовая команда вывода данных из аккумулятора в порт вывода, определяемый адресом, содержащимся во втором байте команды, и однобайтовая команда HLT — останов программы. Коды всех используемых команд можно взять из таблицы, приведенной в приложении 1. Для размещения всей программы нам понадобятся 12 ячеек памяти с номерами от 014QOOOQ до 014Q013Q. В первые две ячейки с номерами 014 000 и 014 001 поместим оба байта первой команды MVI A OOOQ загрузки аккумулятора (регистра А) числом OD. При этом в первую ячейку поместим восьмеричный код команды 076, а во вторую — содержимое второго байта этой команды — восьмеричный код числа OD (число 000). В следующие две ячейки с номерами 014 002 и 014 003 поместим два байта следующей команды, загружающей регистр D десятичным числом 20. Восьмеричный код этой операции 026 будет находиться в первой ячейке, а восьмеричный код 024 десятичного числа 20 - во второй и т. д. В последнюю ячейку с номером 014 013 поместим восьмеричный код 166 команды HLT, осуществляющей останов программы. В табл. 4.5 приведен полный текст составленной программы вместе с комментарием. При организации цикла использована специальная метка Ml, указывающая на операцию, которую следует выполнить, если содержимое регистра D не равно нулю.
Рис. 4.13. Схемы алгоритмов для задачи сложения первых 20 чисел
Таблица 4.5
Аналогичным образом осуществляется составление и других программ, которые читатель встретит в этой книге. Отметим еще раз, что при написании программы совсем не обязательно прибегать вначале к составлению ее операторной схемы. При некотором навыке программа легко может быть составлена сразу после небольшого анализа условий сформулированной задачи. Перейдем теперь к рассмотрению работы конкретных схем отдельных функциональных блоков ПМ-ЭВМ, назначение которых было определено ранее.
ИСПОЛЬЗУЕМЫЕ МИКРОСХЕМЫ ОБЩИЕ ВОПРОСЫ В последующих главах будет подробно описано устройство и функционирование ПМ-ЭВМ и ее блоков. Для понимания этих глав необходимо познакомиться с работой отдельных микросхем, из которых построены блоки ПМ-ЭВМ.
Рис. 5.1. Внешний вид микросхемы в корпусе с двухрядным расположением выводов
Интегральная микросхема - микроэлектронное изделие, выполняющее определенную функцию преобразования и обработки сигнала и имеющее высокую плотность упаковки электрически соединенных элементов. Полупроводниковый кристалл, в объеме и на поверхности которого созданы элементы, составляющие микросхему, обычно помещается в корпус. Корпуса микросхем бывают самых разнообразных форм и изготовляются из керамики, пластмассы, металла и т. д. В ПМ-ЭВМ будут использоваться микросхемы в прямоугольных пластмассовых корпусах (рис. 5.1) с двухрядным расположением выводов. Принято обозначать выводы микросхем арабскими цифрами и буквами русского и латинского алфавитов. При этом для корпусов всех типов используется общее соглашение по обозначению номеров выводов, практически не имеющее исключений. У вывода номер один ставится маркирующая точка, которая называется ключом. Начиная от этой точки номера выводов будут возрастать при обходе их против часовой стрелки. На условных графических изображениях микросхем эти номера выводов проставляются над линиями, изображающими выводы. Принято также присваивать выводам буквенные обозначения в соответствии с названиями выполняемых выводамифункций. Существуют две системы буквенных обозначений: отечественная (буквами русского алфавита) и международная (буквами латинского алфавита). В этой книге будет применяться международная система, так как она широко используется во многих отечественных и переводных книгах по электронике и микро-ЭВМ. Выводы будут обозначаться в тексте буквами или номерами (если не принято данный вывод обозначать буквой) при описании микросхем и номерами — при описании электронных схем, чтобы избежать двусмысленности этих описаний.
ТТЛ-ВХОДЫ И ТТЛ-ВЫХОДЫ
Цифровые микросхемы выполняют преобразование сигналов, изменяющихся дискретно. Такой сигнал может принимать несколько фиксированных значений. Современные микросхемы, как правило, работают с сигналами, которые имеют два значения, и эти значения кодируются двумя различными уровнями напряжения. Обычно эти уровни напряжения расположены в диапазоне от нуля до напряжения источника питания и различны для серий микросхем, отличающихся по технологии изготовления. Широкое распространение в настоящее время получили микросхемы, изготовленные по ТТЛ-технологии, и поэтому часто микросхемы, изготовленные по другим технологиям, имеют выводы с такими же характеристиками и работают с такими же уровнями напряжения (в частности, все микросхемы, применяющиеся в ПМ-ЭВМ). Для того чтобы подавать сигналы с микросхем, имеющих одни уровни напряжения, на микросхемы с другими уровнями напряжения, применяются специальные преобразователи уровня.
Вывод микросхемы, на который сигнал необходимо подавать, называется входом (для ТТЛ-микросхем - ТТЛ-входом), а вывод, на котором сигнал вырабатывается самой микросхемой, называется выходом (для ТТЛ-микросхем - ТТЛ-выходом). В этом параграфе будут подробно рассмотрены характеристики ТТЛ-входов и ТТЛ-выходов. Входные и выходные уровни напряжения ТТЛ-микросхем имеют определенные значения. Высокий уровень напряжения должен лежать в пределах от +2,4 до +5 В для ТТЛ-выхода и в пределах от +2 до +5 В для ТТЛ-входа, а низкий уровень -от 0 до +0,4 В для ТТЛ-выхода и от 0 до +0,8 В для ТТЛ-входа. Между нижней границей для более высокого уровня и верхней границей для более низкого уровня напряжения ТТЛ-входа имеется диапазон напряжения (от 0,8 до 2 В) шириной 1,2 В. Этот диапазон предназначен для защиты микросхемы от ложных срабатываний при помехах амплитудой менее 1,2 В. Если бы его не было, то любая малая помеха приводила бы к тому, что напряжение сигнала попадало бы из области низких напряжений в область высоких (или наоборот). В этом диапазоне напряжение сигнала может находиться только в момент переключения с одного уровня напряжений на другой. Как известно, переменные в логике могут принимать два значения - 0 и 1. Возможны два способа кодировки этих значений. Первый способ - это кодировать 0 низким уровнем напряжения, а 1 - высоким уровнем напряжения. Такой способ кодировки называется позитивной (иногда положительной) логикой. Второй способ - кодировать 0 высоким уровнем, а 1 - низким уровнем напряжения. Такой способ кодировки называется негативной (иногда отрицательной) логикой. Эти названия общеприняты, хотя не совсем удачны. Во-первых логика здесь ни при чем (она одинаковая, разные только способы кодировки), а во-вторых, слова "позитивный" и "негативный" применяются для обозначения способов кодировки с помощью разных уровней напряжения одной полярности. В дальнейшем для краткости вместо слов "сигнал имеющий высокий (низкий) уровень напряжения" будут употребляться слова "сигнал высокого (низкого) уровня" или просто высокий (низкий) уровень", и так как в этой книге принята положительная логика, то будут также употребляться слова "уровень логического нуля (единицы)".
Рис. 5.2. ТТЛ-вход и схема для снятия характеристики
Рис. 5.3. Характеристика ТТЛ-входа
ТТЛ-вход является эмиттером многоэмиттерного транзистора (рис. 5.2). Диод к эмиттеру подключен для того, чтобы ограничивать отрицательные импульсы напряжения. Если поставить эксперимент, изображенный на рис. 5.2, то можно получить входную характеристику ТТЛ-входа, т. е. зависимость тока от подаваемого напряжения (рис. 5.3). Ветви 1 соответствует ток, вытекающий в ТТЛ-вход, который в этом случае работает как р-п переход, включенный в обратном направлении, и поэтому значение тока невелико. Этот ток обозначается обычно I1вх. Ветви 2 соответствует ток, который вытекает из ТТЛ-входа, работающего как р-п переход, включенный в прямом направлении. В этом случае ток ограничивается сопротивлением R. Этот ток обозначается I0вх. В диапазоне напряжений, соответствующем высокому уровню, I1вх должен быть не больше 0,1 мА, а в диапазоне, соответствующем низкому уровню, I0вх должен быть не больше 1,6 мА. Направления I0вх и I1вх показаны стрелками на рис. 5.2. Вход с такими характеристиками называется стандартным ТТЛ-входом или стандартной ТТЛ-нагрузкой. Рис. 5.4. ТТЛ-выход
Рис. 5.5. Схема снятия характеристики ТТЛ-выхода при высоком уровне напряжения (а); характеристика (б)
ТТЛ-выходы бывают трех типов: нормальный ТТЛ-выход, выход с открытым коллектором и выход с тремя состояниями. Схема нормального ТТЛ-выхода приведена на рис. 5.4. Для того чтобы создать на выходе высокий уровень напряжения, с помощью внутренних управляющих цепей открывается верхний транзистор и закрывается нижний. Если поставить эксперимент по схеме, изображенной на рис. 5.5,л, то можно снять выходную характеристику ТТЛ-выхода при высоком уровне напряжения (рис. 5.5,6). Из этой характеристики видно, что с возрастанием вытекающего тока I1вых напряжение на выходе уменьшается. Стандартный ТТЛ-выход должен обеспечивать при I1вых, равном 1 мА, высокий уровень напряжения (не меньше+2,4 В).
Рис. 5.6. Схема снятия характеристики ТТЛ-выхода при низком уровне напряжения (а); характеристика (б)
Для того чтобы создать на выходе напряжения низкого уровня, с помощью внутренних управляющих цепей открывается нижний транзистор и закрывается верхний. Схема, с помощью которой можно снять выходную характеристику ТТЛ-выхода, и сама характеристика приведены на рис. 5.6. Из этой характеристики видно, что с возрастанием втекающего тока напряжение на ТТЛ-выходе, находящемся в состоянии низкого напряжения, увеличивается. Стандартный ТТЛ-выход должен обеспечивать при I0вых, Равном 16 мА, высокий уровень напряжения (не более 0,4 В). Если теперь сравнить входные и выходные токи, то видно, что к одному стандартному ТТЛ-выходу можно подключить, не перегружая его, 10 стандартных ТТЛ-входов. Иногда используют термин "нагрузочная способность" выхода или "коэффициент разветвления по выходу", измеряющийся числом входов, которые можно подключить к данному выходу. Диод между эмиттером верхнего транзистора и коллектором нижнего транзистора включен для того, чтобы избежать открывания верхнего транзистора при низком уровне напряжения на выходе. При переключении выходных транзисторов в какой-то момент времени они оба оказываются открытыми и ток через них резко возрастает (в этот момент ток ограничивается только резистором К). Резкое возрастание тока может создать импульс помехи, распространяющейся по цепям питания. Для подавления таких помех используются развязывающие конденсаторы, которые включаются между линией питания и общим выводом в непосредственной близости от микросхемы. Развязывающий конденсатор должен быть один на группу не более 10 микросхем и должен иметь емкость не менее 0,002 мкФ на микросхему. Два нормальных ТТЛ-выхода нельзя подключать друг к другу, если возможна ситуация, когда на одном выходе высокий, а на другом — низкий уровень напряжения, потому что тогда ток, протекающий через открытые транзисторы разных ТТЛ-выходов, может превысить допустимое значение.
Рис. 5.7. Выход с открытым коллектором Рис. 5.8. Соединение нескольких выходов с открытым коллектором
Второй тип ТТЛ-выхода — это так называемый выход с открытым коллектором. Как следует из названия, выход такого типа представляет собой коллектор транзистора (рис. 5.7). Для того чтобы обеспечить нормальную работу этого выхода, его необходимо соединить через резистор с положительным полюсом источника питания. Тогда если транзистор закрывается с помощью внутренних управляющих цепей, то напряжение на выходе больше +2,4 В, что достаточно для создания стандартного высокого ТТЛ-уровня; если же транзистор открывается, то напряжение на выходе падает до стандартного низкого ТТЛ-уровня. При закрытом выходном транзисторе ток I1вых течет от положительного полюса источника питания через резистор R, при открытом транзисторе ток I0вых течет через транзистор. Резистор R рассчитывается так, чтобы обеспечить необходимые значения токов I0вых и I1вых. В отличие от стандартных ТТЛ-выходов выходы с открытым коллектором можно соединять друг с другом (рис. 5.8). В этом случае высокий уровень напряжения поддерживается в точке соединения только тогда, когда закрыты транзисторы всех выходов, поэтому в этой точке реализуются логическая функция И при позитивной логике и логическая функция ИЛИ при негативной логике. Такая схема часто называется "монтажное И" или "монтажное ИЛИ" в зависимости от используемой логики. Третий тип ТТЛ-выходов - это выходы с тремя состояниями или, как их еще называют, выходы с третьим состоянием высокого сопротивления (или просто выходы с третьим состоянием). В отличие от нормальных ТТЛ-выходов оба выходных транзистора такого выхода с помощью внутренних управляющих цепей могут быть закрыты. В этом случае через них может протекать лишь небольшой ток утечки (обычно несколько микроампер) и говорят, что выходы находятся в отключенном состоянии или в состоянии высокого сопротивления. Для перевода выходов микросхемы в состояние высокого сопротивления, как правило, имеется специальный управляющий вход, или если этот переход происходит вследствие каких-либо неуправляемых внутренних процессов, то имеется специальный выход, состояние которого показывает, переведены ли в состояние высокого сопротивления другие выходы. Выходы с третьим состоянием сконструированы специально для того, чтобы можно было подключать несколько выходов для управления состоянием одной линии. Когда несколько выходов с третьим состоянием подключены к одной линии, то в определенный момент времени только один из них может управлять состоянием этой линии (т. е. создавать на ней уровень высокого или низкого напряжения). Остальные выходы должны находиться в состоянии высокого сопротивления. В этом состоянии они не создают дополнительную нагрузку на транзисторы работающего выхода. Естественно, что это требует специальных электронных схем, которые управляют тем выходом, который должен работать в какой-либо определенный момент времени. Вывод микросхемы может быть входом или выходом и, кроме того, может совмещать эти функции. Это достигается путем объединения внутри микросхемы входов и выходов с тремя состояниями или открытым коллектором. Для управления таким выводом у микросхемы имеется специальный вход, в зависимости от сигнала на котором вывод работает как ТТЛ-вход или как ТТЛ-выход в разные моменты времени. Ниже будут встречаться микросхемы со всеми разобранными типами выводов. Нормальные ТТЛ-входы и ТТЛ-выходы в дальнейшем будем называть просто входами и выходами, а во всех остальных случаях будем указывать определенный тип вывода.
ВРЕМЕННЫЕ ДИАГРАММЫ
Электрические сигналы, которые соответствуют определенным логическим состояниям, можно наблюдать на выводах работающих микросхем с помощью осциллографа или логического пробника. На рис. 5. 9,а показано изображение на экране осциллографа электрического сигнала с вывода цифровой микросхемы. Ось времени располагается горизонтально, а ось напряжений — вертикально. Время увеличивается слева направо, т. е. из двух событий правее окажется более позднее. Такое расположение и направление оси времени традиционны и используются во всех осциллографах. Рис. 5.9. Дискретный сигнал: а - на экране осциллографа; б - условное графическое изоб -ражение
Электрические сигналы с выводов цифровых микросхем принято изображать в процессе их изменений во времени (рис. 5.9,6). Такие условные графические изображения называются временными диаграммами. На временных диаграммах не наносятся оси напряжения и времени. Нулевая отметка времени также не наносится, так как большинство процессов периодически повторяется и достаточно изобразить интервал времени немного большим периода повторения, чтобы диаграмма содержала всю необходимую информацию о происходящем процессе. Приведем некоторые соглашения, которые используются при изображении сигналов на временньгх диаграммах. Высокий уровень изображается, как показано на рис. 5.10,я, состояние высокого сопротивления - как на рис. 5.10,в, низкий уровень -как на рис. 5. 10,6. Штриховые линии на этих рисунках приведены только для сравнения и обычно не наносятся. На рис. 5.11 показано, как изображается переход с одного уровня на другой. Переход от низкого уровня к высокому называется фронтом, а от высокого к низкому — срезом. Иногда употребляют также термины "нарастающий и спадающий фронт", "передний и задний фронт", "положительный и отрицательный фронт" и некоторые другие. Если переход от одного уровня к другому происходит не в конкретный момент времени, а может произойти в любой момент времени в течение некоторого интервала времени, то это изображается как на рис. 5.12. Рис. 5.10. Изображение уровней напряжения: а — высокий; б — низкий; в — состояние высокого сопротивления Рис. 5.11. Изображение фронтов: а - фронт; б - срез Рис. 5.12. Изображение фронтов в неопределенный момент времени Рис. 5.13. Изображение зависимости одного сигнала от другого
Изменение одного сигнала может быть причиной изменения другого сигнала. Если изменение вызывается фронтом сигнала, то это изображается как на рис. 5.13,я, если уровнем сигнала -то как на рис. 5.13,6. При этом кружок отмечает тот элемент сигнала, который вызывает изменение, а стрелка указывает на изменение зависимого сигнала. Изменение одного сигнала может быть причиной изменений нескольких сигналов, тогда это изображается, как показано на рис. 5.14, и наоборот, изменение некоторого сигнала может вызываться только определенными изменениями нескольких других сигналов (рис. 5.15). Рис. 5.14. Изображение зависимости нескольких сигналов от одного
Рис. 5.15. Изображение зависимости одного сигнала от нескольких других Рис. 5.16. Изображение неопределенного сигнала
Если уровень на входе микросхемы не влияет никак на ее работу или уровень на выходе не определен (не устанавливается), то это изображается так, как показано на рис. 5.16. Если необходимо изобразить на временной диаграмме состояния и Фронты нескольких сигналов, которые ведут себя одинаково с точки зрения переключений, но могут иметь разные уровни, то это делается так, как показано на рис. 5.17. Длительности интервалов времени между какими-либо изменениями сигналов изображаются с помощью букв или цифр на выносных линиях (рис. 5.18). На этом же рисунке показано, где пишутся буквенные обозначения сигналов (слева рядом с соответствующей временной диаграммой). Рис. 5.18. Изображение временных интервалов Рис. 5.17. Изображение нескольких сигналов, ведущих себя идентично с точки зрения переходов с уровня на уровень
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|