@@ -23,7 +23,7 @@ RAM RAM_temp(
2323// /////////////////////////////////////
2424
2525
26- // ////////Conv////////////////
26+ // ///////////// Conv////////////////
2727wire [15 :0 ] dout;
2828reg in_st;
2929wire out_st;
@@ -38,6 +38,25 @@ Conv moduleConv(
3838// ///////////////////////////
3939
4040
41+ // /////////////MaxPool////////////////
42+ wire [15 :0 ] maxpool_dout;
43+ reg [15 :0 ] maxpool_din1, maxpool_din2, maxpool_din3, maxpool_din4, maxpool_din5, maxpool_din6, maxpool_din7, maxpool_din8, maxpool_din9;
44+ reg [15 :0 ] maxpool_output[3 :0 ]; // 2x2 matrix
45+ MaxPool moduleMaxPool (
46+ .din1(maxpool_din1),
47+ .din2(maxpool_din2),
48+ .din3(maxpool_din3),
49+ .din4(maxpool_din4),
50+ .din5(maxpool_din5),
51+ .din6(maxpool_din6),
52+ .din7(maxpool_din7),
53+ .din8(maxpool_din8),
54+ .din9(maxpool_din9),
55+ .dout(maxpool_dout)
56+ );
57+ // /////////////////////////////////////
58+
59+
4160reg [6 :0 ] write_ram_counter;
4261reg [15 :0 ] conv_result[0 :35 ];
4362reg [5 :0 ] output_counter ;
@@ -193,10 +212,66 @@ initial begin
193212 #(CLK_PERIOD) address <= 6'b111101 ;
194213 #(CLK_PERIOD) address <= 6'b111110 ;
195214 #(CLK_PERIOD) address <= 6'b111111 ;
196-
197215
198216
199- #(CLK_PERIOD* 300 ) $display ("finished" );
217+ #(CLK_PERIOD* 200 ) $display ("Conv is done" );
218+
219+ maxpool_din1 <= conv_result[0 ];
220+ maxpool_din2 <= conv_result[1 ];
221+ maxpool_din3 <= conv_result[2 ];
222+ maxpool_din4 <= conv_result[6 ];
223+ maxpool_din5 <= conv_result[7 ];
224+ maxpool_din6 <= conv_result[8 ];
225+ maxpool_din7 <= conv_result[12 ];
226+ maxpool_din8 <= conv_result[13 ];
227+ maxpool_din9 <= conv_result[14 ];
228+
229+
230+ #(CLK_PERIOD) maxpool_output[0 ] <= maxpool_dout;
231+
232+ maxpool_din1 <= conv_result[3 ];
233+ maxpool_din2 <= conv_result[4 ];
234+ maxpool_din3 <= conv_result[5 ];
235+ maxpool_din4 <= conv_result[9 ];
236+ maxpool_din5 <= conv_result[10 ];
237+ maxpool_din6 <= conv_result[11 ];
238+ maxpool_din7 <= conv_result[15 ];
239+ maxpool_din8 <= conv_result[16 ];
240+ maxpool_din9 <= conv_result[17 ];
241+
242+ #(CLK_PERIOD) maxpool_output[1 ] <= maxpool_dout;
243+
244+ maxpool_din1 <= conv_result[18 ];
245+ maxpool_din2 <= conv_result[19 ];
246+ maxpool_din3 <= conv_result[20 ];
247+ maxpool_din4 <= conv_result[24 ];
248+ maxpool_din5 <= conv_result[25 ];
249+ maxpool_din6 <= conv_result[26 ];
250+ maxpool_din7 <= conv_result[30 ];
251+ maxpool_din8 <= conv_result[31 ];
252+ maxpool_din9 <= conv_result[32 ];
253+
254+ #(CLK_PERIOD) maxpool_output[2 ] <= maxpool_dout;
255+
256+ maxpool_din1 <= conv_result[21 ];
257+ maxpool_din2 <= conv_result[22 ];
258+ maxpool_din3 <= conv_result[23 ];
259+ maxpool_din4 <= conv_result[27 ];
260+ maxpool_din5 <= conv_result[28 ];
261+ maxpool_din6 <= conv_result[29 ];
262+ maxpool_din7 <= conv_result[33 ];
263+ maxpool_din8 <= conv_result[34 ];
264+ maxpool_din9 <= conv_result[35 ];
265+
266+ #(CLK_PERIOD) maxpool_output[3 ] <= maxpool_dout;
267+
268+
269+ #(CLK_PERIOD)
270+ $display ("MaxPool Result:" );
271+ $display (" %b %b" , maxpool_output[0 ], maxpool_output[1 ]);
272+ $display (" %b %b" , maxpool_output[2 ], maxpool_output[3 ]);
273+
274+ #(CLK_PERIOD) $display ("MaxPool is done" );
200275 $stop ;
201276end
202277
0 commit comments