Advertisement
Guest User

KUAY

a guest
Nov 22nd, 2018
127
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,output logic res);
  3. always_comb begin
  4.     if(res)
  5.         ns = A;
  6.     if(cs == A & a == 1)
  7.         begin
  8.         ns =  B;
  9.         res = 1;
  10.         end
  11.     else if (cs == B & a == 1)
  12.         begin
  13.         ns = B;
  14.         res = 1;
  15.         end
  16.     else if (cs == C)
  17.         begin
  18.             ns = A;
  19.             res = 0;
  20.         end
  21.     else
  22.         begin
  23.         res = 0;
  24.         if(cs == A)
  25.             ns = A;
  26.         else
  27.             ns = B;
  28.         end
  29.     end
  30. endmodule
  31. module d_flipflop (input logic d, clk, output logic q);
  32. always_ff @(posedge clk) begin
  33. q <= d;
  34. end
  35. endmodule
  36. module fsm (input logic in,res, clk,  output logic out);
  37.     state_t cs, ns;
  38.     // Connect modules
  39.     next_state nxt ( .a(in),.in2(res), .cs(cs), .ns(ns), .res(out) );
  40.     d_flipflop b0 ( .d(ns[0]), .clk(clk), .q(cs[0]) );
  41.     d_flipflop b1 ( .d(ns[1]), .clk(clk), .q(cs[1]) );
  42.     //gen_output out_comb ( .cs(cs), .o(out) );
  43. endmodule
  44. module top;
  45. logic fsm_in, fsm_out, clk, res;
  46.     initial begin
  47.         $dumpfile("dump.vcd");
  48.         $dumpvars(1);
  49.     end
  50.     fsm fsm1( .in(fsm_in), .out(fsm_out), .clk(clk), .res(res) );
  51. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement