
- •Микропроцессорные системы
- •Зачем нужны микропроцессоры?
- •Что такое процессор?
- •Запоминающие устройства
- •Адресация при работе с памятью
- •Адресное пространство
- •Взаимодействие процессора с памятью
- •Пример простейшего взаимодействия процессора с памятью
- •Обратная связь с процессором
- •Внутренние регистры и команды процессора процессора
- •Историческая справка
- •Теоретическая часть
- •Программно доступные регистры
- •Формирование физических адресов
- •Регистр признаков
- •Описание лабораторного макета
- •Организация памяти
- •Программа Монитор
- •Назначение индикационного экрана
- •Основные команды программы Монитор
- •Задание для подготовки к работе
- •Рабочее задание
- •Вопросы для самоконтроля
бые адреса меньше адреса начального его байта и любые адреса больше адреса его конечного байта не будут относиться к этому блоку. И если этот блок в машине один, то не будут иметь физического смысла.
Обычно говорят, что адресное пространство процессора ферментировано если не все адреса в нём соответствуют каким-либо запоминающим устройствам. В таком пространстве есть протяжённые фрагменты, к которым можно обращаться, и «дыры», которые ничему не соответствуют.
1.4. ВЗАИМОДЕЙСТВИЕ ПРОЦЕССОРА С ПАМЯТЬЮ
Как было выяснено выше, процессор общается с памятью при помощи проводников. Безусловно существуют разные способы организации взаимодействия с памятью на сигнальном уровне. Есть, тем не менее, некоторые устоявшиеся схемы, используемые практически повсеместно.
В этом разделе будет рассмотрено какие сигналы формирует процессор при обращении к памяти. Речь будет идти о логических значениях нуля и единицы. Следует понимать, что каждому значению соответствует определённое значение напряжения на реальном проводе. Конкретное напряжение и полярность сигналов могут отличаться для разных процессоров. В данном случае это не столь важно т.к. тут рассматривается лишь общий принцип.
Из сказанного ранее следует, что для организации такого взаимодействия требуется как минимум два набора сигналов, представляющих m разрядов адреса и n разрядов данных. Сами эти сигналы будем обозначать A0, A1, …, Am и D0, D1, …, Dn соответственно.
Процессор должен как минимум читать из памяти информацию. Однако, мы знаем что практически все знакомые нам программы хранят в памяти какую-нибудь информацию. Из этого следует, что процессор так же должен уметь производить запись в память (т.е. менять содержимое её ячеек). В то же время в промежутках между чтением и записью процессор не должен обращаться к памяти.
Это требует реализации как минимум трёх состояний: отсутствие обращения, чтение, запись. Три состояния не могут быть закодированы одним битом, поэтому для их представления необходимо использовать два различных сигнала.
Распространённым способом является использование раздельных сигналов: один соответствует записи, а второй чтению данных из памяти.
12

Таблица 1.1: Сигналы выборки памяти
Режим |
|
Сигналы |
||||
Вариант 1 |
Вариант 2 |
|||||
|
WR |
RD |
CS |
|
WRRD |
|
Нет доступа |
0 |
0 |
0 |
не важно |
||
Чтение |
0 |
1 |
1 |
1 |
||
Запись |
1 |
0 |
1 |
0 |
Обычно эти сигналы обозначают WR и RD соответственно. Если оба сигнала равны логическому нулю, то обращение к памяти не происходит. Как только один из двух сигналов становится равным логической единице, память переходит в режим, соответствующий данной операции. Оба сигнала WR и RD ни при каких обстоятельствах не должны быть равны логической единице.
Второй подход предполагает, что есть один сигнал выбора памяти CS (от англ. Chip Select — выбор чипа) и второй сигнал WRRD, который определяет режим работы. Когда CS равен логическому нулю память находится в не выбранном положении и игнорирует значение сигнала WRRD. Когда сигнал CS переходит в состояние логической единицы режим работы памяти задаётся состоянием сигнала WRRD (при логическом нуле — запись, при единице — чтение).
В таблице 1.1 приведены все три варианта для каждой из двух схем. С точки зрения логики обе схемы абсолютно эквивалентны. В разных процессорах обычно используется одна или вторая. Мы в дальнейшем будем в примерах придерживаться первой схемы т.к. она позволит изображать меньше сигналов.
1.4.1. Пример простейшего взаимодействия процессора с памятью
Рассмотрим пример взаимодействия процессора с памятью для некоторого воображаемого процессора с 4-разрядными данными и 6- разрядным адресом. Сложно сказать существует ли такой процессор в природе. Если читатель хочет добавить реалистичности он может дорисовать ещё 12 разряда данных и 14 разрядов адреса самостоятельно.
На рисунке 1.1 показано как могло бы выглядеть подключение такого процессора к соответствующей микросхеме памяти.
13

Процессор Память
|
|
|
|
|
|
|
|
|
Питание |
A1 |
|
|
|
Питание |
A1 |
|
|
|
|||||
|
|
|
|
|
|
|
|
|
D0 |
A2 |
|
|
|
D0 |
A2 |
|
|
|
|
|
|
|
|
|
D1 |
A3 |
|
|
|
D1 |
A3 |
|
|
|
|
|
|
|
|
|
D2 |
A4 |
|
|
|
D2 |
A4 |
|
|
|
|
|
|
|
|
|
D3 |
A5 |
|
|
|
D3 |
A5 |
|
|
|
|
|
|
|
|
|
A0 |
WR |
|
|
|
A0 |
WR |
|
|
|
|
|
|
|
|
|
Земля |
RD |
|
|
|
Земля |
RD |
|
|
|
|
|
|
|
|
Рис. 1.1: Пример подключения абстрактного процессора к памяти с сигналами выбора режима доступа
Таблица 1.2: Двоичное представление чисел 5 и 26
|
Число D = 5 |
|
|
Число A = 26 |
|
||||||
D3 |
|
D2 |
D1 |
|
D0 |
A5 |
A4 |
A3 |
A2 |
A1 |
A0 |
0 |
|
1 |
0 |
|
1 |
0 |
1 |
1 |
0 |
1 |
0 |
Итак, наш процессор имеет 4 разряда данных, что позволяет ему представлять числа от 0 до 24 1 = 15 и 6 разрядов адреса, позволяющих обращаться к 26 = 64 ячейкам памяти с адресами от 0 до 63.
Запись данных осуществляется процессором, поэтому он «заранее» знает, какое значение и по какому адресу будет записано. К примеру рассмотрим запись числа 5 по адресу 27.
Втаблице 1.2 указанные числа представлены в двоичном коде по разрядам.
Предположим, что в начальный момент на выходах A процессора, определяющих адрес, было установлено число 3. Откуда оно там взялось мы сказать не можем. Скорее всего это остаток какой-то предыдущей жизнедеятельности нашего процессора. Так же на выводах данных D был установлен логический ноль, как это изображено на рисунке 1.2а
Вкакой-то момент времени процессор начинает выполнение опера-
14

.RD . |
. |
.RD . |
. |
|
. |
. |
|||
.WR |
.WR |
|||
. |
. |
|||
.A5 |
.A5 |
|||
. |
. |
|||
.A4 |
.A4 |
|||
. |
. |
|||
.A3 |
.A3 |
|||
. |
. |
|||
.A2 |
.A2 |
|||
. |
. |
|||
. |
. |
|||
.A1 |
. |
.A1 |
. |
|
. |
. |
|||
.A0 |
.A0 |
|||
. |
. |
|||
.D3 |
.D3 |
|||
. |
. |
|||
.D2 |
.D2 |
|||
. |
. |
|||
.D1 |
.D1 |
|||
. |
. |
|||
.D1 |
.D1 |
|||
|
|
|||
а) Цикл записи |
б) Цикл чтения |
Рис. 1.2: Диаграмма сигналов гипотетического процессора при выполнении чтения и записи в память
15

Таблица 1.3: Двоичное представление числа 11
Число A = 11
A5 |
A4 |
A3 |
A2 |
A1 |
A0 |
0 |
0 |
1 |
0 |
1 |
1 |
ции записи. Для этого он сначала должен подготовить информационные сигналы A и D. Впрочем, микросхему памяти это совершенно не интересовало: дело в том, что оба сигнала WR и RD были установлены в логический ноль и поэтому память не «слушала» что происходит на линиях данных и ничего на них не выдавала — просто отключилась от них. Такое состояние входов микросхемы называется третьим состоянием.
После того как произошло изменение сигнала WR на логическую единицу микросхема памяти подключается к сигналам данных. Памяти необходимо предоставить некоторое время в течении которого она произведёт выбор ячейки с нужным адресом и обновит соответствующие ей биты до значений, переданных процессором по сигналам D.
По прошествии необходимого времени процессор сбрасывает сигнал WR до состояния логического нуля и только после этого изменяет сигналы адреса и данных. В течении действия операции записи (т.е. пока сигнал WR был установлен в единицу) процессор держал все информационные сигналы в неизменном состоянии.
Чтение осуществляется несколько более сложным образом. Допустим, что теперь мы собираемся прочитать ячейку с адресом 11, двоичное представление которого приведено в таблице 1.3. Диаграмма сигналов для этого случая изображена на рисунке 1.2б.
Как и в случае с циклом записи процессор формирует сигналы на линиях A и D до активации сигнала RD. Однако, обратите внимание на, что в этот раз сигналы данных будет формировать память, поэтому процессор подключает их к входной схеме. В какой-то момент получается, что память ещё не подключила сигналы данных (поскольку не получила сигнал RD), а процессор их уже отключил, поскольку инициатива по чтению памяти исходит от него и он первым начал готовиться к этой процедуре.
Через некоторое время после после поступления сигнала RD память производит подключение сигналов данных к внутреннему источнику сигнала. На диаграмме это изображено как сбрасывание сигнала в состо-
16