circuitos sequenciais - unb

60
Máquinas de Estado Circuitos Sequenciais circuitos sequenciais tem uma história de funcionamento definida por uma sequência de estados pelos quais o circuito passou o estado em que se encontra um circuito é dado por uma configuração binária e depende da sequência de entradas a ele fornecidas circuitos sequenciais são circuitos síncronos. O tempo é medido em termos de ciclos de clock circuitos sequenciais exigem realimentação para lembrar o estado em que se encontram tipos básicos: contadores: a saída é o próprio estado máquinas de estado: próximo estado é gerado a partir do estado atual e de entradas externas saída depende do estado atual e opcionalmente das entradas

Upload: others

Post on 12-Nov-2021

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Circuitos Sequenciais - UnB

Máquinas de Estado

Circuitos Sequenciais

circuitos sequenciais tem uma história de funcionamento definida por uma sequência de estados pelos quais o circuito passouo estado em que se encontra um circuito é dado por uma configuração binária e depende da sequência de entradas a ele fornecidascircuitos sequenciais são circuitos síncronos. O tempo é medido em termos de ciclos de clockcircuitos sequenciais exigem realimentação para lembrar o estado em que se encontram tipos básicos:

contadores: a saída é o próprio estadomáquinas de estado:

próximo estado é gerado a partir do estado atual e de entradas externassaída depende do estado atual e opcionalmente das entradas

Page 2: Circuitos Sequenciais - UnB

Máquinas de Estado

Combinacional x Sequencial

FSM

X

REA PE

OUT

Circuito Sequencial

CC

Blocos Operadores

X OUT

Circuito Combinacional

Page 3: Circuitos Sequenciais - UnB

Máquinas de Estado

Exemplo: verificador de paridade

D

R

Q

Q

Input

CLK PS/Output

\Reset

NS

Clk

Output

Input 1 0 0 1 1 0 1 0 1 1 1 0

1 1 0 1 0 0 1 1 0 1 1 1

Even [0]

Odd [1]

Reset

0

0

1 1

• saída é 0 se recebeu um número parde 1’s, 1 caso contrário

• saída é válida depois da transição dorelógio

Page 4: Circuitos Sequenciais - UnB

Máquinas de Estado

Temporização de uma FSM

Outputs

State T ime

Clock

Inputs

• na subida do clock:› entradas são amostradas› saídas e próximo estados calculados

• depois de um atraso de propagação de sinal, saídas e próximo estado estáveis

• entradas devem estar estáveis antesda transição

Page 5: Circuitos Sequenciais - UnB

Máquinas de Estado

Máquinas de Estado Comunicantes

FSM 1 FSM 2

X

Y

A [1]

B [0]

Y=0

Y=1

Y=0,1

Y=0

C [0]

D [1]

X=0

X=1

X=0

X=0

X=1

CLK

FSM 1 X FSM 2

Y

A A B

C D D

• a saída de uma máquina é a entradade outra

• saída muda logo após subida do clock

Page 6: Circuitos Sequenciais - UnB

Máquinas de Estado

Máquina de Estados Finita (FSM)

sistema algébrico definido por uma sextupla {X, Z, Q, T, S, E0} onde:

X é o conjunto de entradas da FSM

Z é o conjunto de saídas da FSM

Q é o conjunto de estados internos da FSM

T é a função de transição de estado que representa um conjunto de mapeamentos parciais:

T: (X, Q) -> Q

S é a função de saída que representa um conjunto de mapeamentos parciais: S: (X, Q) -> Z (Máquina de Mealy) S: Q -> Z (Máquina de Moore)

E0 é o estado inicial

Page 7: Circuitos Sequenciais - UnB

Máquinas de Estado

Projeto de uma FSM

Etapas principais:

1. Descrever a máquina de estados de forma abstratadiagrama de transição de estadostabela de transição de estados

2. Minimizar o número de estados3. Codificar os estados

sequência naturalsequência Grayutilizando minimizador

4. Implementar na tecnologia alvomicroprogramaçãohardwired

Page 8: Circuitos Sequenciais - UnB

Máquinas de Estado

Ex: Detector de triplas de 1’s

• Especi¼ cação: z(t) = 1 se x(t-1) = x(t-2) = x(t-3) = 1

FSMX(t) Z(t)

• Modelo FSM:

Reg

PEEA

X ZS(EA)

T(EA,X)

• X: entradas• Z: saída• EA: estado atual• PE: próximo estado• S: função saída• T: função transição estado

Page 9: Circuitos Sequenciais - UnB

Máquinas de Estado

Ex: Detector de triplas de 1’s ...

• Passos: * diagrama de estados * codi¼ cação dos estados * funções de saída e transição * minimização lógica * mapeamento

* diagrama de estados:

E0

0

0

E1

E2

0

E3

1

0

00

0 1

11

1

• tabela de transição de estados

EA X Z PEE0 0 0 E0

E0 1 0 E1

E1 0 0 E1

E1 1 0 E2

E2 0 0 E2

E2 1 0 E3

E3 0 1 E0

E3 1 1 E3

Page 10: Circuitos Sequenciais - UnB

Máquinas de Estado

Codificação de Estados

* Quantos bits são necessários?

n � log2|E| onde E = {E0, E1, E2, E3}é o conjunto de estados

* n = log2|E| = log2|4| = 2

* sequência natural:

E0 = 00, E1 = 01, E2 = 10, E3 = 11

• Funções de Saída e Transição

x

E

z

E’

EA X Z PE00 0 0 0000 1 0 0101 0 0 0101 1 0 1010 0 0 1010 1 0 1111 0 1 0011 1 1 11

Page 11: Circuitos Sequenciais - UnB

Máquinas de Estado

Minimização Dois-Níveis

z

e’1

e’0

x

x

x

e1

e1

e1

e0

e0

e0

1

1

1 1 1

1 1 1

z = e1�e0

e’1 = x�e1 � x�e0

e’0 = x�e1 � x�e0

x

x

x

e0

e0

e1e’ 1

e’ 0

e0

e1

Page 12: Circuitos Sequenciais - UnB

Máquinas de Estado

Máquinas de Moore

E0

0

0

E1

E2

0

E3

1

0

00

0 1

11

1

• Moore: saídas dependem apenas do estado atual

� síncronas com a transição doclock

� saídas são representadas dentrodos estados no diagrama de transição de estados

Page 13: Circuitos Sequenciais - UnB

Máquinas de Estado

Máquinas de Mealy

• Mealy: saídas dependem do estadoatual e das entradas

� podem ser alteradas de forma assíncrona pelas entradas

� saídas são representadas nos arcos do diagrama de transição de estados

E0

E1

E2

E3

0/0

0/00/0

0/0 1/0

1/01/1

1/1

Page 14: Circuitos Sequenciais - UnB

Máquinas de Estado

Otimização de Máquinas de Estado

minimização de estados:

objetivo: reduzir o número de estados agrupando estados equivalentes

pode reduzir o tamanho do registrador de estados

pode reduzir a complexidade da lógica de interconexões

atribuição de estados

objetivo: atribuir códigos aos estados de forma a simplicar a lógica de transição de estados e a lógica de geração de sinais de saída

evitar a geração de sinais espúrios e entrada em estados inválidos

Page 15: Circuitos Sequenciais - UnB

Máquinas de Estado

Redução de Estados as duas máquinas abaixo tem o mesmo comportamento para qualquer sequênciade entradas => máquinas equivalentesestados E2 e E3 produzem as mesmas saídas e próximos estados para todas as combinações de entrada => estados equivalentes, podem ser agrupados implementações diferentes !

E0

E1

E2

E3

0/0

0/00/0

0/0 1/0

1/01/1

1/1

E0

E1

E2

E3

0/0

0/00/0

0/0 1/0

1/01/1

1/1

E0

E1

E2

0/0

0/00/0

1/0

1/01/1

E0

E1

E2

0/0

0/00/0

1/0

1/01/1

Page 16: Circuitos Sequenciais - UnB

Máquinas de Estado

Minimização de Estados

procedimento: desenhar uma tabela de transição de estados

identificar estados com o mesmo comportamento

agrupar estados equivalentes criando novos estados para representá-los

repetir o processo até não existir mais estados equivalentes

métodos a serem analisados:

row matching (equivalência de linhas)

implication chart (diagramas de implicação)•

Page 17: Circuitos Sequenciais - UnB

Máquinas de Estado

Equivalência de Linhas

exemplo: considere uma máquina que deve reconhecer dois padrões de 4 bits *

Z(t) = 1 se X(t) = 0, X(t-1) = 1, X(t-2) = 1 e X(t-3) = 0 ouZ(t) = 1 se X(t) = 1, X(t-1) = 0, X(t-2) = 1 e X(t-3) = 0 máquina retorna ao estado inicial depois de qualquer sequência de 4 bitsexemplo de comportamento:

X = 0010 0110 1100 1010 0011 . . .Z = 0000 0001 0000 0001 0000 •

X(t) Z(t)

* [Katz]

Page 18: Circuitos Sequenciais - UnB

Máquinas de Estado

Diagrama de Transições

Reset

0/0 1/0

0/0 1/0 0/0 1/0

0/0 1/0 0/0 1/0 0/0 1/0 0/0 1/0

0/0 1/0 0/0 0/01/0 1/0

0/01/0

1/00/1

0/01/0

1/0 0/0 1/00/1

• limitante superior:• 15 estados• 30 transições

Page 19: Circuitos Sequenciais - UnB

Máquinas de Estado

Equivalência de Linhas

Tabela Inicial

Present State S 0 S 1 S 2 S 3 S 4 S 5 S 6 S 7 S 8 S 9 S 10 S 1 1 S 12 S 13 S 14

Input Sequence Reset

0 1

00 01 10 1 1

000 001 010 01 1 100 101 1 10 1 1 1

X =1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

X =0 S 1 S 3 S 5 S 7 S 9 S 1 1 S 13 S 0 S 0 S 0 S 0 S 0 S 0 S 0 S 0

X =1 S 2 S 4 S 6 S 8 S 10 S 12 S 14 S 0 S 0 S 0 S 0 S 0 S 0 S 0 S 0

X =0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0

Next State Output

Page 20: Circuitos Sequenciais - UnB

Máquinas de Estado

Equivalência de Linhas ...

Present State S 0 S 1 S 2 S 3 S 4 S 5 S 6 S 7 S 8 S 9 S 10 S 1 1 S 12 S 13 S 14

Input Sequence Reset

0 1

00 01 10 1 1

000 001 010 01 1 100 101 1 10 1 1 1

X =1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

X =0 S 1 S 3 S 5 S 7 S 9 S 1 1 S 13 S 0 S 0 S 0 S 0 S 0 S 0 S 0 S 0

X =1 S 2 S 4 S 6 S 8 S 10 S 12 S 14 S 0 S 0 S 0 S 0 S 0 S 0 S 0 S 0

X =0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0

Next State Output

• estados equivalentes:substituir por S10’

Page 21: Circuitos Sequenciais - UnB

Máquinas de Estado

Equivalência de Linhas ...

Present State S 0 S 1 S 2 S 3 S 4 S 5 S 6 S 7 S 8 S 9 S ' 10 S 1 1 S 13 S 14

Input Sequence Reset

0 1

00 01 10 1 1

000 001 010

01 1 or 101 100 1 10 1 1 1

Next State X =0 X =1

S 1 S 3 S 5 S 7 S 9 S 1 1 S 13 S 0 S 0 S 0 S 0 S 0 S 0 S 0

S 2 S 4 S 6 S 8 S ' 10 S ' 10 S 14 S 0 S 0 S 0 S 0 S 0 S 0 S 0

X =0 0 0 0 0 0 0 0 0 0 0 1 0 0 0

X =1 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Output

• estados equivalentes:substituir por S7’

Page 22: Circuitos Sequenciais - UnB

Máquinas de Estado

Equivalência de Linhas ...

• atualização dos próximos estados:gera novas equivalências

Present State S 0 S 1 S 2 S 3 S 4 S 5 S 6 S 7 '

S ' 10

Input Sequence Reset

0 1

00 01 10 1 1

not (01 1 or 101) 01 1 or 101

X =0 S 1 S 3 S 5

S 0 S 0

X =1 S 2 S 4 S 6

S 0 S 0

X =0 0 0 0 0 0 0 0 0 1

X =1 0 0 0 0 0 0 0 0 0

Next State Output

S 7 ' S 7 ' S 7 ' S 7 '

S 7 ' S ' 10 S ' 10 S 7 '

Page 23: Circuitos Sequenciais - UnB

Máquinas de Estado

Equivalência de Linhas ...

Input Sequence Reset

0 1

00 or 11 01 or 10

not (011 or 101) 011 or 101

Present State S0 S1 S2 S3' S4' S7' S10'

X=0 S1 S3' S4' S7' S7' S0 S0

X=1 S2 S4' S3' S7'

S10' S0 S0

Next State OutputX=0

0 0 0 0 0 0 1

X=1 0 0 0 0 0 0 0

Tabela Final: s0

s1

s2

s3

s4

s7

s10

1

0 0

00

00

1 1

1 1

- -

Page 24: Circuitos Sequenciais - UnB

Máquinas de Estado

Equivalência de Linhas ...

vantagem:fácil de entender e realizar

desvantagem:nem sempre produz o melhor resultadoexemplo de desvantagem: verificador de paridade

Present State S 0 S 1 S 2

Next State X =0 S 0 S 1 S 2

X =1 S 1 S 2 S 1

Output 0 1 0

não detecta equivalência entre S0 e S1não detecta equivalência entre S0 e S1

0

0

0

1

11

[0]

S1

S2

S0

[1]

[0]

Page 25: Circuitos Sequenciais - UnB

Máquinas de Estado

Diagrama de Implicações

Outro Exemplo: circuito que reconhece sequëncias 010 e 110 *

Present State S 0 S 1 S 2 S 3 S 4 S 5 S 6

Input Sequence Reset

0 1

00 01 10 1 1

X =1 0 0 0 0 0 0 0

Next State Output X =0 S 1 S 3 S 5 S 0 S 0 S 0 S 0

X =1 S 2 S 4 S 6 S 0 S 0 S 0 S 0

X =0 0 0 0 0 1 0 1

* [Katz]

Page 26: Circuitos Sequenciais - UnB

Máquinas de Estado

Diagrama de Implicações ...

Enumerar todas as combinações de estados 2 a 2

S0

S1

S2

S3

S4

S5

S6

S0 S1 S2 S3 S4 S5 S6

S1

S2

S3

S4

S5

S6

S0 S1 S2 S3 S4 S5

próximos estadospara todacs combi-nações de entrada

próximos estadospara todacs combi-nações de entrada

simplificação: simétrico com relação a diagonal

simplificação: simétrico com relação a diagonal diagrama de implicaçõesdiagrama de implicações

Page 27: Circuitos Sequenciais - UnB

Máquinas de Estado

Diagrama de Implicações ...

preenchimento:entrada Xij: linha é Si, coluna é Sj

Si é equivalente a Sj se ambos tem as mesmas saídas e próximos estados equivalentesos próximos estados de Si e Sj são colocados dentro de Xij

se Si e Sj tem saídas diferentes, a entrada Xij é marcado com um “x”exemplo:

S0 transiciona para S1 em 0, S2 em 1;S1 transiciona para S3 em 0, S4 em 1;a entrada X01 contém: S1-S3, S2-S4, que são os pares de estados que devem ser equivalentes para que S0 e S1 também o sejam

S1-S3S2-S4

S0

S1

Page 28: Circuitos Sequenciais - UnB

Máquinas de Estado

Diagrama de Implicações ...

Diagrama InicialDiagrama Inicial

S2 e S4 tem saídas diferentes

isto implica que S1 e S0 nãosão equivalentes

S2 e S4 tem saídas diferentes

isto implica que S1 e S0 nãosão equivalentes

S1

S2

S3

S4

S5

S6S0 S1 S2 S3 S4 S5

S1-S3 S2-S4

S1-S5 S2-S6

S3-S5 S4-S6

S1-S0 S2-S0

S3-S0 S4-S0

S5-S0 S6-S0

S1-S0 S2-S0

S3-S0 S4-S0

S5-S0 S6-S0

S0-S0 S0-S0

S0-S0 S0-S0

saídas diferentessaídas diferentes

Page 29: Circuitos Sequenciais - UnB

Máquinas de Estado

Diagrama de Implicações ...

S0-S0 S0-S0

S3-S5 S4-S6

S0-S0 S0-S0

S1

S2

S3

S4

S5

S6

S0 S1 S2 S3 S4 S5

• resultado do primeiro passo:S3 e S5 são equivalentesS4 e S6 são equivalentes=> S1 e S2 são equivalentes

(implicação)

• resultado do primeiro passo:S3 e S5 são equivalentesS4 e S6 são equivalentes=> S1 e S2 são equivalentes

(implicação)

Input Sequence Reset

0 or 1 00 or 10 01 or 1 1

Present State S 0 S 1 ' S 3 ' S 4 '

X =0 S 1 ' S 3 ' S 0 S 0

X =1 S 1 ' S 4 ' S 0 S 0

X =0 0 0 0 1

X =1 0 0 0 0

Next State Output

tabela reduzidatabela reduzida

Page 30: Circuitos Sequenciais - UnB

Máquinas de Estado

Máquinas com Múltiplas Entradas

S0 [1]

S2 [1]

S4 [1]

S1 [0]

S3 [0]

S5 [0]

10

0111

00

00

01

1110

10 01

1100

10

00

01

11

00

1110

01

10

1101

00

Present State

S 0 S 1 S 2 S 3 S 4 S 5

Next State 00 S 0 S 0 S 1 S 1 S 0 S 1

01 S 1 S 3 S 3 S 0 S 1 S 4

10 S 2 S 1 S 2 S 4 S 2 S 0

1 1 S 3 S 5 S 4 S 5 S 5 S 5

Output 1 0 1 0 1 0

Tabela de EstadosTabela de Estados

Diagrama de estadosDiagrama de estados

Page 31: Circuitos Sequenciais - UnB

Máquinas de Estado

Máquinas com Múltiplas Entradas ...

Present State

S 0 ' S 1 S 2 S 3 '

Next State 00 S 0 ' S 0 ' S 1 S 1

01 S 1 S 3 ' S 3 ' S 0 '

10 S 2 S 1 S 2 S 0 '

1 1 S 3 ' S 3 ' S 0 ' S 3 '

Output 1 0 1 0

Tabela Máquina MinimizadaTabela Máquina Minimizada

Diagrama de ImplicaçãoDiagrama de Implicação

S1

S2

S3

S4

S5

S0-S1 S1-S3 S2-S2 S3-S4

S0-S0 S1-S1 S2-S2 S3-S5

S0

S0-S1 S3-S0 S1-S4 S5-S5

S0-S1 S3-S4 S1-S0 S5-S5

S1

S1-S0 S3-S1 S2-S2S4-S5

S2

S1-S1 S0-S4 S4-S0S5-S5

S3 S4

Page 32: Circuitos Sequenciais - UnB

Máquinas de Estado

Exemplo Detetor de Paridade

S 1 S 2

S 0 S 1

S 0 - S 2 S 1 - S 1

S0 é equivalente a S2?Só se S0 for equivalente a S2...

S0 é equivalente a S2?Só se S0 for equivalente a S2...

0

0

0

1

11

[0]

S1

S2

S0

[1]

[0]

Page 33: Circuitos Sequenciais - UnB

Máquinas de Estado

Atribuição de Estados

� Método manual: minimizar o número de mudanças de bits nas transições

• diagramas de transições:semelhantes aos mapas de Karnaugh

• estados adjacentes nodiagrama diferem de apenas um bit

Q 1 Q 0 00 01 1 1 10

0

1

Q 2

S 0 S 4 S 3

S 1 S 2

State Map

State Name S 0 S 1 S 2 S 3 S 4

Assignment Q 2 0 1 1 0 0

Q 1 0 0 1 1 1

Q 0 0 1 1 0 1

Assignment

Q 1 Q 0 00 01 1 1 10 Q 2

0

1

S 0 S 1 S 3 S 2

S 4

State Map

State Name S 0 S 1 S 2 S 3 S 4

Q 2 0 0 0 0 1

Q 1 0 0 1 1 1

Q 0 0 1 0 1 1

Assignment

Assignment

Page 34: Circuitos Sequenciais - UnB

Máquinas de Estado

Diagrama de Transições

exemplo anterior: número de bits que mudam em todas as transições

13 7

TransiçõesS0 to S1:S0 to S2:S1 to S3:S2 to S3:S3 to S4:S4 to S1:

Primeira AtribuiçãoMudanças

233212

Segunda AtribuiçãoMudanças

111112

Page 35: Circuitos Sequenciais - UnB

Máquinas de Estado

Heurísticas para Determinar Adjacências

� �

i/j i/kAtribuir códigos adjacentes a:

estados com próximo estado comum(agrupa 1's no mapa de próximo estado)

estados com próximo estado comum(agrupa 1's no mapa de próximo estado)

estados com um mesmo antecessor(agrupa 1's no mapa de próximo estado)

estados com um mesmo antecessor(agrupa 1's no mapa de próximo estado)

estados com mesmo comportamento de saída(agrupa 1's no mapa da função de saída)

estados com mesmo comportamento de saída(agrupa 1's no mapa da função de saída)

� �

Maior Prioridade

Prioridade Média

��

Menor Prioridade

Page 36: Circuitos Sequenciais - UnB

Máquinas de Estado

Exemplo Detetor Padrão de 3 Bits

Reset

S0

0,1/0

0,1/01/0

S1'0/0

0/1, 1/0

S3' S4'

Maior Prioridade: (S3', S4')

Prioridade Média: (S3', S4')

Menor Prioridade: 0/0: (S0, S1', S3')1/0: (S0, S1', S3', S4')

Maior Prioridade: (S3', S4')

Prioridade Média: (S3', S4')

Menor Prioridade: 0/0: (S0, S1', S3')1/0: (S0, S1', S3', S4')

Page 37: Circuitos Sequenciais - UnB

Máquinas de Estado

Mapa de Transições

S0 S1'

S4'S3'

Q0Q1

S0

S1' S4'

S3'

Q0Q1

Reset = 00

Adjcências de maior prioridade

Sem muita diferençanas atribuições

Sem muita diferençanas atribuições

Page 38: Circuitos Sequenciais - UnB

Máquinas de Estado

FSM em VHDL

Existem diversas maneiras de se especificar uma máquina de estados em VHDL

Usualmente se emprega o comando case ... when ou ainda if..then..else dentro de um processo para especificar o comportamento da FSM

Os estados podem ser representados por um tipo enumeração ou por um vetor de bits:

type StateType is (idle, decision, read, write);signal present_state, next_state: StateType;ousignal estado : std_logic_vector(N-1 downto 0);

Page 39: Circuitos Sequenciais - UnB

Máquinas de Estado

Modelo de uma FSM em VHDL

Modelo dois processos:

um processo simula o funcionamento do circuito lógico que gera o próximo estado e as saídas

outro processo simula o registrador de estados

Next State &Output LogicState

Reg

Entradas Saídas

PróximoEstado

Estado Atualclk

Page 40: Circuitos Sequenciais - UnB

Máquinas de Estado

Modelo Dois Processosarchitecture behavior of model_name isinternal signal declarationsbegin –– the state process defines the storage elementsstate: process ( sensitivity list –– clock, reset, next_state inputs) begin vhdl statements for state elements end process state;–– the comb process defines the combinational logiccomb: process ( sensitivity list –– usually includes all inputs) begin vhdl statements which specify combinational logic end process comb;end behavior;

Page 41: Circuitos Sequenciais - UnB

Máquinas de Estado

Controlador de Memória

FSMSRAMArray

busid

resetrw

ready

burstclk

oe

we

addr1

addr0

DataAddress

Page 42: Circuitos Sequenciais - UnB

Máquinas de Estado

Controlador de Memória ...

Acesso inicia colocando-se F3 no busid

No ciclo seguinte, rw = 1 determina uma operação de leitura da memória, enquanto rw = 0 indica uma operação de escrita

Uma leitura pode ser de uma palavra ou em uma rajada de 4 palavras consecutivas

O sinal burst indica leitura em rajada

O controlador ativa oe para uma leitura e fornece quatro endereços consecutivos, 00, 01, 10 e 11 através dos bits (addr1, addr0)

Uma escrita é realizada ativando-se o sinal we. Apenas escritas de uma palavra podem ser realizadas

O sinal ready indica que uma operação de acesso foi completada

Page 43: Circuitos Sequenciais - UnB

Máquinas de Estado

Diagrama de Estados Controlador

idle

decision

read1

read2

read3

read4

write

ready

reset

ready

ready

rw

ready

ready

ready.burst

rw

ready.burst

estado oe we addridle 0 0 00decision 0 0 00read1 1 0 00read2 1 0 01read3 1 0 10read4 1 0 11write 0 1 00

Page 44: Circuitos Sequenciais - UnB

Máquinas de Estado

Mapeando do Diagrama para VHDL

Para cada estado, criar um valor de tipo enumeração:type StateType is (idle, decision, read1, read2, read3, read4, write);

um tipo enumeração associa valores inteiros aos valores enumerados, começando pelo mais a esquerda, que é 0 (zero)

temos, assim, idle = 0, decision = 1, etc.

um sinal do tipo StateType é automaticamente inicializado com o valor mais a esquerda, idle neste caso.

Dois sinais são criados: uma para o estado atual e outro para o próximo estado

Um comando case identifica o estado atual e é utilizado para programar as ações para cada estado. Um comando if é utilizado para controlar as transições de estado

Page 45: Circuitos Sequenciais - UnB

Máquinas de Estado

case ps is -- ps significa preset_state when idle => oe <= '0'; we <= '0'; addr <= "00"; if (bus_id = "11110011") then ns <= decision; -- ns é next_state else ns <= idle; end if; when decision => oe <= '0'; we <= '0'; addr <= "00"; if (read_write = '1') then ns <= read1; else ns <= write; end if; when read1 => oe <= '1'; we <= '0'; addr <= "00"; if (ready = '0') then ns <= read1; elsif (burst = '0') then ns <= idle; else ns <= read2; end if; when read2 => oe <= '1'; we <= '0'; addr <= "01"; if (ready = '1') then ns <= read3; else ns <= read2; end if; ...end case;

Page 46: Circuitos Sequenciais - UnB

Máquinas de Estado

Processo combstate_comb: process (reset, busid, ps, burst, rw, ready)begin

if (reset = '1') then oe <= '0'; we < '0'; addr <= '00'; ns <= idle;else case ps is when idle => ... when decision => ... when read1 => ... when read2 => ... when read3 => ... when read4 => ... when write => ...

end case;end if;

end process;

Page 47: Circuitos Sequenciais - UnB

Máquinas de Estado

Processo register

state_reg: process (clk) begin if (clk'event and clk = '1') then ps <= ns; end if;end process state_reg;-- alternativa: reset assíncronostate_reg: process (clk, reset) begin if (reset = '1') then ps = idle; elsif rising_edge(clk) then ps <= ns; end if;end process state_reg;

Page 48: Circuitos Sequenciais - UnB

Máquinas de Estado

FSM em um Processoarchitecture fsm of mem_cntl istype StateType is (idle, decision, read1, read2, read3, read4, write);signal state: StateType;beginstate_tr: process (reset, clk) -- apenas um processo if reset = '1' then state <= idle;

elsif rising_edge(clk) then case state is

when idle => ... -- definição das transições de estadowhen decision => ... when read1 => ...

when read2 => ... when read3 => ...

when read4 => ...when write => if redy = '1' then state <= idle else state <= write; end if;

end case; end if;

Page 49: Circuitos Sequenciais - UnB

Máquinas de Estado

FSM em um Processo ...

Sinais de saída decodificados em comandos concorrenteswith state select

oe <= '1' when read1 | read2 | read3 | read 4,'0' when others;

we <= '1' when state = write else '0';with state select

addr <= “01” when read2,“10” when read3,“11” when read4,“00” when others;

Page 50: Circuitos Sequenciais - UnB

Máquinas de Estado

Pré-calculo das Saídas

Os sinais de saída na solução anterior são obtidos com um atraso de propagação da lógica de saída após a carga do registrador de estado

Ex:

no Altera, após a síntese o registrador de estado neste exemplo é carregado 5 ns após a transição do relógio

A saída addr é atualizada 17,5 ns após a transição do relógio

Para reduzir o atraso no sinal de saída, pode-se pré-calcula-lo no ciclo anterior, baseado no sinal próximo estado

Na transição de estado, os sinais pré-calculados são armazenados em flip-flops.

Page 51: Circuitos Sequenciais - UnB

Máquinas de Estado

Pré-calculo das Saídas ...

Lógicade

PróximoEstado

Reg. deestado

Lógicade

saídaReg. desaída

Entradas

Saídas

clk

Page 52: Circuitos Sequenciais - UnB

Máquinas de Estado

Pré-cálculo no Controlador de Memória

architecture fsm of mem_cntl_po istype StateType is (idle, decision, read1, read2, read3, read4, write);signal ps, ns : StateType;signal addr_d : std_logic_vector(1 downto 0); -- acrescenta reg de saídabegincombinational: process (reset, bus_id, ps, burst, read_write, ready)begin -- transições e saídas we e oe são acionadas aquiend process;-- baseado no próximo estado pré-calcula as saídaswith ns select addr_d <= “01” when read2, “10” when read3, “11” when read4, “00” when others;

state_clk: process ( clk ) begin if rising_edge(clk) then ps <= ns; addr <= addr_d; -- na transição do relógio atualiza reg de saídaend process state_clk;

Page 53: Circuitos Sequenciais - UnB

Máquinas de Estado

Atraso com Pré-cálculo

Page 54: Circuitos Sequenciais - UnB

Máquinas de Estado

Codificando as Saídas no Estado

Outra alternativa para reduzir o atraso é codificar as saídas no estado atual

Escolhe-se as saídas a codificar, monta-se uma tabela com os valores de saída para cada estado. Acrescenta-se bits de forma a obter um código diferente para cada estado

Esta abordagem tende a produzir menos registradores do que a anterior, mas é mais complexa de se implementar e manter

A seguir, exemplifica-se esta a técnica aplicada ao controlador de memória

Page 55: Circuitos Sequenciais - UnB

Máquinas de Estado

Saídas Codificadas no Controlador

Tomando-se ainda as saídas addr(1) e addr(0):

Estado addr(1) addr(0) idle 0 0 decision 0 0 read1 0 0 read2 0 1 read3 1 0 read4 1 1 write 0 0

Page 56: Circuitos Sequenciais - UnB

Máquinas de Estado

Saídas Codificadas no Controlador

Completando-se os códigos dos estados Estado addr(1) addr(0) st1 st0 idle 0 0 0 0 decision 0 0 0 1 read1 0 0 1 0 read2 0 1 0 0 read3 1 0 0 0 read4 1 1 0 0 write 0 0 1 1

Page 57: Circuitos Sequenciais - UnB

Máquinas de Estado

Codificação em VHDL

architecture fsm of mem_cntl_oe issignal state : std_logic_vector( 4 downto 0);constant idle : std_logic_vector(4 downto 0) := "00000";constant decision: std_logic_vector(4 downto 0) := "00001";constant read1 : std_logic_vector(4 downto 0) := "00100";constant read2 : std_logic_vector(4 downto 0) := "01100";constant read3 : std_logic_vector(4 downto 0) := "10100";constant read4 : std_logic_vector(4 downto 0) := "11100";constant write : std_logic_vector(4 downto 0) := "00010";

Page 58: Circuitos Sequenciais - UnB

Máquinas de Estado

Codificação em VHDL...

when others => state <= "-----";

end case;end if;end process fsm_p;

we <= state(1); -- saídas extraídas do registrador oe <= state(2); -- de estadosaddr <= state(4 downto 3);

end fsm;

Page 59: Circuitos Sequenciais - UnB

Máquinas de Estado

Exercício

Exemplo do controlador de tráfego:

Uma autoestrada é interseccionada por uma pequena via lateral. Detetores verificam a presença de carros esperando para atravessar a autoestrada. Se não existe carro na via, a sinaleira da autoestrada permanece sempre verde. Se existe carro na via, a sinaleira muda de verde para amarelo e após para vermelho, permitindo que o sinal da via vá para verde. Este permanece verde enquanto houver carro na via mas nunca mais do que um intervalo de tempo pré-determinado. Caso não haja carro ou o intervalo de tempo termine, o sinal da via transiciona para amarelo e vermelho, permitindo que o sinal da autoestrada vá para verde. No caso de existirem carros esperando na via, o sinal permanece verde para a autoestrada por um certo intervalo de tempo.

Assumir que um temporizador forneça um pulso para um intervalo curto (IC) e um pulso para um intervalo longo (IL) de tempo em resposta a um sinal de ativação (AT). IC é o intervalo em que o sinal fica no amarelo e IL o intervalo que o sinal fica em verde.

Modelar o controlador de tráfego através de uma máquina de estados

Page 60: Circuitos Sequenciais - UnB

Máquinas de Estado

Controlador de Tráfego

Autoestrada

Autoestrada

Via Lateral

Via Lateral

AE

AE

VL

VL

S

S