Регистры сдвига с линейной обратной связью
← Все статьи

Регистры сдвига с линейной обратной связью

5 мин

Регистр сдвига, питающий сам себя

Обычному регистру сдвига нужен внешний последовательный вход. Регистр сдвига с линейной обратной связью (LFSR) вместо этого вычисляет этот вход сам, беря XOR от фиксированного подмножества собственных битов регистра (их называют «отводами») и подавая результат обратно на первую ступень.

Почему обратная связь через XOR даёт длинные последовательности

Поскольку обратная связь через XOR линейна, регистр проходит длинную последовательность различных состояний, прежде чем повториться — при удачно выбранных отводах N-битный LFSR посещает все 2^N−1 ненулевых состояний ровно по одному разу, прежде чем вернуться к исходному значению, — так называемую последовательность максимальной длины. Выход выглядит статистически как шум, хотя вся схема целиком детерминированная последовательностная логика.

Собираем такой регистр из SHIFT4 в Boolflow

Возьмите блок SHIFT4, соедините через XOR два его выходных бита (пара старших ступеней, Q2 и Q3, даёт последовательность максимальной длины для 4 бит) и подайте выход этого XOR на последовательный вход регистра сдвига вместо внешнего сигнала. Есть одна тонкость: регистры в Boolflow включаются в состоянии 0000, а обычный XOR-LFSR застрял бы в нём навсегда, поскольку XOR нулей всегда даёт ноль. Поставьте вместо него вентиль XNOR — состояние-ловушка переезжает в 1111, 0000 становится обычным состоянием, и регистр проходит 15 из своих 16 значений.

Q0Q1Q2Q3XNORобратная связь

Где это применяется

Та же самая структура, что генерирует псевдослучайные тестовые последовательности для встроенного самотестирования микросхем, вычисляет и контрольные суммы CRC для обнаружения ошибок передачи — CRC это просто LFSR, прогнанный по битам сообщения вместо собственной свободно бегущей обратной связи. Соберите такой регистр в редакторе схем, переключайте CLOCK и наблюдайте, как 4-битный выход проходит 15 разных значений, прежде чем повториться.

Открыть пример 4-битного LFSR →