Advertisement
Guest User

Untitled

a guest
Jul 20th, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module fifo_arbiter(
  2.     input A,
  3.     input B,
  4.     input C,
  5.     input D,
  6.     input CLK,
  7.     output reg [3:0] fifo_take,
  8.     output reg [1:0] ADDR,
  9.     output reg READY
  10. );
  11.  
  12. reg [3:0] states;
  13.  
  14. initial begin
  15.     states = 0;
  16.     fifo_take <= 0;
  17. end
  18.  
  19. always @(posedge CLK)
  20. begin
  21.         if(A || B || C || D)
  22.         begin
  23.         READY <= 1;
  24.             if(A && ~ states[0])
  25.             begin
  26.                 ADDR <= 0;
  27.                 states[0] <= 1;
  28.                 fifo_take <= {0,0,0,1};
  29.             end
  30.             else
  31.             begin
  32.                 if(B && ~states[1])
  33.                 begin  
  34.                     ADDR <= 1;
  35.                     states[1] <= 1;
  36.                     fifo_take <= {0,0,1,0};
  37.                 end
  38.                 else
  39.                 begin
  40.                     if(C && ~states[2])
  41.                     begin
  42.                         ADDR <= 2;
  43.                         states[2] <= 1;
  44.                         fifo_take <= {0,1,0,0};
  45.                     end
  46.                     else
  47.                     begin
  48.                         if(D && ~states[3])
  49.                         begin
  50.                             ADDR <= 3;
  51.                             states[3] <= 1;
  52.                             fifo_take <= {1,0,0,0};
  53.                         end
  54.                         else
  55.                             fifo_take <= {0,0,0,0};
  56.                     end
  57.                 end
  58.             end
  59.  
  60.         if(states == {D, C, B, A} || states == fifo_take)
  61.             states <= 0;
  62.            
  63.         end
  64.         else
  65.         begin
  66.             READY <= 0;
  67.             states <= 0;
  68.             fifo_take <= {0,0,0,0};
  69.         end
  70. end
  71.  
  72. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement