Advertisement
Guest User

Untitled

a guest
May 22nd, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module FSM_one_hot(
  2. input w,clk,aclr,
  3.     output reg z,
  4.     output reg [8:0] y);  
  5.     reg [8:0] d;
  6.     reg [8:0]    y_Q,  
  7.         Y_D;    
  8.        
  9.  
  10.     localparam [8:0]    A = 9'b000000000,   // kody stanów
  11.             B = 9'b000000011,
  12.             C = 9'b000000101,
  13.             D = 9'b000001001,
  14.             E = 9'b000010001,
  15.             F = 9'b000100001,
  16.             G = 9'b001000001,
  17.             H = 9'b010000001,
  18.             I = 9'b100000001;
  19.            
  20.     always @(*) begin
  21.         d[0] = ~aclr;
  22.         d[1] = y[0] & ~w | y[5] & ~w | y[6] & ~w | y[7] & ~w | y[8] & ~w;
  23.         d[2] = y[1] & ~w;
  24.         d[3] = y[2] & ~w;
  25.         d[4] = y[3] & ~w | y[4] & ~w;
  26.         d[5] = y[0] & w | y[2] & w | y[3] & w | y[4] & w | y[5] & w;
  27.         d[6] = y[5] & w;
  28.         d[7] = y[6] & w;
  29.         d[8] = y[7] & w | y[8] & w;
  30.     case (y_Q)
  31.         A:  if (!w) Y_D = B;    else Y_D = F;
  32.         B:  if (!w) Y_D = C;    else Y_D = F;
  33.         C:  if (!w) Y_D = D;    else Y_D = F;
  34.         D:  if (!w) Y_D = E;    else Y_D = F;
  35.         E:  if (!w) Y_D = E;    else Y_D = F;
  36.         F:  if (!w) Y_D = B;    else Y_D = G;
  37.         G:  if (!w) Y_D = B;    else Y_D = H;
  38.         H:  if (!w) Y_D = B;    else Y_D = I;
  39.         I:  if (!w) Y_D = B;    else Y_D = I;
  40.         default:    Y_D = 4'bxxxx;
  41.     endcase
  42.     end
  43.     always @(posedge clk,negedge aclr)
  44.         if (~aclr) begin y_Q <= 0; y <= 0; y[0] <= 1'b1; end
  45.         else begin y_Q <= Y_D; y <= d; end
  46.     always @(*)        
  47.         z = (y_Q == E) | (y_Q == I);
  48. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement