module SimpleGPU ( input [5:0] opcode, // 操作碼 input [31:0] A, B, // 輸入數據 output [31:0] Result, // 計算結果 output [31:0] MemDataOut // 記憶體讀取數據 ); wire ALUOp, MemRead, MemWrite, MemToReg; wire [31:0] ALUResult, MemoryData; // 實例化控制單元 ControlUnit CU ( .opcode(opcode), .ALUOp(ALUOp), .MemRead(MemRead), .MemWrite(MemWrite), .MemToReg(MemToReg) ); // 實例化ALU ALU alu ( .A(A), .B(B), .ALUOp(ALUOp), .Result(ALUResult) ); // 實例化記憶體 Memory mem ( .address(ALUResult), // 使用ALU結果作為記憶體地址 .write_data(B), // 從B寄存器寫入數據 .MemRead(MemRead), .MemWrite(MemWrite), .read_data(MemoryData) ); // 根據MemToReg控制信號決定將哪個數據寫回寄存器 assign Result = (MemToReg) ? MemoryData : ALUResult; assign MemDataOut = MemoryData; endmodule