-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinst_mem.v
More file actions
117 lines (111 loc) · 6.14 KB
/
Copy pathinst_mem.v
File metadata and controls
117 lines (111 loc) · 6.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: Santa Clara Unviersity
// Engineer: Austin Kim
//
// Create Date: 10/16/2025 03:50:27 PM
// Design Name: Instruction Memory
// Module Name: im
// Description: Instruction Memory, Register File, Data Memory
//////////////////////////////////////////////////////////////////////////////////
module inst_mem(
input clk,
input [31:0] addr,
output reg [31:0] inst
);
reg [31:0] memory [0:255];
// hardcode instructions
initial begin
memory[0] = 32'b0000010011_101000_000000_000000_1111;
memory[1] = 32'b0001000101_101001_000000_000000_1111;
memory[2] = 32'b0000110000_101010_000000_000000_1111;
memory[3] = 32'b0000110101_101011_000000_000000_1111;
memory[4] = 32'b0000111011_101100_000000_000000_1111;
memory[5] = 32'b0000011001_101101_000000_000000_1111;
memory[6] = 32'b0000011100_101110_000000_000000_1111;
memory[7] = 32'b0000011111_101111_000000_000000_1111;
memory[8] = 32'b1111111111_000100_000001_000000_0101;
memory[9] = 32'b0000000000_010100_000010_000000_1110;
memory[10] = 32'b0000000000_000000_000000_000000_0000;
memory[11] = 32'b0000000000_000000_000000_000000_0000;
memory[12] = 32'b0000000000_000000_000000_000000_0000;
memory[13] = 32'b0000000000_000000_000011_010100_0011;
memory[14] = 32'b0000000000_000000_000000_000000_0111;
memory[15] = 32'b0000000001_001010_000000_000000_0101;
memory[16] = 32'b0000000000_000000_000000_000000_0000;
memory[17] = 32'b0000000000_000000_000000_000000_0000;
memory[18] = 32'b0000000000_000000_000000_000000_0000;
memory[19] = 32'b0000000000_001011_000010_001010_0100;
memory[20] = 32'b0000000000_001100_000011_001010_0100;
memory[21] = 32'b0000000000_000000_000000_000000_0000;
memory[22] = 32'b0000000000_000000_000000_000000_0000;
memory[23] = 32'b1111111111_001101_001011_000000_1110;
memory[24] = 32'b0000000000_001110_001011_000000_1110;
memory[25] = 32'b0000000001_001111_001011_000000_1110;
memory[26] = 32'b0000000000_000000_000000_000000_0000;
memory[27] = 32'b0000000000_000000_000000_000000_0000;
memory[28] = 32'b0000000000_000101_001110_001101_0111;
memory[29] = 32'b0000000000_000000_101010_000000_1010;
memory[30] = 32'b0000000000_000000_000000_000000_0000;
memory[31] = 32'b0000000000_000000_000000_000000_0000;
memory[32] = 32'b0000000000_000101_001111_001110_0111;
memory[33] = 32'b0000000000_000000_101011_000000_1010;
memory[34] = 32'b0000000000_000000_000000_000000_0000;
memory[35] = 32'b0000000000_000000_000000_000000_0000;
memory[36] = 32'b0000000000_000101_001110_001101_0111;
memory[37] = 32'b0000000000_000000_101100_000000_1010;
memory[38] = 32'b0000000000_000000_000000_000000_0000;
memory[39] = 32'b0000000000_000000_000000_000000_0000;
memory[40] = 32'b0000000000_000000_001100_001110_0011;
memory[41] = 32'b0000000001_001010_001010_000000_0101;
memory[42] = 32'b0000000000_000000_000000_000000_0000;
memory[43] = 32'b0000000000_000000_000000_000000_0000;
memory[44] = 32'b0000000000_000000_000000_000000_0000;
memory[45] = 32'b0000000000_000101_001010_000100_0111;
memory[46] = 32'b0000000000_000000_101001_000000_1001;
memory[47] = 32'b0000000000_000000_000000_000000_0000;
memory[48] = 32'b0000000000_000000_000000_000000_0000;
memory[49] = 32'b0000000000_000000_101000_000000_1000;
memory[50] = 32'b0000000000_000000_000000_000000_0000;
memory[51] = 32'b0000000000_010100_001101_000000_0100;
memory[52] = 32'b0000000000_001101_001110_000000_0100;
memory[53] = 32'b0000000000_000000_000000_000000_0000;
memory[54] = 32'b0000000000_000000_101101_000000_1000;
memory[55] = 32'b0000000000_001110_010100_000000_0100;
memory[56] = 32'b0000000000_000000_000000_000000_0000;
memory[57] = 32'b0000000000_000000_000000_000000_0000;
memory[58] = 32'b0000000000_010100_001110_000000_0100;
memory[59] = 32'b0000000000_001110_001111_000000_0100;
memory[60] = 32'b0000000000_000000_000000_000000_0000;
memory[61] = 32'b0000000000_000000_101110_000000_1000;
memory[62] = 32'b0000000000_001111_010100_000000_0100;
memory[63] = 32'b0000000000_000000_000000_000000_0000;
memory[64] = 32'b0000000000_000000_000000_000000_0000;
memory[65] = 32'b0000000000_010100_001101_000000_0100;
memory[66] = 32'b0000000000_001101_001110_000000_0100;
memory[67] = 32'b0000000000_000000_000000_000000_0000;
memory[68] = 32'b0000000000_000000_101111_000000_1000;
memory[69] = 32'b0000000000_001110_010100_000000_0100;
memory[70] = 32'b0000000000_001011_000010_001010_0100;
memory[71] = 32'b0000000000_001100_000011_001010_0100;
memory[72] = 32'b0000000000_000000_000000_000000_0000;
memory[73] = 32'b0000000000_000000_000000_000000_0000;
memory[74] = 32'b0000000000_010100_001011_000000_1110;
memory[75] = 32'b0000000000_000000_000000_000000_0000;
memory[76] = 32'b0000000000_000000_000000_000000_0000;
memory[77] = 32'b0000000000_000000_000000_000000_0000;
memory[78] = 32'b0000000000_000000_001100_010100_0011;
memory[79] = 32'b0000000000_000000_000000_000000_0000;
memory[80] = 32'b0000000000_000000_000000_000000_0000;
memory[81] = 32'b0000000000_000000_000000_000000_0111;
memory[82] = 32'b0000000101_000001_000000_000000_0101;
memory[83] = 32'b0000001010_000010_000000_000000_0101;
memory[84] = 32'b0000000000_000000_000000_000000_0000;
memory[85] = 32'b0000000000_000000_000000_000000_0000;
memory[86] = 32'b0000000000_000000_000000_000000_0000;
memory[87] = 32'b0000000000_000011_000001_000000_0110;
memory[88] = 32'b0000000000_000100_000010_000000_0110;
end
always @(*)
inst <= memory[addr[7:0]]; // gets the operation
endmodule