Вы находитесь на странице: 1из 63

ГЛАВА 5

Структурный синтез синхронных автоматов

5.1. Oсновная схема структурного автомата


Абстрактный автомат является моделью алгоритма некоторого
преобразования информации, а структурный автомат - моделью устройства,
выполняющего это преобразование. Абстрактный автомат имеет один вход и
один выход. На вход поступают символы входного алфавита - входные
последовательности, а на выходе образуются выходные последовательности.
В отличие от этого структурный автомат имеет несколько входов и несколько
выходов. На входы поступают сигналы, соответствующие символам входного
алфавита, а с выходов снимаются сигналы, соответствующие символам
выходного алфавита. Основная модель структурного автомата представлена на
рис.5.1.
x1 y1
x2 y2
Xt Комбина-
Yt
xm ционная yn
схема

St St
+1
Память

qK qK’

q2 q2’
q1 q1’

Рис. 5.1. Структура конечного автомата

Автомат состоит из двух частей – комбинационной схемы и памяти. Память


автомата служит для фиксации состояний и реализуется на триггерах.
Комбинационная схема служит для реализации функций переходов (сигналов
следующего состояния q1,q2,. . . qk) и выходных сигналов y1,y2 . . . yn. Входными
сигналами комбинационной схемы являются выходы элементов памяти q1,q2 . . .
qk и входные сигналы автомата x1,x2 . . . xm..

104
Если разделить комбинационную схему на две части: логику формирования
следующего состояния и функции выходов, то схема может быть представлена
следующим образом (рис.5.2).

Логика Ре- Функция


X St+1 St выходов
St+1 следующего гистр Y
состояния

Clock
Рис. 5.2. Структурная схема автомата Мили
Комбинационная часть автомата разделена на две схемы: схема выработки
функций следующего состояния и схема формирования выходных сигналов.
Состояние автомата – это совокупность внутренних переменных автомата
(state variables), значения которых в любой фиксированный момент времени
содержат всю информацию о прошлых входных воздействиях, необходимую
для того, чтобы объяснить поведение схемы в будущем.
Выходные сигналы автомата зависят как от входа в данный момент времени,
так и от состояния автомата.
На рис.5.3 представлена структурная схема автомата Мура.

Логика Ре- Функция


X St+1 St выходов
следующего гистр Y
состояния

Clock
Рис. 5.3. Структурная схема автомата Мура
Выход автомата Мура явно от входа не зависит.
На рис.5.4 представлена структурная схема автомата Мили с
конвейеризированным выходом.

Логика Ре- Функция Выход


X
следующего St+1 гистр St выходов Yt ной Yt-1
состояния Ре-
гистр

Clock
Рис.5.4. Структурная схема автомата Мили с конвейеризированным выходом
lock
105
5.2. Классификация триггеров и защелок
Триггер служит для запоминания одного бита информации. Он является в
общем случае элементарным автоматом Мура, имеющим два состояния .
По логическому функционирoванию различают триггера типов RS, D, T, JK
и др. Используют также комбинированные триггеры, в которых совмещаются
одновременно несколько типов триггеров и триггеры со сложной входной
логикой.
В асинхронных триггерах переход в новое состояние происходит
непосредственно при изменении входных сигналов. Синхронный триггер
изменяет свое состояние в строго определенные моменты времени,
соответствующие действию активного сигнала на его синхронизирующем
входе СLK (Clock).
По способу восприятия синхросигналов триггеры делятся на управляемые
уровнем (защелки-Latch) и управляемые фронтом синхросигнала (flip-flop).
Управление уровнем означает, что при одном уровне синхросигнала (например,
при CLK=1) триггер воспринимает входные сигналы и реагирует на них, а при
другом уровне (при CLK=0) не воспринимает и остается в неизменном
состоянии. При управлении фронтом разрешение на переключение дается
только в момент перепада синхросигнала на его фронте или спаде.
По характеру процесса переключения триггеры делятся на одноступенчатые
и двухступенчатые. В одноступенчатом триггере переключение происходит
сразу (за один этап), а в двухступенчатом за два этапа (такта).
Функционирование триггера (защелки) может быть описано с помощью
таблицы истинности, характеристического уравнения, графа переходов,
матрицы функций возбуждения.

5.2.1. Элементы с двумя устойчивыми состояниями


Простейшая одноступенчатая последовательностная схема состоит из двух
инверторов (рис.5.4,б), охваченных обратной связью. С цифровой точки зрения
эта схема является бистабильной, так как она имеет два устойчивых состояния.
Если на выходе Q высокий уровень, то на выходе Q – низкий (он и удерживает
высокий уровень сигнала на выходе Q, и наоборот).
Например, Q=0,Q=1 – состояние “0”, а Q =1, Q = 0 – состояние “1”.
Чтобы управлять такой схемой, нужно иметь в логических элементах
дополнительные входы, превращающие инверторы в схемы И-НЕ или ИЛИ_НЕ.
Теперь рассмотрим бистабильную схему с аналоговой точки зрения.
Рассмотрим статические (по постоянному току) передаточные характе-
ристики инверторов (рис. 5.5).
Как видно из графиков, существует не две, а три точки равновесия этой схемы –
это точки, в которых пересекаются кривые, соответствующие передаточным
характеристикам инверторов. Две из них соответствуют устойчивым состояниям
“0” и “1”, которые обнаруживаются при цифровом подходе. Третья точка –

106
неустойчивое состояние (metastable state) соответствует случаю, когда
напряжения Vout1 и Vout 2 находятся примерно посередине между
логическим”0” и логической “1”.

Vout1
Устойчивое
состояние
Vin2= Vout1 Vin1 Q
1

Метастабильное
состояние Vin2 Q
State
2 (б) Vout =T(Vin)
Устойчивое
состояние
Vout
(а) Vin1= Vout2
Рис. 5.5. Бистабильная схема (б),
кривая 1- передаточная характеристика верхнего инвертора,
кривая 2 – нижнего.
Если удалось бы установить схему в такое состояние, то теоретически схема
могла бы находиться в этом состоянии сколь угодно долго. Так как напряжения
в любой цепи не являются идеальными, а имеют место случайные небольшие
колебания (шум), то через некоторое время схема попадет в одно (неизвестно в
какое) из двух стабильных состояний. Это объясняется наличием в цепи
положительной обратной связи.
Если же схема находится в любом устойчивом состоянии и в цепи V in
появился шум, то обратная связь возвращает схему назад, в свое устойчивое
состояние. Любая последовательностная схема имеет метастабильное состояние.
5.3. Защелки
5.3.1. Асинхронная RS-защелка
RS-триггер называют триггером с раздельными установочными входами.
Вход R (Reset) – вход сброса (установки в “0”) , вход S (Set) – вход установки в
“1”.
S Q S Q

R Q R Q

Рис. 5.6. Условные обозначения RS-защелок


Aналитическоe выражениe,
R описывающеe зависимость следующего
состояния триггера Qt+1 (в дальнейшем будем обозначать Q*) от его входов,
называется характеристическим уравнением триггера.
107
Таблица функционирования RS-защелки - Tабл.5.1.
Taбл. 5.1
Rt St Qt Qt+1 Режим
0 0 0 0 Хранение
0 0 1 1
0 1 0 1 Установка
0 1 1 1
1 0 0 0 Сброс
1 0 1 0
1 1 0  Запрещенная
1 1 1  комбинация

Граф переходов RS-защелки изображен на рис.5.7.


01 01

-0 0 1 0-

10
Рис. 5.7. Граф переходов RS-защелки
Для получения характеристического уравнения RS-защелки составим карту
Карно для Q* (рис.5.8 б). Текущие значения R t,St,Qt обозначим R,S,Q.

Табл.5.2
SQ
R S Q*
00 01 11 10
0 0 Q R
0 1 1 0 1 1 1
1 0 0 1  
1 1 -
(а) (б)
Рис. 5.8. (а) сокращенная таблица переходов RS-защелки
(б) карта характеристического уравнения RS-защелки
Характеристическое уравнение RS-защелки: Q*= S + RQ.
Асинхронная RS-защелка является основой для построения всех остальных
типов триггеров.
Матрица функций возбуждения RS-защелки имеет следующий вид:
Табл. 5.3
Переход R S
00  0
01 0 1
10 1 0
11 0 

Схемы RS-защелок на элементах И-НЕ и ИЛИ-НЕ представлены на рис.5.9.


108
S R
Q Q

Q Q
R S
Q Q

Рис. 5.9. Схемы RS-защелок


Временные диаграммы работы RS-защелок приведены на рис. 5.10.

S

R

Q
Q

Рис. 5.10. Временные диаграммы RS-защелки на элементах И-НЕ


Если входные сигналы изменяются одновременно из нуля в единицу, то
состояние, в которое перейдет защелка непредсказуемо, и при этом могут
возникнуть колебания, либо схема войдет в метастабильное состояние.
Неустойчивость может наступить и в том случае, если отрицательный импульс,
подаваемый на вход S или R слишком короткий. Когда оба входных сигнала
S иR равны нулю, на обоих выходах Q и Q единицы (т.е. обозначение Q не
вполне корректно).

5.3.2. Синхронная RS-защелка


Условное графическое обозначение и схема защелки приведены на рис.5.10.
Защелка управляется уровнем синхросигнала C: изменение сигнала на входах
при С=1 может вызвать изменение сигнала на выходе. Если оба сигнала S и R
равны единице в момент, когда сигнал C переходит из 1 в 0, то схема ведет себя
подобно асинхронной RS-защелке при одновременном переходе сигналов S и R
на неактивный уровень. Следующее состояние непредсказуемо и выходная цепь
может стать метастабильной.

S
Q S Q
C C
Q
Q
R
R

109
Рис. 5.11. Схема синхронной RS-защелки и ее условное обозначение
Табл. 5.4
S R C Q* ~Q*
0 0 1 Qlast ~Qlast
0 1 1 0 1
1 0 1 1 0
1 1 1 - -
x x 0 Qlast ~Qlast

CQ C
SR 00 01 11 10 Q*
00 1 1
Характеристическое уравнение
01 1
R Q* = SC + RQ +CQ
11 1 - -
S
10 1 1 1

Q
Рис. 5.12. Карта для функции следующего состояния (Q*) синхронной RS-защелки

5.3.3. D-защелка
Триггер (защелка) типа D (от слова Delay) имеет один информационный
вход. Его состояние повторяет входной сигнал, но с задержкой, определяемой
синхросигналом. D-защелка в основном бывает синхронной.
Таблица истинности ( функционирования) D-защелки.

Табл. 5.5
D Q Q*
0 0 0
0 1 0
1 0 1
1 1 1

Граф переходов D-защелки представлен на рис.5.13.


Матрица функции возбуждения D-защелки представлена в таблице 5.6.
1
Характеристическое
0 0 1 1 уравнение D-защелки
Q*=D
0

Рис. 5.13. Граф переходов D-защелки

110
Табл. 5.6 Табл. 5.7
Переход D D C Q Q*
0 0 0 x 0 0 0
0 1 1 x 0 1 1
1 0 0 0 1 x 0
1 1 1 1 1 x 1

Таблица 5.7 - таблица истинности синхронизируемой D-latch.


Характеристическое уравнение D-защелки: Q* = DC +QC. Можно построить
схему синхронизируемой D-защелки по таблице истинности (рис. 5.14).

D Q

Q
C Q
C
D

Рис. 5.14. Схема D-защелки и ее графическое обозначение


Построeние D-защелки на базе RS-защелки производится следующим
образом. Таблица 5.5 дополняется столбцами для входов R и S базовой RS-
защелки (Табл.5.8).
Табл. 5.8
D Q Q* R S
0 0 0  0
0 1 0 1 0
1 0 1 0 1
1 1 1 0 

По таблице 5.8 определяются функции, которые нужно подать на входы RS-


защелки, чтобы обеспечить функционирование D-защелки. R= D; S = D.
Схема D-защелки на основе синхронной RS- защелки приведена на рис.5.15.
D
Q D
Q
C
C
Q
Q
(а)
(б)

111
Рис. 5.15. Схема D защелки: (а) построенная по полученным выражениям;
(б) D-защелка в схемотехнике TTL
Временные диаграммы управляемой положительным уровнем синхросигнала
D-защелки приведены на рис.5.16. Заштрихованные области в окрестности
спада синхросигнала определяют временные интервалы, в течение которых
сигнал на D-входе не должен изменяться (запретная зона).

Q
tHOLD
tSETUP
Рис. 5.16. Временные диаграммы D-защелки
Этот интервал включает время tSETUP (setup time – время установления) и
время tHOLD (hold time – время удержания ). t SETUP – это время до появления спада
тактового сигнала, в течение которого данные на входе не должны изменяться.
THOLD – это интервал времени после появления отрицательного фронта (спада), в
течение которого данные на входе должны быть неизменными.
Если входной сигнал изменяется внутри этого интервала, то значение
сигнала на выходе D-защелки непредсказуемо и состояние выхода может
оказаться метастабильным. Если предоставить триггер или защелку самой себе,
то схема рано или поздно выйдет из равновесия. Но если она находится в точке,
близкой к равновесию, выход из нее будет недопустимо долгим.
Как видно из выражений для Q*, при C=1 Q *=D, т.е. защелка превращается в
логический элемент, выполняющий функцию повторителя и инвертора. Так
как при C=1 любое изменение информационного входа сразу же появляется на
выходах, триггеры данного типа называются прозрачными.
Синхросигнал позволяет переключать защелку при необходимости на
прямую передачу информационного сигнала D на выход (режим прозрачности).
При изменении тактового сигнала (в рассматриваемом случае из 1 в 0) в ней
фиксируется значение сигнала D в момент перехода синхросигнала из 1 в 0.
Отсюда и название “ защелка”.
Описание защелки на языке Verilog:
module d_latch(data, clk, q);
input data, clk;
output reg q;
always @(clk,data)
begin
if (clk)
q<=data;
end
112
endmodule // d_latch
При использовании оператора if для описания последовательностной логики
рекомендуется использовать неполный if, чтобы подразумевалось, что сигнал
на выходе схемы должен сохранять свое значение при последнем активном
значении селектора в операторе if.

5.3.4. Построение D-защелки на мультиплексорах


Наиболее распространенными и устойчивыми схемами построения защелок
являются схемы на основе мультиплексоров.
Характеристическое уравнение D-защелки, управляемой положительным
уровнем синхросигнала, имеет следующий вид: Q* = DC + C Q
В соответствии с этим выражением может быть построена схема D-защелки
на мультиплексоре 2:1 (рис.5.17,a). Если на адресном входе мультиплексора
высокий уровень тактового сигнала, то на выход передается значение сигнала
на входе D. При низком уровне тактового сигнала вход D отключается от
выхода защелки и обратная связь фиксирует выход, пока тактовый сигнал
имеет низкий уровень (рис. 5.17,б).
Характеристическое уравнение D-защелки, управляемой отрицательным
уровнем синхросигнала, имеет следующий вид: Q* = DC + C Q .

0 D 0
Q Q
D 1 1

(a). C (б). C

Рис. 5.17. Схемы D-защелок на мультиплексорах: (а) управляемая положительным


уровнем сигнала C, (б) управляемая отрицательным уровнем

5.4. Триггеры, управляемые фронтом синхросигнала


При управлении фронтом разрешение на переключение дается только в
момент перепада тактового сигнала (на его фронте или спаде). Управляемые
фронтом триггеры делятся на одноступенчатые и двухступенчатые.
Одноступенчатые (однотактные) триггеры воспринимают информацию только в
момент перепада синхросигнала. Рассмотрим работу D-триггера, построенного
по схеме трех триггеров (серийно производимая микросхема TTL 74 LS 74).
Кроме информационного входа D и входа тактирования C данная схема
триггера имеет еще два инверсных входа асинхронной установки в 0 и в 1 – Set
(~S) и Reset (~R).

113
Taбл. 5.9
~R ~S D C Q* Режим
0 1 x x 0 Установка “0”
1 0 x x 1 Установка “1”
0 0 x x  Запрещенная комбинация
1 1 0  0 Запись “0”
1 1 1  1 Запись “1”

Как видно из таблицы истинности (Табл.5.9), эти два входа доминируют над
входами D и C: если хотя бы на одном из входов будет низкий уровень (0), то
триггер на информацию на входах D и C не реагирует.
Схема D-триггера приведена на рис.5.20.
S
1 A3

A1
2 5 Q
C

A2
3 6 Q

4 A4
D
R

Рис. 5.18. Схема управляемого фронтом D-триггера с асинхронными установочными


входами R и S
Условное графическое обозначение D-триггера приведено на рис. 5.19.
Треугольник на входе C указывает на срабатывание схемы по фронту
синхросигнала. Управление фронтом в триггере данного типа достигается
блокированием информационного входа после прохождения фронта
синхросигнала.
Если на входах R и S единицы, то триггер работает по входам D и C. При
С=0 выходной триггер находится в режиме хранения. При этом сигналы на
выходах A1 и A2 имеют высокий уровень. В то же время A3=D и A4 =D. При
изменении синхронизирующего сигнала из 0 в 1 () на входах выходной
защелки будут сигналы A3 и A4. Эти сигналы поступают на входы выходной
защелки через вентили 2 и 3. Таким образом, Q = D и Q = D. Для надежной
работы триггера необходимо, чтобы сигналы A3 и A4 не изменялись в течение

114
фронта синхросигнала. Следовательно, время установления (t SETUP или tSU)
сигнала на входе D триггера определяется задержкой вентилей 4 и 1. Время
удержания (tHOLD) определяется задержкой вентиля 2.
После прихода синхроимпульса C=1 состояние выходной RS-защелки
становится нечувствительным к изменению сигнала на входе D. Для
следующего переключения триггера сначала необходимо подать C=0 (режим
хранения для выходного защелки). Фронтом следующего синхроимпульса
триггер будет переведен в новое состояние, определяемое значением сигнала на
информационном входе D. Комбинация R =S = 0 является запрещенной.

S

S Q
D D D Q
Clk C Clk
Q C Q
R R
(а). (б). R

Рис. 5.19. Условное графическое обозначение триггера


В данном триггере асинхронный вход установки в 0 (сброса) доминирует над
асинхронным входом установки в 1. Асинхронный сброс (установка)
производится в любой момент времени при поступлении сигнала отрицательной
полярности на вход ~R (~S).
Временные диаграммы, иллюстрирующие работу управляемого
положительным фронтом синхросигнала одноступенчатого D-триггера,
приведены на рис.5.20.

Q
THOLD
TSETUP
Рис. 5.20. Временные диаграммы D-триггера
Заштрихованный интервал определяет запретную зону (в окрестности фронта
синхросигнала) в пределах которой входной сигнал (D) не должен изменяться.
Иначе триггер попадет в метастабильное состояние.
Этот интервал времени состоит из времени установления t SETUP, в течение
которого сигнал на входе D должен быть стабильным до поступления фронта

115
синхросигнала C, и времени удержания t HOLD, в течение которого сигнал на D-
входе должен быть стабильным после прихода синхросигнала.
Описание D-триггера на языке Verilog
module dff_async(reset, set, data, clk, q);
input clk, reset, set, data;
output reg q;
always@(posedge clk,negedge reset,negedge set)
begin
if (reset ==1’b0)
q<=1’b0; //reset is preferred
else if (set==1’b0)
q<=1’b1;
else q<=data;
end
endmodule // dff_async

5.5. Двухступенчатый T-триггер


T-триггер или счетный (от английского слова toggle) имеет, так же, как и D-
триггер, один информационный вход.
Таблица функционирования Т-триггера .
Табл.5.10
Т Q Q*
0 0 0
0 1 1
1 0 1
1 1 0
Граф переходов T-триггера представлен на рис. 5.21.
1
0 0 1 0

1
Рис. 5.21. Граф переходов Т-триггера
Характеристическое уравнение T-триггера имеет следующий вид:
Q* = TQ + TQ = T  Q.
Характеристическое уравнение Т-триггера со входом тактирования C будет
следующим: Q* = ( T  Q )C + QC.
Построение схемы T-триггера на базе RS-триггера производится аналогично
построению D-триггера. Таблица 5.10 дополняется столбцами для входов R и S
базового триггера, в результате получается таблица 5.11.

116
Табл. 5.11
*
Q Q R S
0 0 0 - 0
0 1 1 0 -
1 0 1 0 1
1 1 0 1 0

Функции, которые нужно подать на входы R и S базового триггера, чтобы


получить Т-триггер, следующие: R = Q·T ; S =QT.

S
Q
CLK C
Q
T R

Рис. 5.22. Схема T-триггера, построенная на базе одной RS-защелки


Обратные связи с выхода триггера на его вход ведут к появлению в схеме
режима генерации (при T=1 и C=1 RS-триггер все время переключается, т.е.
ведет себя как генератор).
Для того, чтобы отключить выход от входа, т.е. разорвать обратную связь,
вводят второй триггер. Фактически двухступенчатый триггер состоит из двух
последовательно соединенных защелок: входной (Мaster) и выходной (Slave). В
каждый момент времени одна из ступеней отключена от входов: например, при
C=1 отключена защелка Slave, при C=0 – Master.
Двухступенчатые триггеры строятся несколькими способами: с
разнополярным управлением ступенями, с инвертором, с запрещающими
связями. Т-триггер по схеме с инвертором изображен на рис.5.23.

M S
S S Q

CLK C C
Q
T R R

Рис. 5.23. Master-Slave Т-триггер

Матрица функций возбуждения Т-триггера имеет следующий вид:

Табл. 5.12
117
Переход Т
0  0 0
0  1 1
1  0 1
1  1 0

Master-Slave RS-триггер
Master-Slave RS-триггер с разнополярным управлением изображен на
рис.5.24.

S S S
Q
C C
R R R Q

CLK
Рис. 5.24. Двухступенчатый RS-триггер с разнополярным управлением
Первая защелка является ведущей (master), вторая защелка называется
ведомой. Первая защелка управляется положительным уровнем
синхросигнала CLK, а вторая – отрицательным.

5.6. Построение одноступенчатого T-триггера на базе D-триггера


Oпределим, какую функцию надо подавать на вход D-триггера, чтобы
обеспечить его функционирование, как T-триггер.
Табл.5.13
Q Q* D
0 0 0 0
0 1 1 1
1 0 1 1
1 1 0 0

Как видно из таблицы, D = TQ.

D Q D Q
Т

CLK Q Т Q
C C

Рис. 5.25. T-триггер


C со входом T C
Рис. 5.26. T-триггер, переключающийся
(иногда называют Enable) при каждом фронте синхросигнала

118
Описание на Verilog T-триггера с асинхронным сбросом и прямым и
инверсным выходами.
module tff_qn(t, clk, reset, en, q,qn);
input t, reset, clk;
output reg q,qn;
always @( posedge clk or negedge reset)
if (!reset)
q<=1’b0;
else
q<=q^t;
always @(q)
qn<=!q;
endmodule

5.7. JK-триггер
JK-триггер является наиболее универсальным триггером, так как на его
основе могут быть выполнены все ранее рассмотренные триггеры.
Таблица истинности JK-триггера (Табл. 5.14).
Табл. 5.14
Jt Kt Qt Qt+1
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 0
1 0 0 1
1 0 1 1
1 1 0 1
1 1 0 1 0
1-
J J Q
0- 0 1 -0
C > -1
K
K Q

Рис. 5.27. Графический символ JK-триггера Рис. 5.28. Граф переходов JK-
триггера
Сокращенная таблица функционирования JK-триггера.
Табл. 5.15
Jt Kt Q*
0 0 Qlast
0 1 0
1 0 1
1 1 Qlast
119
Матрица функций возбуждения JK-триггера имеет следующий вид:
Табл. 5.16
Переход J K
0  0 0 
0  1 1 
1  0  1
1  1  0

KQ
00 01 11 10 Q*
j
0 1 Q*= JQ + KQ
1 1 1 1

Рис.5.29. Карта Карно характеристической функции Q* JK-триггера

5.7.1. Построение JK-триггера на RS-защелках по схеме Мaster-Slave


Определим по таблице 5.17 функции возбуждения защелки “Master”.
Tабл.5.17
J K Q Q* R S
0 0 0 0 - 0
0 0 1 1 0 -
0 1 0 0 - 0
0 1 1 0 1 0
1 0 0 1 0 1
1 0 1 1 0 -
1 1 0 1 0 1
1 1 1 0 1 0

R = KQ; S= JQ. Схема JK-триггера изображена на рис.5.30.

S S Q
J
C C
K Q
R R

Рис. 5.30. Схема JK-триггера


Входные сигналы J и K должны оставаться неизменными в тeчение всего
интервала времени, пока C=1. Если это не выполняется, то имеет место явление,
называемое захватом единиц (или нулей). Если на вход J подать прямой сигнал

120
D, а на вход K его инверсию, то получается D-триггер. При J=K=1 JK-триггер
превращается в T- триггер. Если J=K, получается T-триггер со входом enable.
Триггер превращается в RS-триггер при JK1.
5.7.2. JK-триггер, управляемый фронтом синхросигнала
Построение JK-триггера на базе D-триггера, управляемого фронтом
синхросигнала.
Табл. 5.18
J K Q Q* D
0 0 0 0 0
0 0 1 1 1
0 1 0 0 0
0 1 1 0 0
1 0 0 1 1
1 0 1 1 1
1 1 0 1 1
1 1 1 0 0

Правый крайний столбец описывает функцию, в соответствии с которой


должно изменяться состояние информационного входа D-триггера, чтобы схема
работала как JK-триггер.
D= Q* = JQ + KQ

J 0 Q
D
К 1

CLK Q
C

Рис. 5.31. Схема JK-триггера на основе фронтового


C D-триггера и мультиплексора 2:1
Временные диаграммы JK-триггера, управляемого положительным фронтом
синхросигнала.
J

Рис. 5.32. Временные диаграммы фронтового JK-триггера

121
JK-триггеры, переключающиеся по фронту синхросигнала не имеют
проблем, связанных с захватом единиц и нулей. Поэтому они практически
вытеснили JK-триггеры типа “Master-Slave”.
Описание JK-триггера с инверсным асинхронным сбросом на Verilog.
module jk_ff(j,k,clk,reset,q);
input (j,k,clk,reset);
output reg q;
always @ (posedge clk or negedge reset)
begin
if (!reset)
q <= 1’b0;
else case ({j,k})
2’b00: q <=q;
2’b01: q <=1’b0;
2’b10: q <=1’b1;
2’b11: q <=~q;
default: q <= 1’b0;
endcase
end
endmodule // jk_ff

5.8. Управляемый фронтом синхросигнала D-триггер с возможностью


загрузки
Обычно возникает необходимость в применении триггеров и регистров,
которые имеют возможность изменять свое состояние не при каждом появлении
фронта синхросигнала, а в какие-то определенные моменты времени,
определяемые алгоритмом работы устройства, в состав которого они входят.
Для этого добавляется специальный вход разрешения записи в триггер (регистр)
- enable input или load enable.
Схемы D-триггера со входом разрешения enable приведены на рис.5.33, 5.34.

0 0
D
din q din 1 D
1 1 q
en
en CLK reset CLK
reset CLK Дополнительная
CLK задержка

Рис. 5.33 Схема D-триггера с возмож- Рис. 5.34. Схема D-триггера с возмож-
ностью загрузки и асинхронным сбросом ностью загрузки и синхронным сбросом

122
Если en=1, на вход триггера подается входной сигнал din, при en=0 на вход
триггера поступает текущее значение триггера q_out. Кроме этого триггер имеет
вход асинхронного сброса reset.
module D_ff_asynch(reset,en,clk,din,q);
input clk, reset, en,din;
output reg q;
always @(posedge clk or negedge reset)
if (!reset)
q <= 1’b0; //asynchronous reset
else if(en) //synchronous load
q<=din;
else q<=q;
endmodule
В списке чувствительности оператора always сигнал асинхронного сброса
присутствует. У сигнала асинхронного сброса более высокий приоритет, чем у
фронта CLK.

5.9. Асинхронный и синхронный сброс


Сброс (Reset - установка в 0) состояния тактируемого триггера или установка
в единицу (Set) может осуществляться двумя способами: асинхронный сброс
(установка) и синхронный сброс (установка).
Асинхронный сброс
Асинхронный сброс уже рассматривался в предыдущем параграфе. Сброс
производится в любой момент времени при поступлении сигнала отрицательной
полярности на вход ~reset (~set для установки).
Синхронный сброс
В этом случае сброс (установка) производится в момент поступления
синхросигнала.
На рис.5.34 приведена схема управляемого фронтом синхросигнала D-
триггера с возможностью загрузки и инверсным синхронным сбросом. Сброс
осуществляется при наличии на входе reset сигнала 0 в момент появления
фронта синхросигнала. Сигнал синхронного сброса в списке чувствительности
отсутствует.
module D_ff_synch(reset,en,clk,din,q);
input clk, reset, en,din;
output reg q;
always @(posedge clk)
if (!reset)
q<= 1’b0; //synchronous reset
else if(en) //synchronous load
q<=din;
else q<=q;
endmodule
123
Сравнение синхронного и асинхронного сброса
Табл. 5.19
Синхронный сброс Асинхронный сброс
Создает дополнительные условия
Не добавляет проблем метастабильности
для перехода в метастабильное
состояние
Менее быстродействующий сброс Более быстродействующий сброс
(добавляет дополнительную задержку)
Больше транзисторов Меньше транзисторов

5.10. Двухфронтовые триггеры


Двухфронтовые триггеры (Double Edge Triggered Flip-flops) могут получать
информацию на обоих уровнях синхросигнала.
Особенности функционирования данных триггеров:
 Эти триггеры управляются двумя фронтами синхросигнала.
 Обеспечивают передачу информации с более высокой частотой.
 Потребляют меньшее количество энергии.
Это обуславливается тем, что при той же функциональной пропускной
способности используется вдвое меньшая тактовая частота. Это позволяет
сэкономить мощность в цепи распределения тактового сигнала.
Обычный тактируемый фронтом триггер реализуется на защелках, которые
включены последовательно. Двухфронтовой триггер реализуется на защелках,
которые включены параллельно. Схема двухфронтового D-триггера на базе двух
управляемых фронтом синхросигнала D-триггеров, приведена на рис.5.35.
Set
D D
C
0
Q
Reset C 1

C
D

C
Рис. 5.35. Схема двухфронтового D-триггера, на базе двух управляемых фронтом D-
триггеров

Схема двухфронтового D-триггера на основе защелок приведена на рис.5.36.

124
1
S
D 0 1
Q D Q
C 0
1

0 C

Рис. 5.36. Схема двухфронтового триггера на базе защелок C


Таблица истинности двухфронтового триггера с асинхронным сбросом
(доминирующим) и асинхронной установкой (Табл.5.20).

Табл.5.20
CLR(R) Preset (S) C D Q* mode
0 0 0 0 “0” writing
0 0 1 1 “1” writing
0 0 ¯ 0 0 “0” writing
0 0 ¯ 1 1 “1” writing
0 0 0 x Qlast Hold
0 0 1 x Qlast Hold
1 x x x 0 Asynch. reset
0 1 x x 0 Asynch. set
Пример 5.1
Описание на Verilog n-разрядного регистра, в который записывается
информация по обоим фронтам сигнала enable(en). По положительному
фронту сигнала информация со входа d записывается в регистр q1, a по
отрицательному фронту – в регистр q2. Вводятся внутренние переменные
q1, q2. При en=1 на выход передается q1, a при en=0 – q2.
module double_edge(d,en,q);
input [7:0] d;
input en;
output[7:0]q;
reg[7:0]q,q1,q2; //q1,q2 – internal variables
always@(en)
begin
if(en==1) q1=d;
else q2=d;
q=en? q1:q2;
end
endmodule

125
5.10.1. D-триггер типа “Master-Slave”
Триггер данного типа конфигурируется из последовательно соединенных
двух защелок, управляемых разными уровнями синхросигналов.

1 1
Q D Q
D 0 0
CLK

CLK
Рис. 5.37. D-триггер, управляемый положительным фронтом , и его
графический символ C
В отличие от двухфронтовых схем, защелки в этих триггерах соединены
последовательно.

0 0
Q D Q
D 1 1

CLK

Рис. 5.38. D-триггер, управляемый отрицательным фронтомC, и его графический символ


Схема D-триггера на основе передаточных вентилей TG (Transmisiion
Gate)

Рис. 5.39. D-триггер, управляемый фронтом синхросигнала, на основе двух защелок


Защелки реализованы на основе передаточных вентилей.

5.11. Тестируемый триггер


При тестировании специализированных ИС важным свойством триггера
является возможность опроса (scan capability). Для этого должна быть
126
предусмотрены средства, позволяющие подавать на D-вход триггера данные от
альтернативного источника. Триггеры снабжаются дополнительной логикой
для возможности тестирования.
Рассмотрим тестируемый D-триггер (scan D flip-flop).
На рис.5.40 приведена схема тестируемого D-триггера с использованием
мультиплексора.

D 0
D Q D
TI 1
TE
QN ТI
TE CLK
Reset CLK
CLK
Рис. 5.40. Схема тестируемого триггера и его обозначение
Когда сигнал TE на входе разрешения тестирования (test enable input) имеет
неактивное значение, схема ведет себя как обычный D-триггер. Когда же подан
сигнал, разрешающий тестирование, триггер берет данные со входа TI (test
input).
Таблица истинности тестируемого D-триггера приведена в табл. 5.21.
Табл. 5.21
Reset ТЕ TI D CLK Q QN
1 0 x 0  0 1
1 0 x 1  1 0
1 1 0 x  0 1
1 1 1 x  1 0
1 x x x 0 Last Q Last QN
1 x x x 1 Last Q Last QN
0 x x x x 0 1

На рис.5.41 представлена цепочка сканирования из трех триггеров (Л1).


Дополнительные входы TI и TE используются для соединения всех триггеров
в тестируемой схеме в одну цепочку сканирования. При этом входы TE всех
триггеров объединяются вместе в один общий вход TE, а выход Q каждого
триггера соединяется со входом TI следующего триггера, образуя
последовательную цепочку (сдвигающий регистр).
Пусть число триггеров равно n. Для того, чтобы протестировать схему, на
входе TE удерживается разрешающий сигнал в течение n тактов. В это время
через вход TI первого триггера в цепочку посредством сдвига за n тактов
загружается тестирующий вектор. Затем сигнал TE снимается и схеме
предоставляется возможность функционировать в течение одного или
нескольких следующих тактов.
127
D D D
TE TE TE
TI ТI ТI ТI TО
CLK CLK CLK
CLK
TE
Рис. 5.41. Цепочка сканирования из трех триггеров
Новое состояние схемы можно считывать, наблюдая за состоянием
последнего триггера в цепочке TO в течение очередных n тактов при условии,
что на входе TЕ действует разрешающий сигнал. После этого можно загрузить
другой проверочный вектор.
JK- и T-триггеры также могут быть наделены возможностью тестирования
путем добавления соответствующей логики.
5.12. Этапы структурного синтеза автоматов
Задачей структурного синтеза автомата является построение схемы автомата
по его абстрактному заданию.
Последовательность структурного синтеза:
 кодирование входных и выходных сигналов автомата
 кодирование внутренних состояний
 определение функций возбуждения триггеров и функций выходов
автомата
 построение логической схемы автомата.
5.12.1. Кодирование входных и выходных сигналов автомата
На этом этапе определяется число входов и число выходов автомата.
Число входных сигналов автомата m определяется из следующего
соотношения: log 2 M  m  M, где М - число символов входного алфавита,
log 2 M - ближайшее большее целое.
Затем каждому символу входного алфавита ставится в соответствие набор из
нулей и единиц входных сигналов автомата x1, x2 . . . xm.
Аналогичным образом число выходных сигналов автомата n определяется из
соотношения log 2 N  n N, где N - число символов выходного алфавита.
Каждому символу выходного алфавита Yi ставится в соответствие набор из
нулей и единиц выходных сигналов автомата y1, y2 . . . yn.
Все символы входного (выходного) алфавита кодируются различными
наборами.
5.12.2. Кодирование состояний автомата
Способ кодирования внутренних состояний существенным образом
влияет как на сложность функций переходов, так и на сложность функций
выходов, а в результате – на сложность комбинационной части автомата.
128
На этапе кодирования выбирают тип триггера для реализации памяти
автомата. Количество триггеров определяют из следующего соотношения:
log 2 K  k  K ,
где K - число внутренних состояний автомата, k –число триггеров.
Обозначим выходы триггеров через q1,q2. . . qk (внутренние переменные
автомата.
Каждому состоянию автомата ставится в соответствие k-местный набор из
нулей и единиц переменных q 1,q2…qk так, чтобы никаким двум состояниям не
был приписан один и тот же набор. Эта процедура называется кодированием
внутренних состояний автомата (state assignment).
В результате различных вариантов кодирования получаются различные
функции выходов и следующего состояния автоматов. От того, каким образом
закодированы состояния, зависит сложность схемы. Оптимальный вариант
кодирования, обеспечивающий самую простую схемную реализацию автомата,
найти очень трудно. Это объясняется, в первую очередь, очень большим числом
вариантов кодирования, а так же и тем, что функция следующего состояния
зависит от типа триггера. Использование RS- или JK-триггеров позволяет
получить более простые схемы из-за наличия неопределенностей входных
сигналов.
Способы кодирования состояний
 Простейшим способом кодирования является двоичное (бинарное)
кодирование, при котором число триггеров берется минимальным k=log 2 К .
Для кодирования могут быть использованы первые К целых чисел.
 Кодирование “1 из К” (унарное), при котором число триггеров берется
максимальным k=K – каждому состоянию соответствует код, содержащий
только одну единицу (остальные нули - One Hot Encoding).
При таком методе кодирование при любом переходе из состояния в
состояние переключаются только два бита. Этот метод обеспечивает
небольшое потребление энергии и позволяет существенно сократить схему
формирования следующего состояния в FSM, так как в логике следующего
состояния содержится небольшое число логических схем. Набор триггеров
образует структуру типа сдвигающего регистра.
 Кодирование с помощью кода Грея. По возможности, только один бит
переключается при переходах между соседними состояниями. Этот вариант
кодирования используется при проектировании контроллеров, которые
содержат длинные участки без ветвлений.
 Кодирование состояний с использованием кода Джонсона
(последовательность кодов 0000,1000,1100,1110, 1111,0111,0011, и т.д.).
Многие автоматы проектируются таким образом, чтобы у них было
состояние незанятости (idle state), в которое автомат попадал бы как при
запуске, так и во всех тех случаях, когда он ничего не должен делать.

129
Если используется k внутренних переменных и автомат имеет K состояний,
то число вариантов кодирования определяется отношением 2 k!/ ((2k - К)!k!).
2k! –общее число перестановок k-битных кодов.
(2к-К)! – во столько раз сокращается число перестановок кодов из-за
неиспользуемых комбинаций.
k! –столько вариантов кодирования существенно эквивалентны;
В общем случае, единственный способ найти лучший вариант кодирования
состоит в том, чтобы перепробовать все вариaнты кодирования. Однако это
слишком большая работа. Вместо этого большинство разработчиков
руководствуются следующими принципами при выборе варианта кодирования:
 Код начального состояния выбирается таким образом, чтобы автомат
легко было установить в это состояние. Обычно берут 00…0.
 Минимизируется число внутренних переменных, которые изменяются при
каждом переходе.
 Если существуют неиспользуемые состояния, т.е. если К2k, то
выбираются наиболее удобные из имеющихся комбинаций внутренних
переменных. Как правило, не используют для кодирования вариант
бинарного кодирования, при котором коды назначаются подряд (первые
K комбинаций).
 Рассматриваются варианты с использованием большего числа
переменных, чем минимальное. Наиболее часто используется вариант
кодирования, когда каждому состоянию соответствует триггер. При этом
комбинационная схема получается наиболее простой.
Простейшее правило кодирования состояний:
 Если есть два состояния, из которых автомат под воздействием
одинакового сигнала переходит в одно и то же состояние, то исходные
два состояния должны быть закодированы соседними кодами. Это
упрощает функции возбуждения.
 Упрощение функций выхода в случае автомата Мили:
если есть два состояния, при переходе из которых вырабатывается один и
тот же выходной сигнал, то для упрощения функций выхода эти два
состояния должны быть закодированы соседними кодами.
Упростить функции выходов автомата Мура можно следующим образом:
если два состояния автомата отмечены одинаковым выходным сигналом, то они
по возможности должны быть закодированы соседними кодами (код Грея).
Два кода называются соседними, если они отличаются значением только
одного разряда, или другими словами – если расстояние Хэмминга между этими
кодами равно единице.
5.12.3. Определение функций возбуждения и функций выходов
автомата
Для определения функций возбуждения используется кодированная таблица
переходов. Функции возбуждения определяются для каждого типа триггера в

130
соответствии с его матрицей функций возбуждения. Производится поразрядное
сравнение кода текущего состояния с кодом следующего состояния. На каждом
переходе определяются значения функций. При определении функций
возбуждения для D-триггерoв сравнение не производится, т.к. значения функций
на каждом переходе совпадают с кодом следующего состояния.
Для проектирования схемы цифрового автомата удобно пользоваться
следующей методикой:
1. Исходя из условия функционирования автомата, определяется число
состояний автомата.
2. Автомат представляется в одной из стандартных форм (например, в виде
графа или в табличной форме). Производится минимизация числа
состояний автомата.
3. Выбирается тип триггера. Строится кодированная таблица переходов.
4. По этой таблице определяются функции выходов и возбуждения
триггеров.
5. Далее выполняется синтез комбинационной логики автомата.
Производится совместная минимизация функций.
6. На основе полученных функций строится логическая схема автомата.
Рассмотрим применение неиспользуемых состояний. Если число состояний
автомата при наличии k триггеров меньше, чем 2 К, то в зависимости от
предъявляемых требований, используют два подхода:
1.Если автомат каким-то образом может попадать в неиспользуемые состояния,
например, из-за неисправностей в аппаратуре, неожиданных входных
воздействий или ошибок проектирования, то все неиспользуемые состояния
включаются в таблицу состояний и явным образом указываются переходы из
них так, чтобы при любом входном воздействии автомат попадал в начальное
состояние, состояние незанятости или в какое-либо другое безопасное
состояние. Это снижает риск сбоя.
2. Если предполагается, что автомат никогда не попадает неиспользуемое
состояние, то эти состояния можно считать “безразличными”. В большинстве
случаев это упрощает функции возбуждения.
5.12.4. Примеры синтеза автоматов
Пример 5.4. Синтез автомата Мили на T-триггерах.
Задача: Построить схему автомата, предназначенного для формирования
сигнала перегрузки пассажирского лифта.
Допустим, что в кабине лифта, вмещающей шесть человек, одновременно
могут подниматься не более трех человек. Если число пассажиров превышает
цифру три, то должен выдаваться сигнал перегрузки, который блокирует работу
лифта. Пассажиры заходят в лифт (или выходят из лифта) по одному.
В соответствии со словесным описанием алгоритма определим входной
алфавит автомата следующим образом:

131
X0  число пассажиров в лифте не изменяется;
X +1  число пассажиров в лифте увеличивается на одного;
X - 1  число пассажиров в лифте уменьшается на одного.
Выходной алфавит зададим следующим образом:
Y = {0,1}; 0 – отсутствие перегрузки, 1 – перегрузка .
Очевидно, что число состояний автомата должно равняться семи:
S0 – лифт пуст, S1 – в лифте один человек, S2 – в лифте два человека, S3 – в
лифте три человека, S4 – в лифте четыре человека, S5 – в лифте пять человек и S6
– в лифте шесть человек. S = {S0, S1, S2, S3, S4, S5, S6}.
X0/0 X0/0 X0/0 X0/0

X+1/0 X+1/0 X+1/0


S S S S
0 1 2 3

X-1/0 X-1/0 X-1/0 X+1/1


X-1/1 X-1/1

S X+1/1 S X+1/1 S X-1/0


X+1/1 X+1/1
6 5 4

X0/1 X+1/1 X0/1 X+1/1 X0/1

Рис. 5.42. Граф переходов автомата


Произведем синтез автомата.
Кодирование входных сигналов
Минимальное число входов автомата – 2. Обозначим входы через x1 и x0.
Табл. 5.22
Входной Вх.сигнал
алфавит x1 x0
X0 0 0
X+1 0 1
X-1 1 0
Комбинация входов 11 – запрещенная.
Кодирование состояний автомата
Для реализации памяти автомата выбираем T-триггеры, полученные из JK-
триггеров. Число триггеров берем минимальным, т.е. равным трем. Закодируем
состояния следующим образом:
S0 – 000; S1 – 001; S2 – 010; S3 – 011; S4 – 100; S5 – 101; S6 – 110;

132
Построение кодированной таблицы переходов автомата
На основе кодированной таблицы переходов автомата определяются функции
переходов и выходов автомата.
Табл. 5.23
Текущее Входной Следующее Выходной Функции
состояние сигнал состояние сигнал возбуждения
q1 q2 x1 x2 q1 q2 q3 y Т1 Т2 Т3
q3
X0 00 S0 0 0 0 0 0 0 0
S0 000 X+1 01 S1 0 0 1 0 0 0 1
X-1 10 S0 000    
X0 00 S1 0 0 1 0 0 0 0
S1 001 X+1 01 S2 0 1 0 0 0 1 1
X-1 10 S0 0 00 0 0 0 1
X0 00 S2 0 1 0 0 0 0 0
S2 010 X+1 01 S3 0 1 1 0 0 0 1
X-1 10 S1 0 0 1 0 0 1 1
X0 00 S3 0 1 1 0 0 0 0
S3 011 X+1 01 S4 1 0 0 1 1 1 1
X-1 10 S2 0 1 0 0 0 0 1
X0 00 S4 1 0 0 1 0 0 0
S4 100 X+1 01 S5 1 0 1 1 0 0 1
X-1 10 S3 0 1 1 0 1 1 1
X0 00 S5 1 0 1 1 0 0 0
S5 101 X+1 01 S6 1 10 1 0 0 1
X-1 10 S4 1 0 0 1 0 1 1
X0 00 S6 1 1 0 1 0 0 0
S6 110 X+1 01 S6 110 1 0 0 0
X-1 10 S5 1 0 1 1 0 1 1
X0 00 S6 1 1 0 1 0 0 0
Пример 5.5. Синтез автомата Мура (на JK-триггерах)
Задача: Построить схему автомата, который при подаче на вход каждой
входной последовательности из нулей и единиц длины три вычисляет бит
четности Y. Бит Y=1, если число единиц во входной последовательности
нечетно. В обратном случае Y=0. Входной и выходной алфавиты автомата:
X={0,1}, Y={0,1}.
Построение графа автомата
Сначала указываем на графе начальное состояние S 0. Затем состояния S1 и S2,
в которые автомат переходит под действием сигналов 0 и 1. После этого строим
состояния S3 ,S4 и S5, S6, в которые автомат переходит из состояний S 1 и S2. Из
этих четырех состояний автомат переводится не в восемь состояний, а в два S 7 и
S8, так как цепочка из трех символов на вход автомата уже подана, и можно
принять решение о значении выходного сигнала. Из состояний S 7 и S8 автомат

133
возвращается в начальное состояние S0. Граф автомата, полученный в
результате, приведен на рис. 5.45.
Минимизация состояний автомата Мура
В данном примере используется табличный метод минимизации состояний
автомата, основанный на последовательном разбиении состояний автомата на
классы 1-, 2- и k-эквивалентных состояний, рассмотренный в главе 4 для
автомата Мили.

S0/0
0 1

S1/0 S2/0
0 1 0 1 0 1 1 0

S3/0 S4/0 S5/0 S6/0


1 0 1 0
0 1 0 1

S7/0 S8/1

Рис. 5.45. Граф автомата Мура


В автомате Мура вводится понятие 0-эквивалентности. 0-эквивалентными
состояниями называются состояния, которым соответствуют одинаковые
выходные сигналы. Исходная таблица переходов автомата (Табл.5.24).
Taбл.5.24
Выход y Состояние X=0 X=1 Класс
0 S0 S1 S2 А0
0 S1 S3 S4 А0
0 S2 S5 S6 А0
0 S3 S7 S8 А0
0 S4 S8 S7 А0
0 S5 S8 S7 А0
0 S6 S7 S8 А0
0 S7 S0 S0 А0
1 S8 S0 S0 B0

Разбиение P0 ={A0,B0}. A0 ={S0, S1, S2, S3, S4, S5, S6, S7}; B0 = S8
Разбиение P1 на классы одноэквивалентных состояний (Табл. 5.26),
Разбиения P2,P3,P4 представлены таблицами 5.25, 5.26 и 5.27
соответственно.

134
Табл. 5.25
State X=0 X=1 Класс
S0 A0 A0 A1
S1 A0 A0 A1
S2 A0 A0 A1
S3 A0 B0 B1
S4 B1 A0 C1
S5 B1 A0 C1
S6 A0 B0 B1
S7 A0 A0 A1
S8 - - D1

Класс A0 расщепляется на три класса A1, B1, C1.


Разбиение P1 ={A1,B1, C1,D1}
A1 ={S0, S1, S2, S7}; B1 = {S3,S6}; C1={S4,S5}; D1=S8
Разбиение P2 на классы 2-эквивалентных состояний
Табл. 5.26
State X=0 X=1 Класс
S0 A1 A1 A2
S1 B1 C1 B2
S2 C1 B1 C2
S7 A1 A1 A2
S3 A1 C1 D2
S6 A1 C1 D2
S4 D1 A1 E2
S5 D1 A1 E2
S8 - - F2

Разбиение P2 ={A2,B2, C2,D2,E2,F2}


A2 ={S0, S7}; B2 = S1; C2=S2; D2={S3,S6}; E2={S4,S5}; F2=S8
Разбиение P3 на классы 3-эквивалентных состояний
Табл. 5.27
State X=0 X=1 Класс
S0 B2 C2 A3
S7 A2 A2 B3
S1 - - C3
S2 - - D3
S3 A2 F2 E3
S6 A2 F2 E3
S4 F2 A2 F3
S5 F2 A2 F3
S8 - - G3
Разбиение P3 ={A3,B3, C3,D3,E3,F3,G3}
Как видно из таблицы, в разбиении P3 осталось только два класса, которые
содержат больше одного состояния Е3={S3,S6} и F3={S4,S5}.
Остальные классы распались, так как содержат только по одному состоянию.
135
Разбиение P4 на классы 4-эквивалентных состояний
Табл. 5.28
State X=0 X=1 Класс
S0 - - A4
S7 - - B4
S1 - - C4
S2 - - D4
S3 B3 G3 E4
S6 B3 G3 E4
S4 G3 B3 F4
S5 G3 B3 F4
S8 - - G4
Разбиение P4 ={A4,B4, C4,D4,E4,F4,G4} полностью совпадает с разбиением
P3. Следовательно, разбиение P3 является финальным разбиением.
Совместимыми (эквивалентными) являются состояния S 3  S6 (заменяются
состоянием S36) и S4  S5 (заменяются состоянием S45).
Построение таблицы переходов минимизированного автомата
Табл. 5.29
Output State X=0 X=1
0 S0 S1 S2
0 S1 S36 S45
0 S2 S45 S36
0 S36 S7 S8
0 S45 S8 S7
0 S7 S0 S0
1 S8 S0 S0

Граф переходов минимизированного автомата представлен на рис.5.46.

S0/0
0 1

S1/0 S2/0
1 1
0 1 0 0 1 0

S36/0 S45/0
1 1
0 0

S7/0 S8/1

Рис. 5.46. Граф минимизированного автомата

136
Построение схемы автомата (структурный синтез автомата)
1. Кодирование состояний автомата
Число триггеров k выбираем минимальным для того, чтобы упростить синтез
комбинационной схемы автомата. k=log 27 =3.
При кодировании состояний с целью получения более простых функций
возбуждения будем следовать следующему правилу. Если в некоторое
состояние Sk автомата есть переход из двух состояний Si и Sj под действием
одного и того же входного сигнала, то состояния Si и Sj должны быть
закодированы соседними кодами (unit distant assignment).
Назначение кодов состояниям:
S0 – 000, S1 – 001, S2 – 010, S7 –100, S8 –110, S36 – 011, S45 –101
В состояние S0 есть переходы из S7 и S8 под действием одинаковых
сигналов. S7 и S8 обязательно кодируются соседними кодами.
В качестве элементов памяти используется JK-триггер.
2. Построение структурной таблицы переходов
Для определения функций возбуждения используем матрицу функций
возбуждения JK-триггера (Табл. 5.30).
Табл.5.30
Переход J1 K1
00 0 -
01 1 -
10 - 1
11 - 0
Структурная таблица переходов автомата представлена в Табл.5.31.

Табл. 5.31
Present State y X Next State J1 K1 J2 K2 J3 K3
q1q2q3 q1q2q3
S0 000 0 0 S1 001 0 - 0 - 1 -
1 S2 010 0 - 1 - 0 -
S1 001 0 0 S36 011 0 - 1 - - 0
1 S45 101 1 - 0 - - 0
S2 010 0 0 S45 101 1 - - 1 1 -
1 S36 011 0 - - 0 1 -
S36 011 0 0 S7 100 1 - - 1 - 1
1 S8 110 1 - - 0 - 1
S45 101 0 0 S8 110 - 0 1 - - 1
1 S7 100 - 0 0 - - 1
S7 100 0 0 S0 000 - 1 0 - 0 -
1 S0 000 - 1 0 - 0 -
S8 110 1 0 S0 000 - 1 - 1 0 -
1 S0 000 - 1 - 1 0 -

137
Так как память автомата реализуется на JK-триггерах, требуется определить
6 функций возбуждения J1, K1 ,J2, K2, J3, K3 и одну выходную функцию y.
Построение карт Карно для функций возбуждения и функции выхода
Функции возбуждения JK-триггеров зависят от переменных q1,q2,q3 и x.
Число переменных в функциях выхода равно трем (q1,q2,q3), так как в автомате
Мура выходной сигнал от входа явно не зависит.
Карты Карно для функций возбуждения триггеров J1, K1, J2,K2, J3,K3
представлены на рис. 5.47.
q3 q3
J1
q3 x q3 x K1
q1q2 00 01 11 10 q1q2 00 01 11 10
00 1
00 – – –q3 –
01 1 1 1 01 – – – –
q2 q2
11 – – – – –
q1 q1 11 1 1 –
10 – – – – 10 1 1

x x
q3
q3 x J2 q3 x K2
q1q2
00 01 11 10 q1q2 00 01 11 10
00 1 1 00 – – – –
01 – – – – 01 1 1
q2 q2
11 – – – – q1 11 1 1 – –
q1
10 1 10 – – – –

x x

q3 q3
q3 x J3 q3 x K
q1q2 00 01 11 10 q1q2 00 01 11 10 3
00 1 – – 00 – –
01 1 1 – – 01 – – 1 1
q2 q2
11 – – 11 – – – –
q1
10 – – 10 – – 1 1

x x
Рис. 5.47. Определение функций возбуждения J1,K1,J2,K2,J3,K3

138
Число переменных в функциях выхода равно трем (q1,q2,q3), так как в
автомате Мура выходной сигнал от входа явно не зависит.
Карты Карно для функций выхода представлены на рис. 5.48.
q2
q2 q3
q 00 01 11 10 J1= q3x + q2x; K1= q3;
1
0 y J2= q1q3x +q3x; K2 = q1 +x;
1 – 1 J3 = q1x + q1q2; K3 = q1 + q2;
q3 y = q1q2;
(а) (б)
Рис. 5.48. Карта Карно функции y

Схема автомата, вычисляющего бит четности представлена на рис.5.49.

q3
x
q2
~x J q1
~q3
K ~q1
~q1
C
x
~q3
q1
~x q2 y
J q2
q1 K
~q2
~x
x x C

~x ~q1
~x
q3
J
q2 K
~q3
C q3
q1

Reset Clock
Рис. 5.49. Схема автомата, вычисляющего бит четности (пример 5.4)

139
Пример 5.5
Синтез автомата Мура на D-триггерах
Задача: Построение схемы автомата Мура, описанного в параграфе 4.3.

11
01 00
00 S0/ S1/
10
1 01 0
10
11 11
01
10 S2/
0

00 синтезируемого автомата
Рис. 5.50. Граф
Память автомата построим на управляемых фронтом D-триггерах.
Число триггеров выберем минимальным n=log23 =2.
Используем соседнее (код Грея) кодирование состояний автомата:
S0 - 00. S1 -10, S2 – 11. Так как автомат имеет всего три состояния и граф
представляет собой цикл нечетной длины, закодировать все состояния
соседними кодами или кодами с расстоянием Хэмминга, равным единице,
невозможно.
1. Структурная таблица переходов автомата
Табл. 5.32
Текущее Входной Следующее Функции
состояние сигнал состояние возбуждения
y q1 q2 x1 x2 q1q2 d1 d2
S0 1 0 0 S0 00 0 0
00 0 1 S1 10 1 0
1 0 S1 10 1 0
1 1 S2 11 1 1
0 0 S1 10 1 0
0 1 S2 11 1 1
S1 0 10 1 0 S2 11 1 1
1 1 S0 00 0 0
S2 0 0 0 S2 11 1 1
11 0 1 S0 00 0 0
1 0 S0 00 0 0
1 1 S1 10 1 0

2. Определение функций возбуждения и функции выхода


Для определения функции возбуждения D-триггера руководствуемся
следующим соображением: на вход D-триггера нужно подать то значение,
140
которое этот триггер должен получить. Как видно из Табл.5.32, функции
следующего состояния (переходов) и функции возбуждения совпадают.
Минимизацию функций возбуждения произведем с помощью карт Карно.
x1x2 x1 x1
d1 x1x2 d2
q1q2 00 01 11 10 q1q2 00 01 11 10
00 1 1 1 1
00
01 – – – – 01 – – – –
q2 q2
11 1 1
q1 q1 11 1
10 1 1 1 10 1 1

x2

Рис. 5.51. Карты функций возбуждения d1 и d2


d1= q1x1 + q2x1x2 + q2x1x2 + q1q2x2 +q2x1x2 +q1x1x2 ;
d2 = q2x1x2 +q1x1x2 + q1q2x1x2 + q1q2x1x2 ;
y=q1q2 ;
Число входов элементов схемы, построенной по выражению d1 в ДНФ,
равно 23. Найдем выражение для d1 в КНФ.
d1 = q1x1x2 + q2x1x2 + q2x1x2 + q1q2x1x2 ;
d1= (q1+x1+x2) (q2+x1+x2) (q2+x1+x2) (q1+q2+x1+x2) (5.1)
Число входов элементов схемы, построенной по выражению d1 в КНФ,
равно 17. Значит, для построения схемы лучше использовать последнее
выражение (5.1). ∎

5.13. Описание FSM на Verilog


Для описания FSM используют два способа: описание с помощью двух
always блоков, либо описание с помощью трех always блоков.
Описание с помощью трех always блоков.
Структурная схема автомата Мура приведена на рис.5.3.

Пример 5.6
Составим Verilog описание автомата Мура, граф переходов которого
приведен на рис.5.52.

141
S0/0
0 1

S1/0 S2/0
1 1
0 1 0 0 1 0

S3/0 S4/0
1 1
0 0

S5/0 S6/1

Рис. 5.52. Граф автомата Мура


Имена состояний изменены для удобства описания: (S 36 заменено на S3, S45 на
S4, S7 на S5, S8 на S7).
Для описания используется два always блока: для памяти автомата, для
функции переходов (следующего состояния). Для функции выходов используем
assign statement.
Используя конструкцию parameter, присвоим кодам следующие значения:
S0 – 000, S1 – 001, S2 – 101, S3 – 010, S4 – 110, S5 – 011, S6 -111.
Средства синтеза используют эти значения как рекомендации, поэтому после
синтеза состояниям могут соответствовать другие коды.
Настоящее состояние (state) и следующее состояние (next_state) являются
внутренними регистровыми переменными.
module Moore_fsm (x, y, clk, reset);
input x, clk, reset;
output reg y;
parameter S0=3'b000,S1= 'b001,S2=3'b101,
S3=3'b010,S4=3'b110, S5=3'b011, S6=3'b111;
reg[2:0] state, next_state;
// register
always @(posedge clk or negedge reset)
if (!reset) state <= S0;
else state<= next_state;
// next_state logic
always @(x,state)
case (state)
S0: next_state = x? S2:S1;
S1: next_state = x? S4: S3;
S2: next_state = x? S3: S4;
S3: next_state = x? S6: S5;

142
S4: next_state = x? S5: S6;
S5: next_state = S0;
S6: next_state = S0;
default: next_state=S0;
endcase
// output logic
always @(state)
if (state==S6) y=1; else y=0;
endmodule

Данный автомат описан с помощью трех always блоков.


Для описания с помощью двух always блоков переменную y опишем как wire.
Применим оператор непрерывного присваивания assign.
assign y = (state==S6);
Выходной сигнал y принимает значение, равное 1, только в случае, если
автомат находится в состоянии S6.

Пример 5.7.
Описание на Verilog автомата Mили
Автомат имеет два входа w 1 и w2 и выход y. Функция автомата состоит в
сравнении входных последовательностей из нулей и единиц, поступающих
на эти входы. Если эти последовательности совпадают в течение четырех
последовательных тактов, y=1. Во всех остальных случаях y=0.
Например:
x1: 0110111000110
x2: 1110101000111
y: 0000100001110

Построить граф автомата Мили. Описать автомат на Verilog.


Задание автомата Мили. В каждом такте работы автомата x 1 и x2
проверяются на совпадение, поэтому входной алфавит автомата
X={00,01,10,11}. Выходной алфавит Y={0.1}. Афавит внутренних
состояний и функция переходов и выходов определяются при построении
графа автомата в соответствии с алгоритмом его работы.

143
01/0 00/0 00/0 00/0 00/1
10/0 11/0 11/0 11/0 11/1
S0 S1 S2 S3
01/0
10/0 01/0
10/0

01/0, 10/0

Рис. 5.53. Граф автомата Мили для примера 5.7.

Автомат Мили можно описать с помощью двух always блоков: один для
комбинационной логики и второй для логики состояния (регистра). Списки
чувствительности для функции следующего состояния и функции выходов
совпадают. Иногда для большей наглядности (как в данном примере)
используется три always блока.
module Mealy_fsm(x1,x2,y,clk,reset);
input x1,x2,clk,reset;
output reg y;
reg [1:0] state, next_state;
parameter S0=2'b00, S1=2'b01, S2=2'b10, S3=2'b11;
//register
always @(posedge clk, negedge reset)
if (!reset) //asynchronous reset
state<=S0;
else state<=next_state;
//next state logic
always @(state, x1, x2)
case (state)

144
S0:next_state=(x1==x2)? S1:S0;
S1:next_state=(x1==x2)? S2:S0;
S2:next_state=(x1==x2)? S3:S0;
S3:next_state=(x1==x2)? S3:S0;
default: next_state=S0;
endcase
//output logic
always @(state, x1, x2)
if ((state==S3)&&(x1==x2)) y=1;
else y=0;
endmodule

Описание автомата Мили на SystemVerilog

module Mealy_fsm( input logic clk, input logic reset,


input logic x1,x2, output logic y);
typedef enum logic [1:0] {s0,s1,s2, s3} statetype;
statetype [1:0] state, nextstate;
// state register
always_ff @(posedge clk, posedge reset)
if (!reset) //asynchronous reset
state<=S0;
else
state<=next_state;
//next state logic
always_comb
case (state)
s0: next_state=(x1==x2)? s1:s0;
s1:next_state=(x1==x2)? s2:s0;
s2:next_state=(x1==x2)? s3:s0;
s3:next_state=(x1==x2)? s3:s0;
default: next_state=s0;
endcase
//output logic
always_comb
if ((state==S3)&&(x1==x2)) y=1;
else y=0;
endmodule

Типы данных в SystemVerilog

Тип logic позволяет избежать введения в заблуждение пользователей


относительно того, является ли описываемый элемент на самом деле триггером.

145
SystemVerilog упрощает правила применения операторов присваивания и
создания иерархических портов.
Оператор assign может использоваться для переменной типа logic вне
always блока. В Verilog традиционно assign использовался только для
переменной типа wire. Почти все сигналы SystemVerilog могут быть logic *(wire
только tri).
Оператор typedef определяет значение statetype как двухбитный logic тип с
тремя возможными значениями: S0, S1 или S2.
   State и nextstate сигналы типа statetype.
Константам перечисления, упомянутым в определении типа, по умолчанию
присваиваются порядковые значения: S0=00, S1=01, и S2=10.
Они могут быть явно изменены пользователем, но программа-синтезатор
рассматривает их как рекомендацию, а не как требование.
Например, следующий фрагмент кодирует состояния трехбитным унарным
(1-hot) кодом:
typedef enum logic [2:0] {S0 = 3'b001, S1 = 3'b010, S2 = 3'b100} statetype;

Из-за того, что логика для следующего состояния должна быть


комбинационной, условие default (значения по умолчанию) является
обязательным, даже несмотря на то, что состояния 2'b11 может не быть.
Если описывается автомат Мура, и известно, что, например, в состоянии S5 и
S7 выход должен быть равен 1, можно использовать следующее присвоение:
assign y=(state==S5)|(state==S7);

Некоторые средства синтеза предоставляют пользователю на выбор


несколько вариантов кодирования состояний. Если пользователь не назначает
коды состояниям сам, то может быть использовано унарное кодирование.
Например, программная система XST предлагает следующие варианты
кодирования состояний:
One-Hot State Encoding – кодирование с максимальным числом триггеров;
Gray State Encoding – кодирование соседними кодами;
Compact State Encoding- кодирование с минимальным числом триггеров;
Johnson State Encoding и др.

146
5.14. Анализ тактируемых синхронных автоматов
Цель анализа – определение логических функций переходов и выходoв, для
того, чтобы можно было предсказать поведение схемы.
Aнализ тактируемых синхронных автоматов выполняется в три основных
шага:
1. Определяются функции переходов и выходов  и .
2. По полученным функциям строятся таблицы переходов и выходов
автомата.
3. Строится граф переходов автомата.
При анализе автомата используется характеристическое уравнение триггера
или защелки. Характеристическое уравнение это есть зависимость
следующего состояния триггера или защелки от его текущего состояния и
значений сигналов на его входах.

Пример 5.8. Анализ автомата, реализованного на D-триггерах.


Схема автомата, представленная на рис.5.55, содержит три D-триггера,
выходы которых обозначены q1, q2, q3.

q2
~x
d1 q1
~q1 D
~q2
x ~q1
C
~q1
q2 ~q1
q3 y
q1
q3 d2 q2
x D
x ~q2 ~q2
~x q3 C

~q1
~x
d3 q3
q1 D
x
C
CLK
Reset

147
Рис. 5.54. Схема анализируемого автомата
Сначала рассматривается поведение памяти автомата. Для этого
определяются по схеме функции возбуждения d1, d2, d3.
d1 = q2x + q1q2x ;
d2 = q1q2 + q1q3x + q2q3;
d3 = q1x + q2q3 +q1x;
Используя характеристическое уравнение D-триггера, определяются
следующие состояния триггеров Q1*, Q2*, Q3*.
Q1* = q2x + q1q2x ;
Q2* = q1q2 + q1q3x + q2q3;
Q3* = q1x + q2q3 +q1x;
Выходной сигнал автомата определяется следующим выражением:
y = q1 q3;
Анализируемый автомат является автоматом Мура, так как выходной сигнал
от входа не зависит.
Для каждой комбинации “состояние – вход” определяется следующее
состояние и выходной сигнал. Составляется таблица переходов
анализируемого автомата (Табл.5.33 ).
В результате анализа удалось найти шесть состояний.

0 Табл. 5.33
X 0 1 Выход
q1 q2 q3
0 0 0 0 0 1 1 0 0 0
0 0 1 0 1 1 1 1 1 1
1 0 0 0 0 0 0 0 1 0
0 1 1 1 1 1 0 1 0 1
0 1 0 1 1 1 0 1 0 0
1 1 1 1 0 0 0 1 1 0

Можно присвоить состояниям автомата имена:


000 – S0, 001 – S1, 100 – S2, 011 – S3, 010 – S4, 111 – S5.
Таблица переходов автомата, полученного в результате анализа, будет
иметь следующий вид:
Табл. 5.34
X 0 1 Выход
S
S0 S1 S2 0
S1 S3 S5 1
S2 S0 S1 0
S3 S5 S4 1
S4 S5 S4 0
S5 S2 S3 0

148

Пример 5.9. Анализ автомата, построенного на JK-триггерах.


Схема анализируемого автомата представлена на рис.5.55.
J1 q1 J2 q2
J J
CLK CLK
“1” K2
K K
K1
CLR

CLK

Рис. 5.55. Схема анализируемого автомата

Определим функции возбуждения JK-триггеров.


J1=q2; K1 = 1;
J2= q1; K2 = 1;
Характеристическое уравнение JK-триггера: q* = Jq + Kq.
Подставив выражения для функций возбуждения в характеристические
уравнения триггеров, получим:
q1* = q2q1; q2* = q1q2 ;
На основе полученных выражений составляется таблица переходов
(Табл.5.35). Переходы из состояния в состояние происходят под действием
тактовых сигналов. Выходные сигналы являются регистровыми (снимаются
непосредственно с выходов триггеров).
Табл. 5.35
q1 q2 q1* q2*
0 0 1 0
1 0 0 1
0 1 0 0

Автомат является двоичным вычитающим счетчиком, имеющим три


состояния. Последовательность состояний - 0,2,1,0,… ∎

Пример 5.10. Анализ автомата, реализованного на T-триггерах

B T T

Y
C C 149
Reset
CLK
Рис. 5.56. Схема анализируемого автомата
Определим функции возбуждения t1 и t2 триггеров. t1= B; t2= ABq1;
Характеристическое уравнение T-триггера: q* = qt;
Подставим выражения для функций возбуждения в характеристические
функции триггеров и получим следующее:
q1* = q1t1= q1B;
q2* = q2t2= q2ABq1;
y = Aq2 ;
Построим таблицу переходов автомата.
Табл. 5.36
X A B
S
q1 q2 00 01 10 11
00 0 0, 1 1 0,1 0 0,0 1 0,0
10 1 0, 1 0 1,1 1 0,0 0 0,0
01 0 1, 0 1 0,0 0 1,0 1 1,0
11 0 1, 0 0 0,0 1 1,0 0 0,0

Присвоим состояниям автомата имена:


00 – S0, 10 – S1, 01– S2, 11 – S3
Табл.5.37
X A B
S
q1 q2 00 01 10 11
S0 S0, 1 S1,1 S0,0 S1,0
S1 S1, 1 S2,1 S1,0 S0,0
S2 S2, 0 S1,0 S2,0 S3,0
S3 S2, 0 S0,0 S3,0 S0,0

Граф автомата приведен на рис.5.57.

Рис. 5.57. Граф анализируемого автоматапримера 5.10.

150
В общем случае при анализе тактируемых автоматов выполняются
следующие шаги:
1. Составляются уравнения возбуждения для информaционных входов
триггеров.
2. Для получения уравнений переходов производится подстановка уравнений
возбуждения в характеристические уравнения триггеров.
3. По уравнениям переходов строится таблица переходов автомата.
4. Составляются уравнения выходов.
5. Значения выходных сигналов добавляются в таблицу переходов.
6. Состояниям присваиваются имена, которые заменяют внутренние
переменные в таблице переходов-выходов.
7. (Необязательный шаг). Вычерчивается диаграмма переходов (граф).

5.15. Временные диаграммы синхронных схем. Ограничения времени


предустановки и времени удержания
В синхронной системе все триггеры переключаются по одному и тому же
общему симхроимпульсу. Входы установки и сброса используются, в основном,
при инициализации системы.
В синхронных системах гонки и риск не представляют опасности, так как они
должны происходить в те моменты времени, когда сигналы на входах триггеров
не оказывают никакого влияния на их состояние. Асинхронными схемами
являются заранее отлаженные схемы, например триггеры, в отношении которых
гарантируется, что они работают хорошо.
Рассмотрим более подробно временные параметры работы тактируемого
фронтом синхросигнала D-триггера.
Decision
window
Thold
CLK TCLK-Q
D Q
d
CLK CLK Q

Tsetup TCCQ
Рис. 5.58. Временная диаграмма работы D-триггера
TCCQ – минимальное время от изменения входа до изменения выхода
триггера, а TCLK-Q –максимальное время (propagation delay CLK to Q).

151
Decision window – интервал времени, в течение которого входной сигнал не
должен измениться, иначе триггер может оказаться в метастабильном
состоянии.
Требование: значения на входах триггеров синхронной системы должны
быть стабильны в течение времени предустановки (Setup Time -Tsetup) до
поступления тактового сигнала и времени удержания (Hold Time - Thold) после
поступления тактового сигнала. Сумма времен Tsetup и Thold называется
окном принятия решения или апертурным временем схемы.
Синхронная схема (или синхронный тракт обработки информации) в общем
случае может быть представлена следующим образом (рис.5.59).

R1 Комбина- R2
Q1 D2
ционная
логика

CLK

Рис. 5.59. Синхронный тракт обработки информации


На рис.5.60 представлены типовые временные диаграммы, которыми
задаются требования, предъявляемые к входным и выходным сигналaм
системы, а также определяются временные характеристики.

CLK
TH TL
TCLK
Выходы
триггеров R1
TCLK-Q
Входы
триггеров R2
TCOMB

Рис. 5.60. Временные диаграммы синхронной схемы


Пунктирные стрелки соответствуют минимальной задержке в триггерах
регистра R1 и комбинационной схеме, а сплошные стрелки – максимальной
задержке. Сигналы на выходах комбинационной схемы могут начать
изменяться только после того, как изменятся выходы триггеров регистра R1.
TCLK-Q – длительность интервала времени, в течение которого происходит
изменение сигнала на выходах триггеров автомата после фронта сигнала CLK.
Во время этого интервала сигналы на выходах не должны приниматься во
внимание схемами, на входы которых они поданы.

152
Время tCOMB требуется для того, чтобы сформировались новые выходы
комбинационной схемы (учитывается задержка как логических схем, так и
проводников TRoutimg).
Время предустановки
Для установления сигналов на входах триггеров и других тактируемых
устройств требуется отвести время TSETUP.
TSETUP ограничивает самое позднее время поступления (т.е.максимальную
задержку поступления) сигналов на информационные входы триггеров ( при
максимальной величине TCLK-Q и TCOMB).
Рассмотрим пример:

ab
CL1 d а
D Q CLK-Q
(min)

cd

CL2 b Q
c
D
(max) D-CLK

CLK
Рис. 5.61. Пример структуры автомата
CL1– комбинационная логика с минимальной задержкой,
CL2 – комбинационная логика с максимальной задержкой.

CLK
TH TL
TCLK
а
TCLK-Q
b
Tdab
T
Setup Slack SETUP
Рис. 5.62. Максимальная задержка для ограничения времени предустановки
TCLK_MIN= T CLK-Q(max) + Tab +TSETUP
Tab –задержка на пути от a к b ( задержка схемы CL2 - Tcomb_max) .
Схема будет работать надлежащим образом только в случае, когда
выполняется неравенство:
TCLK >= T CLK-Q + Tcomb_max +TSETUP
Tcomb_max<= TCLK –( T CLK-Q + TSETUP)
153
Это неравенство называют ограничением времени предустановки или
ограничением максимальной задержки в комбинационной схеме.
Как правило, задержка комбинационной схемы это единственный параметр,
который может изменять проектировщик, так как период тактового сигнала
будущей схемы может быть задан до разработки, а времена TCCQ , Tsetup и
Thold определяются используемыми библиотеками или системами логических
элементов и находятся вне влияния разработчика.
У правильно спроектированной схемы должен быть положительный,
ненулевой запас по времени, предусматривающий возникновение неожиданных
ситуаций (компоненты с предельно допустимыми параметрами, пониженное
напряжение питания и др.), а также задержку синхросигнала.
Величину TCLK – TCLK-Q(max) – Tcomb_max – TSETUP называют запасом по
времени установления (setup-time margin или setup slack).
Схема не будет работать, если эта величина, называемая T SLACK,
отрицательна. TSLACK = TCLK - TCLK MIN.
Время удержания
Другим временным параметром задается требование к времени удержания
THOLD.

CLK
TH TL
TCLK
c

TCCQmin Tc_cd T
HOLD SLACK

THOLD

Рис. 5.63. Минимальная задержка для ограничения по времени удержания


TCCQmin – contamination delay (задержка реакции) –задержка самого раннего
прибытия сигнала со входа c на выход триггера (минимальная задержка сигнала
на пути от d к Q, рис.5.61).
Tc_cd - минимальная задержка комбинационной схемы CL1 (TCOMB_MIN ).
Требование ко времени удержания ограничивает минимальную задержку
комбинационной схемы.
T HOLD < =TCC_Q+TCOMB_MIN
TCOMB_MIN >= T HOLD - TCC_Q

154
Величина TCC-Q(MIN) + TCOMB(MIN) - THOLD является запасом по времени
удержания (hold-time margin или hold slack).

Временная диаграмма, иллюстрирующая вышесказанное, приведена на рис.


5.64 (для идеального CLK).

Tmin Tmax

CLK

THOLD Hold Setup T


slack slack SETUP

Рис. 5.64. Временная диаграмма с учетом ограничений по времени


TMIN = TCC_Q+TCOMB(MIN) - минимальное время прибытия данных на
информационные входы триггеров. TMAX = TCLK-Q+TCOMB(MAX) - максимальное
время прибытия данных на информационные входы триггеров.
Для анализа схемы требуется найти задержку в самом длинном пути в
пределах одного периода тактового сигнала и по ней судить о
работоспособности схемы (critical path delay).
При непосредственном соединении триггеров (рис.5.65 ) T HOLD < =TCC_Q, так
как комбинационная схема отсутствует.

D D

CLK CLK
CLK

Рис. 5.65. Непосредственное подключение триггеров


Пример: Задана схема (рис.5.66).
Временные параметры элементов заданы таблицей
Таб.
Задержка реакции триггера TCCQ 30ps
Задержка распространения T CLK-Q 80ps
Время предустановки Tsetup 50ps
Время удержания Тhold 60ps
Задержка реакции логических элементов Тc 25ps
Задержка распространения логических элементов Tpd 40ps

155
Пусть в некоторый момент времени после подачи очередного тактового
a 01
сигнала a=0, b=0, c=0, d=1. Критический путь возникает, когда a изменяет
01
значение из 0 в 1. Это приводит
D переключению
е е из 0 в 1, после этого g
изменяется из 1 в 0.
Критический путь проходит через три логических элемента.
b=0
D

c=0 01 f F
D
D

10
d=1 g G
D D

CLK

Рис. 5.66. Анализируемая схема


Определим минимальную длительность тактового сигнала:
TCLK_MIN = TCLK-Q +3Tpd +Tsetup = 80ps+120ps+50ps=250ps.
Короткий путь для триггера F проходит через 1 логический элемент.
Например, когда a и c равны нулю, а b изменяется из 0 в 1 или для предыдущего
случая.
Другой короткий путь для триггера G проходит также проходит через 1 элемент
(когда сигнал f не изменяется , а d изменяется из 0 в 1 или из 1 в 0.
Для короткого пути считаем, что каждый элемент переключается сразу после
окончания времени реакции.
Для правильной работы схемы должно выполняться условие : Thold>ТCCQ+Tc
ТCCQ+Tc =30+25=55ps.
Условие по времени удержания не выполняется.
Схема будет работать надежно при включении буферов в каждый короткий путь
(буферы показаны пунктиром на рис.5.66). Буфер имеет такую же задержку, как
логический элемент. При этом критический путь не меняется, так как он не
проходит через буферы.

5.16. Проблемы, возникающие при синхронном проектировании


Рассмотрим вопросы, возникающие при тактировании с помощью одного
источника тактовых сигналов – однофазное тактирование.
1. В качестве регистров используются фронтовые триггеры.

156
Синхронная схема на переключающихся по фронту триггерах работает
правильно только в том случае, когда переключающий фронт тактового сигнала
поступает на все триггеры в один и тот же момент времени.
На рис.5.68 показано, что может произойти в противном случае.

FF1 q1 FF2 q2
D_in

CLK CLK1 CLK2

Рис. 5.67. Фрагмент синхронной схемы


Два триггера управляются одним и тем же тактовым сигналом CLK.
Предположим, что сигнал CLK1, поступающий на вход первого триггера,
приходит раньше, чем сигнал CLK2, поступающий на вход второго триггера.

D_in

CLK1

CLK2

TSKEW
q1
неправильно
q2
правильно
Рис. 5.68. Влияние разброса задержек тактового сигнала
Если задержка распространения TCLK-Q1 FF1 и задержка физического
соединения q1 со входом FF2 в сумме меньше задержки CLK2 по отношению к
CLK1, то изменение значения по фронту CLK1, то есть новое состояние, может
достичь триггера FF2 раньше, чем CLK2. В этом случае триггер FF2 может
оказаться в неверном состоянии (рис.5.62).
Различие между моментами прихода тактового сигнала на различные
устройства носит название разброса задержек тактового сигнала (Clock skew).
Если сигнал на выходе q1 изменяется в запрещенном интервале (TSETUP,
THOLD) поступления фронта сигнала CLK2, то может быть нарушено
требование, касающееся времени удержания (THOLD) сигнала на входе триггера
FF2, и в этом случае триггер FF2 может стать метастабильным и выработать
непредсказуемое значение сигнала на своем выходе.

Рассмoтрим временную диаграмму для схемы, представленной на рис. 5.69.

157
CLK1
TH TL

CLK2
TCLK
Выходы
триггеров R1
TCLK-Q
Входы
триггеров R2
TCOMB
TCC-Q TSKEW
TSETUP
TSKEW

Рис. 5.69. Временная диаграмма синхронной схемы с учетом TSKEW


T CLK  T CLK-Q + T COMB_MAX + T SETUP +T SKEW.
Для правильной работы схемы необходимо вычесть из запаса по времени
удержания tSKEW, чтобы выполнялось неравенство:
TCLK-Q1+ TCOMB(MIN) – THOLD – TSKEW(MAX) > 0.
Отсюда, T HOLD < T COMB_MIN+TCC-Q -T SKEW

5.17. Асинхронные входы


Входные сигналы могут поступать на вход цифровой схемы в произвольные
моменты времени, то есть асинхронно. При проектировании синхронного
устройства требуется синхронизировать прием входных данных с тактовыми
сигналами. Для этой цели используются вспомогательные триггеры,
тактируемые от источника синхросигналов, в которых фиксируются входные
данные.
Самое простое синхронизирующее устройство (синхронизатор) для
конечного автомата с асинхронным входом, показано на рис.5.70.
Синхро-
низатор Комбина- Outputs
INSYNC ционная
INASYNC D RG
логика

CLK
158
Рис. 5.70. Простейшее синхронизирующее устройство
Синхронизатор осуществляет привязку входного сигнала IN ASYNCH к
тактовому сигналу. Входной сигнал IN ASYNC с приходом фронта CLK
записывается в D-триггер, с выхода которого поступает на вход
комбинационной схемы автомата вместе с сигналами состояния в цепи обратной
связи.
При этом возможны следующие ситуации:
 Входные сигналы появляются до поступления активного фронта
синхросигнала. Эти сигналы триггером воспринимаются.
 Входные сигналы появляются во время действия фронта (в запрещенной
зоне)
 Входные сигналы появляются после поступления активного фронта. Эти
сигналы триггером игнорируются.
Временные диаграммы, приведенные на рис.5.71, 5.72 иллюстрируют данные
ситуации.

CLK
TCLK
Неизм. Неизм.
D значение значение

TSETUP THOLD
th th
Q
Окно принятия
решения TCLK-Q

Рис. 5.71. Временные параметры работы триггера с учетом метастабильности:


нормальная работа триггера

(б)
CLK

Значение
D меняется

TSETUP THOLD

Qth
Состояние
Окно принятия метастaбильности
решения (ta)
TR

159
Рис. 5.72. Временные параметры работы триггера с учетом метастабильности: переход
в метастабильное состояние
Интервалы времени TSETUP и THOLD образуют окно принятия решения (Л1).
TSETUP - время, в течение которого вход не должен изменяться после
поступления фронта тактового сигнала. T HOLD – время, в течение которого
данные на входах триггеров не должны изменяться после прихода фронта
тактового сигнала.
На этом отрезке времени триггер, в зависимости от значения сигнала на
входе D решает, изменять выходной сигнал или нет. Если сигнал на входе D
изменяется за пределами окна, то на выходе триггера будет зафиксировано
правильное значение. При изменении сигнала в пределах окна принятия
решения (запрещенной зоне) может возникнуть метастабильность и
просуществовать до конца интервала T R (resolution time-время выхода из
метастабильности). Вероятность P того, что изменение сигнала происходит в
запрещенной зоне, равна отношению длительности запрещенной зоны ta к
периоду тактового сигнала TCLK (P=ta/TCLK).
Уменьшить значение P можно двумя путями:
 Уменьшая ta, то есть используя более быстродействующие триггеры
 Увеличивая TCLK, т.е. понижая частоту.
Увеличение периода тактового сигнала обычно неприемлемо, так как при
этом снижается быстродействие системы.
Интервал TR – время выхода из метастабильности для простейшего
синхронизирующего устройства, представленного на рис.5.61, вычисляется
следующим образом (Л1).
TR = TCLK - TCOMB - TSETUP
Некоторые авторы к этому времени добавляют TCLK-Q.
Временами TSKEW и TROUTING можно пренебречь.
Сбоем синхронизирующего устройства называется ситуация, когда в системе
используется выходной сигнал, несмотря на то, что он остается
метастабильным. Система может обезопасить себя от метастабильности, если
будет достаточно долго ждать, прежде, чем воспользуется выходным сигналом
синхронизатора.
Часто в качестве синхронизатора применяют схему из двух последовательно
соединенных триггеров, приведенную на рис 5.73.
Синхронизатор
Meta INSYNC
INASYNC D D
Синхронная
система

CLK
Рис. 5.73. Двухрегистровая схема синхронизатора.

160
Чтобы увеличить время выхода из метастабильности T R при заданном
периоде тактового сигнала, следует минимизировать T COMB и TSETUP.
В приведенной схеме TCOMB =0, а TSETUP определяется типом триггера. Чем
TSETUP меньше, тем более надежно работает схема. Временные диаграммы
работы синхронизатора приведены на рис.5.74.

CLK
TCLK
INASYNCH

FF1

FF2, INSYNCH

Рис. 5.74. Временные диаграммы работы двухрегистрового синхронизатора


Диаграммы рис.5.66 соответствуют ситуации, когда асинхронный входной
сигнал изменяется за пределами окна принятия решения триггера. В этом случае
сигнал INSYNCH появляется на входе синхронной системы на один такт позже, чем
он фиксируется в FF1.
Временная диаграмма для случая, когда входной сигнал изменяется в
пределах окна принятия решения представлена на рис.5.74.
Триггер FF1 попадает в метастабильное состояние, и находится в нем в
течение времени TR < TCLK. Пусть после выхода из метастабильности он
оказался в нужном состоянии (в данном случае “1”). Уже в следующем такте
INSYNCH будет на входе синхронной системы.

CLK
TCLK
INASYNCH

FF1

FF2,
INSYNCH
Рис. 5.75. Временные диаграммы для случая, когда асинхронный входной сигнал
изменяется в запрещенной зоне
Однако возможно, что после выхода из метастабильного состояния триггер
FF1 окажется в состоянии “0” (рис.5.75).
В этом случае сигнал INSYNCH на входе синхронной схемы появится на такт
позже (если к моменту выхода из метастабильности асинхронный входной
сигнал на входе FF1 еще присутствует). Следовательно, длительность входного
асинхронного сигнала должна быть больше, чем длительность CLK.
161
CLK
TCLK
INASYNCH

FF1
FF2, INSYNCH

Рис. 5.76. Выход FF1 из метастабильности в состояние 0.


Если FF2 попадает в метастабильное состояние, то это сбой синхронизатора.
Более совершенные синхронизирующие устройства содержит большее число
каскадов триггеров. При удлинении цепочки триггеров (регистров) вероятность
появления метастабильного сигнала на ее выходе уменьшается. Время выхода из
метастабильности увеличивается пропорционально n числу триггеров
(регистров). При этом однако увеличивается задержка появления сигнала
INSYNCH на входе синхронной системы – он появляется через n тактов.
Однако полностью избежать метастабильности не удается. Поэтому
используют более сложные методы с применением специальных схем.
Синхронизаторы обычно делят на следующие два типа: ждущие
синхронизаторы (Waiting Synchronizers, Brute-Force Synchronizers),
рассмотренные в данном параграфе, и синхронизаторы на основе FIFO-буфера
(First-In First-Out Buffer).
В схемах с буфером FIFO синхронизация происходит следующим образом:
вводимые данные записываются в буфер под управлением тактовой частоты
передающего устройства, а считываются из буфера под управлением тактовой
частоты принимающего устройства.

5.18. Описание синхронизатора на Verilog 2001


module synchronizer(
   input wire signal,
   input wire clk,
   output wire signal_sync
);
reg meta,b;
always @(posedge clk)
begin
   b<=meta;
   meta<=signal;
end
assign signal_sync = b;
endmodule

162
Асинхронный сигнал фиксируется по фронту clk в регистре meta и есть
вероятность, что после него сигнал некоторое время будет метастабильным.
После фиксации в регистре b сигнал уже можно считать стабильным.
После компиляции будет получена схема, представленная на рис. 5.65.
Выводы:
Кроме разработки функционального поведения автомата, разработчику
практической системы необходимо решить следующие задачи:
1. Найти и минимизировать разброс задержек тактового сигнала при его
прохождении по разным путям.
2. Обеспечить наличие у триггеров положительного запаса по времени
установления и времени удержания сигнала с учетом возможных задержек
тактового сигнала.
3. Синхронизировать воздействие асинхронных входных сигналов с тактовым
сигналом.

5.19. Задачи
5.1. Описать на Verilog D-триггер с возможностью тестирования.
5.2. Описать на языке Verilog JK-триггер с синхронным сбросом (R),
синхронной установкой (S) и входом разрешения тактового сигнала (CE ),
управляемый спадом (отрицательным фронтом) тактового сигнала (CLK).
Тaблица истинности триггера имеет следующий вид:
Табл.5.38
R S CE J K CLK Q* Mode
0 0 1 0 1  0 Запись 0
0 0 1 1 0  1 Запись 1
0 0 1 1 1  ~QLast Переключение
0 0 1 0 0  QLast Хранение
0 0 1 x x 0 QLast Хранение
0 0 1 x x 1 QLast Хранение
0 0 0 x x x QLast Хранение
1 x x x x  0 Синхронный сброс
0 1 x x x  1 Синхронная
установка

5.3. Построить схему автомата, последовательность смены состояний которого


0 , 5, 7, 4, 3, 0 . . . Использовать D-триггеры.

5.4. Построить временные диаграммы D-latch, управляемой отрицательным


уровнем синхросигнала.

163
C

t
D

Q t

t
Рис. 5. 77. к задаче 5.4

5.5. Построить временные диаграммы D-триггера, управляемого отрицательным


фронтом синхросигнала.
C

D t

Q t

t
Рис. 5.78 к задаче 5.5

5.7. Описать на языке Verilog JK-триггер с синхронным сбросом (R),


синхронной установкой (S) и входом разрешения тактового сигнала (CE ),
управляемый спадом (задним фронтом) тактового сигнала (CLK). Тaблица
истинности триггера имеет следующий вид:
Табл.5.39
R S CE J K CLK Q* Mode
1 1 1 0 1  0 Запись 0
1 1 1 1 0  1 Запись 1
1 1 1 1 1  ~QLast Переключение
1 1 1 0 0  QLast Хранение
1 1 1 x x 0 QLast Хранение
1 1 1 x x 1 QLast Хранение
1 1 0 x x x QLast Хранение
0 x x x x  0 Синхронный сброс
1 0 x x x  1 Синхронная установка

5.8. Oписать на языке Verilog T-триггер с асинхронным сбросом CLR и входом


разрешения тактового сигнала CE, управляемого фронтом и спадом
импульса синхронизации.

164
Табл. 5.40
CLR CE T CLK Q* Mode
0 1 1  ~QLast Переключение
0 1 1  ~QLast Переключение
0 1 0 x QLast Хранение
0 x x 0 QLast Хранение
0 x x 1 QLast Хранение
0 0 x x QLast Хранение
1 x x x 0 Aсинхронный сброс

5.9. Построить на основе D-триггеров, управляемых передним фронтом


синхросигнала, T-триггер, тактируемый фронтом и спадом тактового
сигнала.
5.10. Построить схему автомата Mура, который имеет вход x и выход y. На
выходе автомата появляется единица, когда на вход автомата поступает
последовательность 0110 или 1110. Во всех остальных случаях на выходе
автомата 0. Описать автомат на языке Verilog.

5.11. Описать на Verilog автомат с входным алфавитом X={A,B,C}, выходным


алфавитом Y={0,1,2}. Автомат распознает входные слова ABBBCA (на
выходе появляется Y=1) и BBA (Y=2). Во всех остальных ситуациях на
выходе появляется Y=0.

5.12. Проанализировать схему, представленную на рисунке 5.80.

x D “1 D

C C
R
Reset
CLK
y

Рис. 5.80. к задаче 5.12

5.13. Определить последовательность состояний схемы, представленной на


рисунке. Начальное состояние схемы 000. Построить граф переходов.

165
T D T

C C C

CLK

Рис. 5.81. к задаче 5.13

5.14. Произвести анализ автомата, схема которого приведена на рис. 5.73.


Построить граф переходов автомата.
Y

X
D

C
CLK
Reset

Рис. 5.82 к задаче 5.14

166

Оценить