# Лекция 5. Последовательностная логика

Основной темой лекции было запоминание информации. В основе простейшей ячейки памяти лежит бистабильное устройство, то есть такое, которое может стабильно находиться в одном из двух состояний сколь угодно долго. Таким устройством является два инвертора подключённые друг в друга — выход одного на вход другого. Чтобы иметь возможность менять сохраняемое значение, на входы инверсий можно поместить логическое ИЛИ. С помощью образовавшихся свободных входов можно менять значение, которое в нем хранится. Полученное устройство называется RS-триггер, потому что при подаче 1 на вход R (reset) сохраняется 0, а при подаче 1 на вход S (set) сохраняется 1.

![../.pic/Lectures/05.%20Sequencial%20logic/fig_01.png](../.pic/Lectures/05.%20Sequencial%20logic/fig_01.png)

Не очень удобный интерфейс для использования. Вдобавок у триггера есть запрещенное состояние, при котором логика работы устройства нарушается (Q == ~Q?). Указанную проблему можно легко устранить, доработав RS-триггер до D-защелки. *Защелка* (latch), сохраняет входные данные по уровню разрешающего сигнала. Пока на CLK подается 1, говорят, что защелка является прозрачной, то есть она повторяет на выходе то, что приходит на ее вход D. Когда CLK равняется 0, защелка хранит информацию.

![../.pic/Lectures/05.%20Sequencial%20logic/fig_02.png](../.pic/Lectures/05.%20Sequencial%20logic/fig_02.png)

Если подумать, то по времени оптимальнее, когда запоминание происходит по фронту сигнала, таким образом можно достичь максимальной производительности. Соединяем последовательно две защелки с инвертированным разрешением на запись, и *триггер*, запоминающий информацию в момент фронта сигнала CLK (момент переключения с 0 на 1), готов!

![../.pic/Lectures/05.%20Sequencial%20logic/fig_03.png](../.pic/Lectures/05.%20Sequencial%20logic/fig_03.png)

Соединив синхроимпульсы нескольких триггеров с целью хранения одной порции данных получаем *регистр* — ячейка памяти хранящая сразу несколько бит информации.

![../.pic/Lectures/05.%20Sequencial%20logic/fig_04.png](../.pic/Lectures/05.%20Sequencial%20logic/fig_04.png)

Регистр имеет разрядность (битность). Если соединить несколько регистров с возможностью доступа к каждому по адресу, то получится *регистровый файл*. Его так же называют блоком регистров общего назначения (БРОН). Регистровые файлы используют для хранения операндов и промежуточных результатов при работе с АЛУ. Количество портов памяти определяется количеством ячеек памяти к которым можно одновременно обратиться, другими словами, количеством адресных входов. Например, регистровый файл представленный ниже имеет два порта на чтение и один порт на запись. При этом по адресу 0 находится константное значение 0. Для реализации адресуемости используются мультиплексоры и демультиплексоры.

![../.pic/Lectures/05.%20Sequencial%20logic/fig_05.png](../.pic/Lectures/05.%20Sequencial%20logic/fig_05.png)

Кроме этого поговорили про синхронизацию в цифровых устройствах, основной вывод таков — чем короче комбинационная схема, тем выше частота работы. Так же скорость работы цифровых устройств зависит от временных особенностей регистров, используемых в этом устройстве. Триггерам, в составе регистров, требуется чтобы сигнал был устоявшимся в течении некоторого времени перед фронтом синхроимпульса (tsetup), плюс, требуется время для того, чтобы на выходе регистра сформировался установившийся сигнал (tpcq).

![../.pic/Lectures/05.%20Sequencial%20logic/fig_06.png](../.pic/Lectures/05.%20Sequencial%20logic/fig_06.png)

В конце лекции затронули тему конечных автоматов — устройств, способных находиться в одном из конечном количестве состояний. Процессор является гигантским автоматом состояния. Лекция закончилась демонстрацией программируемого устройства с примитивной архитектурой и примером программы, написанной для него.

![../.pic/Lectures/05.%20Sequencial%20logic/fig_07.png](../.pic/Lectures/05.%20Sequencial%20logic/fig_07.png)

## Основные материалы лекции

1. [Ссылка](https://www.youtube.com/watch?v=Ca32opNonyw) на видеозапись лекции
2. Большая часть лекции опиралась на этот хорошо написанный материал с иллюстрациями про защелки и триггеры [***Харрис и Харрис***. *Цифровая схемотехника и архитектура компьютера* — параграфы раздела 3.2]
3. Еще немного из этой же книги но про синхронизацию, расфазировку и метастабильность [***Харрис и Харрис***. *Цифровая схемотехника и архитектура компьютера* — параграфы раздела 3.5]
4. Описание и принцип работы программируемого устройства, разобранного устройства в конце лекции, можно встретить в методическом описании к 3 лабораторной работе для групп ПИН, в соответствующей папке в [облаке](https://1drv.ms/u/s!AlYsTGjsjfIfhP4GhdRLPQzK60vqGw)

## Дополнительные материалы для саморазвития

1. Отличный разбор о том, что такое конечный автомат, зачем это нужно и как его спроектировать [***Харрис и Харрис***. *Цифровая схемотехника и архитектура компьютера* — параграфы раздела 3.4]
