Сдвиговый регистр | Электроника для всех
Иногда требуется ОЧЕНЬ много выходных портов. Особенно если хотим сделать что нибудь на светодиодах. Гирлянду какую-нибудь навороченную. Что делать? Брать под это дело ATMega128 с ее полусотней выводов? Избыточно — для ламеров. Ставить i2с расширитель портов? Дорого. Для мажоров. Тут на помощь из вековых глубин выплывает старая добрая дискретная логика. На этот раз нас выручит грошовый сдвиговый регистр. Возьму, для примера, 74HC164 он же, для любителей совковых трешевых микросхем в неубиваемом каменном корпусе, наш КM555ИР8.
У него есть 8 выходов и четыре входа. R-сброс, С-тактовый, А1 и А2 вход. На самом деле, внутри они заведены через логический элемент 2И-НЕ и идут на D триггеры. D — это такой тип триггера, который по тактовому импульсу схватывает и отправляет на выход то, что у него на входе. Как видишь, тут они цепью стоят ,передавая бит от одного к другому и нет принципиальной разницы сколько их тут будет, восемь штук или восемь миллиардов.
Получается вот такая схема:
От МК, как видно, требуется только четыре выхода. Одним (RESET) мы сбрасываем состояние регистра. Из второго (Data) побитно вылазит байтик, а тактовый CLC обеспечивает продвижение битов по регистру. Самих регистров тут три. Они сцеплены паровозом. Когда переполняется первый, то биты из него вылазят во второй, потом в третий. Итого, 24 вывода.
Катоды диодов подключены все вместе через транзистор и как только будет слово мы подаем сигнал Ready и зажигаем всю эту ботву.
Наполнять регистр просто:
1) Поднимаем и держим RESET в 1
2) Выдаем первый (старший) бит на Data.
3) Опускаем в 0 и поднимаем в 1 тактовый выход. На восходящем фронте происходит занос в регистр и сдвиг всей цепочки на один шаг.
4) Повторить со второго пункта пока все биты не выдадим.
А для сброса достаточно уронить Reset в ноль на пару микросекунд.
Все просто 🙂
З.Ы.
Кружок на входе регистра означает, что вход инверсный. Т.е. подал ноль — сработало
Треугольник на входе показывает по какому фронту произойдет срабатывание. Запомнить просто: _/ \_ — это, типа, импульс. А треугольник, как стрелочка, указывает на нужный фронт. ->_/ \_ передний (восходящий фронт) и _/ \_<- задний (нисходящий фронт)
Ну и даташитик напоследок, а еще протеусовская модель, где можно вручную переключателем поперетыкать уровень на входе и потыкать кнопку тактового входа. Правда я там поленился на диоды питание заводить — там по квадратикам логических уровней итак все видно хорошо 🙂
Что такое регистр? Регистр сдвига.
Регистр. Регистр сдвига
Регистр это устройство, выполненное на триггерах для выполнения ряда действий с двоичными числами. Для тех, кто не знает, что такое триггер, рекомендуем познакомиться с простейшим RS-триггером.
Наиболее простая функция регистров – это запоминание числа и его длительное хранение. Эти устройства так и называются – регистры хранения. Вот простейший пример.
На входы D0 – D2 подаётся число, которое необходимо сохранить. Как только на входе С появляется импульс синхронизации, число записывается в триггер, изменяя их состояние. На рисунке показан трёхразрядный регистр хранения. При подаче на входы числа 1112 оно же появится на прямых выходах триггеров (Q0 – Q2
). На инверсных выходах (Q0 – Q2) будет, естественно 0002. Сигналом R (Reset) или сброс, триггеры устанавливаются в нулевое состояние.Обычно используются регистры, состоящие из 4, 8, или 16 триггеров. Изображение четырёхразрядного регистра на принципиальных схемах может быть таким.
На рисунке не показаны инверсные выхода триггеров и сигнал R. Регистры всегда обозначаются латинскими буквами RG. Если регистр сдвигающий, то под обозначением рисуется стрелка направленная влево, вправо или двойная.
Сдвигающие регистры или регистры сдвига.
Регистр сдвига это устройство, состоящее из нескольких последовательно соединённых триггеров, число которых определяет разрядность регистра. Регистры широко используются в вычислительной технике для преобразования кодов. Параллельного в последовательный и наоборот.
Кроме того сдвигающие регистры являются основой (АЛУ) арифметико-логического устройства, так как при сдвиге записанного в регистр двоичного числа на один разряд влево производится умножение числа на два, а при сдвиге числа на один разряд вправо число делится на два. Поэтому наибольшее распространение получили реверсивные или двунаправленные регистры.
Рассмотрим четырёхразрядный регистр сдвига, преобразующий последовательный двоичный код в параллельный. Применение последовательного кода оправдано тем, что по одной линии можно передавать огромные массивы информации. Таким примером может служить универсальная последовательная шина – USB порт любого устройства. Число триггеров в данном регистре может быть любым. Достаточно соединить прямой выход Q3 с D входом следующего триггера и так далее до достижения необходимой разрядности.
Регистр работает следующим образом. Первый информационный бит поступает на вход D0. Одновременно с этим битом приходит тактовый синхроимпульс на вход С. Входы С всех триггеров входящих в регистр, объединены между собой. С приходом первого тактового импульса уровень, находящийся на входе D0 записывается в первый триггер и с выхода Q0 приходит на вход следующего триггера, но записи во второй триггер не происходит, так как синхроимпульс уже закончился.
При поступлении следующего тактового импульса уровень, присутствующий на входе второго триггера запоминается в нём и поступает на вход третьего триггера. Одновременно следующий информационный бит запоминается в первом триггере. После прихода четвёртого тактового импульса в четырёх триггерах регистра будут записаны логические уровни, которые последовательно поступали на вход
Допустим это уровни 01102. Тогда это двоичное число можно отобразить, подключив к выходам триггеров светодиоды. Так рассмотренный регистр изображается на принципиальной схеме.
Видно, что на условном изображении присутствует стрелка – указатель того, что это сдвиговый регистр.
Рассмотрим, как работает четырёх разрядный универсальный регистр сдвига К155ИР1 (аналог – SN7495N). Вот его внутреннее устройство.
Регистр содержит четыре D-триггера, которые соединены между собой с помощью дополнительных логических элементов И – ИЛИ, которые позволяют реализовать различные функции. На схеме:
V2 – вход управления. С его помощью выбирается режим работы регистра.
Q1 – Q4 выходы триггеров с которых снимается параллельный код.
V1 – вход для подачи последовательного кода.
C1, C2 – тактовые синхроимпульсы.
D1 – D4 – входы для записи параллельного кода.
Алгоритм работы регистра следующий. Если на вход V2 подать низкий потенциал, тактовые импульсы на C1, а на вход V1 подавать информационные биты, то регистр осуществляет сдвиг вправо. После приёма четырёх разрядов на выходах триггеров Q1 – Q4 мы получаем параллельный код. Таким образом осуществляется преобразование последовательного кода в параллельный.
Для обратного преобразования параллельный код записывается по входам D1 – D4, с подачей на вход V2 высокого потенциала и тактовых импульсов на вход С2. Затем подавая на вход V2 низкий потенциал, а тактовые импульсы на вход С1 мы сдвигаем записанный код, а с выхода последнего триггера снимается последовательный код.
По своей структуре это один из самых простых регистров сдвига.
Регистры сдвига в цифровой технике могут послужить основой, на которой собираются узлы с интересными свойствами. Это, например, кольцевые счётчики, которые называются счётчики Джонсона. Такой счётчик имеет количество состояний вдвое большее, чем число составляющих его триггеров. Например, если кольцевой счётчик состоит из трёх триггеров, то он будет иметь шесть устойчивых состояний. На вход счётчика ничего не подаётся кроме синхроимпульсов. В первоначальном состоянии все триггеры “сброшены”, то есть на прямых выходах триггеров логические нули, а вот на входе D первого триггера с инверсного выхода третьего триггера находится логическая единица. Начнём подавать тактовые импульсы и процесс пошёл.
На таблице истинности хорошо видно, как изменяется двоичный код при поступлении шести тактовых импульсов.
N | Q2 | Q1 | Q0 |
---|---|---|---|
1 | 0 | 0 | 1 |
2 | 0 | 1 | 1 |
3 | 1 | 1 | 1 |
4 | 1 | 1 | |
5 | 1 | 0 | 0 |
6 | 0 | 0 | 0 |
Теперь вы знаете, что такое регистр и как он может использоваться на практике. Основа любого регистра – это триггер. Число триггеров в регистре определяет его разрядность. Те, кто увлекается микроконтроллерами знает, что важнейший элемент любого микроконтроллера, будь то PIC, AVR, STM или MSP, это регистр.
Главная » Цифровая электроника » Текущая страница
Также Вам будет интересно узнать:
Больше чипов 74xx: сдвиговые регистры и декодеры
Благодаря заметке Два способа мультиплексирования светодиодов на примере микроконтроллеров AVR мы с вами знаем, что можно управлять сотней светодиодов, используя всего лишь 11 пинов микроконтроллера. Но что делать, если нужно управлять двумястами или, скажем, тысячью светодиодами? Оказывается, что изученные способы мультиплексирования могут быть улучшены, да так, что используя всего лишь три пина микроконтроллера можно управлять абсолютно любым количеством светодиодов! И в этом нам помогут следующие микросхемы.
Примечание: Если вы пропустили предыдущий пост, посвященный микросхемам 74xx, вот он — Интегральные схемы: чипы стандартной логики 74xx. Впрочем, тот пост был посвящен логическим вентилям, и для понимания представленного далее материала читать его не требуется.
SIPO сдвиговый регистр 74HC595
Сдвиговые регистры — это микросхемы, позволяющие, очень грубо говоря, добавить пинов вашему микроконтроллеру. Для добавления пинов на запись, используются SIPO сдвиговые регистры. SIPO означает «последовательный вход, параллельный выход». Если же нужно больше пинов на чтение, используются сдвиговые регистры PISO, «параллельный вход, последовательный выход». В данном разделе мы познакомимся с типичным SIPO сдвиговым регистром, 74HC595.
Какой пин 74HC595 для чего предназначен, можно узнать из даташита [PDF]:
Если коротко, то:
- VCC, GND — это питание.
- OE — разрешение вывода. Чтобы вывод был всегда разрешен, можно подключить этот пин напрямую к минусу.
- SRCLR — сброс. Если не используется, то нужно подключить напрямую к плюсу.
- SER, SRCLK — используются для передачи данных. При подаче высокого напряжения на SRCLK происходит считывание одного бита данных с пина SER.
- RCLK — при подаче сюда высокого напряжения происходит одновременный вывод принятых данных на параллельные выходы.
- Qa-Qh — параллельные выходы. Сюда происходит вывод последних восьми полученных бит при подаче высокого напряжения на SRCLK.
- Qh’ — при получении очередного бита информации и смещении значений по параллельным выходам бит Qh на самом деле не отбрасывается, а поступает на этот пин. Подключив его к пину SER другого сдвигового регистра, а также соединив выходы RCLK и SRCLK обоих сдвиговых регистров, можно получить 16-разрядный сдвиговый регистр. Второй сдвиговый регистр в свою очередь можно соединить с третьим и так далее, получив сколь угодно разрядный регистр сдвига.
Надеюсь, идея ясна — мы последовательно передаем на сдвиговый регистр восемь бит информации по одному биту. Затем сдвиговый регистр параллельно выводит полученные биты на восемь пинов. Отсюда и «последовательный вход, параллельный выход».
Пример кода:
const uint8_t hc595_data = 6; /* SER */const uint8_t hc595_latch = 7; /* RCLK */
const uint8_t hc595_clock = 8; /* SRCLK */
/* … */
void setup()
{
pinMode(hc595_data, OUTPUT);
pinMode(hc595_latch, OUTPUT);
pinMode(hc595_clock, OUTPUT);
/* … */
}
/* … */
void loop()
{
/* … */
digitalWrite(hc595_latch, LOW);
shiftOut(hc595_data, hc595_clock, MSBFIRST, hc595_out);
digitalWrite(hc595_latch, HIGH);
/* … */
delay(100);
}
Нам даже не нужно писать никаких циклов. В Arduino уже предусмотрена готовая процедура shiftOut
, которая делает все за нас.
В итоге три пина микроконтроллера эффективно превратились в восемь пинов. Если соединить несколько сдвиговых регистров, как это было описано выше, то можно вместо восьми пинов получить сколько угодно. При этом в микроконтроллере все так же будет задействовано только три пина.
Существует похожий чип 74HC164, который имеет 14 пинов вместо 16-и. В нем отсутствует пин переноса (аналог Qh’). Даташит 74HC164 доступен здесь [PDF].
PISO сдвиговый регистр 74HC165
Типичным представителем PISO сдвиговых регистров является 74HC165.
Картинка из даташита [PDF]:
Назначение пинов:
- VCC, GND — питание.
- A-H — входы сдвигового регистра.
- SH — когда на этом пине низкое напряжение, происходит считывание данных с пинов A-H.
- CLK INH — что-то делает только при высоком напряжении на SH. Низкое напряжение означает разрешить использование часов (пин CLK). На практике можно подключить напрямую к земле.
- CLK — когда на SH высокое напряжение и на CLK INH низкое, при подаче на CLK низкого напряжения происходит сдвиг данных.
- Qh — выход сдвигового регистра. Одноименный выход с чертой — это инвертированный выход.
- SER — при очередном сдвиге освободившийся бит принимает значение, поданное на этот пин. Пин может быть задействован при одновременном использовании нескольких сдвиговых регистров. Или можно просто подключить к земле.
Пример кода, считывающего состояние восьми кнопок, используя всего лишь три пина:
const uint8_t hc165_data = A5; /* QH */const uint8_t hc165_latch = A4; /* SH */
const uint8_t hc165_clock = A3; /* CLK */
/* … */
void setup()
{
/* … */
pinMode(hc165_data, INPUT);
pinMode(hc165_clock, OUTPUT);
pinMode(hc165_latch, OUTPUT);
}
uint8_t shiftIn165(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder)
{
uint8_t value = 0;
uint8_t i;
for (i = 0; i < 8; ++i)
{
digitalWrite(clockPin, LOW);
if (bitOrder == LSBFIRST)
value |= digitalRead(dataPin) << i;
else
value |= digitalRead(dataPin) << (7 – i);
digitalWrite(clockPin, HIGH);
}
return value;
}
void loop()
{
digitalWrite(hc165_latch, LOW);
delayMicroseconds(5);
digitalWrite(hc165_latch, HIGH);
delayMicroseconds(5);
hc595_out = shiftIn165(hc165_data, hc165_clock, MSBFIRST);
/* . .. */
delay(100);
}
Встроенная процедура shiftIn
для работы с 74HC165, к сожалению, не годится, так в ней используется обратный порядок подачи сигналов LOW и HIGH на clockPin. Поэтому в приведенном коде используется собственная реализация с правильным порядком.
Декодер / демультиплексор 74HC138
В данном контексте было бы большим упущением не рассказать про демультиплексоры, так как они могут быть использованы для управления светодиодными матрицами, так же, как и сдвиговые регистры. Грубо говоря, демультиплексоры занимаются тем, что декодируют числа из бинарного представления в унарное. Типичным представителем демультиплексоров является 74HC138.
Вот иллюстрация из его даташита [PDF]:
Назначение пинов:
- VCC, GND — питание.
- A, B, C — три бита входа.
- Y0-Y7 — выход. Если на вход подан ноль в бинарном представлении, на Y0 будет подано низкое напряжение, а на все остальные выходы высокое. Если подана единица в бинарном представлении, на Y1 будет низкое напряжение, а на всех остальных выходах высокое, и так далее.
- G1, G2A, G2B — разрешение вывода. Чтобы на выходах Y0-Y7 было что-то осмысленное, на G1 должно быть подано высокое напряжение, а на G2A и G2B — низкое. Иначе на всех выходах Y0-Y7 будет высокое напряжение независимо от входов A, B и C. Пины G2A и G2B можно просто подключить к земле.
Пример кода:
const uint8_t hc138_a = 5;const uint8_t hc138_b = 4;
const uint8_t hc138_c = 3;
const uint8_t hc138_enable = 9;
/* … */
uint8_t hc138_out = 0;
void setup()
{
/* … */
pinMode(hc138_a, OUTPUT);
pinMode(hc138_b, OUTPUT);
pinMode(hc138_c, OUTPUT);
pinMode(hc138_enable, OUTPUT);
/* … */
}
/* … */
void loop()
{
/* … */
digitalWrite(hc138_enable, LOW);
digitalWrite(hc138_a, hc138_out & (1 << 0));
digitalWrite(hc138_b, hc138_out & (1 << 1));
digitalWrite(hc138_c, hc138_out & (1 << 2));
digitalWrite(hc138_enable, HIGH);
hc138_out = (hc138_out + 1) & B00000111;
delay(100);
}
74HC138 может быть использован в бегущей строке. При использовании матричной схемы мультиплексирования светодиодов с его помощью можно выбирать строку светодиодной матрицы.
Существует также чип 74HC154. Он аналогичен по функциональности, но более громоздок и является четырехбитным. Его даташит можно полистать здесь [PDF].
Как несложно догадаться, если есть демультиплексоры, значит бывают и мультиплексоры. Они в каком-то смысле аналогичны PISO сдвиговым регистрам, так как позволяют увеличить количество читающих пинов микроконтроллера. В качестве примеров можно привести чипы 74HC151 и 74HC153. Их даташиты доступны, соответственно, здесь [PDF] и здесь [PDF].
Fun fact! При помощи мультиплексора можно реализовать произвольную логическую функцию, подключив его входы напрямую к питанию или земле в соответствии с таблицей истинности и используя управляющие сигналы, как входные данные.
Полная версия кода
Вы, конечно же, поняли, что приведенные выше отрывки кода являются частью одной программы. Вот ее полный исходный код:
#include <Arduino.h>const uint8_t hc595_data = 6; /* SER */
const uint8_t hc595_latch = 7; /* RCLK */
const uint8_t hc595_clock = 8; /* SRCLK */
const uint8_t hc138_a = 5;
const uint8_t hc138_b = 4;
const uint8_t hc138_c = 3;
const uint8_t hc138_enable = 9;
const uint8_t hc165_data = A5; /* QH */
const uint8_t hc165_latch = A4; /* SH */
const uint8_t hc165_clock = A3; /* CLK */
uint8_t hc595_out = 0;
uint8_t hc138_out = 0;
void setup()
{
pinMode(hc595_data, OUTPUT);
pinMode(hc595_latch, OUTPUT);
pinMode(hc595_clock, OUTPUT);
pinMode(hc138_a, OUTPUT);
pinMode(hc138_b, OUTPUT);
pinMode(hc138_c, OUTPUT);
pinMode(hc138_enable, OUTPUT);
pinMode(hc165_data, INPUT);
pinMode(hc165_clock, OUTPUT);
pinMode(hc165_latch, OUTPUT);
}
uint8_t shiftIn165(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder)
{
uint8_t value = 0;
uint8_t i;
for (i = 0; i < 8; ++i)
{
digitalWrite(clockPin, LOW);
if (bitOrder == LSBFIRST)
value |= digitalRead(dataPin) << i;
else
value |= digitalRead(dataPin) << (7 – i);
digitalWrite(clockPin, HIGH);
}
return value;
}
void loop()
{
digitalWrite(hc165_latch, LOW);
delayMicroseconds(5);
digitalWrite(hc165_latch, HIGH);
delayMicroseconds(5);
hc595_out = shiftIn165(hc165_data, hc165_clock, MSBFIRST);
digitalWrite(hc595_latch, LOW);
shiftOut(hc595_data, hc595_clock, MSBFIRST, hc595_out);
digitalWrite(hc595_latch, HIGH);
digitalWrite(hc138_enable, LOW);
digitalWrite(hc138_a, hc138_out & (1 << 0));
digitalWrite(hc138_b, hc138_out & (1 << 1));
digitalWrite(hc138_c, hc138_out & (1 << 2));
digitalWrite(hc138_enable, HIGH);
hc138_out = (hc138_out + 1) & B00000111;
delay(100);
}
Фотография соответствующего прототипа на макетной плате:
Используемые чипы слева направо — микроконтроллер ATmega328P, SIPO сдвиговый регистр 74HC595, демультиплексор 74HC138, PISO сдвиговый регистр 74HC165. Состояние восьми кнопок считывается через 74HC165. Светодиоды слева, соответствующие нажатым кнопкам, не горят, а отпущенным — горят. Состояние этих светодиодов контролируется через 74HC595. На фото я зажал три правые кнопки карандашом и потому три соответствующих им светодиода не горят. Еще восемь светодиодов справа контролируются демультиплексором 74HC138. Их состояние зависит только от времени, по очереди гаснет один светодиод.
Примечание: Вас могут заинтересовать статьи Как собрать Arduino прямо на макетной плате и Собираем USB-программатор для AVR из ATmega328P и FT232.
Заключение
Еще из интересных чипов стоит упомянуть шинный формирователь 74HC244. Это штука, которая может как бы отрезать одну часть цепи от другой. Если добавить в цепь 74HC04 (логическое НЕ), то при помощи 74HC244 можно будет использовать одни и те же пины для работы с SIPO и PISO сдвиговыми регистрами, плюс один пин для переключения между ними. Итого, если микроконтроллер имеет четыре пина, он может работать с любым количеством кнопок и светодиодов. У самого маленького известного мне микроконтроллера ATtiny13 целых пять свободных пинов, что позволяет обойтись и без 74HC04. Подробности о 74HC244 ищите в даташите [PDF], там все очень просто.
Также заслуживает внимания чип 74HC4051. Эта штука позволяет соединить аналоговый канал с любым из 8 других аналогвых каналов, или разъединить их все. Мне нравится думать о 74HC4051, как о переключателе, управляемом программного. Подробности — в даташите [PDF].
В контексте увеличения числа пинов микроконтроллера стоит также упомянуть чипы MCP23017 / MCP23S17 [PDF] и специализированные чипы для управления светодиодными матрицами вроде MAX7221 [PDF]. Интересны они тем, что предлагая функциональность, аналогичную функциональности сдвиговых регистров и декодеров, могут занимать меньше места на плате. Если же вы хотите увеличить числ ШИМ-пинов, обратите внимание на микросхему TLC5940 (видеообзор, библиотека). Однако обсуждение данных микросхем уже сильно выходит за рамки данного поста. Вы без труда сможете изучить их самостоятельно в качестве домашнего задания.
Итак, теперь вы знаете все необходимое, чтобы делать при помощи светодиодов потрясающие вещи, вроде таких или даже таких. Полную версию исходников к посту вы найдете в этом репозитории на GitHub. Как обычно, буду весьма рад вашим вопросам и дополнениям.
Дополнение: Вас также могут заинтересовать посты Знакомство с компараторами на примере чипа LM339 и Изучаем работу операционного усилителя на примере NE5532.
Метки: Электроника.
Сдвиговые регистры
Сдвиговые регистры, как и счётчики, являются схемами последовательной логики. На состояние схемы последовательной логики, в отличие от комбинационных логических схем оказывает влияние не только текущий сигнал, но и предшествующая история сигналов. Другими словами, последовательная логика позволяет запоминать предыдущие события.
Сдвиговые регистры осуществляют задержку цифрового сигнала. Сигнал, синхронизируемый по синхроимпульсу, задерживается на «n» синхроимпульсов, где «n» представляет количество разрядов сдвигового регистра. Таким образом, 4-разрядный сдвиговый регистр задерживает вывод данных на четыре синхроимпульса. Разряды сдвигового регистра обычно обычно представляют собой «D»-триггеры или «JK» триггеры.
Раньше, в качестве цифровой памяти использовались чрезвычайно громоздкие регистры сдвига, состоявшие из нескольких сотен триггеров. Такое устаревшее применение напоминает использовавшуюся на ранней стадии развития компьютеров память на акустических ртутных линиях задержки.
Сдвиговые регистры применяются для преобразования параллельных данных в последовательную форму при последовательной передаче данных на расстояние от нескольких метров до нескольких километров.
При последовательной передаче данных на более короткие расстояния сдвиговые регистры используются для ввода данных на микропроцессор и вывода данных с микропроцессора. Сдвиговые регистры применяются во множестве периферийных устройств, включая аналого-цифровые преобразователи, цифро-аналоговые преобразователи, устройства управления дисплеями, что позволяет уменьшить количество соединений на печатных платах.
В некоторых счётчиках сдвиговые регистры применяются для генерирования циклических сигналов. Сдвиговые регистры с большим количеством разрядов и обратной связью генерируют сложные сигналы такой длины, что они выглядят как флуктуационный шум, или псевдослучайные сигналы.
По своей структуре сдвиговые регистры делятся на следующие классы:
Последовательный ввод/последовательный вывод
Параллельный ввод/последовательный вывод
Последовательный ввод/параллельный вывод
Параллельный ввод/параллельный вывод (универсальный сдвиговый регистр)
Кольцевые счётчики
4-разрядный сдвиговый регистр, последовательный ввод/последовательный вывод
Выше показана блок-схема 4-разрядного сдвигового регистра с последовательным вводом/последовательным выводом. Входящие биты будут находиться в регистре в течение четырёх синхроимпульсов.
По первому сигналу синхроимпульса первый бит поступит на триггер A. По второму синхронизирующему импульсу содержимое триггера A будет перезаписано в триггер B, а на триггер A поступит новый бит. При третьем синхроимпульсе содержимое триггера C будет заменено содержимым триггера B; содержимое триггера B будет заменено содержимым триггера A;, а на триггер А поступит новый бит. По четвёртому сигналу бит данных, изначально находившийся на входе регистра, будет находиться на «выходе» триггера D. Таким образом, при каждом синхроимпульсе происходит одновременная перезапись содержимого каждого триггера в соседний триггер. При этом не меняется само записанное в регистре двоичное число, — оно лишь сдвигается на один разряд.
4-разрядный сдвиговый регистр параллельный ввод/последовательный вывод
В случае сдвигового регистра с параллельным вводом/последовательным выводом запись битов информации на все триггеры осуществляется одновременно. Затем при подаче синхроимпульса осуществляется сдвиг битов. Поскольку на схеме изображён 4-разрядный сдвиговый регистр, для полного сдвига данных требуются четыре синхроимпульса. На показанной выше диаграмме, бит данных на триггере D будет находится на выходе до поступления первого синхроимпульса; бит данных триггера C будет находиться на выходе регистра между первым и вторым синхроимпульсом; бит данных на триггере B поступит на выход между вторым и третьим синхроимпульсом;, а бит триггера A будет на выходе между третьим и четвёртым синхроимпульсом.
4-разрядный сдвиговый регистр, последовательный ввод/параллельный вывод
В примере выше, четыре бита данных будут сдвигаться со входа регистра четырьмя синхроимпульсами и будут доступны на выходах QA – QD, что позволит подавать сигналы на какую-либо внешнюю схему, например, светодиоды, лампы, управляющие цепи реле или громкоговоритель.
По первому синхроимпульсу сигнал со входа триггера поступит на выход QA. После второго синхроимпульса, старые данные QA появятся на выходе QB; QA принимает со входа новый бит данных. После третьего синхроимпульса данные QB сдвигаются на QC. После четвёртого синхроимпульса данные QC сдвигаются на QD. Теперь здесь будет находиться бит, изначально находившийся на входе схемы. Сдвиговый регистр будет содержать четыре бита данных.
4-разрядный сдвиговый регистр, параллельный ввод/параллельный вывод
Сдвиговый регистр с параллельным вводом/параллельным выводом объединяет функции регистра с параллельным вводом/последовательным выводом и регистра последовательного ввода/параллельного вывода, в результате чего мы получаем универсальный сдвиговый регистр. Универсальный сдвиговый регистр имеет один недостаток — увеличенное количество входов/выходов сокращает возможное количество разрядов.
Биты данных, находящийся на входах DA — DD загружается в регистры параллельно. Эти биты информации на выходах QA — QD могут быть сдвинуты столько раз, сколько поступает синхроимпульсов. В случае универсального сдвигового регистра можно управлять параллельной загрузкой данных с DA — DD, сдвигом битов и направлением сдвига. То есть существуют сдвиговые регистры, с помощью которых можно сдвигать биты данных как влево, так и вправо.
Кольцевой счётчик
Регистр сдвига можно превратить в кольцевой счетчик, если выход последнего триггера соединить с входом первого. В этом случае бит кода будет циркулировать по кольцу до тех пор пока будут подаваться синхроимпульсы.
Использование сдвиговых регистров в устройствах индикации.
Использование сдвиговых регистров в устройствах индикации.
Одной из проблем, возникающих при разработке микроконтроллерных устройств часто становится необходимость экономии линий портов ввода/вывода. Многие периферийные устройства, которые могут работать в связке с процессором, требуют для передачи информации большого количества соединительных проводников. Актуальность этой задачи не снизилась даже с появлением процессоров с большим количеством выводов, так как одновременно усложнились и периферийные устройства. Для устройств индикации, одним из вариантов снижения количества требуемых линий может стать использование регистров сдвига (Shift register).
Регистр сдвига представляет собой цепочку из нескольких, последовательно соединенных D-триггеров. На первый триггер подключается информационный выход микроконтроллера. С каждым импульсом тактового сигнала, передаваемого по отдельной линии, уровень на входе каждого из триггеров записывается на выход. В итоге происходит сдвиг сигнала от начала к концу цепочки. Если использовать подключить выходные линии после каждого из триггеров, то сдвиговый регистр будет представлять собой последовательно-параллельный преобразователь. Это значит, что для организации каких-либо индикаторов, будет минимально необходимо использовать только два вывода микроконтроллера.
В настоящее время производители предлагают большое количество моделей регистров сдвига, с различными функциональными особенностями. Далее будут рассматриваться только микросхемы с последовательным входом и параллельным выходом. Также для описываемых целей можно использовать некоторые универсальные модели регистров.
Использование регистра 74164
Регистр сдвига |
Одной из наиболее простых и распространенных микросхем, реализующих функцию регистра сдвига, считается модель 74164 (555ИР8) и ее технологические варианты. Данная микросхема представляет собой 8-ми разрядный регистр с последовательной загрузкой и параллельным выходом. Используя 74164 можно сравнительно просто получить линейный индикатор из 8-ми светодиодов или односимвольный семисегментный индикатор. При необходимости, допускается последовательное соединение нескольких микросхем, что увеличит количество выходных линий, и подключенных к ним индикаторов.
Выходной ток каждой линии современных вариантов 74ACT164 и 74HCT164 составляет 25мА, что позволяет напрямую подключать маломощные одиночные светодиоды или семисегментные индикаторы. Время цикла этих микросхем может находиться на уровне 15нС, что соответствует возможности работы на частоте 66МГц. Учитывая, что подобная или более высокая частота работы процессоров встречается редко, для формирования тактовых импульсов достаточно просто включить и выключить выход контроллера, без какой-либо задержки.Для загрузки данного регистра сдвига достаточно двух линий: DATA и CLK. Это позволяет задействовать только две линии микроконтроллера, для управления устройством индикации. При этом во многих случаях может оказаться не важно, сколько микросхем будет соединено последовательно, и соответственно сколькими индикаторами управляет контроллер.
Подключение индикатора |
Вариантов использования 74164 существует множество. Можно выделить несколько из них. Первый, вышеназванный индикатор на основе нескольких светодиодов. Второй – одиночный семисегментный индикатор или линейка из них. Пример линейки индикаторов показан в статье – Термометр на микроконтроллере PIC12F629.
Программирование индикации с использование регистра сдвига также не отличается высокой сложностью. Особенно если в микроконтроллере реализована такая операция, как сдвиг байта через бит переноса. Проверкой данного бита можно определить уровень, который требуется установить на линии данных. Циклически повторяя такой сдвиг и формируя тактовые импульсы можно полностью загрузить регистр сдвига.Следующим вариантом использования может стать схема динамической индикации, когда для снижения количества используемых линий микропроцессора, параллельный вывод на отдельные сегменты, заменяется на последовательный, с использованием последовательно-параллельного преобразователя. Этот же преобразователь может использоваться в схеме включения ЖК-индикатора на базе HD44780.
Подключение HD44780 с использованием регистра | Каскадное включение регистров | Использование ULN2803 совместно с регистром |
Использование регистров 74595 и 4094
Применение регистров сдвига позволяет строить большие схемы с использованием светодиодных индикаторов. Но в случае, если индикаторы потребляют большой ток (состоят из множества отдельных светодиодов), выходного сигнала регистра становится недостаточно. Для усиления сигнала можно применять различные схемы, состоящие из отдельных транзисторов, или сборок. Наиболее просто и выгодно в этом случае использовать микросхему ULN2803, содержащую 8 транзисторных ключей. Каждый ключ способен коммутировать ток до 500мА при напряжении до 50В, что позволяет подключать к нему до нескольких десятков отдельных светодиодов, маломощных ламп накаливания, либо сегменты крупногабаритных матричных индикаторов. Единственным отличием от вышеприведенных схем, будет использование светодиодных индикаторов с общим анодом, так как ULN2803, по сути, представляет собой ключ нижнего плеча.При всех своих достоинствах, микросхема 74164 имеет некоторые недостатки. В первую очередь к ним следует отнести непосредственное подключение выходов схемы к выходным линиям триггеров. В медленных системах светодиодной индикации, при загрузке регистра, можно наблюдать движение информации от входа к выходу в виде посторонней засветки сегментов. В случае частого обновления информации, подобная засветка вызывает несколько неприятные ощущения. Для ее устранения следует применять регистры, оснащенные выходной защелкой. Примером таких элементов служат микросхемы 74595 и 4094. Каждая из них имеет дополнительный вход стробирования SCLK. При неизменном принципе загрузки, информация на выходе этих устройств сможет появиться только после прохождения импульса по данному входу. Такое решение требует использования дополнительного вывода микроконтроллера, но позволяет строить индикаторы с большим количеством сегментов, без появления различных неприятных эффектов. Особенно полезно использование регистров, оснащенных защелками совместно с микроконтроллерами, работающими на пониженных частотах или от внутренних генераторов.
Применение регистров сдвига несколько усложняет схему готового устройства, но позволяет использовать минимум выходов микроконтроллера и имеет множество других достоинств. Помимо прочего использование вышеприведенных решений позволяет упростить программирование и создавать без больших затрат многоразрядные индикаторы.
You have no rights to post comments
Сдвиговый регистр принцип. Регистры сдвига. Сдвигающие регистры или регистры сдвига
Регистры сдвига или сдвиговые регистры (англ. shift register) представляют собой, как уже отмечалось, последовательно соединенную цепочку триггеров. Основной режим их работы – это сдвиг разрядов кода, записанного в эти триггеры, То есть по тактовому сигналу содержимое каждого предыдущего триггера переписывается в следующий по порядку в цепочке триггер. Код, хранящийся в регистре, с каждым тактом сдвигается на один разряд в сторону старших разрядов или в сторону младших разрядов, что и дало название регистрам данного типа.
В связи с названием направления сдвига в сдвиговых регистрах часто возникает путаница. Сдвиг бывает двух видов: вправо (основной режим, который есть у всех сдвиговых регистров) и влево (этот режим есть только у некоторых, реверсивных сдвиговых регистров). Названия эти отражают внутреннюю структуру регистров сдвига (рис. 8.14 ) и перезапись сигналов последовательно по цепочке триггеров. При этом триггеры, вполне естественно, нумеруются слева направо, например, от 0 до 7 (или от 1 до 8) для 8-разрядных регистров. В результате сдвиг информации регистром вправо представляет собой сдвиг в сторону разрядов, имеющих большие номера, а сдвиг информации регистром влево – это сдвиг в сторону разрядов, имеющих меньшие номера.
Однако, как известно, в любом двоичном числе слева расположены старшие разряды, а справа – младшие разряды. Поэтому сдвиг двоичного числа вправо будет сдвигом в сторону младших разрядов, а сдвиг влево – сдвигом в сторону старших разрядов. Это противоречие, не чей-то злой умысел, просто так исторически сложилось, и об этом надо помнить разработчику цифровой аппаратуры.
Рис. 8.14. Направление сдвига в сдвиговых регистрах
В стандартные серии цифровых микросхем входит несколько типов сдвиговых регистров, отличающихся возможными режимами работы, режимами записи, чтения и сдвига, а также типом выходных каскадов (2С или 3С). Большинство регистров сдвига имеет восемь разрядов. На рис. 8.15 представлены для примера четыре типа микросхем регистров сдвига.
Регистр ИР8 – наиболее простой из регистров сдвига. Он представляет собой 8-разрядную линию задержки, то есть имеет только один информационный вход, на который подается последовательная сдвигаемая информация (точнее, два входа, объединенных по функции 2И), и восемь параллельных выходов. Сдвиг в сторону выходов со старшими номерами осуществляется по переднему фронту тактового сигнала С. Имеется также вход сброса –R, по нулевому сигналу на котором все выходы регистра сбрасываются в нуль.
Рис. 8.15. Сдвиговые регистры
Регистр ИР9 выполняет функцию, обратную регистру ИР8. Если ИР8 преобразует входную последовательную информацию в выходную параллельную, то регистр ИР9 преобразует входную параллельную информацию в выходную последовательную. Однако суть сдвига не меняется, просто в ИР9 все внутренние триггеры имеют выведенные параллельные входы, и только один, последний триггер имеет выход (причем как прямой, так и инверсный). Запись входного кода в регистр производится по нулевому сигналу на входе -WR. Сдвиг осуществляется по положительному фронту на одном из двух тактовых входов С1 и С2, объединенных по функции 2ИЛИ. Имеется также вход расширения DR, сигнал с которого в режиме сдвига перезаписывается в младший разряд сдвигового регистра.
Рис. 8.16. Соединение регистров ИР8 для увеличения разрядности
Как и все остальные сдвиговые регистры, ИР8 и ИР9 допускают каскадирование, то есть совместное включение для увеличения разрядности.
Регистр ИР13 соединяет в себе возможности регистров ИР8 и ИР9. Он имеет как восемь входов для параллельной записи, так и соответствующие им восемь выходов параллельной информации. Сдвиг осуществляется по положительному фронту тактового сигнала С, причем сдвиг возможен как в сторону старших разрядов (вправо), так и в сторону младших разрядов (влево).
Регистр ИР24 обеспечивает сдвиг информации в обоих направлениях. Имеются входы расширения DR и DL, а также выходы расширения Q0 и Q7, что позволяет легко наращивать разрядность.
Главное применение всех регистров сдвига состоит в преобразовании параллельного кода в последовательный, и наоборот. Такое преобразование используется, например, при передаче информации на большие расстояния (в информационных сетях), при записи информации на магнитные носители, при работе с телевизионными мониторами и с видеокамерами, а также во многих других случаях.
Для примера на рис. 8.19 показана простейшая схема передачи цифровой информации в последовательном коде по двум линиям: информационной и синхронизующей. Такая передача позволяет сократить количество соединительных проводов, а также упростить защиту передаваемых данных от действия внешних электромагнитных помех, правда, ценой снижения скорости передачи.
Рис. 8.19. Последовательная передача информации с помощью регистров сдвига
На передающем конце (слева на рисунке) с помощью сдвигового регистра ИР9 входной параллельный 8-разрядный код преобразуется в последовательность разрядов данных, следующих с частотой тактового сигнала. На приемном конце (справа на рисунке) с помощью сдвигового регистра ИР8 эта последовательность разрядов данных снова преобразуется в параллельный код. Оба регистра тактируются одним и тем же тактовым сигналом, который передается по линии связи параллельно с последовательностью данных. Для увеличения надежности передачи информационный сигнал дополнительно задерживается относительно фронта тактового сигнала с помощью цепочки из двух инверторов.
Первый бит последовательного входа (со входа 7 регистра ИР9) начинает передаваться с началом сигнала записи -Зап. Следующие разряды передаются с каждым следующим положительным фронтом тактового сигнала С. Последним передается сигнал со входа 0. В регистр ИР8 разряды последовательного кода записываются в том же самом порядке, в каком они были в регистре ИР9. По окончании передачи первый переданный сигнал данных окажется в разряде 7 шины данных регистра ИР8, а последний переданный сигнал данных – в разряде 0.
Следующее применение сдвиговых регистров состоит в организации всевозможных линий задержек, особенно имеющих значительное количество каскадов. С помощью сдвиговых регистров можно обеспечить задержку любого входного сигнала на целое число тактов. Правда, надо учитывать, что длительность входного сигнала (и любого его элемента) будет также передаваться по линии задержки с точностью до одного такта. Такие линии задержки могут применяться для сравнения нескольких последующих тактов входного сигнала, для выполнения арифметических операций с несколькими тактами входного сигнала и для других подобных целей. Работа линии задержки на регистре сдвига иллюстрируется рис. 8.20 .
Рис. 8.20. Линия задержки входного сигнала на регистре сдвига
Сдвиговые регистры могут также использоваться для формирования импульсов заданной длительности, причем длительность импульса может задаваться управляющим кодом, то есть быть программно управляемой. На рис. 8.21 приведена возможная схема такого формирователя.
Рис. 8.21. Формирователь импульсов с длительностью, задаваемой управляющим кодом
В исходном состоянии (до прихода положительного фронта входного сигнала) триггер сброшен в нуль, на всех выходах регистра сдвига – нули, на инверсном выходе мультиплексора – единица. На мультиплексор подан управляющий код, определяющий длительность выходного сигнала. При поступлении положительного фронта входного сигнала триггер перебрасывается в единицу (начинается выходной сигнал), и этот единичный сигнал начинает последовательно сдвигаться регистром сдвига по каждому фронту тактового сигнала.
Пусть управляющий код равен 5. Тогда в тот момент, когда на выходе 5 сдвигового регистра появится единица, она будет передана на выход мультиплексора КП7 с инверсией. При этом нулевой сигнал на входе –R триггера сбросит триггер в нуль, то есть выходной сигнал закончится.
Таким образом, длительность выходного сигнала будет определяться управляющим кодом. Погрешность установки этой длительности равна одному периоду тактового сигнала и зависит от временного сдвига между фронтом входного сигнала и фронтом ближайшего к нему тактового импульса. Чем больше длительность выходного сигнала, тем меньше относительная погрешность установки его точности. Например, при управляющем коде 0 длительность выходного сигнала может быть от 0 до Т, где Т – период тактового сигнала. А при управляющем коде 7 длительность выходного сигнала будет от 7Т до 8Т. При этом мы не учитываем задержек триггера, сдвигового регистра и мультиплексора.
Сдвиговые регистры могут также использоваться для умножения и деления двоичных чисел на 2 n , где n – целое число, большее нуля. Сдвиг двоичного числа вправо (в сторону младших разрядов) на один разряд равносилен делению на 2. Сдвиг двоичного числа влево (в сторону старших разрядов) на один разряд равносилен умножению на 2. Для того чтобы сдвиговый регистр умножал и делил двоичный код, надо всего лишь записать этот код в регистр и сдвинуть его нужное количество раз вправо или влево. Наиболее удобен для этого регистр ИР13. При этом необходимо, чтобы в освободившиеся разряды вдвигались нули, то есть на входы расширения DR и DL регистра надо подать нулевые сигналы.
Наконец, последнее применение сдвигового регистра, которое мы рассмотрим, – это генератор случайной последовательности сигналов или случайной последовательности кодов. Строго говоря, последовательности будут не полностью случайные, а квазислучайные, то есть будут периодически повторяться, но период этот довольно большой. Случайные последовательности сигналов и кодов широко применяются в тестирующей аппаратуре, в генераторах шума, в логических игровых устройствах.
Задача состоит в том, чтобы выходной сигнал или код менял свое состояние случайно (или почти случайно). Сигнал должен случайно переключаться из 0 в 1 и из 1 в 0, а код должен случайно принимать значения из диапазона от 0 до (2 N–1), где N – число разрядов кода (например, от 0 до 255 при 8-разрядном коде). Псевдослучайные последовательности имеют то преимущество перед истинно случайными, что они – предсказуемые и периодические, но в этом же и их недостаток.
Структура генератора квазислучайной последовательности на сдвиговом регистре очень проста (рис. 8.22 ). Она представляет собой регистр сдвига с параллельными выходами (например, ИР8), несколько (минимум два) выходных сигналов которого объединены с помощью элемента Исключающее ИЛИ, с выхода которого сигнал подается на вход регистра, замыкая схему в кольцо. Схема тактируется сигналом с частотой f T .
Рис. 8.22. Структура генератора псевдослучайной последовательности
Выбор номеров разрядов для подключения обратной связи представляет собой непростую задачу, но существуют справочные таблицы, в которых они приведены. В любом случае одна из точек подключения – выход старшего разряда.
Выгоднее брать число разрядов не кратное 8, например, 7, 15 или 31. В этом случае для обратной связи используются всего лишь два выхода, то есть достаточно одного двухвходового элемента Исключающее ИЛИ.
Период выходной последовательности генератора составляет (2 N -1) тактов, где N – количество разрядов регистра сдвига. За это время каждое из возможных значений выходного кода (кроме одного) встречается один раз. Количество единиц в выходном сигнале больше количества нулей на единицу.
Выходной код 000…0 представляет собой запрещенное состояние, так как он блокирует работу генератора, воспроизводя сам себя снова и снова. Но в то же время получиться такой нулевой код может только сам из себя, поэтому достаточно обеспечить, чтобы его не было при включении питания схемы.
Частоты в спектре выходного сигнала будут следовать с интервалом (f T /2 N –1), а огибающая спектра будет практически постоянной до частоты 0,25f T , то есть шум до этой частоты можно считать белым (спад в 3 дБ происходит на частоте 0,45 f T).
Такой генератор использовала известная фирма Hewlett–Packard в своем генераторе шума.
Одной из проблем, возникающих при разработке микроконтроллерных устройств часто становится необходимость экономии линий портов ввода/вывода. Многие периферийные устройства, которые могут работать в связке с процессором, требуют для передачи информации большого количества соединительных проводников. Актуальность этой задачи не снизилась даже с появлением процессоров с большим количеством выводов, так как одновременно усложнились и периферийные устройства. Для устройств индикации, одним из вариантов снижения количества требуемых линий может стать использование регистров сдвига (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
Иногда требуется ОЧЕНЬ много выходных портов. Особенно если хотим сделать что нибудь на светодиодах. Гирлянду какую-нибудь навороченную. Что делать? Брать под это дело ATMega128 с ее полусотней выводов? Избыточно — для ламеров. Ставить i 2 с расширитель портов? Дорого. Для мажоров. Тут на помощь из вековых глубин выплывает старая добрая дискретная логика. На этот раз нас выручит грошовый сдвиговый регистр. Возьму, для примера, 74HC164 он же, для любителей совковых трешевых микросхем в неубиваемом каменном корпусе, наш КM555ИР8 .
От МК, как видно, требуется только четыре выхода. Одним (RESET) мы сбрасываем состояние регистра. Из второго (Data) побитно вылазит байтик, а тактовый CLC обеспечивает продвижение битов по регистру. Самих регистров тут три. Они сцеплены паровозом. Когда переполняется первый, то биты из него вылазят во второй, потом в третий. Итого, 24 вывода.
Катоды диодов подключены все вместе через транзистор и как только будет слово мы подаем сигнал Ready и зажигаем всю эту ботву.
Наполнять регистр просто:
1) Поднимаем и держим RESET в 1
2) Выдаем первый (старший) бит на Data .
3) Опускаем в 0 и поднимаем в 1 тактовый выход. На восходящем фронте происходит занос в регистр и сдвиг всей цепочки на один шаг.
4) Повторить со второго пункта пока все биты не выдадим.
А для сброса достаточно уронить Reset в ноль на пару микросекунд.
Все просто:)
З.Ы.
Кружок на входе регистра означает, что вход инверсный. Т.е. подал ноль — сработало
Треугольник на входе показывает по какому фронту произойдет срабатывание. Запомнить просто: _/ \_ — это, типа, импульс. А треугольник, как стрелочка, указывает на нужный фронт. ->_/ \_ передний (восходящий фронт) и _/ \_
по
тактовому сигналу содержимое каждого предыдущего триггера переписывается в следующий по
порядку в цепочке триггер
.
Код, хранящийся в регистре, с каждым тактом сдвигается на один разряд в сторону старших разрядов или в сторону младших
разрядов, что и дало название регистрам данного типа.
В связи с названием направления сдвига в сдвиговых регистрах часто возникает путаница. Сдвиг бывает двух видов: вправо (основной режим, который есть у всех сдвиговых регистров ) и влево (этот режим есть только у некоторых, реверсивных сдвиговых регистров ). Названия эти отражают внутреннюю структуру регистров сдвига (рис. 8.14) и перезапись сигналов последовательно по цепочке триггеров. При этом триггеры, вполне естественно, нумеруются слева направо, например, от 0 до 7 (или от 1 до 8) для 8-разрядных регистров. В результате сдвиг информации регистром вправо представляет собой сдвиг в сторону разрядов, имеющих большие номера, а сдвиг информации регистром влево – это сдвиг в сторону разрядов, имеющих меньшие номера.
Однако, как известно, в любом двоичном числе слева расположены старшие разряды, а справа – младшие разряды. Поэтому сдвиг двоичного числа вправо будет сдвигом в сторону младших разрядов, а сдвиг влево – сдвигом в сторону старших разрядов. Это противоречие, не чей-то злой умысел, просто так исторически сложилось, и об этом надо помнить разработчику цифровой аппаратуры.
Рис.
8.14.
В стандартные серии цифровых микросхем входит несколько типов сдвиговых регистров , отличающихся возможными режимами работы, режимами записи, чтения и сдвига, а также типом выходных каскадов (2С или 3С). Большинство регистров сдвига имеет восемь разрядов. На рис. 8.15 представлены для примера четыре типа микросхем регистров сдвига .
Регистр ИР8 – наиболее простой из регистров сдвига . Он представляет собой 8-разрядную линию задержки, то есть имеет только один информационный вход, на который подается последовательная сдвигаемая информация (точнее, два входа, объединенных по функции 2И), и восемь параллельных выходов. Сдвиг в сторону выходов со старшими номерами осуществляется по переднему фронту тактового сигнала С. Имеется также вход сброса –R, по нулевому сигналу на котором все выходы регистра сбрасываются в нуль. Таблица истинности регистра ИР8 приведена в табл. 8.5 .
Рис. 8.15.
Входы | Выходы | ||||||
---|---|---|---|---|---|---|---|
-R | C | D1 | D2 | Q0 | Q1 | Q7 | |
0 | X | X | X | 0 | 0 | 0 | |
1 | 0 | X | X | Не меняются | |||
1 | 1 | Х | Х | Не меняются | |||
1 | 0 1 | 1 | 1 | 1 | Q0 | Q6 | |
1 | 0 1 | 0 | Х | 0 | Q0 | Q6 | |
1 | 0 1 | Х | 0 | 0 | Q0 | Q6 |
Регистр ИР9 выполняет функцию, обратную регистру ИР8. Если ИР8 преобразует входную последовательную информацию в выходную параллельную, то регистр ИР9 преобразует входную параллельную информацию в выходную последовательную. Однако суть сдвига не меняется, просто в ИР9 все внутренние триггеры имеют выведенные параллельные входы, и только один, последний триггер имеет выход (причем как прямой , так и инверсный). Запись входного кода в регистр производится по нулевому сигналу на входе -WR. Сдвиг осуществляется по положительному фронту на одном из двух тактовых входов С1 и С2, объединенных
Новостная лента
На сайте представлены примеры программирования, которые будут полезны как для опытного разработчика схем на микроконтроллерах, так и для новичка. Особо рассматривается программирование микроконтроллеров для начинающих пользователей. Программные примеры программирования разбиты на различные разделы. Основную массу составляют примеры программирования микроконтроллеров avr и микроконтроллеров microchip. Пользователю предлагается познакомиться с различными примерами программирования и различными средами программирования: MicroLab, AVRStudio, MikroC, FloweCode. Представлены схемы на микроконтроллерах ведущих производителей: PIC и AVR. Рассматривается огромное количество схем для начинающих разработчиков. Если Вы начинающий радиолюбитель, то для Вас мы приготовили раздел микроконтроллеры для начинающих. Современные микроконтроллеры относятся к классу микропроцессорных устройств. В основе принципа действия таких элементов лежит исполнение последовательного потока команд, называемого программой. Микроконтроллер получает программные команды в виде отдельных машинных кодов. Известно, что для создания и отладки программ, машинные коды подходят плохо, так как трудно воспринимаются человеком. Этот факт привел к появлению различных языков программирования и огромного количества различных компиляторов. В основе языков программирования микроконтроллеров лежат классические языки для компьютеров. Единственным отличием становится ориентированность на работу со встроенными периферийными устройствами. Архитектура микроконтроллеров требует, например, наличия битово-ориентированных команд. Последние выполняют работу с отдельными линиями портов ввода/вывода или флагами регистров. Подобные команды отсутствуют в большинстве крупных архитектур. Например, ядро ARM, активно применяемое в микроконтроллерах, не содержит битовых команд, вследствие чего разработчикам пришлось создавать специальные методы битового доступа.
Примеры программирования микроконтроллеров будут представлены на хорошо всем известном языке Си. А перед тем как постигать азы программирования микроконтроллеров и схемотехнику устройств на микроконтроллерах, авторам предлагается ещё раз вспомнить основы микропроцессорной техники, основы электроники, полупроводниковую электронику, аналоговую и цифровую схемотехнику, а так же азы аналогового и цифрового представления сигнала. Для тех, кому хочется получить новые знания в области современного программирования, можно будет познакомиться с графическим языком программирования LabView. Выбор языка программирования зависит от множества факторов. В первую очередь, типо решаемых задач и необходимым качеством кода. Если Вы ведёте разработку малых по объёму и несложных программ, то можно использовать практически любой язык. Для компактного кода подойдет Ассемблер, а если ставятся серьезные задачи, то альтернативы С/С++ практически нет. Также необходимо учитывать доступность компилятора. В итоге самым универсальным решением можно назвать связку Ассемблера и C/C++. Для простого освоения языков, можно воспользоваться примерами программ для микроконтроллера. Использование примеров программирования упростит и ускорит процесс освоения программирования микроконтроллеров. Схемы на микроконтроллерах позволят начинающим разработчикам освоить тонкости проектирования, моделирования и программирования микроконтроллеров. |
регистров сдвига в цифровой логике
Триггеры могут использоваться для хранения одного бита двоичных данных (1 или 0). Однако для хранения нескольких битов данных нам нужно несколько триггеров. Для хранения n бит данных необходимо подключить N триггеров. Регистр – это устройство, которое используется для хранения такой информации. Это группа последовательно соединенных триггеров, используемых для хранения нескольких бит данных.
Информация, хранящаяся в этих регистрах, может быть передана с помощью регистров сдвига .Регистр сдвига – это группа триггеров, используемых для хранения нескольких бит данных. Биты, хранящиеся в таких регистрах, могут перемещаться внутри регистров и в / из регистров, применяя тактовые импульсы. N-разрядный регистр сдвига может быть сформирован путем соединения n триггеров, каждый из которых хранит один бит данных.
Регистры, которые будут сдвигать биты влево, называются «регистрами сдвига влево».
Регистры, которые будут сдвигать биты вправо, называются «регистрами сдвига вправо».
Регистры сдвига в основном бывают 4-х типов. Это:
- Сдвиговый регистр с последовательным входом и выходом
- Сдвиговый регистр с последовательным входом и параллельным выходом Сдвиговый регистр
- с параллельным входом и выходом
- Сдвиговый регистр с параллельным входом и выходом
Сдвиговый регистр с последовательным входом и последовательным выходом (SISO) –
Регистр сдвига, который обеспечивает последовательный ввод (один бит за другим через одну строку данных) и производит последовательный вывод, известен как регистр сдвига Serial-In Serial-Out.Поскольку имеется только один выход, данные покидают регистр сдвига по одному биту в последовательной последовательности, отсюда и название сдвиговый регистр последовательного входа и выхода.
Логическая схема, приведенная ниже, показывает регистр сдвига с последовательным входом и выходом. Схема состоит из четырех D-триггеров, соединенных последовательно. Все эти триггеры синхронны друг с другом, поскольку к каждому триггеру применяется один и тот же тактовый сигнал.
Вышеупомянутая схема является примером сдвигового правого регистра, принимающего последовательные данные, вводимые с левой стороны триггера.Основное использование SISO – действовать как элемент задержки.
Регистр сдвига с последовательным входом и параллельным выходом (SIPO) –
Сдвиговый регистр, который обеспечивает последовательный ввод (один бит за другим через одну линию данных) и производит параллельный вывод, известен как последовательный вход и параллельный выход. регистр сдвига.
В приведенной ниже логической схеме показан сдвиговый регистр с последовательным параллельным выходом. Схема состоит из четырех соединенных D-триггеров. Сигнал сброса (CLR) подключается в дополнение к тактовому сигналу ко всем 4 триггерам, чтобы сбросить их.Выход первого триггера соединен со входом следующего триггера и так далее. Все эти триггеры синхронны друг с другом, поскольку к каждому триггеру применяется один и тот же тактовый сигнал.
Вышеупомянутая схема является примером сдвигового правого регистра, принимающего последовательные данные, вводимые с левой стороны триггера, и производящего параллельный вывод. Они используются в линиях связи, где требуется демультиплексирование линии данных на несколько параллельных линий, поскольку основное использование регистра SIPO заключается в преобразовании последовательных данных в параллельные данные.
Сдвиговый регистр с параллельным входом и последовательным выходом (PISO) –
Сдвиговый регистр, который обеспечивает параллельный ввод (данные передаются отдельно для каждого триггера и одновременно) и производит последовательный выход, известный как параллельный вход Регистр сдвига с последовательным выходом.
В приведенной ниже логической схеме показан сдвиговый регистр с параллельным входом и последовательным выходом. Схема состоит из четырех соединенных D-триггеров. Вход часов напрямую подключен ко всем триггерам, но входные данные подключаются индивидуально к каждому триггеру через мультиплексор на входе каждого триггера.Выход предыдущего триггера и параллельный ввод данных подключаются к входу мультиплексора, а выход мультиплексора подключаются к следующему триггеру. Все эти триггеры синхронны друг с другом, поскольку к каждому триггеру применяется один и тот же тактовый сигнал.
Регистр сдвига «Параллельно-последовательный выход» (PISO), используемый для преобразования параллельных данных в последовательные.
Регистр сдвига с параллельным входом и выходом с параллельным выходом (PIPO) –
Сдвиговый регистр, который обеспечивает параллельный ввод (данные передаются отдельно для каждого триггера и одновременно), а также производит параллельный выход, известен как В сдвиговом регистре с параллельным выходом.
В приведенной ниже логической схеме показан сдвиговый регистр с параллельным выходом. Схема состоит из четырех соединенных D-триггеров. Сигнал очистки (CLR) и синхронизирующие сигналы подключены ко всем 4 триггерам. В регистрах этого типа нет никаких взаимосвязей между отдельными триггерами, поскольку не требуется последовательного смещения данных. Данные предоставляются в качестве входных данных отдельно для каждого триггера, и таким же образом выходные данные также собираются индивидуально для каждого триггера.
Сдвиговый регистр с параллельным выходом (PIPO) используется как временное запоминающее устройство и, как сдвиговый регистр SISO, действует как элемент задержки.
Регистр двунаправленного сдвига –
Если мы сдвигаем двоичное число влево на одну позицию, это эквивалентно умножению числа на 2, а если мы сдвигаем двоичное число вправо на одну позицию, это эквивалентно делению числа число на 2. Для выполнения этих операций нам нужен регистр, который может сдвигать данные в любом направлении.
Регистры двунаправленного сдвига – это регистры, которые могут сдвигать данные вправо или влево в зависимости от выбранного режима. Если выбран режим 1 (высокий), данные будут сдвинуты вправо, а если выбран режим 0 (низкий), данные будут сдвинуты влево.
В приведенной ниже логической схеме показан двунаправленный сдвиговый регистр. Схема состоит из четырех соединенных D-триггеров. Входные данные подключаются к двум концам схемы и в зависимости от выбранного режима только один, а вентиль находится в активном состоянии.
Счетчик регистров сдвига –
Счетчики регистров сдвига – это регистры сдвига, в которых выходы соединяются обратно со входами для создания определенных последовательностей. В основном они бывают двух типов:
- Счетчик звонков –
Счетчик звонков – это в основном счетчик регистра сдвига, в котором выход первого триггера соединен со следующим триггером и так далее, а выход последнего. триггер снова возвращается на вход первого триггера, таким образом называя счетчик кольца.Шаблон данных в регистре сдвига будет циркулировать, пока применяются тактовые импульсы.
В приведенной ниже логической схеме показан счетчик звонков. Схема состоит из четырех соединенных D-триггеров. Поскольку схема состоит из четырех триггеров, шаблон данных будет повторяться после каждых четырех тактовых импульсов, как показано в таблице истинности ниже:
Счетчик звонков обычно используется, поскольку он самодекодируется. Никакой дополнительной схемы декодирования не требуется, чтобы определить, в каком состоянии находится счетчик.
- Счетчик Джонсона –
Счетчик Джонсона – это в основном счетчик регистра сдвига, в котором выход первого триггера соединен со следующим триггером и так далее, а инвертированный выход последнего триггера снова возвращается. ко входу первого триггера. Они также известны как счетчики с витыми кольцами.В приведенной ниже логической схеме показан счетчик Джонсона. Схема состоит из четырех соединенных D-триггеров. N-ступенчатый счетчик Джонсона дает счетную последовательность из 2n различных состояний, поэтому также известен как счетчик mod-2n.Поскольку схема состоит из четырех триггеров, шаблон данных будет повторяться каждые восемь тактовых импульсов, как показано в таблице истинности ниже:
Основным преимуществом счетчика Джонсона является то, что ему требуется всего n триггеров по сравнению с кольцевой счетчик для передачи заданных данных для генерации последовательности из 2n состояний.
Применение регистров сдвига –
- Регистры сдвига используются для временного хранения данных.
- Регистры сдвига также используются для передачи и обработки данных.
- Регистры сдвига с последовательным входом, последовательным выходом и параллельным входом-параллельным выходом используются для создания временной задержки для цифровых схем.
- Регистр сдвига с последовательным входом и параллельным выходом используется для преобразования последовательных данных в параллельные данные, поэтому они используются в линиях связи, где требуется демультиплексирование линии данных в несколько параллельных линий.
- Регистр сдвига «Параллельно-последовательный выход», используемый для преобразования параллельных данных в последовательные.
Справка –
Регистры – ее.usyd.edu.au
Глоссарий электронных и технических терминов, микросхема регистра сдвига IC
Словарь электронных терминов
“A”
“B”
“C”,
“D”,
“E”,
“F”,
“ГРАММ”,
“ЧАС”,
“Я”,
“J”,
“К”,
“L”,
«М»,
«Н»,
“О”,
“П”,
“Q”,
“Р”,
“S”,
“Т”,
“U”,
“V”,
“W”,
“ИКС”,
“Y”,
“Z”
Регистр сдвига работает, сдвигая данные вправо с каждым тактовым импульсом. Независимо от того, загружаются ли данные сразу через параллельную загрузку или по одному разряду через последовательный ввод.Каждый тактовый импульс сдвигает данные в первый триггер, данные, которые были в первом триггере, перемещаются во второй триггер и так далее. В регистре сдвига последовательной загрузки каждый триггер начинается с загруженного 0. Регистр сдвига параллельной загрузки может содержать все, что когда-либо загружалось в регистр при активации контакта нагрузки. Независимо от того, что предварительно загружено, данные сдвигаются вправо с каждым тактовым импульсом.
Чип регистра сдвига
Микросхема 4-битного регистра сдвига IC. Схема 4-битного последовательного выходного регистра сдвига показана на рисунке выше. Обратите внимание, что регистр сдвига может быть предварительно загружен [предварительно установлен] данными [регистр параллельного сдвига]. Однако, как показано ниже, 8-битная версия встречается немного чаще.
Регистр сдвига по функциям:
54164 ; 8-битный регистр сдвига с последовательным входом / параллельным выходом [Схема ниже]
54165 ; 8-битный регистр сдвига с параллельным входом / последовательным выходом
54166 ; 8-битный регистр сдвига с параллельным входом / последовательным выходом
54194 ; 4-битный двунаправленный универсальный регистр сдвига
54299 ; Универсальный регистр сдвига / хранения с 8 входами с общими выводами параллельного ввода / вывода и асинхронным сбросом
54595 ; 8-битный регистр сдвига с выходными защелками
54597 ; 8-битный регистр сдвига со входной памятью
Военные версии 54xx показаны выше, но компоненты доступны в коммерческой версии 74xx.IC Промышленные диапазоны температур Промышленные диапазоны температур; по префиксу семейства IC.
Регистр сдвига 74HC595 показан справа, установленный на печатной плате. Другими словами, сдвиговый регистр High Speed CMOS [HC] 595 работает в промышленном температурном диапазоне от 0 до 70 градусов по Цельсию.
8-битный регистр сдвига IC
На приведенной выше схеме регистра сдвига показан 8-битный регистр сдвига, имеющий последовательный вход и параллельный выход [параллельный регистр сдвига].Схема представляет собой одну ИС 74164 регистра сдвига. Устройство выпускается в стандартном 14-контактном корпусе Dual In-Line Package [DIP] или в бессвинцовом Chip Carrier [LCCC]. См. Вывод IC внизу справа.
КМОП-устройства; Регистры сдвига по функциям
4006 ; 18-ступенчатый регистр статического сдвига
4014 ; 8-ступенчатый регистр статического сдвига
4015 ; Двойной 4-ступенчатый регистр статического сдвига
4019 ; 4-битный двунаправленный универсальный регистр сдвига
4021 ; 8-ступенчатый регистр статического сдвига
4031 ; 64-ступенчатый регистр статического сдвига
4034 ; 8-ступенчатая статическая двунаправленная параллельная / последовательная входная / выходная шина Регистр
4035 ; 4-ступенчатый регистр сдвига с параллельным входом и выходом
4094 ; 8-ступенчатый регистр
8-битный регистр сдвига IC
На приведенной выше схеме регистра сдвига показан 8-битный регистр сдвига, имеющий либо последовательный вход, либо параллельный вход и параллельный выход.Аналогичен 74165 или 74LS165.
Временная диаграмма регистра сдвига
Как работают регистры сдвига – Основы схемотехники
В этом руководстве мы рассмотрим регистры сдвига SIPO и PISO (что означает «Последовательный параллельный выход» и «Параллельный вход – последовательный выход соответственно) и более подробно рассмотрим, как они работают. Для примера проекта мы подключим 74HC165 (PISO) для синтеза низкочастотной синусоидальной волны. Понимание некоторых побитовых манипуляций с Arduino окажется полезным для этого проекта.Вы можете проверить это здесь. Также есть очень похожая статья о регистрах сдвига, показывающая, как использовать здесь как SIPO, так и PISO.
Понимание того, как работают регистры сдвига
Сердце или «внутренности» сдвигового регистра основано на триггере. Триггер – это ячейка памяти или бистабильная ячейка, которая может существовать в двух состояниях, либо 1, либо 0. Как только вы устанавливаете его в определенное состояние, он сохраняет его в таком состоянии до тех пор, пока следующий тактовый импульс не установит его в другое состояние. Регистр сдвига состоит из нескольких триггеров, соединенных вместе по-разному в зависимости от цели.
Рисунок 1. БистабильныйНа рисунке 1 показаны два транзистора, которые соединены поперечной связью, так что если низкий уровень посылается на базу Q1 через переключатель установки, он выключается, вызывая высокий уровень на его коллекторе, что переводит Q2 в состояние «включено». Когда коллектор Q2 становится низким, он усиливает минимум на базе Q1. Это состояние будет оставаться статическим до тех пор, пока второй импульс заземления не прибудет на базу Q2, «перевернув» его снова и включив Q1, поэтому это называется триггером. Конечно, для того, чтобы это работало, должна быть дополнительная логика управления.Это также известно как бистабильный мультивибратор. Для первых регистров сдвига, упомянутых выше, два транзистора были бы триодными лампами.
Рис. 2. Вьетнамки D-типаНа рисунке 2 мы видим реальный триггер с логическим вентилем, который имеет вывод данных, на котором он считывает данные как 0 или 1, и тактовый вывод, который синхронизирует это состояние данных с триггером, заставляя его становиться доступен на выходном контакте (обычно называется Q).
Эти триггеры D-типа являются широко используемыми типами триггеров (4042, 4013, 7473).Каждый раз, когда приходит тактовый импульс, он копирует состояние всего, что находится на выводе D, на вывод Q.
Рисунок 3. Сдвиговый регистр SIPOНа рисунке 3 показана основа сдвигового регистра с последовательным параллельным выходом. Это цепочка триггеров D-типа, поэтому выход каждого из них служит входом следующего. Поскольку все они синхронизируются одновременно, состояние входа на D1 будет синхронизироваться или перемещаться, пока не появится на последнем выходе Q. Пока это происходит, параллельная версия этих данных представляется на всех выходах Q в виде полубайта (полубайт – это полбайта).
Рисунок 4. Сдвиговый регистр PISOНа рисунке 4 показано обратное. Здесь параллельный полубайт загружается через предустановленный разрешающий импульс в триггеры. Опять же, тактовый сигнал последовательно направляет их до конца, что приводит к параллельному преобразованию в последовательный. И PISO, и SIPO составили бы основу для канала связи, если бы последовательный вход и последовательный выход были соединены друг с другом. Поскольку для изменения каждого триггера требуется два полупериода часов, он фактически делится на два (помните, когда мы обсуждали сдвиг вправо и сдвиг влево >> << в побитовом руководстве).Итак, на рисунке выше, поскольку каждый триггер делится на два, а у нас есть 4, тогда эта схема будет делиться на 16.
Генератор синусоидальной волны
В разделе Arduino есть и другие примеры проектов сдвиговых регистров.
Создание генераторов синусоидальной, треугольной и прямоугольной формы обычно выполняется с помощью генераторов, использующих R и C в качестве элементов синхронизации. Это хорошо работает со звуком и более высокими частотами. Если вам нужно что-то намного более низкое, например, разработать генератор морских волн для вашего бассейна, и вам нужна частота менее 1 Гц, может быть, даже 1/10 Гц, вы получите огромные значения в RC-цепи (либо десятки мегабайт или тысяч микрофарад).
Схема ниже очень стабильна, поскольку она не зависит от каких-либо значений RC, а частота пропорциональна только тактовой частоте. В этом примере это получено из Arduino, поэтому оно является точным и обычно лучше, чем 1 часть из 10 6 .
Рисунок 6. Генератор синусоидальной волны.Так как это работает? Младший бит синхронизируется через 8-битный регистр сдвига. Когда каждый выход Q становится низким, он пропускает ток через резистор на этом выводе, образуя делитель потенциала и создавая напряжение, которое зависит от номинала резистора.Если они рассчитаны правильно, они образуют точку на кривой синусоиды. Поскольку на приведенной ниже иллюстрации (см. Рисунок 7.1) всего восемь (8) точек, это выглядит немного грубо. Но если мы добавим конденсатор (или, еще лучше, правильный фильтр нижних частот), квадратные гармоники будут удалены, создавая правдоподобную низкочастотную синусоидальную волну. Вот веб-сайт, на котором показана формула для расчета резисторов, если вы хотите использовать все 16 бит.
Рисунок 7.1 Волновые формы выходного сигнала регистра сдвига Рисунок 7.2 формы сигнала на выходе регистра сдвигаПодключение PISO и Arduino
Эта схема во многом такая же, как и в секции сдвигового регистра Arduino, в которой используются светодиоды (см. Здесь). Но на этот раз светодиоды заменены резисторами. Забавно выглядящая штука рядом с резисторами – это просто заглушка, чтобы соединить концы вместе.
Применение и тестирование
Эта установка была способна генерировать стабильные по частоте синусоидальные волны на частоте ниже 1 Гц. Если вы хотите пойти дальше, используйте все 16 бит 74HC595 и достойный двухступенчатый фильтр нижних частот.Это создает синусоидальную волну с шагом 1/16. Необработанная форма волны имеет только 6% искажений, но с фильтром она будет намного лучше при 1%. В этой схеме с восемью (8) ступенями и простым конденсатором искажение составляло всего 6%.
ECE 394 Лаборатория 4: Регистры сдвига
1. Введение
Рис. 1. 4-битный регистр сдвига.Регистр сдвига – это n-битовый регистр с возможностью сдвига хранимых данных на одну позицию в каждом тактовом импульсе. Логическая конфигурация регистра сдвига состоит из цепочки триггеров, соединенных каскадом, причем выход одного триггера соединен со входом следующего триггера.Все триггеры получают общий тактовый импульс, который вызывает переход от одного каскада к другому. На рис. 1 показана простая конфигурация регистра сдвига. Новый бит, который должен быть сдвинут на один конец, должен быть указан, и бит, сдвинутый с другого конца, теряется, если он не сохранен извне. Хотя на рис. 1 показан регистр сдвига вправо, очевидно, что тот же регистр можно использовать для сдвига влево, просто изменив значение битов на противоположное. Большинство регистров сдвига имеют возможность сдвига только в одном направлении, но некоторые имеют управляющий вход, который позволяет задавать сдвиг влево или вправо для каждого тактового сигнала.
Одним из способов загрузки n бит данных в цепочку триггеров является загрузка данных по одному биту за каждый тактовый цикл с использованием последовательного входа. Некоторые регистры сдвига также имеют параллельные входы, которые можно использовать для загрузки всех n бит за один такт. Выход сдвигового регистра можно наблюдать по одному биту на последовательном выходе, но некоторые регистры сдвига также имеют параллельные выходы для одновременного наблюдения за всеми n битами.
Регистры сдвигаклассифицируются по трем основным соображениям: метод обработки данных (последовательный вход, последовательный выход, последовательный вход, параллельный выход и параллельный вход, последовательный выход), направление движения данных (сдвиг вправо, сдвиг левый и двунаправленный), а также их длина в битах. Одним из важных применений схем сдвигового регистра является последовательное вычисление. По сравнению с параллельным вычислением, когда все биты в слове обрабатываются в одном цикле, последовательные вычисления обрабатывают слова одним битом за цикл.Следовательно, последовательные вычисления медленнее, но они имеют то преимущество, что для них требуется меньше оборудования и проводки. В качестве примера в этом эксперименте будет построен последовательный сумматор.
2. Цели
Студенты должны понимать различные методы обработки данных в смену. регистры и их использование.
3. Эксперимент
Рис. 2. Генератор псевдослучайной двоичной последовательности.3.1. 4-битный регистр сдвига
Используйте два двойных триггера 7474 для подключения сдвига с последовательным входом и параллельным выходом. зарегистрировать, как показано на рис.1. Подключите L1 – L4 к четырем светодиодам (с токоограничивающими резисторами), SW1. а также SW2 на переключатели, а CLK на генератор. Первоначально установите SW2 на логику 1. Переключить SW2, находящийся на логической 1, сбрасывает все триггеры. Теперь установите SW1 на логику. 1 и SW2 на логический 0. Нажмите кнопку генератора несколько раз, чтобы в сдвиговый регистр нужно сдвинуть больше логической 1. Измените SW1 на логический 0 и повторить эксперимент еще раз.
3.2. Генератор псевдослучайных последовательностей
Теперь используйте приведенную выше схему для создания генератора псевдослучайной двоичной последовательности. как показано на рис. 2. Этот генератор двоичной последовательности будет отображать случайный вывод (повторяется каждые 2 n –1 бит, где n – количество триггеры, используемые в регистре сдвига). IC 7486 обеспечивает Исключающее ИЛИ необходимо в схеме. Чтобы запустить генератор последовательности, установите начальное состояние сдвигового регистра на 0001, установив переключатель SW1 к логике 1.Затем измените SW1 на логический 0, так как это освободит управляющий вход. Теперь подайте заявку часы и записать результат в таблицу. Показывает ли вывод случайность? Выход повторяется после 15 импульсов?
3.3. Серийный сумматор
Последовательный сумматор добавляет биты, последовательно складывает пару двоичных чисел с помощью простого полного сумматора.Вывод полного сумматора передается в D-триггер, а выход этого триггера переноса затем используется в качестве входного переноса для следующей пары значащих битов. На рис. 3 показан пример последовательного сложения.
Рис. 3 Последовательное добавление.
На рис. 4. показана блок-схема последовательного сумматора. Два двоичных числа, которые должны быть добавлены последовательно, хранятся в двух регистрах сдвига (с использованием двух 8-битных регистров сдвига с последовательным входом и параллельным выходом 74164).Биты добавляются по одной паре через единственный полный сумматор (такой как в эксперименте 2). Вывод полного сумматора передается в D-триггер. Выход этого триггера переноса затем используется как входной перенос для следующей пары значащих битов. Сумма, выводимая полным сумматором, передается в регистр A, когда содержимое регистра сдвигается.
Для выполнения сложения используются следующие шаги.
1.Сдвинуть первое 8-битное augend в A (не забудьте сначала сдвинуть LSB) и добавить в B. Это можно сделать, выполнив следующие шаги:
- Очистить регистры A и B и триггер D. Регистры и триггер имеют вход clear , который можно использовать для выполнения этой задачи.
- Сдвинуть augend через последовательный вход. Для 8-битных регистров один бит будет сдвигаться в регистр B для каждого из восьми тактов, сначала младший бит.(Поскольку регистры A и B изначально содержат все нули, выход полного сумматора будет равен 0 для выходов суммы и переноса в течение этих тактовых циклов. Вы можете либо загрузить эти нули в регистр A, либо просто оставить A без изменений. В любом случае , после восьми тактов регистр B будет содержать один операнд, а регистр A будет содержать все нули.
- Сдвинуть слагаемое через последовательный вход. Фактически это две задачи, выполняемые одновременно. Пока слагаемое сдвигается в регистр B, дополнительное сдвигается из B в регистр A.Чтобы понять, как это происходит, вспомним, что регистр A содержит все нули. Какой бы бит ни сдвигался из B, он добавляется к нулю в младшем бите A. Сумма будет просто младшим значащим битом B, который сдвигается в самую старшую позицию регистра A. После восьми тактов. , регистр A содержит дополнение, а регистр B – дополнение.
2. Очистите D-триггер и запустите сумматор на восемь циклов, чтобы получить сумма.
Рис. 4. Блок-схема последовательного сумматора.
В таблице 1 показаны значения в регистрах A и B при сложении значений данных 01011101 и 10011110.
Таблица 1: След последовательного сумматора | ||||
---|---|---|---|---|
Последовательный ввод | Регистр A | Регистр B | D FF | Комментарии |
X | 00000000 | 00000000 | 0 | Прозрачный A, B, D |
1 | 00000000 | 10000000 | 0 | |
0 | 00000000 | 01000000 | 0 | |
1 | 00000000 | 10100000 | 0 | |
1 | 00000000 | 11010000 | 0 | |
1 | 00000000 | 11101000 | 0 | |
0 | 00000000 | 01110100 | 0 | |
1 | 00000000 | 10111010 | 0 | |
0 | 00000000 | 01011101 | 0 | Augend in B; 0 в A |
0 | 10000000 | 00101110 | 0 | 0 + 1 = 1 |
1 | 01000000 | 10010111 | 0 | |
1 | 10100000 | 11001011 | 0 | |
1 | 11010000 | 11100101 | 0 | |
1 | 11101000 | 11110010 | 0 | |
0 | 01110100 | 01111001 | 0 | |
0 | 10111010 | 00111100 | 0 | |
1 | 01011101 | 10011110 | 0 | Augend in A; Приложение в B |
X | 10101110 | Х1001111 | 0 | C = 0, S = 1 |
X | 11010111 | XX100111 | 0 | C = 0, S = 1 |
X | 01101011 | XXX10011 | 1 | C = 1, S = 0 |
X | 10110101 | XXXX1001 | 1 | C = 1, S = 1 |
X | 11011010 | XXXXX100 | 1 | C = 1, S = 1 |
X | 11101101 | XXXXXX10 | 0 | C = 0, S = 1 |
X | 11110110 | XXXXXXX1 | 0 | C = 0, S = 1 |
X | 11111011 | XXXXXXXX | 0 | Сумма в А |
4.Prelab
- Покажите последовательность, сгенерированную генератором псевдослучайной последовательности.
- Изучите работу 74164.
- Нарисуйте принципиальную схему последовательного сумматора, показывающую соединения. для всех компонентов.
- Какова максимальная тактовая частота схемы сумматора части 3.3? Предположим наихудшие задержки и логику типа 74LSXX.
5. Необходимое оборудование и запчасти.
- Протоборд
- Два триггера TTL D (7474)
- Один TTL NAND (7400)
- Один инвертор TTL (7404)
- Один TTL XOR (7486)
- Два регистра сдвига TTL (74164)
- Восемь светодиодов и ограничивающие резисторы
Группа триггеров, которая используется для хранения нескольких битов данных, и данные перемещаются из одного триггера в другой, известна как регистр сдвига .Биты, хранящиеся в регистрах, смещаются, когда тактовый импульс применяется внутри и внутри или за пределами регистров. Чтобы сформировать n-битный регистр сдвига, мы должны подключить n триггеров. Итак, количество битов двоичного числа прямо пропорционально количеству триггеров. Триггеры соединены таким образом, что выход первого триггера становится входом другого триггера. Регистр сдвига может сдвигать биты влево или вправо.Регистр сдвига , который сдвигает бит влево, известен как «левый регистр сдвига» , и он сдвигает бит вправо, известный как «Правый левый регистр» . Регистр сдвига подразделяется на следующие типы:
Последовательный вход Последовательный выходВ режиме «Последовательный ввод и вывод данных» данные последовательно сдвигаются на «IN» или «OUT».В SISO один бит за раз сдвигается вправо или влево под управлением тактовой частоты. Изначально все триггеры установлены в состояние «сброса», т.е. Y 3 = Y 2 = Y 1 = Y 0 = 0. Если мы передаем двоичное число 1111, младший бит номер сначала применяется к биту Din. Вход D3 третьего триггера, то есть FF-3, напрямую подключен к входу последовательных данных D3. Выход Y 3 передается на вход данных d 2 следующего триггера.Этот процесс остается таким же для остальных шлепанцев. Блок-схема «Serial IN Serial OUT» приведена ниже. Блок-схема:ЭксплуатацияКогда приложение тактового сигнала отключено, выходы Y 3 Y 2 Y 1 Y 0 = 0000. Младший бит числа передается на вход данных D в , т. Е. D 3 . Мы применим часы, и на этот раз значение D 3 равно 1.Устанавливается первый триггер, то есть FF-3, и слово сохраняется в регистре на первом заднем фронте тактового сигнала. Теперь сохраненное слово – 1000. Следующий бит двоичного числа, то есть 1, передается на вход данных D 2 . Устанавливается второй триггер, то есть FF-2, и слово сохраняется при достижении следующего отрицательного фронта тактового сигнала. Сохраненное слово изменяется на 1100. Следующий бит двоичного числа, то есть 1, передается на вход данных D 1 , и применяется синхронизация.Устанавливается третий триггер, то есть FF-1, и слово сохраняется, когда отрицательный фронт тактового сигнала снова достигает значения. Сохраненное слово изменится на 1110. Аналогичным образом последний бит двоичного числа, то есть 1, передается на вход данных D 0 , и применяется синхронизация. Устанавливается последний триггер, то есть FF-0, и слово сохраняется, когда приходит отрицательный фронт часов. Сохраненное слово изменится на 1111. Таблица истинностиФормы сигналовПоследовательный вход Параллельный выходВ регистре сдвига «Serial IN Parallel OUT» данные последовательно передаются на триггер, а выходы выбираются параллельно.Данные передаются в регистр бит за битом, и выход остается заблокированным до тех пор, пока данные не будут переданы на вход данных. Когда данные передаются в регистр, выходы включаются, и триггеры содержат свое возвращаемое значение .Ниже представлена блок-схема 4-битного последовательного порта в сдвиговом регистре с параллельным выходом. Схема с четырьмя D-триггерами содержит сигнал сброса и тактовый сигнал для сброса этих четырех триггеров. В SIPO вход второго триггера является выходом первого триггера и так далее.Один и тот же тактовый сигнал применяется к каждому триггеру, поскольку триггеры синхронизируют друг друга. Параллельные выходы используются для связи. Блок-схемаПараллельный вход Последовательный выходВ регистре «Parallel IN Serial OUT» данные вводятся параллельно, а результат поступает последовательно. Четырехбитный регистр «Parallel IN Serial OUT» разработан ниже. Вход триггера – это выход предыдущего триггера.Вход и выходы подключены через комбинационную схему. Через эту комбинационную схему проходят двоичный вход B 0 , B 1 , B 2 , B 3 . Режим переключения и режим нагрузки – это два режима, в которых работает схема «PISO» . Режим нагрузкиБиты B 0 , B 1 , B 2 и B 3 передаются в соответствующие триггеры, когда активны второй, четвертый и шестой вентили «И».Эти вентили активны, когда полоса сдвига или нагрузки установлена на 0. Двоичные входы B0, B1, B2 и B3 будут загружены в соответствующие триггеры, когда фронт тактовой частоты низкий. Таким образом, происходит параллельная загрузка. Режим переключенияВторой, четвертый и шестой вентили неактивны, когда линия загрузки и сдвига установлена на 0. Таким образом, мы не можем загружать данные параллельно. В это время будут активированы первый, третий и пятый вентили, и сдвиг данных будет происходить слева направо.Таким образом, выполняется операция «Параллельный вход и последовательный выход» . Блок-схемаПараллельный вход Параллельный выходВ “Parallel IN Parallel OUT” входы и выходы поступают в регистр параллельно. Входы A 0 , A 1 , A 2 и A 3 , напрямую передаются на входы данных D 0 , D 1 , D 2 и D 3 соответствующего триггера.Биты двоичного входа загружаются в триггеры при подаче отрицательного фронта тактовой частоты. Тактовый импульс необходим для загрузки всех битов. На выходе появляются загруженные биты. Блок-схемаРегистр двунаправленного сдвигаДвоичное число после сдвига каждого бита числа влево на одну позицию будет эквивалентно числу, полученному путем умножения исходного числа на 2. Таким же образом двоичное число после сдвига каждого бита числа вправо на одну позицию будет эквивалентно числу, полученному путем деления исходного числа на 2. Для выполнения операции умножения и деления с использованием сдвигового регистра требуется, чтобы данные перемещались в обоих направлениях, то есть влево или вправо в регистре. Такие регистры называются «двунаправленным» регистром сдвига . Ниже приведена схема 4-битного «двунаправленного» регистра сдвига , где D R – это «последовательный ввод данных сдвига вправо» , D L – «ввод данных сдвига влево» , а M – это «вход выбора режима» . Блок-схемаОперации1) Сдвиг вправо (M = 1)
2) Сдвиг влево (M = 0)
Универсальный регистр сдвигаРегистр, в котором данные сдвигаются в одном направлении, известен как «однонаправленный» регистр .Регистр, в котором данные сдвигаются в обоих направлениях, известен как «двунаправленный» регистр сдвига . “Универсальный” сдвиговый регистр – это регистр особого типа, который может загружать данные параллельно и сдвигать эти данные в обоих направлениях, то есть вправо и влево. Вход M, то есть вход управления режимом, устанавливается в 1 для выполнения операции параллельной загрузки. Если этот вход установлен на 0, то выполняется операция последовательного переключения. Если соединить вход управления режимами с землей, то схема будет работать как «двунаправленный» регистр .Схема универсального сдвигового регистра приведена ниже. Когда ввод передается на последовательный ввод , регистр выполняет операцию «последовательного влево». Когда вход передается на вход D , регистр выполняет последовательную правую операцию. Блок-схема |
74AHC164; 74AHCT164 | 8-битный регистр сдвига с последовательным входом / параллельным выходом | ACT | |
74AHC164BQ | 8-битный регистр сдвига с последовательным входом / параллельным выходом | Производство | |
74AHC164D | 8-битный регистр сдвига с последовательным входом / параллельным выходом | Производство | |
74AHC164PW | 8-битный регистр сдвига с последовательным входом / параллельным выходом | Производство | |
74AHCT164BQ | 8-битный регистр сдвига с последовательным входом / параллельным выходом | Производство | |
74AHCT164D | 8-битный регистр сдвига с последовательным входом / параллельным выходом | Производство | |
74AHCT164PW | 8-битный регистр сдвига с последовательным входом / параллельным выходом | Производство | |
74AHC594; 74AHCT594 | 8-битный регистр сдвига с выходным регистром | ACT | |
74AHC594BQ | 8-битный регистр сдвига с выходным регистром | Производство | |
74AHC594D | 8-битный регистр сдвига с выходным регистром | Производство | |
74AHC594DB | 8-битный регистр сдвига с выходным регистром | Не для дизайна | |
74AHC594PW | 8-битный регистр сдвига с выходным регистром | Производство | |
74AHCT594BQ | 8-битный регистр сдвига с выходным регистром | Производство | |
74AHCT594D | 8-битный регистр сдвига с выходным регистром | Производство | |
74AHCT594DB | 8-битный регистр сдвига с выходным регистром | Не для дизайна | |
74AHCT594PW | 8-битный регистр сдвига с выходным регистром | Производство | |
74AHC595; 74AHCT595 | 8-битный регистр сдвига с последовательным входом / последовательным выходом или параллельным выходом с выходными защелками | ACT | |
74AHC595BQ | 8-битный регистр сдвига с последовательным входом / последовательным выходом или параллельным выходом с выходными защелками | Производство | |
74AHC595D | 8-битный регистр сдвига с последовательным входом / последовательным выходом или параллельным выходом с выходными защелками | Производство | |
74AHC595PW | 8-битный регистр сдвига с последовательным входом / последовательным выходом или параллельным выходом с выходными защелками | Производство | |
74AHCT595BQ | 8-битный регистр сдвига с последовательным входом / последовательным выходом или параллельным выходом с выходными защелками | Производство | |
74AHCT595D | 8-битный регистр сдвига с последовательным входом / последовательным выходом или параллельным выходом с выходными защелками | Производство | |
74AHCT595PW | 8-битный регистр сдвига с последовательным входом / последовательным выходом или параллельным выходом с выходными защелками | Производство | |
74HC164; 74HCT164 | 8-битный регистр сдвига с последовательным входом и параллельным выходом | ACT | |
74HC164BQ | 8-битный регистр сдвига с последовательным входом и параллельным выходом | Производство | |
74HC164D | 8-битный регистр сдвига с последовательным входом и параллельным выходом | Производство | |
74HC164DB | 8-битный регистр сдвига с последовательным входом и параллельным выходом | Не для дизайна | |
74HC164PW | 8-битный регистр сдвига с последовательным входом и параллельным выходом | Производство | |
74HCT164BQ | 8-битный регистр сдвига с последовательным входом и параллельным выходом | Производство | |
74HCT164D | 8-битный регистр сдвига с последовательным входом и параллельным выходом | Производство | |
74HCT164DB | 8-битный регистр сдвига с последовательным входом и параллельным выходом | Не для дизайна | |
74HCT164PW | 8-битный регистр сдвига с последовательным входом и параллельным выходом | Производство | |
74HC165; 74HCT165 | 8-битный регистр сдвига с параллельным входом / последовательным выходом | ACT | |
74HC165BQ | 8-битный регистр сдвига с параллельным входом / последовательным выходом | Производство | |
74HC165D | 8-битный регистр сдвига с параллельным входом / последовательным выходом | Производство | |
74HC165DB | 8-битный регистр сдвига с параллельным входом / последовательным выходом | Не для дизайна | |
74HC165PW | 8-битный регистр сдвига с параллельным входом / последовательным выходом | Производство | |
74HCT165BQ | 8-битный регистр сдвига с параллельным входом / последовательным выходом | Производство | |
74HCT165D | 8-битный регистр сдвига с параллельным входом / последовательным выходом | Производство | |
74HCT165DB | 8-битный регистр сдвига с параллельным входом / последовательным выходом | Не для дизайна | |
74HCT165PW | 8-битный регистр сдвига с параллельным входом / последовательным выходом | Производство | |
74HC166; 74HCT166 | 8-битный регистр сдвига с параллельным входом / последовательным выходом | ACT | |
74HC166D | 8-битный регистр сдвига с параллельным входом / последовательным выходом | Производство | |
74HC166DB | 8-битный регистр сдвига с параллельным входом / последовательным выходом | Не для дизайна | |
74HC166PW | 8-битный регистр сдвига с параллельным входом / последовательным выходом | Производство | |
74HCT166D | 8-битный регистр сдвига с параллельным входом / последовательным выходом | Производство | |
74HC299 | 8-битный универсальный регистр сдвига; 3-х состояние | ACT | |
74HC299D | 8-битный универсальный регистр сдвига; 3-х состояние | Производство | |
74HC4094; 74HCT4094 | 8-ступенчатый регистр шины сдвига и запоминания | ACT | |
74HC4094D | 8-ступенчатый регистр шины сдвига и запоминания | Производство | |
74HC4094DB | 8-ступенчатый регистр шины сдвига и запоминания | Не для дизайна | |
74HC4094PW | 8-ступенчатый регистр шины сдвига и запоминания | Производство | |
74HCT4094D | 8-ступенчатый регистр шины сдвига и запоминания | Производство | |
74HCT4094DB | 8-ступенчатый регистр шины сдвига и запоминания | Не для дизайна | |
74HC594; 74HCT594 | 8-битный регистр сдвига с выходным регистром | ACT | |
74HC594D | 8-битный регистр сдвига с выходным регистром | Производство | |
74HC594DB | 8-битный регистр сдвига с выходным регистром | Не для дизайна | |
74HCT594D | 8-битный регистр сдвига с выходным регистром | Производство | |
74HCT594DB | 8-битный регистр сдвига с выходным регистром | Не для дизайна | |
74HC595; 74HCT595 | 8-битный регистр сдвига с последовательным входом, последовательным или параллельным выходом с выходными защелками; 3 – состояние | ACT | |
74HC595BQ | 8-битный регистр сдвига с последовательным входом, последовательным или параллельным выходом с выходными защелками; 3 – состояние | Производство | |
74HC595BZ | 8-битный регистр сдвига с последовательным входом, последовательным или параллельным выходом с выходными защелками; 3 – состояние | Производство | |
74HC595D | 8-битный регистр сдвига с последовательным входом, последовательным или параллельным выходом с выходными защелками; 3 – состояние | Производство | |
74HC595DB | 8-битный регистр сдвига с последовательным входом, последовательным или параллельным выходом с выходными защелками; 3 – состояние | Не для дизайна | |
74HC595PW | 8-битный регистр сдвига с последовательным входом, последовательным или параллельным выходом с выходными защелками; 3 – состояние | Производство | |
74HCT595BQ | 8-битный регистр сдвига с последовательным входом, последовательным или параллельным выходом с выходными защелками; 3 – состояние | Производство | |
74HCT595D | 8-битный регистр сдвига с последовательным входом, последовательным или параллельным выходом с выходными защелками; 3 – состояние | Производство | |
74HCT595DB | 8-битный регистр сдвига с последовательным входом, последовательным или параллельным выходом с выходными защелками; 3 – состояние | Не для дизайна | |
74HCT595PW | 8-битный регистр сдвига с последовательным входом, последовательным или параллельным выходом с выходными защелками; 3 – состояние | Производство | |
74HC597; 74HCT597 | 8-битный регистр сдвига с входными триггерами | ACT | |
74HC597D | 8-битный регистр сдвига с входными триггерами | Производство | |
74HC597DB | 8-битный регистр сдвига с входными триггерами | Не для дизайна | |
74HC597PW | 8-битный регистр сдвига с входными триггерами | Производство | |
74HCT597D | 8-битный регистр сдвига с входными триггерами | Производство | |
74HCT597DB | 8-битный регистр сдвига с входными триггерами | Не для дизайна | |
74LV164 | 8-битный регистр сдвига с последовательным входом / параллельным выходом | ACT | |
74LV164BQ | 8-битный регистр сдвига с последовательным входом / параллельным выходом | Производство | |
74LV164D | 8-битный регистр сдвига с последовательным входом / параллельным выходом | Производство | |
74LV164DB | 8-битный регистр сдвига с последовательным входом / параллельным выходом | Не для дизайна | |
74LV164PW | 8-битный регистр сдвига с последовательным входом / параллельным выходом | Производство | |
74LV165 | 8-битный регистр сдвига с параллельным входом / последовательным выходом | ACT | |
74LV165D | 8-битный регистр сдвига с параллельным входом / последовательным выходом | Производство | |
74LV165DB | 8-битный регистр сдвига с параллельным входом / последовательным выходом | Не для дизайна | |
74LV165PW | 8-битный регистр сдвига с параллельным входом / последовательным выходом | Производство | |
74LV165A | 8-битный регистр сдвига с параллельным входом / последовательным выходом | ACT | |
74LV165AD | 8-битный регистр сдвига с параллельным входом / последовательным выходом | Производство | |
74LV165APW | 8-битный регистр сдвига с параллельным входом / последовательным выходом | Производство | |
74LV4094 | 8-ступенчатый регистр шины сдвига и запоминания | ACT | |
74LV4094D | 8-ступенчатый регистр шины сдвига и запоминания | Производство | |
74LV4094DB | 8-ступенчатый регистр шины сдвига и запоминания | Не для дизайна | |
74LV4094PW | 8-ступенчатый регистр шины сдвига и запоминания | Производство | |
74LV595 | 8-битный регистр сдвига с последовательным входом / последовательным выходом или параллельным выходом; 3-х местный | ACT | |
74LV595D | 8-битный регистр сдвига с последовательным входом / последовательным выходом или параллельным выходом; 3-х состояние | Производство | |
74LV595DB | 8-битный регистр сдвига с последовательным входом / последовательным выходом или параллельным выходом; 3-х состояние | Не для дизайна | |
74LV595PW | 8-битный регистр сдвига с последовательным входом / последовательным выходом или параллельным выходом; 3-х местный | Производство | |
74LVC594A | 8-битный регистр сдвига с выходным регистром | ACT | |
74LVC594ABQ | 8-битный регистр сдвига с выходным регистром | Производство | |
74LVC594AD | 8-битный регистр сдвига с выходным регистром | Производство | |
74LVC594APW | 8-битный регистр сдвига с выходным регистром | Производство | |
74LVC595A | 8-битный регистр сдвига с последовательным входом / последовательным выходом или параллельным выходом; 3-х состояние | ACT | |
74LVC595ABQ | 8-битный регистр сдвига с последовательным входом / выходом или параллельным выходом; 3-х местный | Производство | |
74LVC595AD | 8-битный регистр сдвига с последовательным входом / выходом или параллельным выходом; 3-х состояние | Производство | |
74LVC595APW | 8-битный регистр сдвига с последовательным входом / последовательным выходом или параллельным выходом; 3-х местный | Производство | |
74VHC595; 74VHCT595 | 8-битный регистр сдвига с последовательным входом / последовательным выходом или параллельным выходом с выходными защелками | ACT | |
74VHC595BQ | 8-битный регистр сдвига с последовательным входом / последовательным выходом или параллельным выходом с выходными защелками | Производство | |
74VHC595D | 8-битный регистр сдвига с последовательным входом / последовательным выходом или параллельным выходом с выходными защелками | Производство | |
74VHC595PW | 8-битный регистр сдвига с последовательным входом / последовательным выходом или параллельным выходом с выходными защелками | Производство | |
74VHCT595BQ | 8-битный регистр сдвига с последовательным входом / последовательным выходом или параллельным выходом с выходными защелками | Производство | |
74VHCT595D | 8-битный регистр сдвига с последовательным входом / последовательным выходом или параллельным выходом с выходными защелками | Производство | |
74VHCT595PW | 8-битный регистр сдвига с последовательным входом / последовательным выходом или параллельным выходом с выходными защелками | Производство | |
HEF4014B | 8-битный статический регистр сдвига | ACT | |
HEF4014BT | 8-битный статический регистр сдвига | Производство | |
HEF4015B | Двойной 4-битный статический регистр сдвига | ACT | |
HEF4015BT | Двойной 4-битный статический регистр сдвига | Производство | |
HEF4021B | 8-битный статический регистр сдвига | ACT | |
HEF4021BT | 8-битный статический регистр сдвига | Производство | |
HEF4021BTT | 8-битный статический регистр сдвига | Производство | |
HEF4094B | 8-ступенчатый регистр сдвига и запоминания | ACT | |
HEF4094BT | 8-ступенчатый регистр сдвига и запоминания | Производство | |
HEF4094BTS | 8-ступенчатый регистр сдвига и запоминания | Не для дизайна | |
HEF4094BTT | 8-ступенчатый регистр сдвига и запоминания | Производство | |
HEF4794B | 8-ступенчатый драйвер светодиода с регистром сдвига и запоминания | ACT | |
HEF4794BT | 8-ступенчатый драйвер светодиода с регистром сдвига и запоминания | Производство | |
HEF4894B | Драйвер светодиода с 12-ступенчатым регистром сдвига и запоминания | ACT | |
HEF4894BT | Драйвер светодиода с 12-ступенчатым регистром сдвига и запоминания | Производство | |
HEF4894BTT | Драйвер светодиода с 12-ступенчатым регистром сдвига и запоминания | Производство | |
NPIC6C4894 | Логика мощности 12-битный регистр сдвига; выходы с открытым стоком | ACT | |
NPIC6C4894D | Логика мощности 12-битный регистр сдвига; выходы с открытым стоком | Производство | |
NPIC6C4894PW | Логика мощности 12-битный регистр сдвига; выходы с открытым стоком | Производство | |
NPIC6C595 | Логика мощности 8-битный регистр сдвига; выходы с открытым стоком | ACT | |
NPIC6C595BQ | Логика мощности 8-битный регистр сдвига; выходы с открытым стоком | Производство | |
NPIC6C595D | Логика мощности 8-битный регистр сдвига; выходы с открытым стоком | Производство | |
NPIC6C595PW | Логика мощности 8-битный регистр сдвига; выходы с открытым стоком | Производство | |
NPIC6C596 | Логика мощности 8-битный регистр сдвига; выходы с открытым стоком | ACT | |
NPIC6C596BQ | Логика мощности 8-битный регистр сдвига; выходы с открытым стоком | Производство | |
NPIC6C596D | Логика мощности 8-битный регистр сдвига; выходы с открытым стоком | Производство | |
NPIC6C596PW | Логика мощности 8-битный регистр сдвига; выходы с открытым стоком | Производство | |
NPIC6C596A | Логика мощности 8-битный регистр сдвига; выходы с открытым стоком | ACT | |
NPIC6C596ABQ | Логика мощности 8-битный регистр сдвига; выходы с открытым стоком | Производство | |
NPIC6C596AD | Логика мощности 8-битный регистр сдвига; выходы с открытым стоком | Производство | |
NPIC6C596APW | Логика мощности 8-битный регистр сдвига; выходы с открытым стоком | Производство |
Что такое регистр сдвига? Работа, применение и типы регистров сдвига
Что такое регистр сдвига:Регистры сдвига – это последовательные логические схемы , способные хранить и передавать данные.Они состоят из триггеров, которые соединены таким образом, что выход одного триггера может служить входом другого триггера, в зависимости от типа создаваемых регистров сдвига.
Регистры сдвига в основном представляют собой регистры, которые могут передавать («сдвигать») данные. Регистры обычно представляют собой запоминающие устройства, которые создаются путем последовательного соединения определенного количества триггеров, а количество данных (количество битов), которые могут храниться в регистре, всегда прямо пропорционально количеству триггеров, поскольку каждый триггер flop может хранить только один бит за раз. Когда триггеры в регистре соединены таким образом, что выход одного триггера становится входом другого, создается регистр сдвига.
Вьетнамки – это устройства, работа которых аналогична работе защелки . Его можно назвать бистабильным вибратором, который может перемещаться между двумя состояниями (0 или 1) и может хранить данные в битах. Новые данные считываются в триггер с каждым тактовым циклом, а предыдущие данные отправляются на выход.
Регистры сдвига Какие триггеры состоят из?
Это, однако, зависит от типа триггера, поскольку взаимосвязь между входом, выходом и тактовым циклом между триггерами различается. Существуют различные типы триггеров, но наиболее часто используемые при создании регистров сдвига – это триггеры D (задержки).
Для работы D-триггеров, что делает их столь желательными для регистров сдвига, всякий раз, когда происходит изменение тактовой частоты D-триггера (либо нарастающий, либо на спадающий фронт, в зависимости от характеристик триггера).Данные на выходе «Q» становятся теми же данными, что и на входе «D». Выход «Q» триггера будет оставаться на этом значении до следующего тактового цикла, после чего он снова изменится на значение (высокий или низкий, 1 или 0) на входе.
Теперь, когда мы знаем, что такое регистры выборки, мы перейдем к более глубокому погружению в типы триггеров и их применения. Но перед этим, чтобы дать более практическое представление о том, где используются регистры сдвига, давайте взглянем на популярный регистр сдвига 74HC595, который мы использовали с различными микроконтроллерами для сопряжения дисплея или последовательности светодиодов.
Типы регистров в цифровой электронике Регистры сдвигаподразделяются на типы в основном по их режиму работы , последовательному или параллельному.
Существует шесть (6) базовых типов регистров сдвига , которые перечислены ниже, хотя некоторые из них могут быть дополнительно разделены в зависимости от направления потока данных: сдвиг вправо или сдвиг влево.
1. Регистр сдвига последовательного входа – последовательного выхода (SISO)
2.Регистр сдвига последовательного входа – параллельного выхода (SIPO)
3. Регистр сдвига с параллельным входом и выходом (PIPO)
4. Регистр сдвига параллельного входа – последовательного выхода (PISO)
5. Регистры двунаправленного сдвига
6. Счетчики
1. Регистры сдвига последовательного входа – последовательного выходаПоследовательный вход – регистры сдвига последовательного выхода – это регистры сдвига, которые последовательно передают данные (один бит за такт) и выводят данные таким же образом, один за другим.
Простой 4-битный регистр сдвига с последовательным входом – последовательным выходом показан выше, регистр состоит из 4 триггеров, а принцип его работы поясняется ниже;
При запуске сначала очищается регистр сдвига, обнуляя выходы всех триггеров, затем входные данные поступают на вход последовательно, по одному биту за раз.
Существует два основных способа сдвига данных из через регистр сдвига SISO ;
- Неразрушающий контроль
- Разрушительное считывание
Сдвиговые регистры, основанные на неразрушающем считывании, всегда имеют режим работы чтения / записи с добавлением дополнительной строки, позволяющей переключаться между режимами чтения и записи.
Когда устройство находится в рабочем режиме «запись», сдвиговый регистр сдвигает все данные на один бит за раз, ведя себя точно так же, как версия с деструктивным считыванием, и данные, таким образом, теряются, но когда рабочий режим переключается на «чтение», данные, которые выдвигаются на входе, возвращаются в систему и служат входом в регистр сдвига. Это помогает гарантировать, что данные остаются дольше (пока они остаются в режиме чтения)
При разрушающем считывании данные полностью теряются, поскольку триггер просто перемещает информацию.Предполагая, что для 4-битного регистра сдвига выше мы хотим отправить слово «1101». После очистки регистра сдвига выходной сигнал всех триггеров становится равным 0, поэтому во время первого тактового цикла, когда мы применяем эти данные (1101) последовательно, выходы триггеров выглядят, как показано в таблице ниже.
Первый такт:
Второй тактовый цикл:
Третий тактовый цикл:
Четвертый тактовый цикл:
2.Последовательный вход – параллельный выход Регистр сдвигаВторой тип сдвигового регистра, который мы будем рассматривать, – это регистр сдвига последовательного ввода – параллельного вывода, также известный как SIPO Shift Register . Эти типы регистров сдвига используются для преобразования данных из последовательного в параллельный. Данные поступают одно за другим за такт и могут быть либо сдвинуты и заменены, либо считаны на каждом выходе . Это означает, что при считывании данных каждый считанный бит становится доступным одновременно на соответствующей выходной линии (Q0 – Q3 для 4-битного регистра сдвига, показанного ниже).
4-битный регистр сдвига с последовательным входом и параллельным выходом показан на рисунке ниже.
Таблица, показывающая, как данные сдвигаются из последовательного в параллельный 4-битный регистр сдвига, показана ниже с данными в виде 1001.
прозрачный | FF0 | ФФ1 | FF2 | FF3 |
1001 | 0 | 0 | 0 | 0 |
1 | 0 | 0 | 0 | |
0 | 1 | 0 | 0 | |
0 | 0 | 1 | 0 | |
1 | 0 | 0 | 1 |
Хорошим примером регистра сдвига с последовательным параллельным выводом является регистр сдвига 74HC164, , который является 8-битным регистром сдвига.
Устройство имеет два последовательных входа данных (DSA и DSB), восемь параллельных выходов данных (от Q0 до Q7). Данные вводятся последовательно через DSA или DSB, и любой вход может использоваться в качестве активного ВЫСОКОГО разрешения для ввода данных через другой вход. Данные сдвигаются при переходах от LOW-to-HIGH тактового сигнала (CP). НИЗКИЙ уровень на входе главного сброса (MR) очищает регистр и принудительно устанавливает НИЗКИЙ уровень на всех выходах, независимо от других входов. Входы включают фиксирующие диоды. Это позволяет использовать токоограничивающие резисторы для сопряжения входов с напряжением, превышающим VCC.
3. Регистр сдвига параллельного входа – последовательного выходаВ регистре сдвига «Параллельный вход – последовательный выход» данные подаются параллельно, например, рассмотрим 4-битный регистр , показанный ниже.
Этот регистр может использоваться для хранения и сдвига 4-битного слова, при этом управляющий вход записи / сдвига (WS) управляет режимом работы сдвигового регистра. Когда линия управления WS имеет низкий уровень (режим записи), данные могут быть записаны и синхронизированы через D0 – D3.Для последовательного смещения данных линия управления WS переводится в ВЫСОКИЙ уровень (режим сдвига), затем регистр смещает данные на входе тактового сигнала. Параллельно в последовательном режиме наш регистр сдвига также называется регистром сдвига PISO .
Хорошим примером сдвигового регистра с параллельным входом и выходом является 8-битный регистр сдвига 74HC165, хотя он также может работать как регистр сдвига с последовательным входом и выходом.
Устройство имеет последовательный вход данных (DS), восемь параллельных входов данных (от D0 до D7) и два дополнительных последовательных выхода (Q7 и Q7 ’).Когда на входе параллельной нагрузки (PL) НИЗКОЕ значение, данные от D0 до D7 загружаются в регистр сдвига асинхронно. Когда PL имеет высокий уровень, данные последовательно поступают в регистр DS. Когда вход разрешения синхронизации (CE) имеет значение НИЗКИЙ, данные сдвигаются при переходах НИЗКИЙ-ВЫСОКИЙ вход CP. Высокий уровень CE отключает вход CP. Входы устойчивы к перенапряжению до 15 В. Это позволяет использовать устройство в приложениях с переключением уровня с ВЫСОКОГО на НИЗКИЙ.
Функциональная схема сдвигового регистра показана ниже;
Временная диаграмма системы показана на изображении ниже;
4.Регистр сдвига с параллельным входом и выходомДля регистра сдвига с параллельным параллельным выходом выходные данные на параллельных выходах появляются одновременно с подачей входных данных. Этот тип сдвигового регистра также называется регистром сдвига PIPO .
Входные данные на каждом из входных контактов от D0 до D3 считываются одновременно с синхронизацией устройства, и в то же время данные, считанные с каждого из входов, передаются на соответствующий выход (из Q0 – Q3).
Сдвиговый регистр 74HC195 – это многоцелевой сдвиговый регистр , который способен работать в большинстве режимов, описанных всеми типами, которые мы обсуждали до сих пор, особенно как сдвиговый регистр с параллельным параллельным выходом.
5. Регистры двунаправленного сдвигаРегистры сдвига могут выполнять сдвиг данных вправо или влево или и то, и другое, в зависимости от типа сдвигового регистра и их конфигурации. В операциях сдвига вправо двоичные данные делятся на два.Если эту операцию изменить, двоичные данные умножаются на два. При подходящем применении комбинационной логики регистр последовательного сдвига может быть сконфигурирован для выполнения обеих операций.
Рассмотрим 4-битный регистр на изображении ниже. Пара вентилей И-НЕ настроена как вентили ИЛИ и используются для управления направлением сдвига вправо или влево.
Линия управления влево / запись используется для определения направления сдвига данных, вправо или влево.
Двунаправленный сдвиговый регистр 74HC194 является хорошим примером. Регистр может работать во всех режимах и вариациях последовательного и параллельного ввода или вывода. Функциональная схема 74HC194 с выделением линии управления, часов, входных и выходных контактов показана ниже.
Временная диаграмма устройства также показана ниже. Это поможет вам лучше понять, как линия управления управляет действиями регистра.
6.Счетчики Счетчики, иногда называемые регистром сдвига поворота в основном представляют собой регистры сдвига, выходы которых возвращаются в устройство в качестве входов таким образом, что создается определенный шаблон. Эти типы регистров называются счетчиками из-за того, что они демонстрируют шаблон и последовательность. Самым популярным типом счетчиков регистра сдвига являются кольцевые счетчики .
Счетчик звонков
Кольцевые счетчики – это, по сути, тип счетчика, в котором выход наиболее значимого бита передается обратно как вход для младшего значащего бита.4-битный счетчик звонков проиллюстрирован на диаграмме ниже с использованием D-триггеров.
При подаче тактового импульса выход каждого каскада смещается на следующий, и цикл продолжается. Когда клир становится высоким, все триггеры, кроме первого (который принимает значение 1), сбрасываются в ноль.
Применение регистров сдвигаРегистры сдвига используются во многих приложениях, некоторые из которых:
1.Параллельно последовательному преобразованию , где они используются для уменьшения количества проводов или линий, необходимых для связи между двумя устройствами, поскольку для последовательной связи обычно требуется всего два провода по сравнению с параллельным, что зависит от количества отправляемых битов.
2. Расширение ввода-вывода для микроконтроллеров . В современной электронике контакты ввода-вывода микроконтроллеров называются недвижимостью, и для определенных приложений, таких как включение 100 светодиодов или считывание 100 герконов, требуется как можно больше с помощью чего-то вроде микроконтроллера Arduino или Atmeg328p.Например, приведенная ниже принципиальная схема иллюстрирует, как можно использовать последовательно-параллельный регистр сдвига для управления 8 светодиодами, используя всего три контакта ввода-вывода микроконтроллера.
3. Они используются в регистрах состояний, которые используются в последовательных устройствах . Как и в машине с конечной памятью, следующее состояние устройства всегда определяется путем сдвига и вставки новых данных в предыдущую позицию.
4. Еще одно основное применение находится в Time delayays .Регистры сдвига используются для временной задержки в устройствах, при этом время регулируется часами, или увеличивается каскадом регистров сдвига, или сокращается, принимая выходной сигнал из младшего значащего бита.
Время задержки обычно рассчитывается по формуле;
t = N * (1 / fc)
N – это количество каскадов триггера, на котором берется выходной сигнал, Fc – частота тактового сигнала, а t, которое является определяемым значением, – это количество времени, на которое вывод будет задержан.
При выборе сдвигового регистра для конкретной задачи из-за широкого диапазона и типа важно выбрать тот, который соответствует вашим конкретным потребностям, учитывая такие вещи, как режим работы, размер бит (количество триггеров), правильно или левый, или двунаправленный и т. д.
Некоторые из самых популярных регистров сдвига :
- 74HC 194 4-битный двунаправленный универсальный регистр сдвига
- 74HC 198 8-битный двунаправленный универсальный регистр сдвига
- 74HC595 Регистр сдвига с последовательным входом-параллельным выходом
- 74HC165 Регистр сдвига с параллельным входом и последовательным выходом
- IC 74291 4-битный универсальный регистр сдвига, двоичный счетчик вверх / вниз, синхронный.
- IC 74395 4-битный универсальный сдвиговый регистр с выходами с тремя состояниями.
- IC 74498 8-битный двунаправленный регистр сдвига с параллельными входами и выходами с тремя состояниями.