Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- `timescale 1ns / 1ps
- module parking_system(
- input clk,reset_n,
- input czujnik_wej, czujnik_wyj,
- input [1:0] haslo_1, haslo_2,
- output wire ZIEL_LED, CZER_LED,
- output reg [6:0] HEX_1, HEX_2
- );
- parameter POSTOJ = 3'b000, HASLO = 3'b001, ZLE_HASLO = 3'b010, DOBRE_HASLO = 3'b011, STOP = 3'b100;
- reg[2:0] stan_obecny, nastepny_stan;
- reg[31:0] czas_oczekiwania;
- reg czer_tmp, ziel_tmp;
- always @(posedge clk or negedge reset_n)
- begin
- if(~reset_n)
- stan_obecny = POSTOJ;
- else
- stan_obecny = nastepny_stan;
- end
- always @(posedge clk or negedge reset_n)
- begin
- if(~reset_n)
- czas_oczekiwania <= 0;
- else if(stan_obecny==HASLO)
- czas_oczekiwania <= czas_oczekiwania + 1;
- else
- czas_oczekiwania <= 0;
- end
- always @(*)
- begin
- case(stan_obecny)
- POSTOJ: begin
- if(czujnik_wej == 1)
- nastepny_stan = HASLO;
- else
- nastepny_stan = POSTOJ;
- end
- HASLO: begin
- if(czas_oczekiwania <= 3)
- nastepny_stan = HASLO;
- else
- begin
- if((haslo_1==2'b01)&&(haslo_2==2'b10))
- nastepny_stan = DOBRE_HASLO;
- else
- nastepny_stan = ZLE_HASLO;
- end
- end
- ZLE_HASLO: begin
- if((haslo_1==2'b01)&&(haslo_2==2'b10))
- nastepny_stan = DOBRE_HASLO;
- else
- nastepny_stan = ZLE_HASLO;
- end
- DOBRE_HASLO: begin
- if(czujnik_wyj==1 && czujnik_wyj == 1)
- nastepny_stan = STOP;
- else if(czujnik_wyj == 1)
- nastepny_stan = POSTOJ;
- else
- nastepny_stan = DOBRE_HASLO;
- end
- STOP: begin
- if((haslo_1==2'b01)&&(haslo_2==2'b10))
- nastepny_stan = DOBRE_HASLO;
- else
- nastepny_stan = STOP;
- end
- default: nastepny_stan = POSTOJ;
- endcase
- end
- always @(posedge clk) begin
- case(stan_obecny)
- POSTOJ: begin
- ziel_tmp = 1'b0;
- czer_tmp = 1'b0;
- HEX_1 = 7'b1111111;
- HEX_2 = 7'b1111111;
- end
- HASLO: begin
- ziel_tmp = 1'b0;
- czer_tmp = 1'b1;
- HEX_1 = 7'b000_0110; // E
- HEX_2 = 7'b010_1011; // n
- end
- ZLE_HASLO: begin
- ziel_tmp = 1'b0;
- czer_tmp = ~czer_tmp;
- HEX_1 = 7'b000_0110; // E
- HEX_2 = 7'b000_0110; // E
- end
- DOBRE_HASLO: begin
- ziel_tmp = ~ziel_tmp;
- czer_tmp = 1'b0;
- HEX_1 = 7'b000_0010; // 6
- HEX_2 = 7'b100_0000; // 0
- end
- STOP: begin
- ziel_tmp = 1'b0;
- czer_tmp = ~czer_tmp;
- HEX_1 = 7'b001_0010; // 5
- HEX_2 = 7'b000_1100; // P
- end
- endcase
- end
- assign CZER_LED = czer_tmp ;
- assign ZIEL_LED = ziel_tmp;
- endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement