Сдвиговый регистр 595. Реферат: Регистры сдвиги. STCP – вход «защёлкивающий» данные

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. - триггер: его условное графическое обозначение и схема с двумя логическими элементами И-НЕ

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

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

Принципиальная схема последовательного (сдвигового) регистра, собранного на основе и позволяющего осуществить преобразование последовательного кода в параллельный, приведена на рисунке 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.

В прошлый раз был рассмотрен вариант увеличения выходов микроконтроллера при помощи микросхемы – дешифратора , сегодня рассмотрим более продвинутый вариант на сдвиговом регистре 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 состоит всего из двух строк кода, и не представляет никаких сложностей.

Увеличение разрядности

Иногда требуется ОЧЕНЬ много выходных портов. Особенно если хотим сделать что нибудь на светодиодах. Гирлянду какую-нибудь навороченную. Что делать? Брать под это дело ATMega128 с ее полусотней выводов? Избыточно — для ламеров. Ставить i 2 с расширитель портов? Дорого. Для мажоров. Тут на помощь из вековых глубин выплывает старая добрая дискретная логика. На этот раз нас выручит грошовый сдвиговый регистр. Возьму, для примера, 74HC164 он же, для любителей совковых трешевых микросхем в неубиваемом каменном корпусе, наш КM555ИР8 .

От МК, как видно, требуется только четыре выхода. Одним (RESET) мы сбрасываем состояние регистра. Из второго (Data) побитно вылазит байтик, а тактовый CLC обеспечивает продвижение битов по регистру. Самих регистров тут три. Они сцеплены паровозом. Когда переполняется первый, то биты из него вылазят во второй, потом в третий. Итого, 24 вывода.
Катоды диодов подключены все вместе через транзистор и как только будет слово мы подаем сигнал Ready и зажигаем всю эту ботву.

Наполнять регистр просто:
1) Поднимаем и держим RESET в 1
2) Выдаем первый (старший) бит на Data .
3) Опускаем в 0 и поднимаем в 1 тактовый выход. На восходящем фронте происходит занос в регистр и сдвиг всей цепочки на один шаг.
4) Повторить со второго пункта пока все биты не выдадим.

А для сброса достаточно уронить Reset в ноль на пару микросекунд.
Все просто:)

З.Ы.
Кружок на входе регистра означает, что вход инверсный. Т.е. подал ноль — сработало
Треугольник на входе показывает по какому фронту произойдет срабатывание. Запомнить просто: _/ \_ — это, типа, импульс. А треугольник, как стрелочка, указывает на нужный фронт. ->_/ \_ передний (восходящий фронт) и _/ \_<- задний (нисходящий фронт)

jk-триггеры можно включить последовательно друг за другом для сохранения последовательности цифр. Такая конструкция, называемая регистром сдвига , показана на рис. 13.27. Свое название схема получила на осно-

Рис. 13.27. 4-разрядный регистр сдвига, образованный последовательно включенными JK- триггерами.

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

Этот регистр действует по принципу первым вошел - первым вышел (First-In First-Out, FIFO).

Рассмотрим работу регистра сдвига, изображенного на рис. 13.27. Сначала на шину сброса подается логическая 1, а затем значение сигнала на ней возвращается в 0. Теперь предположим, что сигнал на входе данных первоначально равен 1 и что последовательность тактовых импульсов поступает на тактовый вход. В этом случае триггер FF1 имеет на входе / высокий уровень, а на входе ^низкий уровень, так что после первого тактового импульса на выходе Q устанавливается высокий уровень. Предположим, что тем временем входной сигнал вернулся к значению 0 и остается таким. Во время действия второго тактового импульса высокий уровень на входе / триггера FF2 передается на его выход, и Q 2 принимает значение логической 1. В это же время на входе / триггера FF1 действует логический 0, так что вторым тактовым импульсом на выходе устанавливается низкий уровень; если сигнал на входе данных остается равным 0, то на выходе будет оставаться низкий уровень с каждым тактовым импульсом. Однако бит логической 1 каждым тактовым импульсом передвигается дальше на один разряд, так что после четырех импульсов он достигнет выхода Q 4 . Всего теперь запомнено 4 бита входных данных. Последующие тактовые импульсы приведут к потере этих данных, а более новые данные будут сохранены.

В регистре сдвига, показанном на рис. 13.27, имеется возможность, если требуется, наблюдать запомненные данные в параллельном виде, обеспечив доступ к выходам Q v Q 2 , Q 3 и Q 4 . Такая схема известна как регистр с последовательным входом и параллельным выходом: данные должны вводиться последовательно через единственный вход, после чего они становятся доступны в параллельном виде на выходах регистра. Такое преобразование последовательного представления данных в параллельное является очень распространенной операцией, применяемой, например, для преобразования считанных с диска компьютера битов программы в параллельный код для ввода в основную память.

Если каждый триггер снабдить отдельным входом установки в дополнение к общему входу сброса, то данные могут вводиться параллельно через эти входы. «Загруженные» таким образом данные можно, подавая тактовые импульсы, получить на выходе Q 4 в последовательном виде. Такой регистр служит преобразователем параллельного кода в последовательный и часто применяется для преобразования выводимых из микропроцессора данных, представленных сигналами, появляющимися одновременно на большом числе выходов (например, на 16 выходах), в последовательный код для передачи по единственной паре проводов в сеть или к модему. Популярной конструкцией, которой можно воспользоваться для преобразования данных из параллельного вида в последовательный и обратно, является универсальный асинхронный приемопередатчик; он содержит в одной интегральной схеме необходимые регистры Сдвига, схему управления и формирователи для работы на линию.

Если в схеме, изображенной на рис. 13.27, выход Q 4 соединить с входом данных, то данные, которые можно вводить в параллельном виде через входы установки, никогда не смогут покинуть регистр, а будут просто циркулировать в нем. Такая схема называется регистром с циклическим переносом или кольцевым счетчиком. Используя 10 триггеров, соединенных в кольцевой счетчик и пронумерованных от 0 до 9, можно получить десятичный счетчик. Первоначально в триггере с номером 0 устанавливается состояние с высоким уровнем, а остальные сбрасываются в нулевое состояние. Затем импульсы, подлежащие счету, подаются на тактовый вход, так что с приходом каждого входного импульса логическая 1 передвигается из одного триггера в другой. После девяти импульсов в триггер с номером 9 запишется логическая 1, а следующий импульс восстановит начальное состояние. Соединение выхода триггера с номером 9 со входом другого кольцевого счетчика позволит записывать в него десятки, а еще один кольцевой счетчик сможет записывать сотни. Несмотря на очевидное изящество этой схемы, почти всегда более удобно считать в двоичном виде, а затем преобразовывать выход двоичного счетчика в десятичный вид.

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

Схему регистра сдвига, приведенную на рис. 13.27, можно применять в качестве основной для экспериментов со всеми типами регистров сдвига и кольцевыми счетчиками. В качестве /^-триггера рекомендуется ИС 74LS76: каждая микросхема содержит два триггера, срабатывающих по отрицательному фронту с отдельными входами установки и сброса. Цоколевка этой схемы дана в приложении 4.



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: