blob: 85f641bb261a98da2c2680b583e0f96e62a071e3 [file] [log] [blame]
//------------------------------------------------
// imem.v
// James E. Stine
// February 1, 2018
// Oklahoma State University
// ECEN 4243
// Harvard Architecture Instr Memory (Big Endian)
//------------------------------------------------
module imem (mem_addr, mem_out);
output [31:0] mem_out;
input [31:0] mem_addr;
// Choose smaller memory to speed simulation
// through smaller AddrSize (only used to
// allocate memory size -- processor sees
// 32-bits)
parameter AddrSize = 16;
parameter WordSize = 8;
reg [WordSize-1:0] RAM[((1<<AddrSize)-1):0];
// Read Instruction memory
// byte addressed, but appears as 32b to processor
assign mem_out = {RAM[mem_addr], RAM[mem_addr+1],
RAM[mem_addr+2], RAM[mem_addr+3]};
endmodule // imem