Регистры и сдвиговые цепи
Цель: Понять устройство регистров, последовательный и параллельный ввод/вывод и практическое применение сдвиговых цепей.
3 часа короткая теория, самостоятельная практика, проверка результата и тест.
Суть темы
Регистр объединяет несколько триггеров для хранения многобитного слова. Если каждый бит имеет собственный вход и выход, данные передаются параллельно. Если выход одного триггера соединён со входом следующего, возникает сдвиговый регистр, который перемещает данные на один разряд за такт.
Сдвиговые регистры применяются для преобразования serial↔parallel, задержки цифрового потока, расширения числа линий ввода-вывода и построения некоторых счётчиков и генераторов последовательностей.
- SISO передаёт данные последовательно через цепочку; задержка равна числу ступеней в тактах.
- SIPO принимает последовательный поток и выдаёт параллельное слово.
- PISO загружает слово параллельно и затем выдаёт биты последовательно.
- PIPO хранит и передаёт слово параллельно; универсальные регистры могут поддерживать несколько режимов.
- Направление сдвига и порядок битов MSB/LSB должны быть согласованы с протоколом.
Ключевые связи и параметры
Каждая ступень обычно является D-триггером с общим clock. На фронте все ступени одновременно принимают значения предыдущих ступеней, поэтому нельзя рассматривать перенос как последовательное «протекание» внутри одного такта.
При серийном обмене важны не только данные, но и момент считывания относительно clock. Внешний регистр типа 74HC595, например, дополнительно имеет защёлку выходов, что позволяет сначала сдвинуть новое слово, а затем одновременно обновить физические выходы.
delay(SISO) = N clock periods for N stages8-bit serial load requires 8 shift clocksРазбор примера
В четырёхразрядный SIPO вводят последовательность 1-0-1-1. После каждого фронта содержимое сдвигается; после четырёх тактов на параллельных выходах формируется соответствующее четырёхбитное слово с учётом выбранного направления сдвига.
Если микроконтроллеру нужно управлять восемью светодиодами при недостатке GPIO, SIPO-регистр позволяет использовать линии data, clock и latch вместо восьми отдельных выводов.
Практическая работа и проверка
Используйте четырёх- или восьмиразрядный регистр и логический анализатор, подписав направление сдвига до начала эксперимента.
- Введите известную битовую последовательность и после каждого такта записывайте состояние ступеней.
- Проверьте serial-in/parallel-out на восьми тактах.
- Измените порядок передачи MSB-first на LSB-first и сравните полученное слово.
- Если есть latch, покажите различие между внутренним сдвигом и обновлением выходов.
- Соберите кольцевой режим, замкнув выход последней ступени на вход первой, и наблюдайте циркуляцию единицы.
Типичные ошибки и диагностика
- Считать, что все ступени обновляются одна за другой в течение одного фронта.
- Перепутать MSB-first и LSB-first при связи с периферией.
- Забыть отдельный latch у регистра расширения выходов.
- Не инициализировать регистр и принимать случайное стартовое содержимое за данные.
При смещённом на один бит слове сначала сравнивают clock/data timing и число фронтов. Если данные зеркальны по разрядам, проверяют порядок MSB/LSB.
Связь с реальным устройством
Регистр — это память для слова, а сдвиговый регистр — управляемый тактом конвейер битов, связывающий параллельное и последовательное представление данных.
Что нужно запомнить
- Регистр строится из нескольких элементов памяти.
- Сдвиг происходит на тактовом событии.
- SIPO и PISO выполняют serial↔parallel преобразование.
- Порядок битов является частью интерфейса.
- У некоторых регистров выходная защёлка отделена от сдвиговой цепи.