Máquina de Estados Transições Estados Em Verilog Monitoria SD 2011.2 Daniel Alexandro/Reniê Delgado/Vanessa Ogg Editado por (rad)
O que é? É uma modelagem de um comportamento, composto por estados, transições e ações.
Estados Um estado armazena informações sobre o passado, isto é, ele reflete as mudanças desde a entrada num estado, no início do sistema, até o momento presente.
Transição de Estado Uma transição indica uma mudança de estado e é descrita por uma condição que precisa ser realizada para que a transição ocorra.
Ação Uma ação é a descrição de uma atividade que deve ser realizada num determinado momento. Tipos: Ação de entrada (no estado): executa a ação quando entra no estado. Ação de saída: executa a ação quando sai do estado. Ação da entrada (da input): executa a ação dependendo do estado presente ou das condições da entrada. Ação de transição: executa a ação quando ocorre uma determinada transição.
Diagrama Gráfico Na Figura abaixo é apresentada uma máquina de estados onde os estados estão representados por círculos, as condições de transição estão representadas por expressões em verde e as ações associadas às transições estão representadas em vermelho.
MEF Verilog module mef(clk, in_data, out_data); input clk; input [N:0] in_data; output [M:0] out_data; reg [M:0] out_data; reg [S:0] estado; // memória para variáveis de estado // alternativa: assign output =...; always @(negedge clk) case (estado) 0: begin output <=...; estado <=...; end 1: begin output <=...; estado <=...; end... default: output <=...; estado <=...; end endcase endmodule
Exemplo:Semáforo o Dados gerais: I Semáforo de um cruzamento, apenas com duas luzes: verde e vermelho. I Relógio de 0,033 Hz (1 ciclo cada 30 s) I Duas estradas: norte/sul (NS) e este/oeste (EW) o Sinais de saída: I NSlite: activo luz NS verde (senão vermelha) I EWlite: activo luz EW verde (senão vermelha) o Sinais de entrada: I NScar: activo carro presente na estrada NS I EWlite: activa carro presente na estrada EW O semáforo deve mudar apenas quando existe um carro presente na outra estrada; caso contrário a via onde passou o último carro deve permanecer a verde.
Exemplo:Semáforo module semaforo(clk, EWCar, NSCar, EWLite, NSLite); input clk, EWCar, NSCar; output EWLite, NSLite; reg estado = 0; // estado inicial: NSGreen // saídas assign NSLite = ~estado; // aceso se estado=0 assign EWLite = estado; always @(posedge clk) case (estado) 0: estado <= EWCar; 1: estado <= NSCar; endcase endmodule
Exercício Construa o diagrama de estados de uma máquina de estados finitos (FSM) que realize o controle de um elevador. O elevador deverá respeitar a seguinte especificação: Se o elevador está parado e o andar requisitado é igual ao andar corrente, então o elevador continua parado. Se o elevador está parado e o andar requisitado é menor que o andar corrente, então o elevador deve descer para o andar desejado. Se o elevador está parado e o andar requisitado é maior que o andar corrente, então o elevador deve subir para o andar desejado. Sendo assim: Desenhe o diagrama da máquina de estados que realiza esta operação.
Exercício A empresa de refrigerantes X deseja projetar um circuito que realize o controle de venda de 1 lata de refrigerante na sua máquina de refrigerantes. Para isto o empresa o contratou, você como projetistachefe do projeto deve especificar (desenhar) o diagrama de uma máquina estados finitos (FSM) que realize o controle da entrada de moedas na máquina. Se entrar o valor correto a latinha deve sair da máquina, caso contrário, deve voltar para o estado inicial e devolver as moedas. Sabe-se que o preço do refrigerante é um real, e também que a máquina somente aceita moedas de 1 real, 50 centavos e 25 centavos. Porém, a máquina pode aceitar qualquer sequência de moedas. Sendo assim: Desenhe o diagrama da máquina de estados que realiza esta operação.
Exercício Exercício Implementar em VHDL uma máquina de estado com 4 bits de entrada (+ o clock) e 1 bit de saída. O bit de saída inicialmente deve apresentar o valor ZERO, e deve ir para UM quando receber na entrada o valor 15. Caso ele receba a seqüência 7, 4, 3 a máquina deve voltar ao seu estado inicial ZERO.