| 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 | 
 |  |