|  | module processing_unit | 
|  | ( | 
|  | // Closk & reset | 
|  | input  wire CLK, | 
|  | input  wire RST, | 
|  |  | 
|  | // Data input | 
|  | input  wire         I_STB, | 
|  | input  wire [31:0]  I_DAT, | 
|  |  | 
|  | // Data output | 
|  | output wire         O_STB, | 
|  | output wire [31:0]  O_DAT | 
|  | ); | 
|  |  | 
|  | // ============================================================================ | 
|  |  | 
|  | wire [15:0] i_dat_a = I_DAT[15: 0]; | 
|  | wire [15:0] i_dat_b = I_DAT[31:16]; | 
|  |  | 
|  | reg         o_stb; | 
|  | reg  [31:0] o_dat; | 
|  |  | 
|  | always @(posedge CLK) | 
|  | o_dat <= i_dat_a * i_dat_b; | 
|  |  | 
|  | always @(posedge CLK or posedge RST) | 
|  | if (RST) o_stb <= 1'd0; | 
|  | else     o_stb <= I_STB; | 
|  |  | 
|  | assign O_STB = o_stb; | 
|  | assign O_DAT = o_dat; | 
|  |  | 
|  | // ============================================================================ | 
|  |  | 
|  | endmodule | 
|  |  |