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(states == {D, C, B, A} || fifo_take == {D, C, B, A})
  25.             begin
  26.                 states <= 0;
  27.                 fifo_take <= 0;
  28.             end
  29.             if(A && ~ states[0])
  30.             begin
  31.                 ADDR <= 0;
  32.                 states[0] <= 1;
  33.                 fifo_take <= 1;
  34.             end
  35.             else
  36.             begin
  37.                 if(B && ~states[1])
  38.                 begin  
  39.                     ADDR <= 1;
  40.                     states[1] <= 1;
  41.                     fifo_take <= 2;
  42.                 end
  43.                 else
  44.                 begin
  45.                     if(C && ~states[2])
  46.                     begin
  47.                         ADDR <= 2;
  48.                         states[2] <= 1;
  49.                         fifo_take <= 4;
  50.                     end
  51.                     else
  52.                     begin
  53.                         if(D && ~states[3])
  54.                         begin
  55.                             ADDR <= 3;
  56.                             states[3] <= 1;
  57.                             fifo_take <= 8;
  58.                         end
  59.                         else
  60.                             fifo_take <= 0;
  61.                     end
  62.                 end
  63.             end
  64.         end
  65.         else
  66.         begin
  67.             READY <= 0;
  68.             states <= 0;
  69.             fifo_take <= 0;
  70.         end
  71. end
  72.  
  73. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement