Что делает сдвиговый регистр
Сдвиговый регистр — это цепочка D-триггеров, где выход каждого каскада подаётся прямо на вход следующего. На каждом тактовом фронте каждый бит в цепочке сдвигается на одну позицию, а новый бит входит с одного конца, в то время как бит с другого конца выпадает.
Последовательный вход, последовательный выход (SISO)
В простейшей конфигурации данные входят по одному биту на вход D первого триггера и выходят по одному биту с выхода Q последнего триггера, задержанные ровно на N тактовых циклов для регистра из N каскадов. Это базовый строительный блок линий задержки и простой последовательной связи.
Параллельная загрузка и преобразование последовательного кода в параллельный
Добавьте вход параллельной загрузки к каждому триггеру и управляющую линию — и весь регистр можно загрузить N-битным значением за один тактовый цикл, а затем выдвигать по одному биту — именно это делает периферия UART или SPI для преобразования параллельного байта в последовательный битовый поток для передачи, или наоборот: принимать биты последовательно и считывать собранный байт параллельно, когда все биты получены.
Где они применяются
Помимо последовательной связи, сдвиговые регистры управляют светодиодными бегущими огнями и сканированием семисегментных индикаторов (сдвигая один активный бит по ряду выходов), реализуют простые линии задержки и образуют основу регистров сдвига с линейной обратной связью для генерации псевдослучайных последовательностей.
Загрузите пример сдвигового регистра в Boolflow, переключите CLOCK и наблюдайте, как активный бит движется по цепочке элементов OUTPUT на одну позицию за импульс.