Advertisement
Guest User

Untitled

a guest
Dec 5th, 2016
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.03 KB | None | 0 0
  1. module bisma_arbiter(input_data,rst,clk,out);
  2.  
  3. parameter width =4 ,width_2 = 2;
  4.  
  5. input wire[width-1:0] input_data;
  6. input wire rst,clk;
  7. output reg[width-1:0] out;
  8. reg [width_2-1:0]token,token_next = 0;
  9.  
  10.  
  11. always@(posedge clk or posedge rst)
  12. begin
  13. token <= token_next;
  14. end
  15.  
  16. always@(input_data or rst)
  17. begin
  18.  
  19. if(token==0 && input_data == 4'bxxx1)
  20. begin
  21. out <= 4'b0001;
  22. token_next <= token_next + 1;
  23. end
  24. else if(token==1 && input_data == 4'bxx1x)
  25. begin
  26. out <= 4'b0010;
  27. token_next <= token_next+ 2;
  28. end
  29. else if(token==2 && input_data == 4'bx1xx)
  30. begin
  31. out <= 4'b0100;
  32. token_next <= token_next + 3;
  33. end
  34. else if(token==3 && input_data == 4'b1xxx)
  35. begin
  36. out <= 4'b1000;
  37. token_next <= token_next + 4;
  38. end
  39. else
  40. out <= 4'b0000;
  41. end
  42. endmodule
  43.  
  44. module bisma_allocator(input_data1,input_data2,input_data3,input_data4,out1,out2,out3,out4,clk,rst);
  45. parameter width = 4;
  46. input wire[width-1:0]input_data1,input_data2,input_data3,input_data4,out1,out2,out3,out4;
  47. input wire clk,rst;
  48.  
  49. bisma_arbiter allocator1 (
  50. .input_data(input_data1),
  51. .clk(clk),
  52. .rst(rst),
  53. .out(out1)
  54. );
  55. bisma_arbiter allocator2 (
  56. .input_data(input_data2),
  57. .clk(clk),
  58. .rst(rst),
  59. .out(out2)
  60. );
  61. bisma_arbiter allocator3 (
  62. .input_data(input_data3),
  63. .clk(clk),
  64. .rst(rst),
  65. .out(out3)
  66. );
  67. bisma_arbiter allocator4 (
  68. .input_data(input_data4),
  69. .clk(clk),
  70. .rst(rst),
  71. .out(out4)
  72. );
  73.  
  74. endmodule
  75.  
  76. `timescale 1ns / 1ns
  77.  
  78. module bisma_allocator_tb();
  79. parameter width = 4;
  80. reg [width-1:0] input_data1,input_data2,input_data3,input_data4;
  81. reg clk,rst;
  82. wire [width-1:0] out1,out2,out3,out4;
  83.  
  84. bisma_allocator allocator(
  85. .input_data1(input_data1),
  86. .input_data2(input_data2),
  87. .input_data3(input_data3),
  88. .input_data4(input_data4),
  89. .out1(out1),
  90. .out2(out2),
  91. .out3(out3),
  92. .out4(out4),
  93. .clk(clk),
  94. .rst(rst)
  95. );
  96.  
  97.  
  98. initial
  99. begin
  100. clk = 0 ;
  101. rst = 0 ;
  102. input_data1 = 0;
  103. #5
  104. input_data1 = 4'b0001;
  105. #20
  106. input_data2 = 4'b0011;
  107. #20
  108. input_data3 = 4'b0101;
  109. #20
  110. input_data4 = 4'b1001;
  111.  
  112. end
  113. always
  114. #10 clk = !clk;
  115. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement