Advertisement
Guest User

Untitled

a guest
May 2nd, 2019
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module conv2d
  2. (
  3.     input logic CLK,
  4.     input logic RESET,
  5.     input logic [31:0] inputVol [48:0],
  6.     input logic [31:0] convKernel [8:0],
  7.     input logic stride,
  8.     output logic [31:0] outputVol [8:0]
  9. );
  10.  
  11.  
  12. logic [31:0] patch1 [8:0];
  13. logic [31:0] patch2 [8:0];
  14. logic [31:0] patch3 [8:0];
  15. logic [31:0] patch4 [8:0];
  16. logic [31:0] patch5 [8:0];
  17. logic [31:0] patch6 [8:0];
  18. logic [31:0] patch7 [8:0];
  19. logic [31:0] patch8 [8:0];
  20. logic [31:0] patch9 [8:0];
  21.  
  22. assign patch1[0] = inputVol[0];
  23. assign patch1[1] = inputVol[1];
  24. assign patch1[2] = inputVol[2];
  25. assign patch1[3] = inputVol[7];
  26. assign patch1[4] = inputVol[8];
  27. assign patch1[5] = inputVol[9];
  28. assign patch1[6] = inputVol[14];
  29. assign patch1[7] = inputVol[15];
  30. assign patch1[8] = inputVol[16];
  31.  
  32.  
  33.  
  34. assign patch2[0] = inputVol[2];
  35. assign patch2[1] = inputVol[3];
  36. assign patch2[2] = inputVol[4];
  37. assign patch2[3] = inputVol[9];
  38. assign patch2[4] = inputVol[10];
  39. assign patch2[5] = inputVol[11];
  40. assign patch2[6] = inputVol[16];
  41. assign patch2[7] = inputVol[17];
  42. assign patch2[8] = inputVol[18];
  43.  
  44.  
  45.  
  46.  
  47. assign patch3[0] = inputVol[4];
  48. assign patch3[1] = inputVol[5];
  49. assign patch3[2] = inputVol[6];
  50. assign patch3[3] = inputVol[11];
  51. assign patch3[4] = inputVol[12];
  52. assign patch3[5] = inputVol[13];
  53. assign patch3[6] = inputVol[18];
  54. assign patch3[7] = inputVol[19];
  55. assign patch3[8] = inputVol[20];
  56.  
  57.  
  58.  
  59. assign patch4[0] = inputVol[14];
  60. assign patch4[1] = inputVol[15];
  61. assign patch4[2] = inputVol[16];
  62. assign patch4[3] = inputVol[21];
  63. assign patch4[4] = inputVol[22];
  64. assign patch4[5] = inputVol[23];
  65. assign patch4[6] = inputVol[28];
  66. assign patch4[7] = inputVol[29];
  67. assign patch4[8] = inputVol[30];
  68.  
  69.  
  70.  
  71.  
  72. assign patch5[0] = inputVol[16];
  73. assign patch5[1] = inputVol[17];
  74. assign patch5[2] = inputVol[18];
  75. assign patch5[3] = inputVol[23];
  76. assign patch5[4] = inputVol[24];
  77. assign patch5[5] = inputVol[25];
  78. assign patch5[6] = inputVol[30];
  79. assign patch5[7] = inputVol[31];
  80. assign patch5[8] = inputVol[32];
  81.  
  82.  
  83.  
  84. assign patch6[0] = inputVol[18];
  85. assign patch6[1] = inputVol[19];
  86. assign patch6[2] = inputVol[20];
  87. assign patch6[3] = inputVol[25];
  88. assign patch6[4] = inputVol[26];
  89. assign patch6[5] = inputVol[27];
  90. assign patch6[6] = inputVol[32];
  91. assign patch6[7] = inputVol[33];
  92. assign patch6[8] = inputVol[34];
  93.  
  94.  
  95. assign patch7[0] = inputVol[28];
  96. assign patch7[1] = inputVol[29];
  97. assign patch7[2] = inputVol[30];
  98. assign patch7[3] = inputVol[35];
  99. assign patch7[4] = inputVol[36];
  100. assign patch7[5] = inputVol[37];
  101. assign patch7[6] = inputVol[42];
  102. assign patch7[7] = inputVol[43];
  103. assign patch7[8] = inputVol[44];
  104.  
  105.  
  106. assign patch8[0] = inputVol[30];
  107. assign patch8[1] = inputVol[31];
  108. assign patch8[2] = inputVol[32];
  109. assign patch8[3] = inputVol[37];
  110. assign patch8[4] = inputVol[38];
  111. assign patch8[5] = inputVol[39];
  112. assign patch8[6] = inputVol[44];
  113. assign patch8[7] = inputVol[45];
  114. assign patch8[8] = inputVol[46];
  115.  
  116.  
  117. assign patch9[0] = inputVol[32];
  118. assign patch9[1] = inputVol[33];
  119. assign patch9[2] = inputVol[34];
  120. assign patch9[3] = inputVol[39];
  121. assign patch9[4] = inputVol[40];
  122. assign patch9[5] = inputVol[41];
  123. assign patch9[6] = inputVol[46];
  124. assign patch9[7] = inputVol[47];
  125. assign patch9[8] = inputVol[48];
  126.  
  127.  
  128.  
  129. logic [31:0] sum1;
  130. logic [31:0] sum2;
  131. logic [31:0] sum3;
  132. logic [31:0] sum4;
  133. logic [31:0] sum5;
  134. logic [31:0] sum6;
  135. logic [31:0] sum7;
  136. logic [31:0] sum8;
  137. logic [31:0] sum9;
  138.  
  139.  
  140. mat_mul_accl Mult1(.CLK, .RESET, .mat1(patch1),
  141.                 .mat2(convKernel), .SUM(sum1));
  142. mat_mul_accl Mult2(.CLK, .RESET, .mat1(patch2),
  143.                 .mat2(convKernel), .SUM(sum2));
  144. mat_mul_accl Mult3(.CLK, .RESET, .mat1(patch3),
  145.                 .mat2(convKernel), .SUM(sum3));
  146. mat_mul_accl Mult4(.CLK, .RESET, .mat1(patch4),
  147.                 .mat2(convKernel), .SUM(sum4));
  148. mat_mul_accl Mult5(.CLK, .RESET, .mat1(patch5),
  149.                 .mat2(convKernel), .SUM(sum5));
  150. mat_mul_accl Mult6(.CLK, .RESET, .mat1(patch6),
  151.                 .mat2(convKernel), .SUM(sum6));
  152. mat_mul_accl Mult7(.CLK, .RESET, .mat1(patch7),
  153.                 .mat2(convKernel), .SUM(sum7));
  154. mat_mul_accl Mult8(.CLK, .RESET, .mat1(patch8),
  155.                 .mat2(convKernel), .SUM(sum8));
  156. mat_mul_accl Mult9(.CLK, .RESET, .mat1(patch9),
  157.                 .mat2(convKernel), .SUM(sum9));
  158.  
  159.  
  160. assign outputVol[0] = sum1;
  161. assign outputVol[1] = sum2;
  162. assign outputVol[2] = sum3;
  163. assign outputVol[3] = sum4;
  164. assign outputVol[4] = sum5;
  165. assign outputVol[5] = sum6;
  166. assign outputVol[6] = sum7;
  167. assign outputVol[7] = sum8;
  168. assign outputVol[8] = sum9;
  169.  
  170.  
  171.  
  172. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement