loom

Форк
0
78 строк · 1.8 Кб
1
module fsm(
2
  input logic clk,  
3
  input logic rst,
4
  input logic [5:0] c,
5
  output logic [2:0] st,
6
  output logic [7:0] num
7
);
8
  logic [2:0] State;  
9
  always_comb
10
    st = State;
11
  always_ff @ (posedge clk, negedge rst)
12
  begin
13
    if(!rst) begin      
14
      num <= 0;
15
      State <= 1;
16
    end
17
    else if(State == 1) begin      
18
      if(c[4] == 1 && c[5] == 1) begin
19
        num <= 'b00000101;        
20
        State <= 2;
21
      end      
22
      else if(c[2] == 1 && c[3] == 0) begin  
23
        num <= 'b00011000;        
24
        State <= 4;
25
      end      
26
      else if(c[0] == 1 || c[2] == 0) begin
27
        num <= 'b01100000;        
28
        State <= 6;
29
      end      
30
      else if(c[3] == 1)
31
        State <= 5;      
32
      else begin
33
        num <= 'b00001000;        
34
        State <= 1;
35
      end    
36
    end
37
    else if(State == 2) begin      
38
      if(c[0] == 1 && c[1] == 1 && c[2] == 1)
39
        State <= 2;      
40
      else
41
        State <= 3;    
42
    end
43
    else if (State == 3) begin      
44
      if(c[0] == 1 && c[1] == 0) begin
45
        num <= 'b10010000;        
46
        State <= 1;
47
      end      
48
      else begin
49
       num <= 'b00000001;        
50
       State <= 3;
51
      end   
52
    end
53
    else if(State == 4) begin      
54
      if(c[0] == 1 && c[5] == 0)
55
        State <= 4;      
56
      else begin
57
        num <= 'b10001000;        
58
        State <= 3;
59
      end    
60
    end
61
    else if(State == 5) begin      
62
      if (c[0] == 1 && c[1] == 1 && c[2] == 1) begin
63
       num <= 'b00000001;        
64
        State <= 1;
65
      end      
66
      else
67
        State <= 5;    
68
    end
69
    else if(State == 6) begin      
70
      if (c[4] == 1 || c[5] == 1) begin
71
        num <= 'b00000001;        
72
        State <= 5;
73
      end      
74
      else
75
        State <= 6;    
76
    end
77
  end  
78
endmodule
79

80

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.