Курс лекций

 

Новочеркасск 2006

 

 

УДК 519.683(076.5)

Рецензент д.т.н., профессор В.Я. Шпицер

 

Составители: д.т.н., прфессор Кривин В.В.

Архитектура ЭВМ и систем: Курс лекций. /Волгодонский ин-т ЮРГТУ. Новочеркасск: ЮРГТУ(НПИ), 2004. 112 с.

Методические указания содержат курс лекций по дисциплине «Архитектура ЭВМ и систем».

Предназначены для студентов 1 курса всех форм обучения специальности «Информационные системы и технологии».

ã Волгодонский институт ЮРГТУ, 2004

ã Кривин В.В. 2004

 

 

СОДЕРЖАНИЕ

 

1. Системы счисления.

2. Сигналы.

3. Логические состояния.

4. Логические элементы и таблица истинности.

5. Комбинированные логические элементы.

6. Построение схем по логическому выражению.

7. Построение схем на основе логических выражения в ДНФ.

8. Минимизация логических выражений с помощью карт Карно.

9. Комбинационные функциональные схемы.

10. Двоичная арифметика.

11. RS-триггер.

12. Регистры на основе RS-триггера.

13. D-триггер.

14. Счетный триггер.

15. Счетчик на сложение.

16. Счетчик на вычитание.

17. Реверсивный счетчик.

18. Счетчик заданной длины.

19. Архитектура ЭВМ.

20. Работа ЭВМ.

21. Группировки бит.

22. Тристабильные элементы.

23. Структура оперативной памяти.

24. Архитектура простой ЭВМ.

25. Структура простейшей памяти.

26. Состав команд МП.

27. Структура типового микропроцессора.

28. Функционирование ЭВМ.

29. Микропроцессор. Поставляемая разработчиком документация.

30. Использование регистра адреса/данных.

31. Этапы обработки прерываний в МП.

32. Указатель стека.

33. Состав команд арифметических действий.

34. Состав команд логических операций.

35. Состав команд передачи данных.

36. Состав команд операций ветвления.

37. Состав команд вызова подпрограмм и возврата в программу.

38. Программирование МП. Запись программы.

39. Ветвление программ.

40. Циклы.

41. Использование подпрограмм.

42. Интерфейс микропроцессора.

 

Системы счисления

 

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

K – принимает значение любой цифры данной системы счисления; N – основание данной системы счисления; i – номер позиции (показатель степени), которая цифра занимает в числе.

Примеры.

a)

b)

c) 11000101

       
 
 
   
_197 128 _ 69 64 _ 5 4 1 1
 

 

 


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

N(10) N(2) N(16)
A
B
C
D
E
F

Например.

a) 0110.0011.1100.1011.0011 = 63CB3

b) 1111.0000.1010.0111 = FØA7

 

Сигналы

 

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

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

· Дискретные – это сигналы, информационные параметры которого внутри заданного диапазона могут принимать лишь определенные дискретные значения.

· Непрерывные - это сигналы, информационные параметры которого могут изменяться в любой момент времени.

· Прерывистые - это сигналы, информационные параметры которого могут принимать другие значения лишь в дискретные моменты времени.

Аналоговый сигнал (непрерывный). Информационный параметр – амплитуда.

 

 

Частотно-аналоговый сигнал (непрерывный). Информационный параметр – частота.

 

Сигнал опроса (аналоговый, прерывистый). Информационный параметр – амплитуда.

 

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

 
 

 


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

 

Время, за которое сигнал изменяется от низкого уровня (0) до высокого уровня (1) называется временным нарастания переднего фронта (tп.ф.). И обратно, время перепада из высокого уровня на низкий называется временем спада заднего фронта (tз.ф.).

Импульсно – счетный сигнал (дискретный, прерывистый). Информационный параметр - число двоичных импульсов в пределах такта.

 

Логические состояния

 

Под цифровой электроникой понимают такие схемы, для каждой точки которой можно определить, как правило, только два состояния. Обычно в качестве параметра выбирают напряжение, уровень которого может быть «высоким» или «низким». Эти два состояния могут представлять различные биты информации. Например, ключ замкнут или разомкнут, событие произошло, либо нет, сигнал присутствует, либо отсутствует. Состояние уровней («высокие» и «низкие»), некоторым заданным образом, определяют «истинное», либо «ложное» значение переменных в алгебре логики (Булева алгебра).

Введем понятие 1 и Ø. Эти символы используются в алгебре логике для обозначения утверждения, «истина» и «ложь» соответственно. В электронике 1 и Ø обозначают соответственно «высокий» и «низкий» уровень напряжения. Для различных типов цифровых схем уровень 0 и 1 всегда известны, поэтому нет необходимости обозначать эти уровни абсолютными значениями напряжений. То есть, по сути, этот вопрос является соглашением по умолчанию.

Например, персональный ЭВМ типа IBM PC, уровень логической 1 соответствует уровню напряжения от 2,4 до 5 В («1» → 2,4 ÷ 5 В), а уровень «Ø» → 0 ÷ 0,4 В.

 

Логические элементы и таблица истинности

 

В основе всех цифровых систем лежат четыре основных логических элемента (операций):

1. Логическое сложение, дизъюнкция, ИЛИ

2. Логическое умножение, конъюнкция, И

3. ИЛИ - исключающее

4. Отрицание, НЕ

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

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

 
 

 

 


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

 
 

 


 

 

Одним из основных инструментов для анализа цифровых комбинационных схем на этих элементах является таблица истинности, которая состоит из N – столбцов, где N – 1 равно количеству входных переменных. А последний столбец принимает значение выходной переменной. Если количество входных переменных равно K, то количество строк в этой таблице равно 2K. Важной особенностью всех входных и выходных переменных в алгебре логике является то, что все они могут принимать только два значения – нуля или единицы.

Логическое сложение, дизъюнкция, элемент ИЛИ

Для обозначения операции ИЛИ в алгебре логике используется символ «+». Например, A или B = A + B.

Примем, что если ключ A (B) замкнут, то А (В) равно единице, и наоборот, если разомкнут, то A (B) равно Ø. Если лампочка Q горит, то Q=1, если не горит, то Q=Ø.

Анализ выполним с помощью таблицы истинности. Выходными переменными являются А и В, выходной переменной – Q.

 

 

A B C Q
A B Q

 

 

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

 

 

Логическое умножение, конъюнкция, элемент И

В алгебре логике операция логического умножения обозначается символом умножить «·». Например, А и В = .

 
 

 

 


A B Q
A B C Q

 

Диаграмма состояний для этой функции изображается так же:

ИЛИ – исключающее

Для обозначения этой операции в алгебре логике используют символ . Например, АВ=Q.

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

 
 

 

 


A B Q
A B C Q

 

 

 

логический элемент не, отрицание, инверсия

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

 
 

 


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

В соответствии с американским электротехническим стандартом (ASCII) логические элементы изображают:

 

 

Комбинированные логические элементы

 

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

 

логическое сложение с отрицанием

(N –Или – не, где N – количество входов элемента)

 

 

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

 

 

A B Q

 

 

 

Элемент логического умножения с отрицанием

(N – И – Не, где N – количество входов элемента)

В соответствии с правилом де Моргана этот элемент так же обладает свойством функциональной полноты.

A B Q

 

 


 

элемент или - исключающее с отрицанием

(N – ИЛИ – исключающее – НЕ, где N – количество входов элемента)

Так же обладает свойством функциональной полноты.


A B Q

 

 

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

 

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

 

 
 

 


ПОСТРОЕНИЕ СХЕМ НА ОСНОВЕ ЛОГИЧЕСКИХ ВЫРАЖЕНИЙ В ДИЗЪЮНКТИВНОЙ НОРМАЛЬНОЙ ФОРМЕ (ДНФ)

 

 
 

 

 


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

После этого строится таблица истинности в следующей последовательности:

· Определяется количество строк в таблице из условия 2n, где n – количество строк входных двоичных переменных.

· Присваиваем имя выходной переменной (например, Q).

· Количество столбцов в таблице будет равно N + 1.

· Заполняются все столбцы таблицы, кроме крайнего правого. Это делается таким образом, чтобы перебрать все возможные комбинации 0 и 1 из 2n.

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

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

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

 

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

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

 

карта карно для двух переменных

Четыре квадрата соответствуют четырем возможным комбинациям А и В в таблице истинности с двумя переменными. При этом квадрат 1 соответствует произведению , квадрат 2 соответствует произведению , квадрат 3 - , квадрат 4 - .

Например.

 

 

Из этой таблицы истинности видно, что по известным правилам получаем логическое выражение в ДНФ.

В записи карт Карно соседние единицы объединяются в контуры группами по 2, 4, 8, и т. д. Построение контуров продолжается до тех пор, пока все единицы не окажутся внутри контуров. Каждый контур представляет собой новый член упрощенного логического выражения. Возьмем сначала нижний контур, заметим, что переменная А здесь встречалась в комбинации с В и . В соответствии с правилами алгебры логики В и дополняют друг друга и тогда в нижнем контуре остается только первый член А. В другом контуре вместе с В встречается так же А и , что также является дополнением и поэтому во втором контуре остается один член В. Полученное таким образом в каждом контуре выражение объединяются логической функцией «сложение». В результате получим упрощенное выражение А + В.

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

· Получение логического выражения в ДНФ, как правило, из таблицы истинности.

· По этому логическому выражению заносятся единицы в соответствующие клетки карты Карно.

· Эти единицы в карте Карно объединить в контуры, охватывающие 2, 4, 6 и т. д. соседних единиц.

· Проводим упрощение путем исключения членов в контуре дополняющих друг друга.

· Полученное таким образом в каждом контуре выражения объединяются логической функцией «ИЛИ».

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

Оно имеет следующий вид:

 

 

Нижний контур содержит дополнения В и , остается , верхний контур содержит С и , поэтому остается . Эти новые члены объединяются логическим сложением.

карта карно для четырех переменных

Правила заполнения и группировки остаются прежними.

Например.

1.)

 
 


2.)

 

 

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

 

комбинационные функциональные схемы

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

счетверенная двухвходовая схема выборки

Если контакт нормально замкнут, то Qi=Ai, при переключении ключей в нижнее положение Qi=Bi. Это и есть схема, счетверенная двухвходовая схема выборки. Приведенная схема обладает рядом существенных недостатков:

1. низкая скорость переключения (от 0,3 до 0, 05 сек.).

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

3. при замыкании контактов в силу их упругости возникает так называемый «дребезг».

4. низкая надежность электромеханических переключателей (даже у лучших переключателей порядка 10 – 15 тысяч переключений).

5. высокая стоимость электромеханических переключателей.

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

На схемах электрически принципиально счетверенную двухвходовую схему изображают:

Схемы имеют 10 входов и 4

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

E SEL Аi Bi Qi
В X X X H
Н H H X H
Н H B X B
Н B X H H
Н B X B B

сигналы, уровнем или 0, или 1. Вход SEL – выбор, если на него подать низкий уровень (Н), то Qi=Ai. Если SEL = 1, то Qi=Bi.

Е – управляющий вход – разрешение. Х – безразличное состояние.

Если Е=1, то схема отключена и независимо от того, чему равно А, В, и SEL, то Q=0 (H). Если Е=0, то схема включается, а состояние выхода Q определяется значением сигнала на входе SEL и информационных входах.

 

 

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

Бывают двух, четырех, восьми и шестнадцати входовые схемы.

Состояние выхода Q однозначно определяется положением подвижного контакта, при переключении. На рисунке Q = A1.

 

На схемах электрически принципиально мультиплексор изображают:

Схема имеет 8 информационных входов D0 – D7 (на них подаются логические сигналы), 3 адресных входа A0 – A2, управляющий вход Е – разрешение. Прямой выход Q и инверсный выход .

Когда схема выключена, то есть Е=1, то независимо от того, чему равны все остальные входа схемы Q=0 (). Когда Е=0 схема включается и состояние выхода Q=Di в зависимости от значения адреса на входах А0, А1, А2.

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

 

 

E А2 А1 А0 Q
X X X
D0
D1
D2
D3
D4
D5
D6
D7

 

 

Рассмотрим, например, схему шестнадцатиразрядного мультиплексора, построенного на двух интегральных схемах восьмиразрядного мультиплексора.

 
 

 

 


А3 А2 А1 А0
. . . . . . . . . . . .

До тех пор, пока значение адреса не превышает 7 – старший разряд А3=0. Он подается на вход Е первой схемы и через инвертор на вход Е второй схемы, то есть первая схема включена, а вторая - отключена. Таким

образом, на первый вход схемы ИЛИ от второго мультиплексора поступает 0 независимо от состояния остальных входов этой схемы. А выход i – ой схемы равен значению, на который указывает 3 младших разряда адреса.

 

 

сумматоры

Сумматоры – схема складывает четырехразрядное двоичное число Аi c четырехразрядным двоичным числом Вi и на выходе формирует двоичную сумму Si. Для расширения сумматора в схеме предусмотрен вход переполнения Пвх и выход переполнения Пвых. На схемах электрически – принципиальных изображают следующим образом:

 
 

 


 

Рассмотрим пример сложения двух восьмиразрядных чисел.

СЭР – старший значащий разряд.

Если сумма Si ≥ 256 (28), то СЗР = 1. В противном случае – ноль. Вход левого сумматора принудительно обнулен, так как с этой стороны нет расширения.

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

компараторы

Компаратор (от латинского сравнивать) – определяет относительные значения двоичных чисел А и В и вырабатывает на входе сигналы, соответствующие соотношениям: A > B, A = B, A < B. Входы и выходы компаратора предусматривают возможность расширения.

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

 

 

двоичная арифметика

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

 

сложение двоичных чисел

 
 

 


вычитание двоичных чисел

 
 
_110011 101100

 


умножение двоичных чисел

 

 
 

 

 


дополнительный код

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

Изобразим условно ячейку памяти или регистр ЭВМ.

1 – имеет вес 16 (24).

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

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

Использование дополнительного кода позволяет операцию вычитания заменить сложением.

Выполним преобразование отрицательного числа (-9) в дополнительном коде:

· Преобразуем число 9 в двоичный эквивалент – 00001001. Слева допишем нули, если это необходимо до 8 – разрядного числа.

· Выполним разрядную операцию отрицания с этим числом (проинвертировать число). Операция сведется к замене 0 – 1, а 1 – 0.

Получим:

 

· К полученному числу прибавить 1.

 

Полученное число является дополнительным кодом отрицательного числа (-9). На это указывает 1 в старшем разряде.

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

Число отрицательное, т.к. на это указывает 1 в старшем разряде.

Выполняем инверсию этого числа: 00110010.

К полученному числу прибавляем 1.

 

 


Это число является модулем исходного числа, записанного в дополнительном коде.

арифметика в дополнительном коде

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

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

1. сложение двух положительных чисел:

 

 


2. сложить числа:

 

 
 

 


В результате получили девятиразрядное число, причем старший разряд является переполнением восьмиразрядного числа, поэтому им пренебрегаем.

Оставшееся число в старшем разряде имеет 0, поэтому является положительным.

3. Сложить 2 отрицательных числа:

 
 

 

 


Выполним обратное преобразование:

 

 

последовательная логика

 

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

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

 

RS – триггер

Многие виды памяти в цифровых системах реализуются на основе триггеров.

Триггер – цифровое устройство с двумя устойчивыми состояниями выхода, причем состояние выхода определяется текущим состоянием входов и предыдущим состоянием триггера. RS – триггер имеет два входа S (Set) и R (Reset), а так же имеет два выхода Q – прямой и - инверсный.

R S Q

 

 

 
 

 


На схемах электрических принципиальных RS – триггер изображают:

Если мы говорим, что в триггер записана 1, то это означает, что под действием управляющих входов Q = 1.

Для анализа работы этой схемы удобно пользоваться диаграммой состояния.

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

Рассмотрим примеры применения RS – триггера:

1. Фиксация кратковременных событий.

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

 
 

 

 


В начальный момент времени кратковременно нажимаем кнопку «Сброс», т. е. на R – вход подаем 0. В это время на выходе датчика Д = 1 (событие не произошло), т. е. S=1, R=0. В соответствии с правилами RS – триггера Q=0. Это состояние будет сохраняться до тех пор, пока на выходе датчика не появится сигнал 0. В этот момент времени S=0, а R=1. Триггер “опрокинется” (изменит свое состояние на противоположное) Q=1. После того, как сигнал кончился (S=1, R=1) и триггер сохраняет свое предыдущее состояние до того момента, пока мы не нажмем кнопку «Сброс».

2. Бездребезговая кнопка.

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

На диаграмме это выглядит так:

 


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

 


Схема включает в себя следующие элементы: RS – триггер, резисторы r1 и r2, кнопка (Кн.), дребезг которой необходимо подавить. Резисторы r1 и r2 одним своим выводом подключены к источникам ЭДС +5В (1), а другим к выходам R и S соответственно. Подвижный контакт кнопки подключен к Земле (0). В исходном состоянии подвижный контакт кнопки через нормально замкнутый контакт подключен к S – входу, т. е. S=0, а нормально разомкнутый контакт имеет потенциальный контакт +5В через регистр r2 и подключен к R – входу (1). Таким образом, по правилу работы RS – триггера в момент времени t1, Q=1. В момент времени t2 произошло переключение кнопки и на нижнем ее контакте образовался «дребезг». Однако, в момент t2 на S – вход через регистр r1 подается уровень логической единицы.

В момент первого касания (t2) подвижного контакта нижнего контакта на R – вход от подвижного контакта подается 0. И по правилам работы RS – триггера (S=1, R=0) триггер опрокинется, т.е. Q=0. Дальнейшее срабатывание кнопки, вызванное дребезгом, не изменит состояние триггера, т.е. на выходе Q дребезг не наблюдается.

 

 

регистры

 

Это устройство, предназначенное для временного хранения и / или преобразования двоичной информации.

Различают несколько типов регистров:

· Параллельно – параллельное – запись и считывание информации в двоичном параллельном коде.

· Параллельно – последовательное – запись информации в параллельном формате, а считывание в последовательном.

· Последовательно – параллельное – запись в последовательном формате, а считывание в параллельном.

· Последовательно – последовательное – запись проводится в последовательном формате, а считывание в последовательном.

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

 

параллельно – параллельный четырехразрядный регистр на RS – триггерах

 

 


Схема предназначена для хранения двоичной информации в параллельном входе на выходах D0 … D3 и поступления на входа A, B, C и D. Запись и перезапись информации в регистре осуществляется с помощью управляемых сигналов «Запись» и «Сброс».

В момент включения схемы состояние выходов триггеров не определено. Кнопка «Запись» в нормальном состоянии подает на 2 входа D1, D2, D3, D4 уровень 0. Независимо оттого, что на 2 входах этих элементов на выходе 1. Кратковременно нажимается кнопка «Сброс», т.е. на R – входах кратковременно 0, S=1. Поэтому D0 … D3 равно 0. Когда нам необходимо в регистр записать входную информацию, кратковременно нажимается кнопка «Запись», при этом на 2 входах элемента D1, D2, D3, D4 подается уровень логической единицы, а это означает, что если, например, А=1, то на выходе 0. Этот ноль подается на S-вход D5, R=1 – в триггер запишется 1, т.е. А= D0. Если, например, А=0, «Запись» равна 1, на выходе элемента D1 – 1. Следовательно, триггер D5 сохранит предыдущее состояние (0), т.е. А= D0 .

 

D – триггер

 

Существенным недостатком RS – триггера является то, что момент изменения его состояния фактически нам не известен, т.е. его переключение зависит не от нас, а от некого текущего состояния на его входах. Этот недостаток преодолевается с помощью динамических триггеров. Используют 2 типа таких триггеров: D – триггер и JK – триггер.

D – триггер представляет собой устройство имеющее 4 входа и 2 выхода. Его изображают следующим образом:

Входа S и R (установка, сброс) являются входами стандартного RS – триггера, входящего (встроенного) в D – триггер. Эти входа имеют высший приоритет по сравнению с остальными входами триггера. Это означает, что если хотя бы на одном из этих двух входов присутствует уровень логического нуля, то в независимости от того, что в этот момент на других входах D и C, весь триггер работает по правилам обычного RS – триггера. Когда S=R=1 включается собственно D – триггер. D – информационный вход, C – тактирующий. Направление стрелки у С – входа указывает на то, что триггер тактируется (чувствует) передним фронтом тактового импульса. Передний фронт – изменение из низкого уровня в высокий, а задний фронт, наоборот, из высокого в низкий.

Правило работы D – триггера состоит в следующем (S=R=1),что информация (0 или1) присутствует на информационном входе D, записывается в триггер (на Q - выход) в момент появления переднего фронта импульса на тактирующий вход C.

Примеры.

1.)

2.)

 

счетный триггер

Образуется из D – триггера, при непосредственном соединении - выхода с D – входом.

На схеме входа S и R некуда не подключены (висят в воздухе). По принятым соглашениям все входа логических элементов, которые никуда не подключены, имеют значения равные 1(S=R=1).

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

Так как в момент включения схемы мы не можем сказать чему равно Q, то для простоты примем Q=0.

В начальный момент времени Q=0, следовательно, =1=D. Передний фронт тактового импульса от ГТИ (t=0) перепишет 1 с D – входа на Q – выход, следовательно, станет равным 0 и равным D. Состояние триггера, до прихода следующего переднего фронта тактового импульса, не изменится. Следующий передний фронт изменит состояние триггера на противоположное. И т.д. – процедура циклически повторяется. Заметим, что период следования импульсов на прямом выходе триггера в два раза больше периода следования импульсов от ГТИ.

 

счетчики

Это устройство, которое широко применяется в различных цифровых системах, в том числе и в ЭВМ.

Счетчик – устройство, состояние выхода которого зависит от количества событий на его выходе. Часто состояние выхода равно количеству событий на входе. Различают следующие виды счетчиков:

· На сложение – когда состояние счетчика увеличивается на +1 с каждым новым событием.

· На вычитание - когда состояние счетчика уменьшается на -1 с каждым новым событием.

· Реверсивный счетчик – счетчик, направление счета которого можно изменить, при помощи управляемых сигналов.

 

 

счетчик на сложение

 

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

До начала эксперимента (t=0), кнопка «Сброс» нажата, т.е. на все R – входа подается низкий уровень напряжения Земли. На всех S – входах в это время 1 и по правилам работы RS – триггера (Q0=Q1=Q2=0) следует, что не все - выхода равны 1, следовательно, D – входа равны 1.

 

N Q2 Q1 Q0

В момент времени t0 кнопку «Сброс» отпускаем, т.е. S=R=1, включаются D-триггера. Передний фронт первого тактового импульса, поступающего на С – вход первого (левого) триггера переписывает 1 с D – входа на Q0 – выход. На уровень изменится из 1 в 0 – это задний фронт и С – вход второго триггера его не ощущает, поэтому 2 и 3 триггера своего состояния не изменят. В результате поступления первого тактового импульса имеем: Q0=1, Q1=0, Q2=0. Второй тактовый импульс перепишет 0 с D – входа на выход Q0, изменит свое состояние из 0 в 1 – это передний фронт, который подается на С – вход второго триггера, поэтому 1 с D – входа второго триггера перепишется на Q1 – выход, изменит свое состояние из 1 в 0 – задний фронт, поэтому третий триггер своего состояния не изменит. В результате имеем, Q0=0, Q1=1, Q2=0. Нетрудно видеть, что двоичный счетный код на выходе счетчика точно равен количеству (N) тактовых импульсов от ГТИ на входе счетчика.

Длина счетчика – величина, которая указывает на максимальное число, до которого может считать счетчик и определяется количеством счетных триггеров в счетчике. В нашем случае длина счетчика равна 23=8 (2N).

 

счетчик на вычитание

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

 

 
 

 

 


N Q2 Q1 Q0

 

 

реверсивный счетчик

 

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

 

 

Схема ключа «Управление» состоит из одного инвертора, 2 элементов 2 – И и одного элемента 2 – ИЛИ. При положении ключа «Управление» нормально замкнутым контакт +5В. На 2 вход верхнего элемента 2 – И поступает 1, а на второй вход нижнего элемента 2 – И через инвертор подается 0. В соответствии с таблицей истинности для элемента 2 – И на выходе нижнего элемента, в независимости от того чему равно «в», будет 0, выход верхнего элемента 2 – И будет равен «а». Докажем это. Если «а»=0, то , т.е. «а». Если «а»=1,то , т.е. «а». На выходе элемента 2 – ИЛИ будет 0 + «а», т.е. «С» = «а». Если ключ «Управление» переключить, то на 2 верхнем входе элемента 2 - И будет 0 и на выходе его будет 0. На втором входе нижнего элемента 2 – И через инвертор подается 1, следовательно, выход этого элемента будет равен «в». 0 + «в» на элементе 2 – ИЛИ на выходе даст «в» = «С». И в этом случае на С – вход следующего триггера подаются тактирующие импульсы от инверсного выхода предыдущего триггера, счетчик будет работать на сложение.

В качестве коммутирующего элемента использовали элемент 2 – 2И – ИЛИ.

 

 

 


 

 

счетчик заданной длины

 

Часто бывает необходимо, чтобы счетчик считал не только до числа 2N, где N – количество счетных триггеров в счетчике, а мог бы считать до любого меньшего числа, после чего остановиться или начать счет с нуля.

Рассмотрим, например, счетчик, который считает до 12, после чего сбрасывается и начинает счет заново.

 

 


Толстой линией на схеме изображена так называемая ШИНА. Такой способ используется в тех случаях, когда на схеме много соединений, которые если показать сильно затруднят чтение схемы. Шина представляет собой условное обозначение жгута проводников (изолированные друг от друга), каждый из которых присвоен номер на входе и такой же на выходе.

RS – триггер в конце нужен для того, чтобы 4 D – триггера работали одинаково, т.к. они не совершенны и сбрасывают за разное время.

Схема управления этим счетчиком состоит из элемента 4 – И – НЕ и RS – триггера. Входа элемента 4 – И – НЕ подключены к соответствующим прямым или инверсным выходам триггеров счетчика. Т.к. схема 4 – И – НЕ должна срабатывать только на заданной кодовой комбинации (например, 1100), то правила подключения его входов к счетчику следующие: если данный разряд кодовой комбинации =1, то этот вход элемента 4 – И – НЕ подключается к прямому выходу соответствующего триггера; если разряд в числе =0, то соответствующий вход элемента 4 – И – НЕ подключается к инверсному выходу соответствующего триггера.

В примере 2 младших разряда равны 0, поэтому 1-й и 2-й входа элемента 4 – И – НЕ подключены к инверсным выходам 2 триггеров счетчика.

Когда счетчик досчитает до заданного числа (на прямых выходах триггеров считывается заданная кодовая комбинация) за счет правильного подключения 4 – И – НЕ на его входах будет четыре 1, следовательно, на выходе 0. Этот ноль подается на S – вход RS – триггера. На R – входе в это время от ГТИ - 1. Следовательно, на инверсном выходе RS – триггера - 0. Этот 0 подается на все R – входа триггеров счетчика. Если хотя бы один из триггеров изменит свое состояние на противоположное, то на выходах элемента 4 – И – НЕ уже не будет 4-х единиц. Следовательно, на выходе будет 1, т.е. в этот момент времени у RS – триггера S=1 и R=1 по правилам его работы он сохраняет предыдущее состояние. Через некоторое время от ГТИ на R – вход RS – триггера поступит 0 (S=1) и RS – триггер опрокинется, т.е. на инверсном выходе 1, следовательно, на всех R – входах триггеров счетчика 1 и счетчик начинает считать заново.

 

линейные дешифраторы

 

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

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

Линейный дешифратор на 10

Выход каждого из элемента 4 – И является соответствующим выходом дешифратора. Например, 1-ый элемент D1 декодирует кодовую (входную) комбинацию 4 нуля, т.е. на его выходе должна быть 1, а на всех остальных выходах дешифратора - 0. Для того чтобы на выходе D1 был 0 необходимо на его входах иметь 4 единицы, поэтому его входа подключены к соответствующим выходам инверторов. Если соответствующий разряд на кодовом входе равен 0, то на некоторый элемент 4 – И мы его подаем через инвертор. Если разряд равен 1, то он подключается к соответствующему элементу непосредственно.

 


На схемах электрических принципиальных дешифраторы изображают так:

 

 

основы микропроцессорной техники

 

Архитектура ЭВМ

 

 

Типовая ЭВМ состоит из пяти основных элементов:

· Устройство ввода – предназначено для ввода информации или управления ЭВМ от внешних устройств (например, клавиатура, мышь).

· Микропроцессор (МП) – центральный процессор – это устройство управления всей ЭВМ и выполнения арифметических и логических операций.

· Постоянное запоминающее устройство (ПЗУ). В нашем случае предназначено для хранения исполненных ЭВМ программ.

· Оперативное запоминающее устройство (ОЗУ) – предназначено для временного хранения данных.

Примечание: и ПЗУ и ОЗУ представлены в виде множества локализованных ячеек памяти. Размер ячейки – это количество БИТ информации, которую можно поместить в ячейку памяти или прочитать из нее.

· Устройство вывода - предназначенного для передачи данных и управления внешними по отношению к ЭВМ устройствами (экран монитора, принтеры и т.д.)

Для организации взаимодействия и управления всеми устройствами ЭВМ в нее включены три шины:

1. шина адреса (ША) – выбирает (указывает) ячейку памяти или адрес портов ввода-вывода. В зависимости от количества ячеек памяти и устройства ввода-вывода (УВВ) ША бывают 16, 32, 64 и т.д. разрядов.

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

3. шина данных (ШД) – является двунаправленной и служит для передачи данных в МП или из него.

 

Работа ЭВМ

 

Рассмотрим пример типовой процедуры в ЭВМ:

1. Нажатие клавиши «А».

2. Размещение буквы «А» в памяти.

3. Воспроизведение буквы «А» на экране дисплея.

Процедура «ввод – размещение – вывод» является типичной. Аппаратные средства, используемые для реализации этой процедуры, довольно сложны и нами, в данный момент, рассматриваться не будут. Однако, анализ процесса передачи данных поможет понять роль различных устройств, составляющих систему, а так же, самое важное, укажет на порядок правила и последовательность выполнения действий в ЭВМ.

Текущими командами в ПЗУ являются:

· Ввести (INPUT) данные через порт 1

· Разместить (STORE) данные, поступающие из порта 1 в ячейку памяти с адресом 200.

· Вывести данные (OUTPUT) через порт 10.

 

Приведенная программа содержит 3 команды, а в программной памяти (ПЗУ) имеется 6 команд. Это вызвано тем, что команды делятся на 2 части, например, первая часть команды 1 была «ввести» (INPUT), вторая часть указывает нам на происхождение данных (Порт 1). Таким образом, первая часть представляет собой действие и называется операцией, а вторая часть – операндом. Операция и операнд помещены в ячейки памяти ПЗУ, причем, например, операция «ввести» содержится в ячейке памяти с адресом 100, а операнд из порта 1 в ячейке с адресом 101. Микропроцессор (МП) здесь представлен в виде 2 регистров: аккумулятора и регистра команд.

Проследим все этапы выполнения этой программы.

Этап №1: МП выставляет адрес 100 на ША. Линия управления активизирует ввод считывания из интегральной схемы программной памяти.

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

Этап №3: МП выставляет на ША адрес 101, линией управления активизируется вход считывания из программной памяти.

Этап №4: Программная память помещает операнд (Из порта 1) на ШД. Этот операнд находится в ячейке памяти 101, кодированное сообщение (адрес порта 1) взято на ШД и помещено в регистр команд. Теперь МП декодирует полную команду (ввести данные, поступающие из порта 1).

Этап №5: МП побуждает открыть Порт 1 посредством ША и линии управления устройствами ввода. Кодированная буква «А» из Порта 1 по ШД передается в МП и размещается в аккумуляторе.

Примечание: МП все время действует в последовательности:.

Этап №6: МП выставляет на ША адрес ячейки памяти 102 и активизирует вход считывания из программной памяти посредством управляющих линий.

Этап №7: Код команды поместить (STORE) считывается с ШД, принимается МП и помещается в регистр команд.

Этап №8: МП декодирует эту команду и определяет, что нужен операнд. Он выставляет на ША следующий адрес 103 и активизирует вход считывания из ПЗУ.

Этап №9: Код операнда в ячейку памяти 200 из памяти помещен на ШД, МП принимает операнд и помещает его в регистр команд. Команда «поместить данные в ячейку памяти 200» полностью извлечена и декодирована.

Этап №10: Начинается процесс выполнения: МП выставляет на ША адрес 200 и активизирует вход записи в ОЗУ.

Этап №11: МП выдает помещенную в аккумулятор информацию (код буквы «А») на ШД. Этот код записывается в ячейку 200 и таким образом теперь выполнена вторая команда.

Этап №12: МП теперь должен извлечь следующую команду - он адресует ячейку памяти 104 и активизирует вход считывания из памяти.

Этап №13: Команда вывести данные (OUTPUT) помещена на ШД. МП принимает ее, помещает в регистр команд, декодирует и определяет, что нужен операнд.

Этап №14: МП помещает адрес 105 на ША и активизирует вход считывания из ПЗУ.

Этап №15: Память помещает код операции в порт 10 на ШД. Этот код принимается МП, который помещает его в регистр команд.

Этап №16: МП декодирует команду «ввести данные в порт 10» полностью, т.е. он активизирует порт 10 посредством ША и линии управления выводом. Он помещает код буквы «А» (из аккумулятора) на ШД, по которой передается в порт 10 и далее из него на монитор.

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

 

группировки бит

 

Входящий в состав микропроцессора регистр – аккумулятор является очень важной частью всей вычислительной системы. Все операции над данными, как правило, выполняются через аккумулятор, в котором информация записана в виде слова. Обычно длина слова микропроцессора составляет 8 бит (байт) (4,8,16,32,64).

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

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

· Двоичное число;

· Двоичное число со знаком;

· Двоично-десятичное число;

· Буква алфавита.

· Команда;

· Адрес памяти;

· Адрес порта ввода или вывода.

 

Рассмотрим верхнюю ячейку памяти с адресом 01100100 (100). Ее содержимым является 11011011. Это число может быть интерпретировано как:

· Число 219;

· Число со знаком (-37);

· Двоично-десятичный код – невозможно;

· Буква алфавита в коде ASCII – буква или значок;

· Команда INPUT;

· Адрес ячейки памяти – DB;

· Адрес порта ввода – вывода – DB.

МП включает счетчик команд (счетчик команд – устройство, содержимым которого является текущий адрес памяти и который изменяет свое состояние на +1 с каждым тактом выполнения программы). С адреса 100 извлечет, а затем декодирует слово в памяти 11011011, как команду – ввести данные (INPUT). Затем МП обратится к следующему адресу 101 и найдет там адрес порта (1), из которого поступают данные. И так далее по тексту программы.

 

1. Код команды - ввести данные (INPUT);

2. Двоичный адрес Порта 1;

3. Код команды - разместить данные (STORE);

4. Двоичный адрес памяти;

5. Код команды – вывести данные (OUTPUT);

6. Двоичный адрес Порта 10;

7. Код ASCII буквы «А».

Команды программы помещены в 6 верхних ячеек памяти (100 - 105). Нижняя ячейка памяти (200) является местом размещения данных, т.е. в эту ячейку помещен код буквы «А».

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

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

буквенно-цифровой код

 

Когда ЭВМ «общается» с принтером, дисплеем или клавиатурой необходимо прибегать к коду, который одновременно включает в себя, как числовые, так и алфавитные и другие знаки. Такой код называется буквенно-цифровым. Наиболее распространенный код ASCII (стандартный американский код обмена информацией).

Например.

 

Тристабильные элементы

 

Интегральные элементы семейства ТТЛ (транзисторно-транзисторная логика) используются очень широко, значение выхода устройства ТТЛ может быть либо логической 1 (2, 4 ÷ 5 В), либо 0 (0 ÷ 0,4 В), поэтому невозможно подсоединить выходы стандартных элементов на общую шину ЭВМ. Поэтому были разработаны специальные элементы, выходы которых могут быть объединены на общей шине. Эти элементы называют тристабильными (имеющими 3 состояния). Этим элементам присуще состояния на выходе логического нуля, логической единицы и особое состояние высокого сопротивления Z. Когда тристабильный элемент находится в состоянии высокого сопротивления Z, его выход отключен от шины.

 

 

 


Имеет вход А, выход Y и вход (enable – активация, размещение).

Когда элемент шинного буфера (тристабильный элемент) сброшен, его выход находится в состоянии высокого сопротивления Z («плавает») и не оказывает на шину никакого влияния. В этом состоянии выход элемента отсоединяется от шины, т.е. не выдает на шину и не принимает от нее никакой информации. Такое состояние называют L – состоянием.

 

структура оперативной памяти

 

ОЗУ с объемом памяти 64 бит выполняет операцию записи /чтение поступающих данных в ячейку памяти с заданным адресом. На входы данных (D1 – D4) поступает для записи (например) слово 0101, а положение слова в ячейке определяется адресом 1100, поступающим на адресные входа А0 – А3, затем две команды управления - выбор кристалла и - запись/чтение переводит ОЗУ в состояние записи (чтения) данных извне.

Порядок работы ОЗУ следующий:

1. На ШД и ША выставляются соответственно данные (0101) и адрес ячейки ОЗУ (1100). При этом входа и находятся в L – состоянии.

2. С дешифратора адреса устройства (микросхема) низким уровнем поступает команда (выбор кристалла).

3. На шине управления в проводе чтение/запись () устанавливается 0 и информация с входов D1 – D4 (0101) запишется в ячейку памяти с адресом 1100 (12).

4. По окончании команды чтение/запись управляющие входа и переводится в L – состояние. В режиме запись выхода так же находятся в L – состоянии.

 

 

основы микропроцессорной техники

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

· Какова архитектура этого МП.

· Система команд.

· Простейшие системы, использующий данный МП (порты ввода/вывода, таймер и т.п.).

· Системы управления.

· Назначение выводов МП.

Понятие архитектура относится к организации регистров МП, числа бит шины адреса и шины данных и т.п.

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

архитектура простой эвм

МП является центром всех операций, ему необходимо питание и тактовые импульсы. ГТИ может быть отдельным устройством или входить в состав (быть интегрированным) МП.

Типовой МП содержит 16 (32, 64…) адресных линий, которые образуют однонаправленную ША. А так же, обычно, 8 (16, 32…) линий, которые составляют двунаправленную ШД. В представленной архитектуре имеет места 2 типа памяти: ОЗУ и ПЗУ. ПЗУ представляет собой память, которая содержит программу – монитор системы, а так же пользовательские программы. ПЗУ имеет адресные входы, а так же входы активизации только чтения и выбора кристалла. Тристабильные выходы ПЗУ подключены к ШД. ОЗУ тоже, что и ПЗУ, только предусмотрено использование полной команды чтение/запись.

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

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

 

структура простейшей памяти

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

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

ОЗУ и ПЗУ ЭВМ являются устройствами с произвольным доступам к памяти, т.к. они обеспечивают существенно большее быстродействие, по – сравнению с последовательным доступом.

Изучаемый тип МП будет иметь 16 линий адреса, которые могут обеспечить 65536 различных комбинаций 0 и 1, т.к. запись не экономична, то двоичный адрес принято представлять в 16-тиричной системе.

 

 

Так как размер ячейки памяти 8 бит (1 байт), а адрес – 2 байта, то для хранения адреса в памяти необходимо выделять 2 ячейки, в одну из которых помещают старший байт адреса, а в другую младший байт адреса.

 

состав команд

Группа команд, которая может выполнять данный микропроцессор (МП) называется его составом команд. В зависимости от типа МП и его назначения состав команд варьируется от 8 до 200.

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

В свою очередь эти группы команд делятся:

· Арифметические - сложение, вычитание, инкремент, сравнение и отрицание.

· Логические - И, ИЛИ, ИЛИ – исключающее, НЕ, а так же сдвиг вправо, сдвиг влево (часто встречаются команды циклического сдвига влево, вправо с переносом, тестированием и т.п.).

· Передачи данных - загрузка, размещение, перемещение, ввод и вывод.

· Ветвление - безусловный переход, переход, если ноль, переход, если не ноль, переход, если равенство, переход, если не равенство, переход, если положительно, переход, если отрицательно.

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

Последней командой в этой группе всегда стоит команда возврата из под программы. Прочими командами типового МП будут: нет операций, поместить в стек, выйти из стека, ожидание, остановка.

 

структура типового микропроцессора

Центральным устройством вычислительной системы является МП, который содержит обычно элементы размещения данных называемые регистрами и устройства счета (арифметическое логическое устройство – АЛУ). МП содержит так же цепь декодирования команд и секцию управления и синхронизации. МП так же снабжен необходимыми соединениями с устройствами ввода/вывода.

Основными функциями МП являются:

1. Извлечение, декодирование и выполнение команд программы в указанном порядке.

2. Передача данных из памяти в память, а так же из устройств ввода/вывода и в устройство ввода/вывода.

3. Ответы на внешние прерывания.

4. Установка общей синхронизации и сигнал управления для всей системы.

АЛУ МП выполняет такие операции, как сложение, сдвиг/расстановка, сравнение, инкремент, декремент, отрицание, И, ИЛИ, ИЛИ – исключающее, дополнение, сброс, инициализация.

Рассмотрим, например, операцию сложения (ADD).

На рисунке содержимое аккумулятора ØАН складывается с содержимым регистра временного хранения данных Ø5Н. Сумма ØFН помещена в аккумулятор.

Рассмотрим подробнее состав АЛУ.

Типовое АЛУ содержит сумматор и устройство сдвига, а результаты арифметической операции пересылают обратно в аккумулятор, посредством внутренней шины данных. Регистр состояния слова в АЛУ является чрезвычайно важным устройством. Этот регистр состоит из группы триггеров, которые могут быть установлены или сброшены, исходя из результатов последней операции, выполненной АЛУ. Эти триггера содержат указатели (флаги) нуля, отрицательного результата, переноса и т.д.

 

функционирование Эвм

 

Пусть требуется сложить числа 10+5+18=33. Программа для выполнения этой задачи может быть записана в следующей последовательности:

1. загрузить (LOAD) первое число (10) в МП;

2. сложить (ADD) второе число (5) с первым;

3. сложить (ADD) третье число (18) с двумя первыми;

4. поместить (STORE) сумму (33) в ячейку памяти с адресом 2ØØØН.

 

1. Операция показывает, что содержимым ячейки памяти 0001 загружено в аккумулятор, который содержит после этого 00001010 (0000А), т.е. первое слагаемое. В результате выполнения операции LOAD предыдущее содержимое аккумулятора стирается.

 

 

2. Операция ADD. Содержимое ячейки памяти 0003 складывается с содержимым аккумулятора, что дает сумму OF (00001111), помещаемую в аккумулятор.

3. Содержимое аккумулятора - сложение 00001111 сложена с содержимым ячейки памяти 0005 (00010010), т.е. выполнена операция.

 

 

4. Содержимое аккумулятора 00100001 передано и размещено в ячейку памяти с адресом 2000. Эта ячейка памяти была индефицирована в тексте программы двумя раздельными байтами (0007 и 0008). Таким образом, ячейка памяти программы 0006 содержит код операции (КОП) В7 прямой команды STORE, два следующих байта за ней указывают соответственно на старший и младший байты адреса.

Рассмотрим подробнее извлечение, декодирование и выполнение команды LOAD, размещенной по адресам 0000Н и 0001Н.

Извлечение.

Счетчик команд устанавливает адрес первого шага программы. После этого 16-тиразрядный адрес передается в адресный регистр, затем на ША и далее в память программы. Для активации памяти программы МП выдает сигнал - чтение памяти (1 на линии R/). В то время как дешифратор адресов активирует нужный кристалл памяти нулем по линии . Затем счетчик команд инкрементируется до 0001Н, ячейка памяти программы становится доступной и ее содержимое 86 считывается на ШД и далее передается в МП, в регистр команд.

Декодирование.

Код операции 86, содержащийся в регистре команд МП интерпретируется дешифратором команд. МП определяет команду LOAD, сто означает загрузку им содержимого памяти, адреса, который следует непосредственно за кодом операции в аккумулятор.

Извлечение операнда.

Содержимое счетчика команд 0001 передается в адресный регистр на ША и в память. МП выдает импульс высоким уровнем на вход R/памяти, в тоже время импульс низкого уровня поступает на вход выбор кристалла памяти.

Счетчик команд инкрементируется до 0002, что подготавливает МП к извлечению следующей команды. После этого ячейка памяти 0001 становится доступной и ее содержимое (Ø) поступает на ШД и в процессе выполнения всей команды в аккумулятор.

 

микропроцессор. поставляемая разработчиком документация.

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

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

INTL 80-80:

 

Выводы Назначение Вход/Выход
GND, +5B, -5B,+12B Питание Входы
Ф1, Ф2 Тактовые импульсы Входы
D0 ÷ D7 ШД Двунаправленные
A0 ÷ A15 Ша Выход
SYNC Синхронизация Выход
DBIN Строб входных данных Выход
WAIT Ожидание Выход
Строб записи Выход
HLDA Подтверждение захвата Выход
INTE Разрешение прерывания Выход
READY Готовность ввода записи Вход
HOLD Захват Вход
INT Требования прерывания Вход
RESET Сброс Вход

 

Выводы 20,2,11,28 - являются выводами питания.

Выводы 15 и 22 – являются входами внешнего двухфазного генератора тактовых импульсов (таймер).

Вывода SYNC, DBIN, WAIT, , HLDA, INTE – несут сигналы управления и синхронизации всем прочим элементам системы.

Выводы READY, HOLD, INT, RESET – являются входами управления, они воспринимают информацию от прочих элементов вычислительной системы.

Типовая документация содержит так же структурную схему МП, которая содержит внутренние регистры: аккумулятор; пары регистров ВС, DE и HL; указатель стека SP; регистр состояния, а так же несколько регистров временного хранения данных. На этой схеме так же отражены: регистр команд, дешифратор команд и устройство управления и синхронизации. Используемые программистом регистры B и С, D и Е, H и L – являются универсальными. Указатель стека, счетчик команд и регистр состояния являются специальными регистрами.

Важной особенностью является то, что пара регистров H и L может быть использована в качестве адресного регистра, при косвенной адресации. Документация содержит разработанные временные диаграммы, которые показывают соотношение во времени между тактовыми импульсами на выходе ГТИ и другими внешними сигналами (синхронизации, записи, ввода/вывода и т.п.).

 

использование регистра, адреса / данных

 

Использование пары регистров HL (имя регистра) в качестве указателя адреса является важным свойством типового МП.

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

Адрес Содержимое
.
.
.
Σ

 

Программа загружается в ячейке памяти с 2000Н по 200А, а три слагаемых (ØС + ØА + Ø7) расположены в ячейке памяти в 2100 по 2102.

Программа содержит 7 команд. Так же следует помнить, что текущая сумма будет всегда помещаться в аккумулятор, который вначале содержит первое слагаемое ØС.

Команда 1– 3А: приказывает МП загрузить (LOAD) в аккумулятор содержимое ячейки памяти 2100Н.

После выполнения команды аккумулятор будет содержать первое слагаемое ØС.

Команда 2 – 21Н: приказывает МП загрузить (LOAD) число 2101Н в пару регистров HL. Емкость этой пары 16 бит (2 байта). Содержимое 1-ой ячейки памяти 2004 представляет собой младший байт регистра L, а 2005 старший байт регистра Н.

Команда 3 – 86Н: приказывает МП выполнить сложение (ADD) содержимого аккумулятора (ØС) с содержимым ячейки памяти, адрес которой содержится в паре регистров HL.

Команда 4 – 23Н: содержимое пары регистров HL инкрементируется.

Команда 5 – 86Н: сложить содержимое аккумулятора с содержимым ячейки памяти с адресом 2102, на который указывает пара регистров HL.

Команда 6 – 23Н: инкрементировать пару регистров HL.

Команда 7 – 77Н: поместить (STORE) содержимое аккумулятора (окончательную сумму) в ячейку памяти, на которую указывает пара регистров HL, т.е. по адресу 2103.

 

Этапы обработки требования прерывания в микропроцессоре

 

Вход требования прерывания INTR отвечает на высокий уровень сигнала внешнего устройства. При этом предполагаем, что в устройство интерфейса ввода уже загружено 8 бит параллельных данных готовых для передачи в МП.

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

1. Интерфейс ввода выдает сигнал требования прерывания в направлении МП.

2. МП завершает выполнение текущей команды, находящейся в памяти по адресу 2006.

3. Поскольку, управление должно обеспечить последующее обращение к команде по адресу 2007, содержимое счетчика команд (именно 2007) и содержимое большинства регистров МП помещается в специальную область ОЗУ, называемую стеком. Содержимое стека будет позже извлечено в определенном порядке в регистры МП и счетчик команд.

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

5. Перед возвращением в основную программу данные регистров и счетчик команд, помещенные в стеке, возвращаются в МП.

6. Теперь счетчик команд отсылает МП в память по адресу 2007, т.е. в основную программу и нормальное ее выполнение продолжается.

Прерывание является очень нужным способом, позволяющим периферийным устройствам вмешаться и заставить МП выполнять требуемую операцию почти сразу.

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

 

указатель стека

 

Типовой МП содержит указатель стека. Указатель стека – это специализированный 16-тиразрядный регистр – счетчик, содержимым которого всегда является адрес. Этот адрес принадлежит особой группе ячеек памяти данных, который называется стеком. Стек, как правило, размещается в ОЗУ или иногда в физической локализованной на кристалле МП группе ячеек памяти. Стек типового МП будет находиться в ОЗУ и его положение определяется программистом. Указатель стека загружается старшим адресом, представляющим собой вершину стека.

В примере указатель стека содержит адрес 220А, что на единицу старше первой ячейки памяти стека 2209. Данные в стек можно записать, используя команды поместить (PUSH) и вызвать (CALL). Данные могут быть считаны из стека по командам извлечь (POP) и возврат (RETERN). Стек функционирует как память с последовательными доступом по типу: данные, поступившие последними, извлекаются первыми. Например, команда PUSH приводит к тому, что содержимое пары регистров HL помещается в стек.

1. Указатель стека МП декрементируется от 220А до 2209.

2. Указатель стека показывает на ячейку памяти 2209 по адресной шине и старший байт регистра HL помещается в стек.

3. Указатель стека снова декрементируется от 2209 до 2208.

4. Указатель стека указывает на ячейку 2208 по адресной шине и младший байт из регистра HL загружается в стек.

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

5. До операции указатель стека указывает на ячейку памяти 2208, ее называют вершиной стека, затем указатель стека декрементируется до 2207.

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

7. Указатель стека декрементируется до 2206.

8. Указатель стека указывает на ячейку памяти 2206 и содержимое регистра состояния (11111111) загружается по этому адресу.

Стек может продолжать расти, пока длится процесс загрузки в него, т.е. длина стека формально не имеет ограничений, единственным ограничением является объем ОЗУ.

Рассмотрим команду POP – аккумулятор и регистр состояния свободны до операции извлечения из стека.

1. Указатель стека указывает на вершину, т.е. на адрес 2206, содержимое регистра состояния (11111111) извлечено из стека и переслано в АЛУ.

2. Указатель стека инкрементируется с 2206 до 2207.

3. Указатель стека указывает на адрес 2207, содержимое вершины стека извлекается и пересылается в аккумулятор.

4. Указатель стека инкрементируется до 2208 и указывает теперь на следующий адрес извлечения из стека.

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

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

 

программирование микропроцессора

Состав команд арифметических действий.

ADI – C6 – сложить аккумулятор с данными.

ADD L – 85 – сложить содержимое регистра L с содержимым аккумулятора.

ADD H – 84 – сложить содержимое регистра H с содержимым аккумулятора.

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

SUI – Ø6 – вычесть данные из аккумулятора.

SUB L – 95 – вычесть содержимое регистра L из содержимого аккумулятора.

SUB H – 94 – вычесть из содержимого регистра Н в аккумулятор.

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

INR A – 3C – к содержимому аккумулятора +1.

INX H – 23 – инкремент пары регистров HL.

DCR A – 3D – декрементировать (- 1) аккумулятор.

DCX H – 2B – декрементировать пару регистров HL.

CPI – FE – сравнить содержимое аккумулятора с данными (в следующей ячейке памяти).

CMP L – BD – сравнить содержимое аккумулятора с содержимым регистра L.

CMP H – сравнить содержимое аккумулятора с содержимым регистра H.

CMP M – сравнить аккумулятор с ячейкой памяти, на которую указывает пара регистров HL.

 

Содержит команды сложить, вычесть, инкрементировать, декрементировать и сравнить.

Каждая команда точно оговаривает различные источники другого слагаемого.

Команда ADI – это команда сложить непосредственно, она является двухбайтовой. Ее формат (код операции С6) содержится в первом байте команды, а непосредственно за ним, во втором байте, находятся данные для сложения с содержимым аккумулятора.

Команда ADD L – содержимое аккумулятора (OF) складывается с содержимым регистра L (01). Полученная в результате выполнения команды сумма (10) помещается в аккумулятор.

Команда ADD H – выполняется так же.

Команда ADD М – однобайтовая команда – сложить с косвенным адресом. Адрес второго слагаемого задан в более сложной форме с использованием так называемого способа косвенной регистровой адресации. При такой адресации пара регистров HL указывает 16-тиразрядный адрес памяти, где хранится второе слагаемое.

Команда вычитания SUI.

Рассмотрим, например, 00001001 – 00000001 → Ø9Н – Ø1Н.

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

 


Дополнительный код FF второго числа складывается с первым числом, что дает сумму 100001000. В старшем девятом бите суммы единица является переполнением и не принадлежит разности 00001000. МП использует это переполнение для установления индикатора переноса CY в регистре состояния. Вычитая, МП инвертирует переполнение, и результат становится содержимым индикатора переноса CY.

Рассмотрим другой пример, когда уменьшаемое меньше вычитаемого: Ø5 – Ø6 = FF = -1(10)

 
 

 


Результат вычитания представлен в дополнительном коде десятичного числа (-1). Сложение в этом случае не вызывает переполнения, т.е. девятый бит равен нулю. Этот бит инвертируется, что дает 1 в индикаторе переноса CY. Когда индикатор CY устанавливается в 1, после вычитания, это означает, что число, содержащееся в аккумуляторе, меньше числа в памяти или регистре. Иначе, индикатор переноса равен 1, указывает на то, что число в аккумуляторе после того, как было выполнено вычитание, является дополнительным кодом, представляя отрицательное число.

Допустим, первое слагаемое 5 находится в аккумуляторе, а второе слагаемое находится в регистре L.

 

Команда сравнение (СМР) – вычитает содержимое регистра памяти из содержимого аккумулятора, но при этом не изменяет содержимого ни того, ни другого. Индикаторы регистра состояния подвержены воздействию команд сравнения.

Например, сравнить содержимое аккумулятора с содержимым регистра L.

Содержимое регистра L переводим в дополнительный код.

 
 

 


Первое число и дополнительный код второго числа складываются, что дает результат 10000000, затем МП проверяет равенство нулю восьми младших разрядов. Индикатор нуля Z в примере принимает значение 1, переполнение 1 инвертируется и индикатор CY устанавливается в ноль. Сброшенный индикатор CY означает, что содержимое аккумулятора больше либо равно содержимому регистра L.

 

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

 

Логические команды составляют еще одну группу команд МП. Состав этих команд следующий: логическое умножение – И, логическое сложение – ИЛИ, ИЛИ – исключающее, отрицание – НЕ и сдвиг. В этой группе команд именно аккумулятор составляет ядро большинства операций. Как и при арифметических операциях, способ адресации и здесь влияет на способ и место нахождения других данных в системе. Команда ANI выполняет логическое умножение над содержимым аккумулятора (00010011) и содержимым программной памяти после команды (00000001). Содержимое аккумулятора подтверждается операции И побитно. И в соответствии с таблицей истинности для этой операции имеем: 00000001. Результатом всех операций И будет сброс индикатора переноса. Так же результат операции И проверяется с целью определения не ноль ли он и если нет, индикатор нуля Z сбрасывается в ноль.

Пример операции И с косвенной операцией (ANA M). Содержимое аккумулятора подвергается операции И (бит с битом) с содержимым ячейки памяти указанной парой регистров HL. Допустим, в аккумуляторе – 00111100, а в ячейке памяти – 00000001. Результат умножения будет 00000000, этот результат размещается в аккумуляторе. Индикатор переноса CY сбрасывается в ноль, кроме того, результат проверяется на ноль и поскольку, ответ да, индикатор нуля Z устанавливается в единицу.

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

Команда ИЛИ

Мнемоника ORA. Выполняется с содержимым аккумулятора и содержимым какой-либо ячейки памяти или регистра.

Команда ИЛИ – исключающее

Мнемоника XRA. Этих команд так же несколько, в зависимости от способа получения данных.

Например. Выполним команду ИЛИ - исключающее над самим аккумулятором, т.е. Аккумулятор Аккумулятор.

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

 

 

Команда циклического сдвига с переносом

Мнемоника RAR.

Например, RAR А (сдвиг вправо с переносом).

Например.

Содержимое аккумулятора сдвинуто на одну позицию вправо и его младший бит (единица) передается в позицию индикатора переноса CY, тогда как имевшийся там бит (ноль) занимает позицию старшего бита аккумулятора. После завершения операции CY =1, а Z=0. Используя одну или несколько команд циклического сдвига, можно тестировать весь заданный состав бит, а индикатор переноса, может быть, затем проверен командой условного ветвления.

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

 

состав команд операций передачи данных

 

Эти команды выполняют передачу данных из регистра в регистр, размещение данных в памяти, размещение извлеченных из памяти данных в устройство ввода/вывода. Так же эти команды устанавливают индикатор переноса. Почти все эти команды не влияют на индикаторы регистра состояния. Каждая команда передачи данных содержит адрес источника и назначения данных. Способы адресации ориентированны на то, где и как осуществляется поиск данных. К основным в этой группе команд относятся:

· MOV R1, R2 – передача из регистра 2 в регистр 1,

· MVI, R (M) – загрузить регистр (или память),

· LXI R1.2 – загрузить пару регистров LHL, LDA, STA, SHLD, IN, OUT, STC – команды передачи данных.

Например, команда MOV A, L – следующая за мнемоникой буква А указывает назначения тогда как последняя буква L индефицирует источник данных.

Команда SPHL – здесь источником данных является пара регистров HL, приемником 16-тиразрядный указатель стека SP.

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

Команда LXI H – пара регистров HL должна быть загружена данными, следующими непосредственно за кодом операции в программной памяти. Эта команда является трехбайтовой: 1 байт – код операции (21); 2-ой байт – содержит младший байт и помещается в регистр L; 3-й байт – это старший байт, который помещается в регистр H.

Команда загрузки пары регистров HL с прямой адресацией LHLD. Второй и третий байт являются 16-тиразрядным адресом памяти данных для загрузки.

МП преобразует 2 следующих за кодом операции байта в 16-тиразрядный адрес, который служит указателем адреса памяти данных (ОЗУ) и загружается в пару регистров HL.

Типовой МП снабжен несколькими командами размещения. Например, команда STA - загрузка данных с прямой адресацией. Содержимое аккумулятора помещается в память, на которую указывает 16-тиразрядный адрес, составленный 2 и 3 байтом команды.

Команда ввода (IN) – по сути, идентична команде загрузки, только здесь источником данных является порт ввода, который идентифицируется 8-миразрядным числом (адрес устройства ввода/вывода). Назначение данных из порта всегда аккумулятор.

Данные порта 00001111, на который указывает второй байт команды, передаются и размещаются в аккумулятор.

 

Состав команд операций ветвления

 

К этим командам относятся:

· IMP – безусловный переход по адресу;

· IZ – перейти, если ноль по адресу;

· INZ – перейти, если не ноль по адресу;

· IC - перейти, если перенос;

· INC – перейти, если нет переноса по адресу.

Обычно МП выполняет команды последовательно, т.е. 16-тиразрядный счетчик команд типового МП содержит всегда адрес следующий, извлекаемый из памяти команды до ее выполнения. Его содержимое (счетчик команд) обычно повышается на 1, при каждом счете.

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

Команда IMP – перейти. Она является трехбайтовой. Используется для изменения специфического адреса в счетчике команд.

Адрес 2000Н загружен в счетчик команд, информация об этом адресе следует непосредственно за кодом операции, поэтому такая адресация называется непосредственной. Младший байт адреса находится во втором байте памяти сразу за кодом операции. Команду безусловного перехода можно рассматривать как способ загрузки новой информации об адресе в счетчике команд.

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

Например, команда IZ – перейти, если ноль.

В этом случае счетчик команд 2017Н до операции будет нормально инкрементирован, если только индикатор нуля Z неустановлен в 1. МП проверяет это и находит 1, значит, результат последней арифметической или логической операции был ноль. Условие перехода выполнены и МП загружает новый адрес 2008Н в счетчик команд. Этот новый адрес поступает из ПЗУ. Следующей выполненной командой программы будет команда размещения данных в памяти по адресу 2008Н (но не 2018Н).

 

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

 

состав команд операций вызова подпрограмм и возврата в основную программу

 

Этих команд две: команда вызова CALL и команда возврата RET. Эти команды всегда используются парами, т.е. если в тексте программы есть команда CALL, ее всегда сопровождает команда RET. Трехбайтовая команда CALL используется основной программой для перехода МП к подпрограмме.

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

Когда МП передает первую команду CALL по адресу 1000Н, он находит адрес перехода в двух следующих байтах программы. Адрес, следующий за CALL команды, отправляется (2010) в стек и МП переходит тогда в начало подпрограммы по адресу 1000Н. Команды, составляющие эту программу, выполняются до тех пор, пока МП не встретит команду возврата RET. Сохраняющий в стеке адрес 2010 помещается в счетчик команд и МП продолжает выполнение основной программы, принимая ее там, где он ее покинул. Эта программа выполняется до тех пор, пока МП не встретит другую команду подпрограммы вызова CALL по адресу 2020. МП сохраняет адрес следующей команды 2023 в стеке и переходит к подпрограмме, находящейся по адресу 1000Н. После завершения выполнения этой подпрограммы команда возврата RET извлекает из стека адрес следующей команды основной программы (2023) и загружает ее в счетчик команд.

Данная подпрограмма может быть использована много раз в ходе выполнения одной и той же основной программы.

Подпрограммы, как правило, размещены в ПЗУ МП, но в некоторых случаях для ускорения выполнения программ, подпрограммы размещают в ОЗУ.

Команда вызова сочетает функции оператора загрузки в стек и перехода.

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

Нарисуем блок-схему выполнения этой команды:

 

Имеет место следующей последовательности операции:

1. Указатель стека декрементирован от 210А до 2109.

2. Старший байт счетчика команд загружается в стек по адресу 2109.

3. Указатель стека декрементируется до 2108.

4. Младший байт счетчика команд загружается в ячейку памяти с адресом 2108.

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

6. Старший байт адреса перехода загружается в старший байт счетчика команд.

После этого МП ответвляется по адресу, на который указывает счетчик команд (в примере 1000Н). Этот адрес является началом подпрограммы. В конце подпрограммы находится команда RETERN. Обнаружив ее, МП извлекает в известном порядке из стека сначала младший, затем старший байты и размещает их в счетчике команд (в примере 2010). После этого продолжается выполнение основной программы до следующей команды CALL.

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

 

программирование микропроцессара

запись программы

 

Программист должен:

1. Знать состав команд МП.

2. Быть хорошо знаком с расположением регистров МП.

3. Знать общую архитектуру ЭВМ.

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

· Определить и проанализировать задачу.

· Начертить структурную схему решения.

· Записать программу на ассемблере.

· Записать или генерировать программу в кодах.

· Загрузить программу на решение.

· Документировать программу.

Например.

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

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

 

 

Нарисуем подробную функциональную схему:

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

Затем следует записать версию подробной структурной схемы на ассемблере в 4 типовых поля: метка, мнемоника, операнд и комментарий.

 

 

Метка Мнемоника Операнд Комментарий
  LXI Н, 2010Н Загрузить адрес 2010Н в пару регистров HL. Эта пара регистров используется как указатель адреса.
  MOV А, М Поместить первое число из ячейки памяти с адресом 2010Н в аккумулятор (А).
  INX Н Инкрементировать пару регистров HL до 2011Н.
  ADD М Сложить второе число в ячейке памяти 2011Н с содержимым А.
  INX H Инкрементировать пару регистров HL до 2012.
  ADD M Сложить третье число в ячейке памяти 2012 с содержимым А.
  INX Н Инкрементировать пару регистров HL до 2013.
  MOV М, А Поместить сумму из А в ячейку памяти 2013.
  HLT   Остановить МП.

 

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

Записанная версия должна быть переведена в состав бит из 0 и 1, понимаемых МП и называемых машинным кодом.

Это можно сделать с помощью специальных программ или вручную.

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

1. найти код операции каждой мнемоники в таблице состава команд.

2. определить операнды (данные и адреса), когда это необходимо передать командами из нескольких байт.

3. установить адреса памяти в последовательности каждой команды и операнда.

 

Шестнадцатеричная Мнемоника Операнд Комментарий
Адрес Содержимое
21(код операции) 10 (младший байт) 20 (старший байт) LXI Н, 2010Н Загрузить адрес 2010Н в пару регистров HL, как указатель адреса.
MOV А, М Загрузить первое число из ячейки памяти с адресом 2010Н в А.
INX Н Инкрементировать пару регистров HL до 2011Н.
ADD М Сложить второе число с адресом 2011Н с содержимым А.
INX H Инкрементировать пару регистров HL до 2012.
ADD M Сложить третье слагаемое из ячейки памяти 2012 с содержимым А.
INX Н Инкрементировать пару регистров HL до 2013.
MOV М, А Поместить сумму из А в ячейку памяти, на которую указывает содержимое пары регистров HL.
202А HLT   Остановить программу.

 

Затем нужно проверить программу в том смысле работает ли она. Эта операция представляет собой процесс отладки программы (поиск и устранение ошибок).

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

Большие сильно развитые программы требуют тщательно разработанной документации.

 

ветвление программ

 

Рассмотрим на примере.

Найти большее число и поместить его в определенную ячейку памяти.

Во-первых, 2-х кадрах блок-схемы представлены операции загрузки чисел в регистре A и L. Команда сравнение, не разрушая содержимого регистров, вычитает из содержимого Аккумулятора содержимое регистра L. Результат сравнения изменяет состояние индикаторов (флагов) в регистре состояния. Следующий кадр называется знаком принятия решений. Он завершает в программе этап решения и содержит поставленный вопрос [(A) ≥ (L)]? Если да, то программа продолжается последовательно и содержимое аккумулятора помещается в память, затем МП останавливается. Если нет, то программа ответвляется и содержимое регистра L помещается в память, затем МП останавливается.

Метка Мнемоника Операнд Комментарий
  MVI A, ØF Загрузить число 15 (в десятичной форме) в аккумулятор.
  MVI L, Ø6 Загрузить число Ø6 в регистр L.
  CPM L Сравнить содержимое А с содержимым регистра L, индикатор CY регистра состояния =1, если А<L.
  JC STORE, L Перейти к STORE, L,если CY=1 (если A<L). В противном случае продолжить последовательность.
  STA 2040H Загрузить содержимое А в ячейку памяти 2040.
  HLT   Остановить МП.
STORE, L MOV A, L Поместить регистр L в А.
  STA 2040H Загрузить содержимое А в ячейку памяти 2040.
  HLT   Остановить МП.

 

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

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

В этом примере использовался символический адрес (Метка), при команде перехода. Команда ветвления широко используется при программировании.

ЦИКЛЫ

 

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

Например, если программе необходимо провести счет от 0 до 254 (ØØ до FE) и вывести результат счета на какую-либо выбранную периферию, то если не использовать циклов, программа будет содержать не менее 300 строчек.

Нарисуем блок-схему этой задачи.

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

Рассмотрим другой пример.

Структурная схема размещения ряда чисел (от 0 до 8) последовательно в память с адресами от 2040 до 2048. Два первых кадра соответствуют начальной загрузке пары регистров HL и аккумулятора значениями 2040 и ØØ соответственно. Третий кадр соответствует процессу размещения данных в памяти и который будет повторяться 9 раз, в ходе выполнения этой программы. МП, повторяя свои действия, размещает содержимое аккумулятора в памяти по адресу, указанному в паре регистров HL. Четвертый и пятый кадры представляют операции, которые изменяют адрес в паре регистров HL и числа в аккумуляторе. Кадр сравнение и знак принятия решения составляют операцию тестирования. Команда сравнение вычитает число Ø9 из содержимого аккумулятора для установки или сброса индикатора нуля в регистре состояния.

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

Метка Мнемоника Операнд Комментарий
  LXI H, 2040 Загрузить число 2040 в пару регистров HL.
  XRA A Сброс А в ØØ.
LOOP MOV M, A Поместить А в М.
  INX H Инкремент HL.
  INR A Инкремент А.
  CPI Ø9 Сравнить А= Ø9. Если да, то индикатор нуля Z установится в единицу.
  JZ LOOP Перейти к LOOP, если Z=0, т.е. если содержимое А ≠ Ø9, если да, то продолжить последовательно.
  HLT   Остановить МП.

 

ИСПОЛЬЗОВАНИЕ ПОДПРОГРАММ

 

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

Пример.

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

 

 

 

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

 

 

Нарисуем подробную блок-схему.

 

 

 

 

Метка Мнемоника Операнд Комментарий
  LXI SP, 20CØ Поместить число 20CØ в указатель стека.
  LXI Н, 2040 Поместить адрес 2040 в пару регистров HL (указать область ОЗУ, в которой будут находиться данные).
  XRA A Сброс аккумулятора в ØØ.
  ADD М Сложить содержимое аккумулятора с М (2040).
  INX H Инкрементировать пару регистров HL.
  ADD M Сложить содержимое аккумулятора с содержимым ячейки памяти 2041.
  PUSH PSW Поместить в стек содержимое аккумулятора и индикатора регистра состояния.
  CALL MULTIPLAY Вызов подпрограммы MULTIPLAY, начинающейся с адреса 2042.
  INX H, 2042 Инкремент HL до 2042.
  MOV M, A Разместить произведение в ячейку памяти 2042.

 

Три первые команды восстанавливают указатель стека пару регистров HL и аккумулятор соответственно до 20СØ, 2040 и ØØ.

Четвертая команда складывает содержимое аккумулятора с содержимым ячейки памяти, на которую указывает пара регистров HL. Например, содержимое памяти по адресу 2040 – Ø5.

После выполнения четвертой команды, содержимое аккумулятора будет Ø5 (ØØ + Ø5 = Ø5).

Пятая команда основной программы инкрементирует содержимое пары регистров HL.

Шестая команда складывает содержимое памяти по адресу 2041 (Ø9) с содержимым аккумулятора. В результате Ø5 + Ø9= ØЕ.

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

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

Например, адрес 2050 (adr. 2050). В примере подпрограммы осуществляется умножение суммы ØЕ * 2 = 1С и произведение помещается в аккумулятор. После возврата в основную программу адрес следующей последовательной команды извлекается из стека и например, равен 200Е.

Т.к. команды размещения в стек и извлечение из него парные, то содержимое аккумулятора и регистра состояния восстанавливается командой POP PSW.

Теперь содержимое аккумулятора является не произведением, а сумма ØЕ. Эта сумма будет тестируема следующей командой CPI. Две следующие команды основной программы для тестирования суммы в аккумулятор. Команда сравнить непосредственно (CPI) выполняет операцию вычитание (ØЕ – 10 = FE). Результат вычитания будет FE, который представлен в дополнительном коде. Т.е. содержимое аккумулятора меньше, чем 10. Индикатор CY равен 1 и МП переходит к символическому адресу START.

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

 

Например:

При повторяющемся сложении это операция выглядит иначе:

В этом случае множимое повторяется слагаемым число раз, равное множителю, а результат этой операции будет произведение. В нашем примере вместо ØЕ * Ø2 = 1С будет ØЕ + 0Е= 1С.

Первый шаг обеспечивает хранение текущего содержимого пары регистров HL в стеке. Три следующих шага восстанавливают регистры (L), (H) и (A). Регистр (L) будет содержать множитель (Ø2) и он будет инкрементирован программой до. Регистр (Н) содержит множимое (ØЕ), т.е. сумму, посланную в подпрограмму основной программы. Аккумулятор = ØØ. Пятый шаг соответствует сложению множимого (ØЕ) с аккумулятором (ØØ). Частное произведение ØЕ затем сохраняется в ОЗУ по адресу, например, 2020. В то время, как аккумулятор используется для декрементирования содержимого регистра (L). На шаге принятия решения возникает вопрос (L) = ØØ? Если ответ отрицательный, программа переходит снова в цикл. Если ответ положительный, ветвится вправо. Содержимое пары регистров HL восстанавливается командой извлечения из стека и наконец команда возврата возвращает нас в основную программу.

 

Нарисуем блок-схему.

 

 

 

Метка Мнемоника Операнд Комментарий
  PUSH H Поместить в стек содержимое регистра HL (20C1).
  MVI L, Ø2 Поместить множитель Ø2 в регистр L.
  MOV H, A ØE из (А) поместить в (Н).
  XRA A Сброс (А) в ØØ.
LOOP ADD H Сложить (А) с (Н).
  STA Поместить частное произведение (ØØ + ØE = ØE) в (М).
  MOV A, L Содержимое (L) поместить в (А).
  DCR A Декремент (А).
  MOV L, A Содержимое (А) поместить в (L).
  LDA Поместить в Аккумулятор содержимое ячейки памяти 2020.
  IZ DONE Перейти к DONE, если индикатор Z=1, т.е. регистр L декрементируется в ØØ, если нет – продолжить последовательно.
  IMP LOOP Перейти всегда к символическому адресу LOOP.
DONE POP H Извлечь из стека содержимое пары регистров HL.
  RET   Возврат в основную программу.

 

ИНТЕРФЕЙС МИКРОПРОЦЕССОРА

 

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

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

 

СПИСОК ЛИТЕРАТУРЫ

1. Архитектура компьютера Э.Таненбаум С.Пб.

2. Р. Токхейм «Основы Цифровой электроники». Москва.-Мир. 1988

3. Р. Токхайм «Микропроцессоры» Курс и упражнения. Москва.-Энергоатомиздат 1988

4. П. Хоровиц, У. Хилл «Искусство схемотехники» в двух томах Москва.-Мир, 1983

5.