Advertisement
est-kuk

Untitled

Jun 10th, 2019
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. `timescale 1ns / 1ps
  3. module parking_system(
  4.  input clk,reset_n,
  5.  input czujnik_wej, czujnik_wyj,
  6.  input [1:0] haslo_1, haslo_2,
  7.  output wire ZIEL_LED, CZER_LED,
  8.  output reg [6:0] HEX_1, HEX_2
  9.     );
  10.  parameter POSTOJ = 3'b000, HASLO = 3'b001, ZLE_HASLO = 3'b010, DOBRE_HASLO = 3'b011, STOP = 3'b100;
  11.  
  12.  reg[2:0] stan_obecny, nastepny_stan;
  13.  reg[31:0] czas_oczekiwania;
  14.  reg czer_tmp, ziel_tmp;
  15.  
  16.  always @(posedge clk or negedge reset_n)
  17.  begin
  18.  if(~reset_n)
  19.  stan_obecny = POSTOJ;
  20.  else
  21.  stan_obecny = nastepny_stan;
  22.  end
  23.  
  24.  always @(posedge clk or negedge reset_n)
  25.  begin
  26.  if(~reset_n)
  27.  czas_oczekiwania <= 0;
  28.  else if(stan_obecny==HASLO)
  29.  czas_oczekiwania <= czas_oczekiwania + 1;
  30.  else
  31.  czas_oczekiwania <= 0;
  32.  end
  33.  
  34.  always @(*)
  35.  begin
  36.  case(stan_obecny)
  37.  POSTOJ: begin
  38.          if(czujnik_wej == 1)
  39.  nastepny_stan = HASLO;
  40.  else
  41.  nastepny_stan = POSTOJ;
  42.  end
  43.  HASLO: begin
  44.  if(czas_oczekiwania <= 3)
  45.  nastepny_stan = HASLO;
  46.  else
  47.  begin
  48.  if((haslo_1==2'b01)&&(haslo_2==2'b10))
  49.  nastepny_stan = DOBRE_HASLO;
  50.  else
  51.  nastepny_stan = ZLE_HASLO;
  52.  end
  53.  end
  54.  ZLE_HASLO: begin
  55.      if((haslo_1==2'b01)&&(haslo_2==2'b10))
  56.  nastepny_stan = DOBRE_HASLO;
  57.  else
  58.  nastepny_stan = ZLE_HASLO;
  59.  end
  60.  DOBRE_HASLO: begin
  61.  if(czujnik_wyj==1 && czujnik_wyj == 1)
  62.  nastepny_stan = STOP;
  63.  else if(czujnik_wyj == 1)
  64.  nastepny_stan = POSTOJ;
  65.  else
  66.  nastepny_stan = DOBRE_HASLO;
  67.  end
  68.  STOP: begin
  69.  if((haslo_1==2'b01)&&(haslo_2==2'b10))
  70.  nastepny_stan = DOBRE_HASLO;
  71.  else
  72.  nastepny_stan = STOP;
  73.  end
  74.  default: nastepny_stan = POSTOJ;
  75.  endcase
  76.  end
  77.  
  78.  always @(posedge clk) begin
  79.  case(stan_obecny)
  80.  POSTOJ: begin
  81.  ziel_tmp = 1'b0;
  82.  czer_tmp = 1'b0;
  83.  HEX_1 = 7'b1111111;
  84.  HEX_2 = 7'b1111111;
  85.  end
  86.  HASLO: begin
  87.  ziel_tmp = 1'b0;
  88.  czer_tmp = 1'b1;
  89.  HEX_1 = 7'b000_0110; // E
  90.  HEX_2 = 7'b010_1011; // n
  91.  end
  92.  ZLE_HASLO: begin
  93.  ziel_tmp = 1'b0;
  94.  czer_tmp = ~czer_tmp;
  95.  HEX_1 = 7'b000_0110; // E
  96.  HEX_2 = 7'b000_0110; // E
  97.  end
  98.  DOBRE_HASLO: begin
  99.  ziel_tmp = ~ziel_tmp;
  100.  czer_tmp = 1'b0;
  101.  HEX_1 = 7'b000_0010; // 6
  102.  HEX_2 = 7'b100_0000; // 0
  103.  end
  104.  STOP: begin
  105.  ziel_tmp = 1'b0;
  106.  czer_tmp = ~czer_tmp;
  107.  HEX_1 = 7'b001_0010; // 5
  108.  HEX_2 = 7'b000_1100; // P
  109.  end
  110.  endcase
  111.  end
  112.  assign CZER_LED = czer_tmp  ;
  113.  assign ZIEL_LED = ziel_tmp;
  114.  
  115. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement