-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMEM.sv
More file actions
105 lines (80 loc) · 1.92 KB
/
MEM.sv
File metadata and controls
105 lines (80 loc) · 1.92 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
module MEM (
input clk,
input logic [31:0] ALU,
input logic [31:0] instr,
input logic [31:0] reg2,
input logic [1:0] cmd_type,
output logic [31:0] ALU_o,
output logic [31:0] IR,
output logic [31:0] LMD
);
reg [31:0] memory [650:0]; // for matrix update
// reg [31:0] memory [309:0]; // for matrix mul vecotr
integer i;
reg [8:0] mem_idx;
always @(posedge clk)
begin
#1
mem_idx = ALU [8:0];
ALU_o = ALU;
IR = instr;
if(cmd_type == 2'b00) begin
if(instr [6:0] == 7'b0000011)
LMD = memory[mem_idx];
else if(instr [6:0] == 7'b0100011) begin
memory[mem_idx] = reg2;
LMD = 0 ;
end
else
LMD = 0;
end
end
initial
begin
for (i=0; i< 650; i=i+1)
memory[i] = 32'b0;
// // shared
// // X
// if( i >= 64 && i < 80)
// memory[i] = 32'b11;
// // RESULT VECTOR
// else if(i >=80 && i < 96 )
// memory[i] = 32'b0;
// else if (i>= 96 && 160 > i) // W(0)
// memory[i] = 32'b10;
// // W(1)
// else if (i >= 160 && 224 > i )
// memory[i] = 32'b10;
// // w(2)
// else if(i>=224 && i < 288 )
// memory[i] = 32'b10;
// // w(3)
// if (i >= 288 && i < 352 )
// memory[i] = 32'b10;
// end
// for (i=0; i< 650; i=i+1) begin
// // nmt 1
// // w(0) = [2222222 ...]
// if (i >= 0 && i < 64 )
// memory[i] = 32'b10;
// // shared
// // X
// else if( i >= 64 && i < 80)
// memory[i] = 32'b11;
// // RESULT VECTOR
// else if(i >=80 && i < 96 )
// memory[i] = 32'b0;
// // nmt 2
// else if (i>= 96 && 160 > i) // W(1)
// memory[i] = 32'b10;
// // nmt 3
// // W(2)
// else if (i >= 160 && 224 > i )
// memory[i] = 32'b10;
// // nmt 4
// // w(3)
// else if(i>=224 && i < 288 )
// memory[i] = 32'b10;
// end
end
endmodule