Skip to content
АЦУ · Тема 23 · Време и памет

Влакче от тригери и машина за шум

Подредиш ли няколко тригера един след друг, получаваш регистър – влакче, по което битовете се местят с всеки такт. Така идват битовете по USB, така се пазят числата в процесора. Ако върнеш в началото XOR от няколко вагона, влакчето започва да вади поредица, която изглежда напълно случайна, а е изчислена докрай. В урока я и чуваме.

≈ 4 мин четене∿ 2 живи уредаСамопроверка: 5 въпроса

Регистърът: влакче от тригери ​

Регистърът е ред от тригери, обикновено 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.

Преместващ регистър
DQтригер 0DQтригер 1DQтригер 2DQтригер 3Q0Q1Q2Q3CDS
0246810CDSQ0Q1Q2Q3t – време, μsтакт 4
C DS Q0 Q1 Q2 Q3
Фигура 1.

При серийния вход на всеки фронт битовете се местят надясно. След 4 такта думата е в регистъра, а Q3 държи първия бит, който е влязъл. Влакчето обаче не спира: още 4 такта и думата е излязла. Кръговият върти една единица безкрайно, като въртележка. Така се прави „бягаща светлина“. Джонсън се пълни с единици и после с нули и минава през 8 състояния с 4 тригера.

ГПСП: машина за привидно случайни числа ​

Сега върху входа на преместващия регистър връщаме XOR от няколко изхода. Получава се генератор на псевдослучайна поредица (ГПСП, на английски LFSR). Всяко следващо състояние е изчислено от предишното, нищо не е случайно. Но поредицата от изхода изглежда като хвърляне на монета: единиците и нулите са почти по равно, а дългите серии са рядкост.

Кои изходи влизат в XOR казва характеристичният полином. С правилните отводи регистърът минава през всички 2ⁿ − 1 ненулеви състояния, преди да се повтори. Това е m-последователност, най-дългата възможна. Нулевото състояние е забранено: XOR от нули е нула и регистърът „зацикля“. Затова се добавя ИЛИ-НЕ, което при всички нули вкарва 1.

Регистърът тук е с 4 бита, а XOR е на изходите 4, 3. Периодът е 15 такта. Първите битове са: 000100110101111. Тактът е 4000 Hz: поредицата се повтаря 267 пъти в секунда.

ГПСП, който се чува
Първите 48 такта
010203040изходномер на такта
изход
Фигура 2.

С 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. Каква е разликата между паралелен и преместващ регистър?

Паралелният записва всички битове наведнъж при общия такт; преместващият мести битовете с една позиция на всеки такт (сериен ↔ паралелен вид).