Advertisement
Guest User

KUAY

a guest
Nov 22nd, 2018
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. typedef enum logic[1:0]{ A=2'b00, B=2'b01, C=2'b10 } state_t;
  2. module next_state(input logic a,in2, input state_t cs, output state_t ns);
  3. always_comb begin
  4.     if(in2)
  5.         ns = A;
  6.     else if(cs == A)
  7.         begin
  8.         if (a== 0) ns = A;
  9.         else ns = B;
  10.         end
  11.     else if (cs == B)
  12.         if (a == 0) ns = C;
  13.         else ns = B;
  14.     else if (cs == C) ns =A;
  15.     else ns = cs;
  16.     end
  17. endmodule
  18. module d_flipflop (input logic d, clk, output logic q);
  19. always_ff @(posedge clk) begin
  20. q <= d;
  21. end
  22. endmodule
  23. module fsm (input logic in,res, clk,  output logic out);
  24.     state_t cs, ns;
  25.     // Connect modules
  26.     next_state nxt ( .a(in),.in2(res), .cs(cs), .ns(ns));
  27.     d_flipflop b0 ( .d(ns[0]), .clk(clk), .q(cs[0]) );
  28.     d_flipflop b1 ( .d(ns[1]), .clk(clk), .q(cs[1]) );
  29.     //gen_output out_comb ( .cs(cs), .o(out) );
  30. endmodule
  31. module top;
  32. logic fsm_in, fsm_out, clk, res;
  33.     //initial begin
  34.         //$dumpfile("dump.vcd");
  35.         //$dumpvars(1);
  36.     //end
  37.     fsm fsm1( .in(fsm_in), .out(fsm_out), .clk(clk), .res(res) );
  38. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement