Advertisement
Guest User

Untitled

a guest
Mar 30th, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module lab3
  2. (
  3.     input logic clk, reset, in,
  4.     output logic [2:0] out
  5. );
  6.  
  7.     enum logic [2:0] {S0,S1,S2,S3,S4,S5,S6,S7} state, next_state;
  8.  
  9.  
  10.     always_ff @ (posedge clk or negedge reset) begin
  11.         if (!reset) state <= S0;
  12.         else state <= next_state;
  13.     end
  14.  
  15.  
  16.     always_comb begin
  17.         case (state)
  18.                 S0: if (in)
  19.                         next_state = S1;
  20.                     else
  21.                         next_state = S6;
  22.                 S1: if (in)
  23.                         next_state = S2;
  24.                     else
  25.                         next_state = S7;
  26.                 S2: if (in)
  27.                         next_state = S3;
  28.                     else
  29.                         next_state = S0;
  30.                 S3: if (in)
  31.                         next_state = S4;
  32.                     else
  33.                         next_state = S1;
  34.                 S4: if (in)
  35.                         next_state = S5;
  36.                     else
  37.                         next_state = S2;
  38.                 S5: if (in)
  39.                         next_state = S6;
  40.                     else
  41.                         next_state = S3;
  42.                 S6: if (in)
  43.                         next_state = S7;
  44.                     else
  45.                         next_state = S4;
  46.                 S7: if (in)
  47.                         next_state = S0;
  48.                     else
  49.                         next_state = S5;
  50.             endcase
  51.     end
  52.  
  53.     always_comb begin
  54.         case (state)
  55.             S0: out = 3'b000;
  56.             S1: out = 3'b001;
  57.             S2: out = 3'b011;
  58.             S3: out = 3'b010;
  59.             S4: out = 3'b110;
  60.             S5: out = 3'b111;
  61.             S6: out = 3'b101;
  62.             S7: out = 3'b100;
  63.             default: out = 3'b000;
  64.         endcase
  65.     end
  66.  
  67. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement