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