Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Сх ЭВМ / Схемотехн ЭВМ ч.2.doc
Скачиваний:
413
Добавлен:
23.02.2015
Размер:
1.71 Mб
Скачать

8.3. Буферы данных

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

В буфер записывают несколько слов по очереди (последовательно слово за словом). Для организации обычной очередности служит буфер типа “очередь”, или FIFO (first in – first out) первый вошел – первый вышел. Необходимость в таком буфере возникает, когда приемное устройство не успевает обрабатывать данные, которые поступают нерегулярно и иногда очень быстро. Если потери информации недопустимы, то между источником и приемником включается буфер FIFO, в котором хранится очередь слов, ожидающих обработки.

Можно представить набор регистров в виде кольца (рис. 8.6). Часть регистров занята очередью, остальные – резерв.

Рис. 8.6. Диаграмма использования адресов регистра

Адрес записи при постановке в очередь задается счетчиком хвоста СТхв (рис. 8.7). По сигналу “поставить в очередь” на входе WE (разрешение записи – write enable) записываются данные с шины DI в тот регистр, номер которого хранится в счетчике хвоста очереди СТхв. Разрешение записи на соответствующий регистр поступает через дешифратор DCW. По срезу сигнала “поставить в очередь” выходной код счетчика хвоста увеличивается на 1, подготавливая адрес записи для очередного сигнала поставить в очередь. При поступлении сигнала извлечь из очереди на выходной шине D0 появляется слово, хранящееся в том регистре памяти, номер которого задан кодом счетчика головы очереди СТГОЛ. По срезу сигнала выходной код счетчика увеличивается на 1,

Рис. 8.7. Структура буферного регистра типа “очередь“

подготовив для выдачи следующее слово, стоящее теперь первым в очереди.

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

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

Этот признак выявляет компаратор. Если коды на выходе счетчиков стали равны после очередного извлечения из очереди, то очередь иссякла и буфер пуст. Если они стали равны после очередной постановки в очередь, то буфер полон. Характер последнего обращения к буферу запоминается в RS-триггере. Сигналы, информирующие устройство управления об особых состояниях буфера, получаются как конъюнкция того или иного состояния триггера и признака равенства показаний счетчиков головы и хвоста.

Другим, часто используемым буфером, является буфер типа “магазин”, или стек (stack), или буфер LIFO (last in – first out) – последний вошедший первым выходит. Один из вариантов реализации буфера представлен на рис. 8.8. В отличие от нормальной очереди здесь в качестве первого кандидата на обслуживание выбирается то слово, которое встало в очередь последним. Стековые структуры данных возникают в цифровых устройствах, когда процесс выполнения менее срочного задания прерывается более срочным и все данные, связанные с прерванной работой, засылаются на временное хранение в буфер типа “магазин”. Выполнение срочного задания может быть прервано поступлением сверхсрочного и т. д.

Рис. 8.8. Схема буферного регистра типа “магазин”

Основу буферного регистра “магазин” также составляют набор регистров памяти и счетчик адреса. В отличие от буфера “очередь” здесь счетчик должен быть реверсивным. Он должен уметь прибавлять 1 при поступлении команды “Заслать в стек (push)” и вычитать 1 при команде “Извлечь из стека (pop)”. Диаграмма использования адресов (рис. 8.9) показывает, что адрес, по которому производится засылка очередного слова в стек, всегда на единицу больше адреса регистра, из которого читается слово.

Рис. 8.9. Диаграмма использования адресов буферного регистра “магазин”

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

При поступлении команды «Заслать в стек» происходит запись информации в регистр, на адрес которого указывает содержимое счётчика СТ. После этого происходит увеличение содержимого счётчика (адреса регистра) на 1.

При поступлении команды «Извлечь из стека» содержимое счётчика (адрес регистра) уменьшается на 1. После этого происходит извлечение информации из регистра, на адрес которого указывает содержимое счётчика СТ (новый адрес регистра).

Буферный регистр “магазин”, как и буфер типа “очередь”, также имеет два особых состояния: «буфер полон» и «буфер пуст». Эти состояния обнаруживаются по содержимому реверсивного счётчика СТ. Состоянию «буфер полон» соответствует содержимое счётчика 111…1, которое индицируется элементом И. При этом, запись в буфер запрещена. Состоянию «буфер пуст» соответствует содержимое счётчика 000…0, которое индицируется элементом НЕ-И. При этом считывание из буфера запрещено.

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