Files
MipsPipelineProcessor/PipelineProcessor.srcs/sources_1/new/InstructionMemory.v
2024-07-10 20:36:21 +08:00

26 lines
1.1 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'h3c104000; // lui $s0, 0x4000
20'd6: instruction <= 32'h2011000a; // addi $s1, $0, 0xa
20'd11: instruction <= 32'hae110010; // sw $s1, 16($s0)
20'd16: instruction <= 32'h8e120010; // lw $s2, 16($s0)
20'd21: instruction <= 32'h2231fffe; // addi $s1, $s1, -2
20'd26: instruction <= 32'h02329820; // add $s3, $s1, $s2
20'd31: instruction <= 32'h02529821; // addu $s3, $s2, $s2
20'd36: instruction <= 32'h02519822; // sub $s3, $s2, $s1
20'd41: instruction <= 32'h02338823; // subu $s1, $s1, $s3
20'd46: instruction <= 32'h26310004; // addiu $s1, $s1, 4
20'd51: instruction <= 32'h02339018; // mul $s2, $s1, $s3
default: instruction <= 32'h00000000;
endcase
end
endmodule