Files
MipsPipelineProcessor/PipelineProcessor.srcs/sources_1/new/InstructionMemory.v
2024-07-11 01:27:32 +08:00

35 lines
1.4 KiB
Verilog

`timescale 1ns / 1ps
module InstructionMemory (
input [31:0] address,
output reg [31:0] instruction
);
always @(*) begin
case (address[31:2])
20'd0: instruction <= 32'h20110002; // addi $s1, $zero, 2
20'd1: instruction <= 32'h00000000;
20'd2: instruction <= 32'h00000000;
20'd3: instruction <= 32'h00000000;
20'd4: instruction <= 32'h00000000;
20'd5: instruction <= 32'h20120050; // addi $s2, $zero, 0x50
20'd6: instruction <= 32'h00000000;
20'd7: instruction <= 32'h00000000;
20'd8: instruction <= 32'h00000000;
20'd9: instruction <= 32'h00000000;
20'd10: instruction <= 32'h02408009; // jalr $s2, $s0
// end:
20'd11: instruction <= 32'h0800000b; // j end
// Note the address
20'd20: instruction <= 32'h20130003; // addi $s3, $zero, 3
20'd21: instruction <= 32'h00000000;
20'd22: instruction <= 32'h00000000;
20'd23: instruction <= 32'h00000000;
20'd24: instruction <= 32'h00000000;
20'd25: instruction <= 32'h02000008; // jr $s0
default: instruction <= 32'h00000000;
endcase
end
endmodule