1. Оглавление
2. Введение …………………………………………………………… 2
3. Обзор литературных источников ………………………………… 3
3.1. Общие сведения о регистрах ………………………………… 3
3.2. Общие сведения о триггерах …………………………….…... 6
3.3. Сдвигающие регистры ……………………………………….. 12
3.4. Универсальные регистры ……………………………………….. 20
4. Разработка схемы регистра сдвига ………………………………… 24
4.1. Исходные данные ……………………………………………… 24
4.2. Порядок разработки регистра сдвига …………………..……… 24
4.3. Разработка четырёхфазного регистра сдвига ……............……… 25
5. Вывод ……………………………………………………………. 27
6. Список используемой литературы …………………………………. 28
2. Введение
Регистры – самые распространённые узлы цифровых устройств. Они оперируют с множеством связанных переменных, составляющих слово. Над словами выполняется ряд операций: приём, выдача, хранение, сдвиг в разрядной сетке, поразрядные логические операции.
Сдвигающие (последовательные) регистры используются для сдвига n -разрядных чисел в одном направлении. Кроме того, их можно применять для сдвига нечисловой информации.
Регистры сдвига применяют в качестве запоминающих устройств, качестве преобразователей последовательного кода в параллельный, в качестве устройств задержки и счётчиков импульсов (правда, применение сдвигающих регистров в качестве счётчиков достаточно неэкономично).
3. Обзор литературных источников
3.1. Общие сведения о регистрах
Регистры состоят из разрядных схем, в которых имеются триггеры и, чаще всего, также и логические элементы. Действуют они как единое целое.
По количеству линий передачи переменных регистры делятся на однофазные и парафазные, по системе синхронизации на однотактные, двухтактные и многотактные. Однако главным классификационным признаком является способ приёма и выдачи данных. По этому признаку различают параллельные (статические) регистры, последовательные (сдвигающие) и параллельно-последовательные .
В параллельных регистрах приём и выдача слов производится по всем разрядам одновременно. В них хранятся слова, которые могут быть подвергнуты поразрядным логическим преобразованиям.
В последовательных регистрах слова принимаются и выдаются разряд за разрядом. Их называют сдвигающими, так как тактирующие сигналы при вводе и выводе слов перемещают их в разрядной сетке. Сдвигающий регистр может быть нереверсивным (с однонаправленным сдвигам) или реверсивным (с возможностью сдвига в обоих направлениях).
Последовательно-параллельные регистры имеют входы-выходы одновременно последовательного и параллельного типа. Имеются варианты с последовательным входом и параллельным выходом (SIPO, Serial Input – Parallel Output), параллельным входом и последовательным выходом (PISO, Parallel Input – Serial Output), а также варианты с возможностью любого сочетания способов приёма и выдачи слов.
В параллельных (статических) регистрах схемы разрядов не обмениваются данными между собой. Общими для разрядов обычно являются цепи тактирования, сброса / установки, разрешение выхода или приёма, то есть цепи управления. Пример схемы статического регистра, построенного на триггерах D-типа с прямыми динамическими входами, имеющего входы сброса R и выходы с третьим состоянием, управляемые сигналом EZ, показан на рисунке 1 .
Рисунок 1. Схема статического регистра (а) и его условное графическое обозначение (б)
Для современной схемотехники характерно построение регистров на триггерах D-типа, преимущественно с динамическим управлением. Многие имеют выходы с третьим состоянием. Некоторые регистры относятся к числу буферных, то есть рассчитаны на работу с большими ёмкостными и / или низкоомными активными нагрузками. Это обеспечивает их работу непосредственно на магистраль (без дополнительных схем интерфейса).
Из статических регистров составляются блоки регистровой памяти – регистровые файлы.
Главные функции регистров:
1) Хранение информации,
2) Прием информации,
3) Выдача информации,
4) Сдвиг информации,
5) Преобразование кодов,
6) Установление в ноль или в единицу нужного числа,
7) Поразрядные логические операции: дизъюнкция, конъюнкция, сложение по модулю 2.
3.2. Общие сведения о триггерах
Триггеры – большой класс электрических устройств, позволяющих длительно находится в одном из двух (или более) устойчивых состояний и чередовать их под воздействием внешних сигналов (в следствии регенеративного процесса (переходной процесс в электрической цепи, охваченной ПОС)).
Триггер – импульсное логическое устройство с памятью (элемент памяти – фиксатор).
Существует более десятка различных интегральных триггеров. В основу их классификации положены:
Функциональный признак,
Способ записи информации в триггер.
По функциональному признаку различают Т-триггеры, JK-триггеры, RS-триггеры, D-триггеры, комбинированные триггеры (TV, DV, E, R) и т.д.
По способу записи (приёма) информации различают:
8) Асинхронные триггеры:
а) с внутренней задержкой;
б) управляемые уровнем входного импульса;
9) Синхронные триггеры (тактируемые):
а) с внутренней задержкой;
б) управляемые уровнем тактирующего импульса:
Однотактного действия (одноступенчатые);
Многократного действия.
Запись информации в тактируемые триггеры осуществляется только при подаче разрешающего тактирующего импульса. Такие триггеры делят на управляемые уровнем (для срабатывания необходим определённый уровень сигнала) и управляемые фронтом (не зависят от уровня сигнала, важно его присутствие) тактирующего импульса. Тактирующие импульсы иногда ещё называют синхронизирующими, исполнительными, командными сигналами (на схемах обычно обозначают буквой С - Clock).
Динамический вход может быть прямым и инверсным. Прямое динамическое управление подразумевает разрешение на переключение при изменении тактового сигнала с нулевого значения на единичное (). Инверсное динамическое управление – изменение тактового сигнала с единичного на нулевой ().
Управление фронтом тактирующего импульса:
Управление спадом тактирующего импульса:
Управление верхним уровнем тактирующего импульса:
Управление нижним уровнем тактирующего импульса:
Тактируемые триггеры с внутренней задержкой (срабатывают по окончании действия сигнала) являются, как правило, однотактными. Многотактные триггеры срабатывают после n -ного импульса.
RS-триггер имеет два информационных входа: S (Set) и R (Reset). Одновременная подача сигналов S и R не допускается. На рисунке 2 изображен синхронный RS-триггер, срабатывающий по фронту тактирующего сигнала.
Рисунок 2. Синхронный RS-триггер
Кроме входов, простейший RS-триггер имеет и два выхода. Выходы обозначают Q и . Выход Q называют прямым, a - инверсным. Уровни напряжения на обоих выходах взаимно инверсны: если сигнал Q = 1, то = 0, либо если Q = 0, то = 1. Необходимо еще отметить, что состояние триггера, при котором Q = 1, a = 0, называют единичным. При нулевом состоянии триггера Q = 0 и = 1. С поступлением сигналов на входы триггера в зависимости от его состояния либо происходит переключение, либо исходное состояние сохраняется.
Рисунок 3. - триггер: его условное графическое обозначение и схема с двумя логическими элементами И-НЕ
На рисунке 3 показан простейший триггер – типа . Здесь использованы только два логических элемента И-НЕ. Назначение входов: -для установки триггера в единичное состояние и - для возвращения в нулевое состояние. Черточки над обозначениями входов показывают, что переключение триггера происходит, когда входное напряжение высокого уровня сменяется напряжением низкого уровня (рисунок 4 ). Нетрудно видеть, что когда на входы не поступают сигналы, триггер сохраняет свое состояние. Если, например, Q = 1 и = 0, то есть триггер в единичном состоянии, то, поскольку выход DD1 связан с одним из входов DD2, а выход DD2 - с одним из входов DD1, на двух входах DD2 действует напряжение
Рисунок 4. Временная диаграмма работы - триггера |
высокого, а на выходе - низкого ( = 0) уровня. В то же время на одном из входов DD1 напряжение низкого, а на выходе - высокого уровня. Если теперь на вход поступает сигнал с обозначенной полярностью (момент t1 , рисунок 4 ), состояние триггера не изменится, потому что поступление сигнала на второй вход DD1 временно изменит только сочетание сигналов на входах (до подачи сигнала оно было 1 и 0, а стало 0 и 0), но выходное состояние DD1 остается при этом неизменным. Если, однако, сигнал поступит на вход (момент t2 ), на обоих входах DD2 уже окажутся напряжения разного уровня, состояние логических элементов изменится и на выходе его будет напряжение высокого уровня. На обоих входах DD1 окажутся напряжения высокого уровня, а на выходе - низкого, то есть триггер "опрокинется" и перейдет в другое состояние: Q = 0 и = 1. |
Из сказанного следует, что смена состояния триггера происходит только при чередовании сигналов низкого уровня на входах и . При этом, если такие сигналы поступят на оба входа одновременно, то после их прекращения состояние триггера станет неопределенным (состояние Q = 0 или Q = 1 равновероятно). Поэтому одновременная подача сигналов низкого уровня на оба входа не разрешается.
Работа -триггера характеризуется таблицей состояний (индексы n и n+1 означают принадлежность сигнала моменту времени t n и следующему за ним t n+1 ):
Неопределённое состояние |
Не разрешается одновременная подача напряжения низкого уровня на оба входа -триггера.
Триггер типа RS, как и -триггер, "запоминает", на какой из двух входов (R или S) поступил последний сигнал: если на вход R, триггер находится в нулевом состоянии (Q = 0 и = 1), а если на вход S, то в единичном состоянии (Q = 1 и = 0).
Рисунок 5. RS- триггер: его условное графическое обозначение и схема с четырьмя логическими элементами И-НЕ
На рисунке 5 показана схема RS-триггера, выполненного на логических элементах И-НЕ. Она отличается от схемы -триггера тем, что к каждому входу добавлено по инвертору (DD3 и DD4), которые только обеспечивают необходимый уровень входных сигналов.
Изменение входных сигналов от низкого уровня до высокого приводит к смене состояния триггера (моменты t1, t2, t2 и t5 ; в момент t4 опрокидывания не происходит, так как триггер уже установлен в единичное состояние в предшествующий момент - t3, рисунок 6 ).
Рисунок 6. Временная диаграмма работы RS- триггера
Все сказанное относительно RS-триггера сохраняет силу и для -триггера. Единственное различие касается инверсии уровней входных сигналов (R вместо и S вместо ).
Работа RS-триггера характеризуется следующей таблицей состояний:
Неопределённое состояние |
3.3. Сдвигающие регистры
Триггерным регистром сдвига называют совокупность триггеров с определёнными связями между ними, при которых они действуют как единое устройство. Последовательные (сдвигающие) регистры представляют собой цепочку разрядных схем, связанных цепями переноса.
В однотактных регистрах со сдвигом на один разряд вправо (рисунок 7 ) слово сдвигается при поступлении сигнала синхронизации. Вход и выход последовательные (DSR – Data Serial Right). На рисунке 8 показана схема регистра со сдвигом влево (вход данных DSL – Data Serial Left), а на рисунке 9 иллюстрируется принцип построения реверсивного регистра, в котором имеются связи триггеров с обоими соседними разрядами, но соответст-вующими сигналами разрешается работа только одних из этих связей (команды «влево» и «вправо» одновременно не подаются).
Рисунок 7. Схема право-сдвигающего регистра
Рисунок 8 . Схема лево-сдвигающего регистра
Рисунок 9 . Схема реверсивного регистра
Согласно требованиям синхронизации, в сдвигающих регистрах, не имеющих логических элементов в межразрядных связях, нельзя применять одноступенчатые триггеры, управляемые уровнем, поскольку некоторые триггеры могут за время действия разрешающего уровня синхросигнала переключится неоднократно, что недопустимо. В данных схемах следует применить триггеры с динамическим управлением (двухступенчатые).
Появление в межразрядных связях логических элементов и, тем более, логических схем неединичной глубины упрощает выполнение условий работоспособности регистров и расширяет спектр типов триггеров, пригодных для этих схем.
Многотактные сдвигающие регистры управляются несколькими синхропоследовательностями. Из их числа наиболее известны двухтактные с основным и дополнительным регистрами, построенными на простых одноступенчатых триггерах, управляемых уровнем. По такту С1 содержимое основного регистра переписывается в дополнительный, а по такту С2 возвращается в основной, но уже в соседние разряды, что соответствует сдвигу слова. По затратам оборудования и быстродействию этот вариант близок к однотактному регистру с двухступенчатыми триггерами.
В регистре сдвига присутствует набор триггеров с определёнными связями между ними и организация этих связей такова, что при подаче тактового импульса, общего для всех триггеров, выходное состояние каждого триггера сдвигается в соседний. В зависимости от организации связей этот сдвиг может происходить влево или вправо:
Сдвиг влево
Сдвиг вправо
Ввод информации в регистр может выполнятся различными способами, однако наиболее часто используют параллельный или последовательный ввод, при которых ввод двоичного числа осуществляется или одновременно во все разряды регистра, или последовательно во времени по отдельным разрядам. В счётчиках импульсов находят применение сдвигающие регистры с последовательным вводом и выводом информации и со сдвигом вправо. На рисунке 10 a приведена схема четырёхразрядного регистра сдвига, выполненного на RS-триггерах. В этой схеме каждый выход Q триггера соединён со входом S последующего разряда, а каждый выход - с входом R. Тактовые входы всех триггеров соединены вместе, и поступление сигнала синхронизации осуществляется одним общим импульсом через логический элемент И-НЕ (DD7). Состояние первого триггера определяется входными сигналами на входах Х1, Х2 логического элемента И-НЕ (DD5). На вход Х1 подаётся текущая информация, а на вход Х2 сигнал разрешения её передачи. Логический элемент НЕ используется (DD6) используется для инвертирования входного сигнала, подаваемого на вход S.
На рисунке 10 б приведены временные диаграммы выходных сигналов триггеров и состояния регистров при записи в первый разряд единичного сигнала. Если при поступлении первого тактового импульса на входах Х1 и Х2 установлены сигналы Х1 = Х2 = 1, которые затем снимаются к приходу второго тактового импульса, то в результате в первый триггер будет записан сигнал Q 1 = 1. С приходом второго тактового импульса в первый триггер будет записан сигнал Q 1 = 0, а на выходе второго триггера появится сигнал Q 2 = 1, который перед этим был на выходе второго триггера. При поступлении последующих тактовых импульсов единичный сигнал перемещается последовательно в третий и четвёртый триггеры, после чего все триггеры устанавливаются в нулевое состояние.
a)
n |
Q 1 |
Q 2 |
Q 3 |
Q 4 |
Рисунок 10 . Схема четырёхфазного регистра сдвига (а), временные диаграммы его сигналов и состояния регистров при записи в первый разряд единичного сигнала (б)
Сдвиговые регистры также можно реализовать на D-триггерах ил JK-триггерах. Для всех регистров сдвига характерны следующие положения:
1) необходима предварительная установка исходного состояния и ввод единицы в первый триггер
2) для регистра из n триггеров после поступления n входных тактовых импульсов первоначально введённая единица выводится, вследствие чего прямые выходы всех регистров оказываются в нулевом состоянии.
Интегральные микросхемы регистров сдвига бывают реверсивными, то есть выполняющими сдвиг в любом направлении: влево или вправо. Направление сдвига определяется значением управляющего сигнала.
Рисунок 11. Реализация регистра сдвига на однотактных RS-триггерах
Последовательный регистр сдвига обладает двумя недостатками: он позволяет вводить только по одному биту информации на каждом тактовом импульсе и, кроме того, каждый раз при сдвиге информации в регистре вправо теряется крайний правый информационный бит. На рисунке 12 показана система, которая позволяет осуществлять одновременную параллельную загрузку 4 бит информации.
Рисунок 12. Структурная схема 4-разрядного параллельного регистра
Входы 1, 2, 3, 4 в этом устройстве являются информационными входами. Эту систему можно снабдить еще одной полезной характеристикой - возможностью кольцевого перемещения информации, когда данные с выхода устройства возвращаются на его вход и не теряются.
Рисунок 13. Логическая схема четырёхразрядного параллельного кольцевого регистра
Схема 4-разрядного параллельного кольцевого регистра сдвига показана на рисунке 13 . В этом регистре сдвига используются четыре JK-триггера. Благодаря цепи обратной связи введенная в регистр информация, которая обычно теряется на выходе четвёртого триггера, будет циркулировать по регистру сдвига. Сигналом очистки регистра (установки его выходов в состояние 0000) является уровень логического 0 на входе CLR. Входы параллельной загрузки данных 1, 2, 3 и 4 связаны со входами предварительной установки триггеров (PS), что позволяет устанавливать уровень логической 1 на любом выходе (1, 2, 3, 4). Если на один из этих входов даже кратковременно подать логический 0, то на соответствующем выходе будет установлена логическая 1. Подача тактовых импульсов на входы C всех JK-триггеров приводит к сдвигу информации в регистре вправо. Из четвёртого триггера данные передаются в первый триггер (кольцевое перемещение информации).
Таблица 1.
№ |
Входы |
Выходы |
||||||||
№ тактового импульса |
||||||||||
Принцип работы параллельного регистра сдвига описан в таблице 1 . При включении питания на выходах регистра может установиться любая двоичная комбинация, такая, например, как в строке 1 таблицы. Подача логического 0 на входы CLR триггеров инициирует очистку регистра (строка 2). Далее (строка 3) осуществляется загрузка в регистр двоичной комбинации 0100. Последовательные тактовые импульсы вызывают сдвиг введенной информации вправо (строки 4 - 8). В строках 5 и 6: единица из крайнего правого триггера (четвёртого) переносится в крайний левый триггер (первый). В данном случае можно говорить о кольцевом перемещении единицы в регистре. Далее (строка 9) вновь инициируется очистка регистра с помощью входа CLR. Загружается новая двоичная комбинация 0110 (строка 10). Подача 5 тактовых импульсов (строки 11-15) приводит к кольцевому сдвигу информации на 5 позиций вправо. Для возвращения данных в исходное состояние требуется 4 тактовых импульса.
Если в регистре сдвига на рисунке 13 разорвать петлю обратной связи, то мы получим обычный параллельный регистр сдвига: возможность кольцевого перемещения информации будет исключена.
Рисунок 14. Трехтактный регистр сдвига на RS-триггерах
3.4. Универсальные регистры
Часто вместо обычных последовательных или параллельных требуется применить более сложные сдвигающие регистры: с параллельной синхронной записью информации, реверсивные, реверсивные с параллельной синхронной записью. Такие регистры называют универсальными .
Есть множество серий ИС регистров многорежимных (многофункциональных) или универсальных, способных выполнять набор микроопераций. Многорежимность достигается композицией в одной и той же схеме частей, необходимых для выполнения различных операций. Управляющие сигналы, задающие вид выполняемой в данное время операции, активизируют необходимые для этого части схемы.
Рисунок 15. Универсальные регистры сдвига: а – К155ИР13, б – К500ИР141, в – КМ155ИР1
На рисунке 15 показано три типичных представителя универсальных сдвиговых регистров серии К155, КМ155 и К500.
Микросхема ИР13 (рисунок 15 а ) – это восьмиразрядный реверсивный сдвигающий регистр с допустимой тактовой частотой до 25 МГц при токе потребления до 40 мА. Имеет параллельные входы и выходы, вход асинхронного сброса , входы DSL (сдвиг влево) и DSR (сдвиг вправо) по перепаду синхронизирующих импульсов С, входы выбора режима S0 и S1. При S0 = 0, S1 = 1 происходит сдвиг информации вправо, при S0 = 1, S1 = 0 – влево, а при S0 = S1 = 1 – запись информации в регистр.
Микросхема ИР141 (рисунок 15 б ) – это универсальный четырёх-разрядный сдвиговый регистр, построенный на эмитерно-связной логике. Тактовая частота – до 150 МГц. Потребляемый ток – не менее 120 мА. При S0 = 0, S1 = 1 происходит сдвиг информации вправо, при S0 = 1, S1 = 0 – влево, а при S0 = S1 = 1 – хранение числа, при S0 = S1 = 0 – установка числа.
Микросхема ИР1 (рисунок 15 в ) – это сдвигающий регистр с синхронной записью информации на RS-триггерах. Входы 1 – 4 предназначены для параллельной записи информации, вход D – для последовательной записи. Вход V – управляющий. При V = 0 схема работает как сдвигающий регистр по отрицательному перепаду (с 1 на 0) сигнала С1, а при V = 1 схема работает в режиме синхронной записи в регистр сигналов входов 1 – 4 по отрицательному перепаду сигнала С2.
Регистры, имеющие разнотипные вход и выход, служат основными блоками преобразователей параллельных кодов в последовательные и обратно. На рисунке 16 показана схема преобразователя параллельного кода в последовательный на основе восьмиразрядного регистра типа SI/PO/SO. В этой схеме отрицательный стартовый импульс St, задающий уровень логического нуля на верхнем входе элемента 1, создаёт единичный сигнал параллельного приёма данных на вход L (Load – загрузка), по которому в разряды 1 – 7 регистра загружается преобразуемое слово, а в нулевой разряд – константа 0. На последовательный вход DSR подана константа 1. Таким образом, после загрузки в регистре формируется слово. Тактовые импульсы, поступающие на вход С, вызывают сдвиг слова вправо. Сдвиги выводят слово в последовательной форме через выход Q7. Вслед за информационными разрядами идёт 0, после которого цепочка единиц. Пока ноль не выведен из регистра, на выходе элемента 2 действует единичный сигнал. После вывода нуля все входы элемента 2 становятся единичными, его выход приобретает нулевое значение и через элемент 1 формирует сигнал автоматической загрузки следующего слова, после чего цикл преобразования повторяется.
Рисунок 16. Схема преобразователя параллельного кода в последовательный
Современные регистры мало приспособлены для выполнения поразрядных логических операций, но при необходимости их можно выполнить пользуясь регистрами на RS-триггерах. Для выполнения операции ИЛИ на S вход статического регистра с исходным нулевым состоянием подаётся первое слово, единичные разряды которого устанавливают соответствующие триггеры. Затем без сброса регистра на S выходы подаётся второе слово.
При выполнении поразрядной операции И в первом такте на S входы регистра подаётся первое слово, устанавливающее те разряды регистра, в которых это слово имеет единицы. Затем следует подать на регистр второе слово. Чтобы в регистре сохранились единицы только в тех разрядах, в которых оба слова имеют единицы, второе слово подаётся на входы R триггеров в инверсном виде.
Сложение по модулю 2 может быть выполнено схемой с триггерами типа Т в разрядах путём последовательной во времени подачи на неё двух слов.
4. Разработка схемы регистра сдвига
4.1. Исходные данные
Заданы тактовые импульсы положительной полярности.
4.2. Порядок разработки регистра сдвига
а) Рассмотрение общих требований к схеме регистра.
б) Разработка регистра сдвига.
в) Описание работы разработанной схемы.
4.3. Разработка четырёхфазного регистра сдвига
Необходимо разработать четырёхфазный регистр сдвига на RS-триггерах. Пусть он будет правосдвигающим. Для этого нам понадобится четыре синхронных RS-триггера с синхронизацией по фронту тактирующего импульса и некоторое число логических элементов для создания цепей переноса. Так как сдвигающие регистры с последовательными входом и выходом имеют низкое быстродействие, разработаем схему с параллельными входом и выходом.
Рисунок 17. Разработанная схема правосдвигающего синхронного регистра на RS-триггерах
Выполняя инвертирование сигнала на входах триггеров мы добиваемся того, что подача напряжений одинаковых уровней на входы S и R невозможна. Значит, при S = 0, R = 1 – на выходе получим 0, при S = 1, R = 0 – на выходе получим 1. На входах сдвигающего регистра необходимо установить четыре элемента со следующей таблицей истинности:
Соединив четвёртый выход с первым входом мы получаем кольцевой правосдвигающий регистр. Информация с выхода Q4 не будет теряться, а будет циркулировать заново.
Поскольку такой регистр сдвига четырёхразрядный, количество возможных комбинаций на входе составит 16. Рассмотрим работу нашего регистра при подаче на вход некоторых комбинаций.
№ комбинации |
Вход |
Выход |
|||||||
№ синхроимпульса |
|||||||||
5. Вывод
В курсовом проекте было рассмотрено классификацию регистров, принципы их работы. Рассмотрено типы и принцип работы триггеров как главных составляющих регистров. Было детально рассмотрено регистры сдвига и, в частности, сдвиговые регистры на RS-триггерах.
Также был спроектирован правосдвигающий кольцевой синхронный четырёхразрядный регистр на базе четырёх RS-триггеров и восьми логических элементов. Приведена таблица, описывающая работу регистра при некоторых входных комбинациях.
6. Список используемой литературы
1. Прянишников В.А. Электроника (курс лекций). – С-П., 1998
2. Скаржепа В.А., Луценко А.Н. Электроника и микросхемотехника (часть первая). – К.: Высшая школа, 1989
3. Будищев М.С. Электротехника, электроника и микропроцессорная техника. – Л.: Афиша, 2001
4. Угрюмов Е.П. Цифровая схемотехника. – С-П., 2000
5. Справочник современных интегральных микросхем
В прошлый раз был рассмотрен вариант увеличения выходов микроконтроллера при помощи микросхемы – дешифратора , сегодня рассмотрим более продвинутый вариант на сдвиговом регистре 74HC595. Использовав всего одну микросхему можно заиметь в свое распоряжение дополнительно 8 выходов, использовав всего 3 ноги микроконтроллера. А благодаря возможности расширения, добавив вторую микросхему, количество выходов можно увеличить до 16. Если мало, можно добавить третью и получить в пользование уже 24 выхода и такой трюк можно повторять сколько угодно раз. При этом количество занимаемых ног микроконтроллера так и останется 3, красота!
Итак, рассмотрим более подробно назначение выводов микросхемы и научимся управлять сдвиговым регистром 74hc595 в Bascom-AVR.
Для начала ознакомимся с выводами микросхемы, а точнее с их функциональностью. Ниже представлена вырезка из даташита на 74hc595 с обозначением выводов микросхемы:
- Q0…Q7 – выходы которыми будем управлять. Могут находится в трёх состояниях: логическая единица, логический ноль и высокоомное Hi-Z состояние
- GND – земля
- Q7′ – выход предназначенный для последовательного соединения регистров.
- MR – сброс регистра.
- SH_CP – вход для тактовых импульсов
- ST_CP – вход «защёлкивающий» данные
- OE – вход переводящий выходы из HI-Z в рабочее состояние
- DS – вход данных
- VCC
– питание 5 вольт
Логика работы с регистром
Когда на тактовом входе SH_CP появляется логическая единица, бит находящийся на входе данных DS считывается и записывается в сдвиговый регистр. Этот бит записывается в самый младший разряд. При поступлении на тактовый вход следующего импульса высокого уровня, в сдвиговый регистр записывается следующий бит со входа данных. А тот бит который был записан ранее сдвигается на один разряд влево, а его место занимает вновь пришедший бит. Следующий тактовый импульс запишет третий бит, а два предыдущих сдвинутся дальше. Когда все восемь бит заполнились и приходит девятый тактовый импульс то регистр снова начинает заполнятся с младшего разряда и всё повторятся вновь. Что бы данные появились на выходах Q0…Q7 нужно их «защёлкнуть». Для этого необходимо подать логическую единицу на вход ST_CP .
- MR
осуществляет сброс регистра, устанавливая все выходы Q0…Q7
в состояние логического нуля. Для осуществления сброса нужно подать логический ноль на этот вход и подать положительный импульс на вход ST_CP
. Очень полезная функция, так как при подаче питания на микросхему на выходе появляется некое произвольное значение. При работе с регистром на этом выводе должна находится логическая единица.
- OE (output enable) если подать сюда логическую 1, то выходы будут находится в высокоомном HI-Z состоянии. Когда подаем на этот вход логический 0, выходы будут находится в рабочем состоянии.
- Q7′
предназначен для последовательного соединения сдвиговых регистров.
Но лучше один раз увидеть, чем два раза прочитать =) поэтому смотрим на анимацию:
Работа с регистром в лоб
Осваивая работу с незнакомой микросхемой часто бывает полезна работа в лоб, тоесть прямое дергание ногами управления, это позволяет лучше понять принципы работы с подопытным. Итак следуя логике работы, написал программу которая должна будет вывести на выход регистра бинарное число 10010010
$regfile
=
"attiny2313.dat"
$crystal
=
1000000
Config
Portb
=
Output
Sh_cp
Alias
Portb
.
3
"нога для тактовых импульсов
Ds
Alias
Portb
.
2
"нога для вывода данных
St_cp
Alias
Portb
.
0
"нога для "защелкивания" данных в регистр хранения
"вывод через регистр числа 146 (в бинарном представлении 10010010)
St_cp
=
0
"выставляем ногу в режим записи данных
Ds
=
1
"выставляем первый бит
Sh_cp
=
0
"даем импульс на тактовый выход
Sh_cp
=
1
Ds
=
0
"выставляем второй бит
Sh_cp
=
0
Sh_cp
=
1
Ds
=
0
"выставляем третий бит
Sh_cp
=
0
Sh_cp
=
1
Ds
=
1
"выставляем четвертый бит
Sh_cp
=
0
Sh_cp
=
1
Ds
=
0
"выставляем пятый бит
Sh_cp
=
0
Sh_cp
=
1
Ds
=
0
"выставляем шестой бит
Sh_cp
=
0
Sh_cp
=
1
Ds
=
1
"выставляем седьмой бит
Sh_cp
=
0
Sh_cp
=
1
Ds
=
0
"выставляем восьмой бит
Sh_cp
=
0
Sh_cp
=
1
St_cp
=
1
"защелкиваем введенные данные
End
компилируем, зашиваем в микроконтроллер или смотрим в симулятор и видим на выходе нашу комбинацию.
Работает, на выходе регистра появилось отправленное число!
Работа с регистром таким образом хоть и возможна но слишком громоздка и занимает много программной памяти. Но зато наглядно демонстрирует всю методику работы с данной микросхемой. Рассмотрим более подходящий метод.
Управление регистром 74HC595 в Bascom через команду ShiftOut
В Bascom-AVR для работы со всевозможными последовательными интерфейсами есть замечательная команда SHIFTOUT
Эта команда сама разложит число на битовые составляющие и последовательно выведет их на любой пин микроконтроллера, заодно она может выдавать тактовые импульсы. Для работы со сдвиговыми регистрами самое то! Синтаксис команды:
SHIFTOUT Datapin , Clockpin , var , option
Datapin – порт микроконтроллера для вывода данных
Clockpin – порт микроконтроллера для вывода тактовых импульсов
Var – данные которые хотим отправить в регистр
Option – число от 0 до 3, этим параметром выбирается в каком порядке будут вводиться данные в регистр и активный уровень на линии Clock при котором происходит запись бита:
option=0 – старший бит идет первым,
Clock
активный уровень низкий
option=1 –
старший бит идет первым
, Clock
активный уровень высокий
option=2 –
младший бит идет первым
, Clock
активный уровень низкий
option=3 –
младший бит идет первым
, Clock
активный уровень высокий
В нашем случае для работы с регистром 74HC595 параметр option нужно ставить 1 или 3.
Для того чтобы защелкнуть данные в регистре, применим команду PulseOut . Эта команда выводит импульс на ногу микроконтроллера с заданной длительностью. Конфигурация команды выглядит следующим образом:
Теперь давайте выведем число 10010001 (145 в десятичной системе) на выход регистра, подключенному к микроконтроллеру по вышеприведенной схеме:
$regfile
=
"attiny2313.dat"
$crystal
=
1000000
Dim
A
As
Byte
Config
Portb
=
Output
A
=
145
Gosub
Hc595
"уходим на подпрограмму отправки данных
End
Hc595
:
"подпрограмма отправки данных
Shiftout
Portb
.
2
,
Portb
.
3
,
A
,
1
"отправляем данные в регистр
Pulseout
Portb
,
0
,
5
"защелкиваем данные
Return
Прошив микроконтроллер можно увидеть аналогичную картину, на выходе сдвигового регистра выставлена отправленная комбинация битов.
Как видно управление сдвиговым регистром 74HC595 в Bascom состоит всего из двух строк кода, и не представляет никаких сложностей.
Увеличение разрядности
Для построения регистров используются последовательноесоединение этих элементов.
Последовательный регистр (регистр сдвига или сдвиговый регистр) обычно служит для преобразования последовательного кода в параллельный и наоборот. Применение последовательного кода связано с необходимостью передачи большого количества двоичной информации по ограниченному количеству соединительных линий. При параллельной передаче разрядов требуется большое количество соединительных проводников. Если двоичные разряды последовательно бит за битом передавать по одному проводнику, то можно значительно сократить размеры соединительных линий на плате (и размеры корпусов микросхем).
Принципиальная схема последовательного (сдвигового) регистра, собранного на основе и позволяющего осуществить преобразование последовательного кода в параллельный, приведена на рисунке 1. Обратите внимание, что если для параллельных регистров подходили как триггеры работающие по потенциалу (триггеры-защелки), так и триггеры, работающие по фронту, то для реализации последовательного (сдвигового) регистра подходят только D триггеры, работающие по фронту!
Рисунок 1. Схема последовательного (сдвигового) регистра
Внутри сдвигового регистра триггеры соединены последовательно, то есть выход первого соединён с входом второго и т.д. рассмотренного последовательного регистра приведено на рисунке 2.
Рисунок 2. Условно-графическое обозначение последовательного (сдвигового) регистра
Входы синхронизации в последовательных (сдвиговых) регистрах, как и в параллельных регистрах, объединяются. Это обеспечивает одновременность смены состояния всех триггеров, входящих в состав последовательного (сдвигового) регистра.
Преобразование последовательного кода в параллельный в последовательном (сдвиговом) регистре производится следующим образом. Отдельные биты двоичной информации последовательно подаются на вход сдвигового регистра D0. Каждый бит сопровождается отдельным тактовым импульсом синхронизации, который поступает на вход синхронизации последовательного регистра C.
После поступления первого тактового импульса логический уровень, присутствующий на входе D0, запоминается в первом триггере последовательного (сдвигового) регистра и поступает на его выход, а так как он соединён с входом второго триггера, то и на его вход. Если бы последовательный (сдвиговый) регистр был собран на D триггерах, работающих по потенциалу, то этот бит тут же записался во второй D триггер! В нашем случае этого не происходит, так как к этому моменту фронт на входе синхронизации C уже закончился.
После поступления второго тактового импульса логический уровень, присутствующий на входе второго триггера последовательного (сдвигового) регистра, запоминается в нем и поступает на его выход, а так как он соединён с входом третьего триггера, то и на его вход. Одновременно следующий бит входного последовательного кода запоминается в первом триггере последовательного (сдвигового) регистра.
После поступления четвертого тактового импульса в триггерах последовательного (сдвигового) регистра будут записаны логические уровни бит, которые последовательно присутствовали на его входе D0. Теперь этими битами можно воспользоваться, например, для отображения на индикаторах.
Пусть на вход последовательного (сдвигового) регистра поступает сигнал, временная диаграмма которого изображена на рисунке 3, тогда состояние выходов этого регистра будет последовательно принимать значения, записанные в таблице 1.
Рисунок 3. Временная диаграмма работы сдвигового регистра
На рисунке 3 вместе с логическими уровнями записываются значения бит, которые передаются по соединительной линии или присутствуют на выходах сдвигового регистра.
№ такта | 1 | 2 | 3 | 1 |
---|---|---|---|---|
Q0 | 1 | 0 | 1 | 1 |
Q1 | X | 1 | 0 | 1 |
Q2 | X | X | 1 | 0 |
Q3 | X | X | X | 1 |
В качестве примера реализации последовательного (сдвигового) регистра можно назвать отечественную микросхему 1564ИР1 или иностранную 74НС164.
Для хранения и обработки информации в микро-ЭВМ широко используются сдвиговые регистры. Сдвиговый регистр состоит из ряда триггеров (по одному на каждый бит информации), соединенных так, что выход каждого триггера подключен ко входу следующего. Информация в регистре сдвигается на один разряд вправо или влево при поступлении каждого тактового импульса. Это устройство идеально подходит для обработки последовательной информации (подаваемой по биту в каждый момент времени), преобразования параллельной информации (все биты поступают одновременно) в последовательную и последовательной в параллельную.
Сдвиговые регистры реализуются на СИС – устройствах, выполненных с применением RS-, JK-, или D – триггеров, и различия между ними главным образом связаны с методом обработки входных и выходных данных. В данном разделе описываются основные типы этих регистров.
Рис. 2.29. Типичный 4 х разрядный регистр с последовательным входом.
Рис. 2.30. Временная диаграмма работы 4 х разрядного сдвигового регистра.
Сдвиговый регистр с последовательным входом.
Сдвиговый регистр с последовательным входом – это устройство, в котором данные последовательно поступают на вход, как показано на рис. 2.29 для 4 х разрядного сдвигового регистра. В данном случае используются D – триггеры. Работает регистр следующим образом. В исходном положении импульс сброса (логический 0) подается на вход «Установка в 0», устанавливая выходы Q 0 -Q 3 в 0. Дале первый бит данных подается на последовательный вход. При воздействии переднего фронта первого тактового импульса Q 0 принимает значение равное D 1 . Затем на последовательный вход подается D 2 . При воздействии переднего фронта второго тактового импульса Q 0 =D 2 и Q 1 =D 1 . Продолжается этот процесс, после четырех тактовых импульсов имеем Q 0 =D 4 , Q 1 =D 3 , Q 2 =D 3 , Q 3 =D 1 . Временная диаграмма для последовательно поступающих входных данных показана на рис. 2.30.
Выход данных при этом может быть как последовательным так и параллельным. В последнем случае сдвиговый регистр работает как последовательно-параллельный преобразователь. Очевидно, для сдвиговых регистров, имеющих большое число разрядов (более восьми), параллельные выходы нецелесообразны из-за большого количества выходов в корпусе ИС. Существуют сдвиговые регистры, имеющие более 1000 разрядов.
Сдвиговый регистр с параллельным входом
Сдвиговый регистр с параллельным, входом - это устройство, в котором входные данные поступают одновременно по параллельным информационным каналам (рис. 2.31).. Запись данных в регистр осуществляется следующим образом. Сначала производится сброс содержимого регистра подачей импульса (логического 0) на вход «Установка в 0». Далее D 1 -D 4 подаются на входы и импульс (логическая 1) .поступает на вход записи. Это приводит к записи информации во все регистры с использованием входов предустановки. После этого при появлении каждого тактового импульса информация сдвигается на один разряд вправо. Выход данных может быть как последовательным, так и параллельным. Многие сдвиговые регистры, выполненные в виде ИС, имеют параллельный вход и последовательный выход. Эти устройства известны как параллельно-последовательные преобразователи.
В описанных выше сдвиговых регистрах сдвиг производился в одном направлении при появлении каждого тактового импульса. Во многих случаях, однако, желательно иметь возможность сдвигать информацию и влево, и вправо. Регистры, обладающие этой способностью, называются реверсивными сдвиговыми регистрами. Управление сдвигом в таких регистрах осуществляется путем подключения выходов триггеров к соответствующим входам при сдвиге влево или вправо. Направление сдвига регулируется входом «Способ работы». Реверсивные сдвиговые регистры с последовательными и параллельными входами и выходами называют универсальными сдвиговыми регистрами.
Рис. 2.31. Типичный 4-разрядный сдвиговый регистр с параллельным выходом.
Пример регистра
В микросхеме ИР1 каждый разряд образован синхронным двухступенчатым триггером RS с логикой на входе (рис. 2.32). Регистр сдвига позволяет реализовать следующие режимы работы: запись информации параллельным кодом; сдвиг вправо; сдвиг влево. Управление режимом работы регистра осуществляется по входам VI, V2, С1, С2 (выводы 1, 6, 9, 8).
Рис. 2.32. Логическая структура микросхемы ИР1
Для записи в регистр информации параллельным кодом следует на вход управления режимом V2 подать напряжение высокого уровня, на вход С2 напряжение низкого уровня, а информационные сигналы на входы D1 - D8. Напряжение на входах С1, VI может быть любым. Для сдвига за писанной параллельным кодом информации вправо тактовые импульсы подаются на вход С2 (вывод 8). При этом на входе V2 (вывод 6) следует поддерживать напряжение высокого уровня. При операциях с данными, представленными в последовательном коде, входную информацию в виде последовательности импульсов подают на вход информации VI (вывод 1), тактовые импульсы на вход синхронизации С1 (вывод 9), а на входах V2, D1 - D8 поддерживают напряжение низкого уровня. Режимы работы ИС ИР1 при различных видах записи информации представлены в табл. 2.11.
При сдвиге влево на вход выбора режима V2 подается напряжение высокого уровня, которое блокирует прохождение тактовых импульсов, для сдвига вправо. Если при этом на входы параллельного кода разрядов D1 - D8 не подавать параллельный код числа, а выход последнего разряда соединить с входом параллельного кода предыдущего разряда, его выход с аналогичным входом предшествующего ему разряда и т. д. то получим регистр сдвига влево. Входом последовательного кода в этом случае служит вход параллельного кода последнего разряда регистра сдвига.
Микросхемы ИР1 могут быть использованы в качестве основного элемента в арифметических устройствах буферной памяти, элемента задержки на n тактов, преобразователя последовательных кодов в параллельные и наоборот, делителя частоты, закольцованного распределителя импульсов и т. д.
Одной из проблем, возникающих при разработке микроконтроллерных устройств часто становится необходимость экономии линий портов ввода/вывода. Многие периферийные устройства, которые могут работать в связке с процессором, требуют для передачи информации большого количества соединительных проводников. Актуальность этой задачи не снизилась даже с появлением процессоров с большим количеством выводов, так как одновременно усложнились и периферийные устройства. Для устройств индикации, одним из вариантов снижения количества требуемых линий может стать использование регистров сдвига (Shift register).
Регистр сдвига представляет собой цепочку из нескольких, последовательно соединенных D-триггеров. На первый триггер подключается информационный выход микроконтроллера. С каждым импульсом тактового сигнала, передаваемого по отдельной линии, уровень на входе каждого из триггеров записывается на выход. В итоге происходит сдвиг сигнала от начала к концу цепочки. Если использовать подключить выходные линии после каждого из триггеров, то сдвиговый регистр будет представлять собой последовательно-параллельный преобразователь. Это значит, что для организации каких-либо индикаторов, будет минимально необходимо использовать только два вывода микроконтроллера.
В настоящее время производители предлагают большое количество моделей регистров сдвига, с различными функциональными особенностями. Далее будут рассматриваться только микросхемы с последовательным входом и параллельным выходом. Также для описываемых целей можно использовать некоторые универсальные модели регистров.
Использование регистра 74164
Регистр сдвига |
Одной из наиболее простых и распространенных микросхем, реализующих функцию регистра сдвига, считается модель 74164 (555ИР8) и ее технологические варианты. Данная микросхема представляет собой 8-ми разрядный регистр с последовательной загрузкой и параллельным выходом. Используя 74164 можно сравнительно просто получить линейный индикатор из 8-ми светодиодов или односимвольный семисегментный индикатор. При необходимости, допускается последовательное соединение нескольких микросхем, что увеличит количество выходных линий, и подключенных к ним индикаторов.
Выходной ток каждой линии современных вариантов 74ACT164 и 74HCT164 составляет 25мА, что позволяет напрямую подключать маломощные одиночные светодиоды или семисегментные индикаторы. Время цикла этих микросхем может находиться на уровне 15нС, что соответствует возможности работы на частоте 66МГц. Учитывая, что подобная или более высокая частота работы процессоров встречается редко, для формирования тактовых импульсов достаточно просто включить и выключить выход контроллера, без какой-либо задержки.Для загрузки данного регистра сдвига достаточно двух линий: DATA и CLK. Это позволяет задействовать только две линии микроконтроллера, для управления устройством индикации. При этом во многих случаях может оказаться не важно, сколько микросхем будет соединено последовательно, и соответственно сколькими индикаторами управляет контроллер.
Вариантов использования 74164 существует множество. Можно выделить несколько из них. Первый, вышеназванный индикатор на основе нескольких светодиодов. Второй – одиночный семисегментный индикатор или линейка из них. Пример линейки индикаторов показан в статье – Термометр на микроконтроллере PIC12F629 .
Программирование индикации с использование регистра сдвига также не отличается высокой сложностью. Особенно если в микроконтроллере реализована такая операция, как сдвиг байта через бит переноса. Проверкой данного бита можно определить уровень, который требуется установить на линии данных. Циклически повторяя такой сдвиг и формируя тактовые импульсы можно полностью загрузить регистр сдвига.Следующим вариантом использования может стать схема динамической индикации, когда для снижения количества используемых линий микропроцессора, параллельный вывод на отдельные сегменты, заменяется на последовательный, с использованием последовательно-параллельного преобразователя. Этот же преобразователь может использоваться в схеме включения ЖК-индикатора на базе HD44780.
Использование регистров 74595 и 4094
Применение регистров сдвига позволяет строить большие схемы с использованием светодиодных индикаторов. Но в случае, если индикаторы потребляют большой ток (состоят из множества отдельных светодиодов), выходного сигнала регистра становится недостаточно. Для усиления сигнала можно применять различные схемы, состоящие из отдельных транзисторов, или сборок. Наиболее просто и выгодно в этом случае использовать микросхему ULN2803, содержащую 8 транзисторных ключей. Каждый ключ способен коммутировать ток до 500мА при напряжении до 50В, что позволяет подключать к нему до нескольких десятков отдельных светодиодов, маломощных ламп накаливания, либо сегменты крупногабаритных матричных индикаторов. Единственным отличием от вышеприведенных схем, будет использование светодиодных индикаторов с общим анодом, так как ULN2803, по сути, представляет собой ключ нижнего плеча.При всех своих достоинствах, микросхема 74164 имеет некоторые недостатки. В первую очередь к ним следует отнести непосредственное подключение выходов схемы к выходным линиям триггеров. В медленных системах светодиодной индикации, при загрузке регистра, можно наблюдать движение информации от входа к выходу в виде посторонней засветки сегментов. В случае частого обновления информации, подобная засветка вызывает несколько неприятные ощущения. Для ее устранения следует применять регистры, оснащенные выходной защелкой. Примером таких элементов служат микросхемы 74595 и 4094. Каждая из них имеет дополнительный вход стробирования SCLK. При неизменном принципе загрузки, информация на выходе этих устройств сможет появиться только после прохождения импульса по данному входу. Такое решение требует использования дополнительного вывода микроконтроллера, но позволяет строить индикаторы с большим количеством сегментов, без появления различных неприятных эффектов. Особенно полезно использование регистров, оснащенных защелками совместно с микроконтроллерами, работающими на пониженных частотах или от внутренних генераторов.
Применение регистров сдвига несколько усложняет схему готового устройства, но позволяет использовать минимум выходов микроконтроллера и имеет множество других достоинств. Помимо прочего использование вышеприведенных решений позволяет упростить программирование и создавать без больших затрат многоразрядные индикаторы.
You have no rights to post comments