#ifndef TILE_CONV_H_INCLUDED #define TILE_CONV_H_INCLUDED //Set parameter #define Noc 2 #define Nic 8 #define Tic 4 #define Niy 10 #define Tiy 5 #define Nix 10 #define Tix 6 #define Nkx 3 #define Nky 3 #define Noy 8 //Noy = Niy - Nky + 1 #define Nox 8 //Nox = Nix - Nkx + 1 #define Tox 4 //Tox = Tix-Nkx+1; #define O_size 128 //O_size = Noc * Noy * Nox #define I_size 800 //I_size = Nic*Niy*Nix #define W_size_1 72 //W_size = Noc*Nic*Nky*Nkx #define W_size_2 72 int output_feature[O_size]; void Channel_Acc_function( int Nof, int Tile_number, int Block_Adder_Reg[7][4], int Boundary_Data_SRAM[2][8][8], int Output_feature[2][8][8] ); void Block_Adder_function( int Part_Acc_Reg_0[7][4], int Part_Acc_Reg_1[7][4], int Part_Acc_Reg_2[7][4], int Part_Acc_Reg_3[7][4], int Block_Adder_Reg[7][4] ); void Partial_Acc_function( int Shift_Reg_0[12][7], int Shift_Reg_1[12][7], int Shift_Reg_2[12][7], int Shift_Reg_3[12][7], int Part_Acc_Reg_0[7][4], int Part_Acc_Reg_1[7][4], int Part_Acc_Reg_2[7][4], int Part_Acc_Reg_3[7][4] ); void PE_Block_function( int input_feature_tile[120], int kernel_tile[36], int PE0_Reg[12][7], int PE1_Reg[12][7], int PE2_Reg[12][7], int PE3_Reg[12][7] ); #endif // TILE_CONV_H_INCLUDED