Рассмотрим элементы с обратной связью. Если в структуре устройства появляется обратная связь, его свойства существенно меняются.
Рассмотрим роль обратной связи для простейшего примера. Пусть в структуре устройства с входами R и S находятся всего два элемента ИЛИ – НЕ, связи между которыми неизвестны. Если рассматривать только комбинаторный подход, то мы определим лишь одну возможность подсоединения входа S ко входу элемента 1 и соответственно входа R к элементу 2, т.е. получим дублирование функций (рис. 25 а).
Произведем другое соединение с введением обратной связи, т.е. выход X подсоединим к входу 2-го элемента, выход Y – к входу 1-го (рис. 25 б). Проанализируем функции: X = X(R, Y), Y = Y(S, X).
Рис. 25
Для рис. 25 б запишем , . Подставим значения:
1. R = 1. | S = 0. | , | ; | |
2. R = 0. | S = l. | , | ; | |
З. R = 0. | S = 0. | , . |
Подача R = 0 или S = 1 в виде импульсного сигнала приведет к установке этого элемента в единичное (X = 0, Y = l) или нулевое (Х = 1, Y = 0) состояние, которое будет потом сохраняться бесконечно долго, т.к. при R = S = 0, X = , Y = .
|
|
Пусть R = 1, S = 1. Если подставить эти значения в формулы, то получим X = Y = 0. Однако это состояние не может быть устойчивым, т.к. при разной длительности импульсных сигналов R и S по их заднему фронту возникнет ситуация либо R = l, S = 0, либо R = 0, S = 1. Поскольку соотношения реальной длительности импульсов R и S неизвестны, то остается неопределенным и само состояние после окончания импульсов. Поэтому режима R = S = 1 следует избегать, считая его запрещенным.
Итак, простейшая схема из 2 элементов при наличии обратных связей приобретает новое качество, новые свойства – она становится автоматом с двумя устойчивыми состояниями, который называется триггер. Триггер такого типа называется RS-триггером*.
Построение более сложных операционных устройств осуществляется тремя путями:
· увеличением количества элементов при непосредственных связях между ними (от входа к выходу), т.е. построением каскадных схем;
· увеличением числа каскадов;
· увеличением «внутренних» связей между элементами разных каскадов, т.е. введением обратных связей.
Покажем, что новое качество системы можно получить и с помощью первого пути, т.е. комбинацией элементов. Вместо одного RS-триггера поставим в ряд n триггеров. Получим n -разрядный запоминающий регистр. В приведенном на рис. 26 запоминающем регистре введены дополнительные элементы «И», а также сигналы синхронизации (ci):
c 1 – запись кода;
c 2 – считывание обратного кода;
c 3 – считывание прямого кода.
Рис. 26
Запоминающий регистр есть простой операционный автомат (ОА), который выполняет две функции:
|
|
- преобразование во времени:
x (t + T) = x (t), т.к. код x (t), записываемый по сигналу c 1 в момент времени t, может быть воспроизведен через произвольный интервал Т.
- преобразование прямого кода x (t) в обратный код (t + Т), где Т – время хранения кода.
Количество состояний регистра памяти определяется его разрядностью (n) и уже при n = 16 становится равным 216 = 65 536.
Установим два запоминающих регистра с так называемым парафазным способом передачи информации между ними (рис. 27). Вместо n разрядов получен регистр на 2 n бит, но первые n бит связаны со вторыми n битами парафазной связью, позволяющей без установки в нулевое состояние второго регистра переписывать в него код из первого регистра при подаче сигнала синхронизации C2. Обратим внимание на термин парафазная связь. Связь между двумя триггерами является парафазной, если подача сигнала на входы с одного триггера (или любого другого внешнего устройства) осуществляется одновременно как по сигнальному входу S, так и по входу установки R. Т.е. при записи «1» необходимо подать комбинацию S = l, R = 0, а при записи «0» – комбинацию S = 0, R = l. Такой способ записи (парафазный) не требует предварительной нулевой установки триггера, в который записывается «1» или «0». Этот же принцип используется и для системы триггеров (регистр). Какой бы код N(t) в регистре ни хранился до момента времени (t + 1), при парафазной записи новый код N(t + 1) «вытеснит» старый код N(t).
Рис. 27
Предыдущий код в первом регистре x (t) может быть переписан во второй регистр в момент t + τ, а на место x (t) может быть записано новое значение при подаче сигнала с 1, т.е. для любого момента времени, разделенного интервалом τ, между переписью сигналов в обоих регистрах будет текущее состояние кода x (t) и его предыдущее состояние x (t – l), где единица эквивалентна интервалу τ. Такая «конструкция» регистров используется как память автоматов (что будет рассмотрено позднее).
Соединим регистры не прямой парафазной связью, как на рис. 27, а со сдвигом на один разряд через соответствующие схемы «И» с сигналом синхронизации с 4 (рис. 28). Этот сдвиг будем называть сдвигом влево. На примере четырех разрядов покажем сдвиг влево и вправо (универсальный регистр сдвига) с возвратом сдвинутого кода со второго регистра на первый. Схемы «И» для упрощения на рис. 28 не показаны, но сохранены сигналы с 4 (сдвиг влево) и с 5 (сдвиг вправо).
Рис. 28
Очевидно, что для того чтобы производить сдвиг, необходим RS-триггер, хранящий направление сдвига. Необходим также и счетчик для подсчета количества произведенных сдвигов (рис. 29). Под сдвигом кода (имеющего к тому же числовое значение в ДПК) понимается такое логическое преобразование, которое при сдвиге на один разряд влево увеличивает числовое значение в два раза, а при сдвиге на один разряд вправо уменьшает числовое значение в два раза. Для сдвигов на два разряда числовые значения будут изменяться в четыре раза и т.д.
Например, пусть исходный 8-разрядный код имеет вид 00101100, что соответствует числу 44 в ДПК. При сдвиге на один разряд влево получим код 01011000, т.е. 88, при сдвиге на один разряд вправо – код 00010110, т.е. 22, на два разряда вправо – код 000010110, т.е. 11. Если будем сдвигать далее, то младшая цифра кода (1) потеряется (00000101), но при циклическом сдвиге получим код 10000101, т.к. значение младшего разряда (1) перенесется в старший разряд кода.
Пусть необходимо произвести сдвиг на N разрядов. Запишем на счетчик в параллельном коде дополнительный код числа N, т.е. = + 1. Тогда, добавляя при каждом сдвиге в счетчик одну единицу, после N сдвигов на счетчике получим код + N, но N g + N = ( + N) + l. Таким образом, получим «обнуление» счетчика и единицу переполнения, которую нужно записать на специальный RS-триггер переполнения для хранения условия переполнения счетчика.
|
|
Рис. 29
Тогда весь операционный автомат для сдвига примет вид, приведенный на рис. 29. На рис. 30 а приведена блок-схема алгоритма управления регистром сдвига, а в табл. 17 дана расшифровка микроопераций. Этот операционный автомат для своей правильной работы требует подачи определенной последовательности импульсов во времени, т.е. подключения управляющего автомата для формирования этой последовательности импульсов с учетом значений логических сигналов (алгоритм рис. 30 б).
α 1 – 1 – сдвиг влево, 0 – вправо.
α 2 – 1 – все сдвиги произведены.
Существует несколько способов организации регистров сдвига [18, 35, 52]. Здесь рассмотрена одна из их реализаций.