@@ -4,6 +4,7 @@ module IF_Stage
4
4
clk,
5
5
rst,
6
6
stall,
7
+ superStall,
7
8
Instruction,
8
9
branch_taken,
9
10
branch_address,
@@ -14,6 +15,7 @@ module IF_Stage
14
15
input clk;
15
16
input rst;
16
17
input stall;
18
+ input superStall;
17
19
input branch_taken;
18
20
input [31 :0 ] branch_address;
19
21
output [31 :0 ] Instruction;
@@ -35,7 +37,7 @@ module IF_Stage
35
37
if (branch_taken)
36
38
PC <= branch_address;
37
39
else
38
- if ( ! stall )
40
+ if ( ~ stall & ~ superStall )
39
41
PC <= PC + 4 ;
40
42
end
41
43
end
@@ -71,26 +73,26 @@ module IF_Stage
71
73
25 : Instruction = 32'b100100_00001_01011_00000_00000000100 ;// -- ld r11 ,r1 ,4//r11=-1456
72
74
26 : Instruction = 32'b100101_00001_01011_00000_00000011000 ;// -- st r11 ,r1 ,24
73
75
27 : Instruction = 32'b100101_00001_01001_00000_00000011100 ;// -- st r9 ,r1 ,28
74
- 28 : Instruction = 32'b100101_00001_01010_00000_00000100000 ;// -- st r10 ,r1 ,32
76
+ 28 : Instruction = 32'b100101_00001_01010_00000_00000100000 ;// -- st r10 ,r1 ,32
75
77
29 : Instruction = 32'b100101_00001_01000_00000_00000100100 ;// -- st r8 ,r1 ,36
76
78
30 : Instruction = 32'b100000_00000_00001_00000_00000000011 ;// -- Addi r1 ,r0 ,3 //r1=3
77
- 31 : Instruction = 32'b100000_00000_00100_00000_10000000000 ;// -- Addi r4 ,r0 ,1024 //r4=1024
79
+ 31 : Instruction = 32'b100000_00000_00100_00000_10000000000 ;// -- Addi r4 ,r0 ,1024 //r4=1024
78
80
32 : Instruction = 32'b100000_00000_00010_00000_00000000000 ;// -- Addi r2 ,r0 ,0 //r2=0
79
81
33 : Instruction = 32'b100000_00000_00011_00000_00000000001 ;// -- Addi r3 ,r0 ,1 //r3=1
80
82
34 : Instruction = 32'b100000_00000_01001_00000_00000000010 ;// -- Addi r9 ,r0 ,2 //r9=2
81
83
35 : Instruction = 32'b001010_00011_01001_01000_00000000000 ;// -- sll r8 ,r3 ,r9 //r8=r3*4
82
84
36 : Instruction = 32'b000001_00100_01000_01000_00000000000 ;// -- Add r8 ,r4 ,r8 //r8=1024+r3*4
83
85
37 : Instruction = 32'b100100_01000_00101_00000_00000000000 ;// -- ld r5 ,r8 ,0 //
84
86
38 : Instruction = 32'b100100_01000_00110_11111_11111111100 ;// -- ld r6 ,r8 ,-4 //
85
- 39 : Instruction = 32'b000011_00101_00110_01001_00000000000 ;// -- sub r9 ,r5 ,r6
87
+ 39 : Instruction = 32'b000011_00101_00110_01001_00000000000 ;// -- sub r9 ,r5 ,r6
86
88
40 : Instruction = 32'b100000_00000_01010_10000_00000000000 ;// -- Addi r10 ,r0 ,0x8000
87
89
41 : Instruction = 32'b100000_00000_01011_00000_00000010000 ;// -- Addi r11 ,r0 ,16 // r11 = 16
88
- 42 : Instruction = 32'b001010_01010_01011_01010_00000000000 ;// -- sll r10 ,r10 ,r11 // r10 = 2147483648
90
+ 42 : Instruction = 32'b001010_01010_01011_01010_00000000000 ;// -- sll r10 ,r10 ,r11 // r10 = 2147483648
89
91
43 : Instruction = 32'b000101_01001_01010_01001_00000000000 ;// -- And r9 ,r9 ,r10 // if(r5>r6) r9=0 else r9=-2147483648
90
- 44 : Instruction = 32'b101000_01001_00000_00000_00000000010 ;// -- Bez r9 ,2
91
- 45 : Instruction = 32'b100101_01000_00101_11111_11111111100 ;// -- st r5 ,r8 ,-4
92
+ 44 : Instruction = 32'b101000_01001_00000_00000_00000000010 ;// -- Bez r9 ,2
93
+ 45 : Instruction = 32'b100101_01000_00101_11111_11111111100 ;// -- st r5 ,r8 ,-4
92
94
46 : Instruction = 32'b100101_01000_00110_00000_00000000000 ;// -- st r6 ,r8 ,0
93
- 47 : Instruction = 32'b100000_00011_00011_00000_00000000001 ;// -- Addi r3 ,r3 ,1 //
95
+ 47 : Instruction = 32'b100000_00011_00011_00000_00000000001 ;// -- Addi r3 ,r3 ,1 //
94
96
48 : Instruction = 32'b101001_00001_00011_11111_11111110001 ;// -- BNE r1 ,r3 ,-15
95
97
49 : Instruction = 32'b100000_00010_00010_00000_00000000001 ;// -- Addi r2 ,r2 ,1 //2
96
98
50 : Instruction = 32'b101001_00001_00010_11111_11111101110 ;// -- BNE r1 ,r2 ,-18
0 commit comments