Advertisement
Guest User

Untitled

a guest
Sep 24th, 2015
313
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Vedit 1.33 KB | None | 0 0
  1. module fsm(input reset,
  2.            input clock,
  3.            input R0,
  4.            input R1,
  5.             output reg G0,
  6.             output reg G1);
  7.            
  8. parameter[1:0]  // synopsys enum states
  9. S0=2'b00,
  10. S1=2'b01,
  11. S2=2'b10,
  12. S3=2'b11;
  13.  
  14. reg [1:0]  /* synopsys enum states */ current_state, next_state;
  15. // synopsys state_vector current_state
  16.  
  17. /* Sequential Logic */
  18. always @(posedge clock or negedge reset)
  19.     begin
  20.         if(!reset) current_state<=S0;
  21.         else current_state<=next_state;
  22.     end
  23.    
  24. /*output logic and next stage logic */
  25. always@(current_state or R0 or R1 )
  26.     begin
  27.         G0=0;G1=0; //default's to prevent latches
  28.         case(current_state) // synopsys full_case parallel_case
  29.             S0: begin
  30.                     G0=0;G1=0;
  31.                     case({R0,R1})
  32.                         2'b00:next_state=S0;                       
  33.                         2'b10:next_state=S1;
  34.                         2'b01:next_state=S2;
  35.                         2'b11:next_state=S3;
  36.                        
  37.                     endcase
  38.                 end
  39.             S1: begin
  40.                     G0=1;G1=0;
  41.                     case({R0,R1})
  42.                         2'b00:next_state=S0;
  43.                         2'b10:next_state=S1;
  44.                         2'b01:next_state=S2;
  45.                         2'b11:next_state=S3;
  46.                     endcase
  47.                 end
  48.             S2: begin
  49.                     G0=0;G1=1;
  50.                     case({R0,R1})
  51.                         2'b00:next_state=S0;
  52.                         2'b10:next_state=S1;
  53.                         2'b01:next_state=S2;
  54.                         2'b11:next_state=S3;
  55.                     endcase
  56.                 end
  57.             S3: begin
  58.                     G0=1;G1=0;
  59.                     next_state=S2;
  60.                 end
  61.             default:next_state=S0;
  62.            
  63.         endcase
  64.     end
  65.    
  66. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement