64 lines
1.2 KiB
Verilog
64 lines
1.2 KiB
Verilog
`timescale 1ns / 1ps
|
|
|
|
module instructionMemory(
|
|
input wire clk,
|
|
input wire [8:0] address,
|
|
output reg [8:0] readData
|
|
);
|
|
|
|
reg [8:0] memory [512:0];
|
|
|
|
initial begin
|
|
//Equation Solver
|
|
memory[0] <= 9'b000100000;
|
|
memory[1] <= 9'b000101000;
|
|
memory[2] <= 9'b010100010;
|
|
memory[3] <= 9'b111100000;
|
|
memory[4] <= 9'b111100000;
|
|
memory[5] <= 9'b000000000;
|
|
end
|
|
|
|
|
|
always@(address, posedge clk)begin
|
|
readData <= memory[address];
|
|
end
|
|
endmodule
|
|
|
|
|
|
module instructionMemory_tb();
|
|
reg clk;
|
|
reg [8:0] address;
|
|
wire [8:0] readData;
|
|
|
|
initial begin
|
|
clk = 1'b0;
|
|
end
|
|
always begin
|
|
#5 clk = ~clk; // Period to be determined
|
|
end
|
|
|
|
instructionMemory iM0(
|
|
.clk(clk),
|
|
.address(address),
|
|
.readData(readData)
|
|
);
|
|
|
|
initial begin
|
|
#10
|
|
address = 9'b000000000;
|
|
#5
|
|
address = 9'b000000001;
|
|
#5
|
|
address = 9'b000000010;
|
|
#5
|
|
address = 9'b000000011;
|
|
#5
|
|
address = 9'b000000100;
|
|
#5
|
|
address = 9'b000000101;
|
|
#5
|
|
address = 9'b000000111;
|
|
#5
|
|
$finish;
|
|
end
|
|
endmodule |