| module top ( | |
| input clock, | |
| input [31:0] dinA, dinB, | |
| input [2:0] opcode, | |
| output reg [31:0] dout | |
| ); | |
| always @(posedge clock) begin | |
| case (opcode) | |
| 0: dout <= dinA + dinB; | |
| 1: dout <= dinA - dinB; | |
| 2: dout <= dinA >> dinB; | |
| 3: dout <= $signed(dinA) >>> dinB; | |
| 4: dout <= dinA << dinB; | |
| 5: dout <= dinA & dinB; | |
| 6: dout <= dinA | dinB; | |
| 7: dout <= dinA ^ dinB; | |
| endcase | |
| end | |
| endmodule |