Advertisement
Guest User

Untitled

a guest
Oct 31st, 2018
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. `define SW 3
  2. `define Sa  3'b000
  3. `define Sb  3'b001
  4. `define Sc  3'b010
  5. `define Sd  3'b011
  6. `define Se  3'b100
  7.  
  8.  
  9. module top_module(clk, reset, in, out);
  10.     input clk, reset;
  11.     input [1:0] in;
  12.     output [1:0] out;
  13.    
  14.     reg [1:0] out;
  15.    
  16.     wire [2:0] presentState, nextStateReset;
  17.     reg [2:0] nextState;
  18.    
  19.     vDFF #(`SW) STATE(clk, nextStateReset, presentState);
  20.     assign nextStateReset = reset ? `Sa : nextState;
  21.    
  22.     always @(*) begin
  23.         case({presentState,in})
  24.             {`Sa,2'b11} : {nextState, out} = {`Sb,2'b01};
  25.             {`Sa,2'b00} : {nextState, out} = {`Sc,2'b01};
  26.             {`Sa,2'b01} : {nextState, out} = {`Sa,2'b01};
  27.             {`Sa,2'b10} : {nextState, out} = {`Sa,2'b01};
  28.            
  29.             {`Sb,2'b00} : {nextState, out} = {`Sb,2'b11};
  30.             {`Sb,2'b01} : {nextState, out} = {`Se,2'b11};
  31.             {`Sb,2'b10} : {nextState, out} = {`Sb,2'b11};
  32.             {`Sb,2'b11} : {nextState, out} = {`Sb,2'b11};
  33.            
  34.             {`Sc,2'b00} : {nextState, out} = {`Sc,2'b10};
  35.             {`Sc,2'b01} : {nextState, out} = {`Sb,2'b10};
  36.             {`Sc,2'b10} : {nextState, out} = {`Sd,2'b10};
  37.             {`Sc,2'b11} : {nextState, out} = {`Se,2'b10};
  38.            
  39.             {`Sd,2'b00} : {nextState, out} = {`Sc,2'b11};
  40.             {`Sd,2'b01} : {nextState, out} = {`Sc,2'b11};
  41.             {`Sd,2'b10} : {nextState, out} = {`Sc,2'b11};
  42.             {`Sd,2'b11} : {nextState, out} = {`Sc,2'b11};
  43.            
  44.             {`Se,2'b00} : {nextState, out} = {`Sd,2'b00};
  45.             {`Se,2'b01} : {nextState, out} = {`Se,2'b00};
  46.             {`Se,2'b10} : {nextState, out} = {`Se,2'b00};
  47.             {`Se,2'b11} : {nextState, out} = {`Se,2'b00};
  48.            
  49.             default : {nextState, out} = {3'bxxx,2'bxx};
  50.        
  51.         endcase
  52.    
  53.     end
  54.    
  55.    
  56.    
  57. endmodule
  58.  
  59. module vDFF(clk,D,Q);
  60.   parameter n=1;
  61.   input clk;
  62.   input [n-1:0] D;
  63.   output [n-1:0] Q;
  64.   reg [n-1:0] Q;
  65.   always @(posedge clk)
  66.     Q <= D;
  67. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement