
- •Введение в логическое проектирование аппаратуры Аннотация к курсу
- •Лекция 1 «Схемы без памяти» Введение
- •Схемы из функциональных элементов
- •Представление схем на языке Verilog Общая информация о языке
- •Модули, пример “Hello World”
- •Синтезируемое подмножество языка
- •Логические значения и операции над ними
- •Многоразрядные константы
- •Непрерывное присваивание
- •Операции над битовыми массивами
- •Инстанцирование модулей
- •Лекция 2 «Схемы с памятью» Введение
- •Абстрактный автомат
- •Структурный автомат
- •Триггеры
- •Описание схем с памятью на языке Verilog
- •Моделирование памяти
- •Процедурное присваивание
- •Always-блоки
- •Управляющие конструкции
- •Лекция 3 «Примеры проектирования на языке Verilog»
- •Лекция 4 «Дискретно-событийное моделирование» Введение
- •Дискретно-событийное моделирование аппаратуры Основные понятия
- •Цикл работы симулятора
- •Дельта-задержка
- •Занятие 5: Контрольная работа
Структурный автомат
Если абстрактный автомат является лишь абстрактной моделью реагирующей системы, то в структурном автомате учитывается кодирование состояний, входных и выходных символов, а также его внутреннее устройство на уровне структурных схем.
Определение. Структурным автоматом (структурных схемой автомата) называется конечный автомат, в котором состояния, стимулы и реакции представлены в форме двоичных векторов, заданы типы элементов памяти для хранения состояния, функции переходов и выходов реализованы в форме комбинационных схем (КС).
Кодирование состояний не влияет на функциональность аппаратуры, но важно для таких характеристик устройства как надежность, энергопотребление и других. Надежность, к примеру, обеспечивается избыточным кодированием (биты четности, коды Хэмминга, CRC и т.п.). Для минимизации энергопотребления выбирают такой способ кодирования, при котором коды соседних состояний отличаются в небольшом числе разрядов (это минимизирует число переключений триггеров).
Структурный автомат можно представить состоящим из двух частей: (1) элементов памяти и (2) комбинационной схемы.
Функция (s1(t+1), ..., sk(t+1)) называется функцией возбуждения памяти автомата (она зависит от типов и элементов памяти и, вообще говоря, не обязана совпадать с функцией переходов ); сигналы (s1(t), ..., sk(t)) образуют обратную связь от памяти к комбинационной схеме.
В простейшем случае в качестве элементов памяти можно рассмотреть элементы единичной задержки – такие элементы производят на выходе значения, которые были поданы на вход в предыдущий момент времени. В этом случае мы имеет дело со схемой из функциональных элементов с элементами задержки.
Задание. Предложить способ кодирования состояний, стимулов и реакций определенного ранее абстрактного автомата.
Триггеры
В общем случае возможны разные типы элементов памяти — триггеры. Триггеры бывают синхронными и асинхронными. Некоторые разновидности триггеров, например, RS-триггеры, допускают как синхронное, так и асинхронное исполнение. Триггер называется синхронным, если его работа управляется тактовым сигналом (обозначаемым C или CLK от англ. clock).
Фронты тактового сигнала разбивают непрерывное время на дискретный набор интервалов, называемых тактами. Фронтом называется изменение уровня сигнала с низкого на высокий (положительный фронт, positive edge) или с высокого на низкий (отрицательный фронт, negative edge). Для простоты будем считать, что схемы работают по положительному фронту, то есть входные сигналы считываются при высоком уровне тактового сигнала и игнорируются при низком уровне.
Самыми распространенными типами элементов памяти являются D-, RS- (SR-) и JK-триггеры. D-триггеры (от англ. delay) являются синхронными, RS- (от англ. reset/set) и JR-триггеры (от англ. jump/kill) могут быть как синхронными, так и асинхронными. Ниже представлены таблицы переходов для данных типов триггеров.
D\T 0 1 RS\T 0 1 JK\T 0 1
0 0 0 00 0 1 00 0 1
1 1 1 01 1 1 01 0 0
10 0 0 10 1 1
11 1 0
D
-триггер
является не чем иным, как единичной
задержкой: он запоминает и воспроизводит
на выходе (с задержкой) то, что подается
ему на вход.
R
S-триггер
устанавливает состояние в 1, если S=1;
сбрасывает состояние в 0, если R=1;
не изменяет состояние, если RS=00;
комбинация RS=11
запрещена.
J
K-триггер
работает как RS-триггер
(где J=S,
K=R),
но при подаче на вход комбинации JK=11
инвертирует состояние.
Задание. Определить функцию перехода синхронных D-, RS- и JK-триггеров.
D: Q(t+1) = D(t)
RS: Q(t+1) = ~R(t)&(Q(t)|S(t)) | (x&S&R), x — неопределенное значение.
JK: Q(t+1) = ~Q(t)&J(t) | Q(t)&~K(t)
Функция возбуждения памяти автомата строится в зависимости от типа используемых триггеров. Очевидно, что для D-триггеров эта функция совпадает с функцией переходов.
Задание. Реализовать единичную задержку через (D-триггер), используя:
синхронные RS-триггеры;
синхронные JK-триггеры.
Триггеры можно определить через схемы из функциональных элементов с обратными связями. Формально семантику таких схем мы определять не будем. Идея заключается в том, что выходное значение схемы стабилизируется не сразу, а после серии итераций (входы нужно держать неизменными некоторое время). Полученное стабильное состояние и есть выходное значение. Например, асинхронный RS-триггер можно представить следующей схемой.
Эта схема на языке Verilog описывается следующим образом.
// асинхронный RS-триггер
module rs_flipflop(q, n, r, s);
output q, n;
input r, s;
nor gate1(q, r, n);
nor gate2(n, s, q);
endmodule /* rs_flipflop */
Домашнее задание. Нарисовать схему для синхронного JK-триггера, описать схему на языке Verilog, написать функциональный тест.