Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module Portao ( E4, E3, E2, E1, E0, LedAbrindo, LedFechando, DSPLY, Clock );
- input E4, E3, E2, E1, E0, Clock;
- //E4 = Controle; E3 = Motor do portão; E2 = Sentido do movimento do portão;
- //E1 = Sensor de Fechado; E0 = Sensor de Aberto;
- output LedAbrindo, LedFechando;//sensores de estados (led verde e led vermelho)
- output [6:0] DSPLY; //Configuração do display: A (estado totalmente aberto) ou F (estado totalmente fechado)
- integer Ligado, Desligado;
- initial
- begin
- Ligado = 1;
- Desligado = 0;
- end
- //Configuração dos componentes da placa:
- reg [1:0] Situacao;
- reg [4:0] Switch;
- reg [6:0] LetraDisplay;
- reg EstadoLedAbrindo, EstadoLedFechando;
- //Estados da máquina de estado:
- parameter Fechado = 2'b00, Abrindo = 2'b01, Aberto = 2'b10, Fechando = 2'b11;
- //O portao inicia totalmente fechado
- initial Situacao = Fechado;
- always @ (posedge Clock)
- begin
- //Relacionando as entradas aos respectivos switches
- Switch[4] = E4;
- Switch[3] = E3;
- Switch[2] = E2;
- Switch[1] = E1;
- Switch[0] = E0;
- //Mudança de estados conforme a máquina construída:
- if(Situacao == Fechado)
- begin
- LetraDisplay = 7'b0001110; //Letra F
- if( Switch == 5'b11010 )
- Situacao = Abrindo;
- //Ambos os leds apagados
- EstadoLedAbrindo = Desligado;
- EstadoLedFechando = Desligado;
- end
- if(Situacao == Fechando)
- begin
- LetraDisplay = 7'b1000000; //Numero zero
- if( Switch == 5'b11100 )
- Situacao = Abrindo;
- else if( Switch == 5'b01100 )
- Situacao = Fechado;
- //Apenas led vermelho aceso
- EstadoLedAbrindo = Desligado;
- EstadoLedFechando = Ligado;
- end
- if(Situacao == Aberto)
- begin
- LetraDisplay = 7'b0001000; //Letra A
- if( Switch == 5'b01101 )
- Situacao = Fechando;
- //Ambos os leds apagados
- EstadoLedAbrindo = Desligado;
- EstadoLedFechando = Desligado;
- end
- if(Situacao == Abrindo)
- begin
- LetraDisplay = 7'b1000000; //Numero zero
- if( Switch == 5'b11000 )
- Situacao = Aberto;
- else if( Switch == 5'b01000 )
- Situacao = Fechando;
- //Apenas led verde aceso
- EstadoLedAbrindo = Ligado;
- EstadoLedFechando = Desligado;
- end
- end
- //Definindo saídas do estado
- assign DSPLY = LetraDisplay;
- assign LedAbrindo = EstadoLedAbrindo;
- assign LedFechando = EstadoLedFechando;
- endmodule
- //Relação dos componentes com o código
- module Relat5( SW, LEDG, LEDR, HEX0, CLK );
- input [4:0] SW;
- input CLK;
- output [0:0] LEDG, LEDR;
- output [6:0] HEX0;
- Portao ab( SW[4], SW[3], SW[2], SW[1], SW[0], LEDG[0], LEDR[0], HEX0, CLK);
- endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement