Advertisement
Guest User

Untitled

a guest
Jul 20th, 2017
76
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 A_take;
  8.     output B_take;
  9.     output C_take;
  10.     output D_take;
  11.     output reg [1:0] ADDR,
  12.     output reg READY
  13. );
  14.  
  15. reg [3:0] states;
  16. reg [2:0] cycle;
  17.  
  18. initial begin
  19.     states = 0;
  20.     cycle = 0;
  21. end
  22.  
  23. always @(posedge CLK)
  24. begin
  25.         if(A OR B OR C OR D)
  26.         begin
  27.         READY <= 1;
  28.             if(A and ! states[0])
  29.             begin
  30.                 ADDR <= 0;
  31.                 states[0] <= 1;
  32.                 A_take <= 1;
  33.             end
  34.             else
  35.             if(B]  and ! states[1])
  36.             begin  
  37.                 ADDR <= 1;
  38.                 states[1] <= 1;
  39.                 B_take <= 1;
  40.             end
  41.             else
  42.             if(C  and ! states[2])
  43.             begin
  44.                 ADDR <= 2;
  45.                 states[2] <= 1;
  46.                 C_take <= 1;
  47.             end
  48.             else
  49.             if(D  and ! states[3])
  50.             begin
  51.                 ADDR <= 3;
  52.                 states[3] <= 1;
  53.                 D_take <= 1;
  54.             end
  55.  
  56.         if(states == {D, C, B, A})
  57.         begin
  58.             states <= 0;
  59.         end
  60.            
  61.         end
  62.         else
  63.         begin
  64.             READY <= 0;
  65.             states <= 0;
  66.             A_take <= 0;
  67.             B_take <= 0;
  68.             C_take <= 0;
  69.             D_take <= 0;
  70.         end
  71. end
  72.  
  73. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement