Регистърът: влакче от тригери
Регистърът е ред от тригери, обикновено D (тема 21), които заедно помнят цяла дума от 8, 16 или повече бита. Двата основни вида са:
- Паралелният (фиксатор) записва всички битове наведнъж при общия такт C. Има и общо нулиране MR с активно ниво 0. При адресируемия фиксатор дешифратор (тема 18) избира кой тригер да се запише. Такива са буферите между процесора и периферията, АЦП и ЦАП.
- Преместващият мести битовете с една позиция на всеки такт: Q0 → Q1 → Q2 → Q3, като хора на опашка. Битовете, които идват един по един по серийния вход DS, след n такта стоят всички наведнъж на изходите Q0…Qn−1. Това е преобразувател сериен → паралелен вид (USB, SPI, I²C). Има и обратния (паралелен → сериен), и реверсивни регистри. При тях сигнал S избира посоката: S = 1 мести наляво, S = 0 надясно, с по две И и едно ИЛИ на входа на всеки тригер.
Ако изходът на последния тригер се върне на входа, регистърът става кръгов: битовете обикалят и думата се чете, без да се губи. Ако се върне обърнат, става брояч на Джонсън: n тригера дават 2n състояния, а всеки изход е правоъгълник с D = 1/2, изместен с по един такт спрямо съседния.
Тук в регистъра влиза думата 11 = 1011, младшият бит пръв (важи само за серийния вход). След 4 такта в Q0Q1Q2Q3 има 1011.
C DS Q0 Q1 Q2 Q3
При серийния вход на всеки фронт битовете се местят надясно. След 4 такта думата е в регистъра, а Q3 държи първия бит, който е влязъл. Влакчето обаче не спира: още 4 такта и думата е излязла. Кръговият върти една единица безкрайно, като въртележка. Така се прави „бягаща светлина“. Джонсън се пълни с единици и после с нули и минава през 8 състояния с 4 тригера.
ГПСП: машина за привидно случайни числа
Сега върху входа на преместващия регистър връщаме XOR от няколко изхода. Получава се генератор на псевдослучайна поредица (ГПСП, на английски LFSR). Всяко следващо състояние е изчислено от предишното, нищо не е случайно. Но поредицата от изхода изглежда като хвърляне на монета: единиците и нулите са почти по равно, а дългите серии са рядкост.
Кои изходи влизат в XOR казва характеристичният полином. С правилните отводи регистърът минава през всички 2ⁿ − 1 ненулеви състояния, преди да се повтори. Това е m-последователност, най-дългата възможна. Нулевото състояние е забранено: XOR от нули е нула и регистърът „зацикля“. Затова се добавя ИЛИ-НЕ, което при всички нули вкарва 1.
Регистърът тук е с 4 бита, а XOR е на изходите 4, 3. Периодът е 15 такта. Първите битове са: 000100110101111. Тактът е 4000 Hz: поредицата се повтаря 267 пъти в секунда.
Първите 48 такта
изход
С 4 бита поредицата е само 15 такта и се повтаря 267 пъти в секунда при такт 4 kHz. Ухото чува бръмчащ тон, а на анализатора се вижда, че след 15 такта рисунката е същата. С 15 бита периодът е 32 767 такта, т.е. над 4 s при 8 kHz, и звучи като шум на радио между станциите. Със същия трик старите игрови конзоли правеха експлозии и вятър.
Къде се ползват ГПСП:
- разширен спектър и CDMA – сигналът се умножава по бърза псевдослучайна поредица и се „размазва“ по широка лента. XOR на две m-последователности дава кодовете на Голд (GPS), а има и кодове на Касами;
- скремблиране – данните се XOR-ват с поредицата, за да няма дълги серии от еднакви битове, а приемникът я маха със същия генератор;
- тестване – псевдослучайни входни данни за цифрови схеми;
- сигурност – с нелинейна обратна връзка (NLFSR). KeeLoq в дистанционните на колите (64-битов ключ, 528 цикъла) прави „скачащ код“: всяко натискане праща различно число.
Има два начина да се построи: Фибоначи (XOR-ът е отделно, на входа) и Галоа (XOR-ите са между тригерите – по-бърз, защото няма дълга верига от XOR).
Самопроверка
1. Колко такта трябват, за да влезе 8-битова дума в преместващ регистър със сериен вход?
8 такта – по един бит на такт.
2. Колко състояния има брояч на Джонсън с 5 тригера?
2n = 10.
3. Какъв е максималният период на 8-битов ГПСП и защо не 256?
2⁸ − 1 = 255. Нулевото състояние е изключено – от него XOR дава пак нула и регистърът зацикля.
4. 4-битов ГПСП с такт 3 kHz – какъв тон се чува?
Периодът е 15 такта → 3000/15 = 200 Hz (с много хармоници – бръмчене).
5. Каква е разликата между паралелен и преместващ регистър?
Паралелният записва всички битове наведнъж при общия такт; преместващият мести битовете с една позиция на всеки такт (сериен ↔ паралелен вид).