Download - 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
Máquinas de Estado
Combinacional x Sequencial
FSM
X
REA PE
OUT
Circuito Sequencial
CC
Blocos Operadores
X OUT
Circuito Combinacional
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
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
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
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
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
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
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
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
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
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
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
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
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
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)•
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]
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
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
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’
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’
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 '
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
- -
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]
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]
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
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
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
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
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
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
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]
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
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
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
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')
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
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);
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
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;
Máquinas de Estado
Controlador de Memória
FSMSRAMArray
busid
resetrw
ready
burstclk
oe
we
addr1
addr0
DataAddress
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
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
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
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;
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;
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;
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;
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;
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.
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
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;
Máquinas de Estado
Atraso com Pré-cálculo
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
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
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
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";
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;
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
Máquinas de Estado
Controlador de Tráfego
Autoestrada
Autoestrada
Via Lateral
Via Lateral
AE
AE
VL
VL
S
S