mirror of
https://github.com/MPSU/APS.git
synced 2025-09-16 17:40:41 +00:00
ЛР6. Обновление программы
This commit is contained in:
@@ -78,20 +78,27 @@
|
|||||||
0C: and x4, x1, x2
|
0C: and x4, x1, x2
|
||||||
10: sub x5, x4, x3
|
10: sub x5, x4, x3
|
||||||
14: mul x6, x3, x4 // неподдерживаемая инструкция
|
14: mul x6, x3, x4 // неподдерживаемая инструкция
|
||||||
18: jal x15, 0x00034 // прыжок на адрес 0x4C
|
18: jal x15, 0x00050 // прыжок на адрес 0x68
|
||||||
1C: jalr x15, 0x0(x6)
|
1C: jalr x15, 0x0(x6)
|
||||||
20: slli x7, x5, 31
|
20: slli x7, x5, 31
|
||||||
24: srai x8, x7, 1
|
24: srai x8, x7, 1
|
||||||
28: srli x9, x8, 29
|
28: srli x9, x8, 29
|
||||||
2C: sw x1, 0x0(x4)
|
2C: lui x10, 0xfadec
|
||||||
30: lw x10, 0x0(x4)
|
30: add x10, x10,-1346
|
||||||
34: lui x11, 0xFFF80
|
34: sw x10, 0x0(x4)
|
||||||
38: auipc x12, 0x00004
|
38: sh x10, 0x6(x4)
|
||||||
3C: bne x3, x4, 0x08 // перескок через
|
3C: sb x10, 0xb(x4)
|
||||||
40: // нелегальную нулевую инструкцию
|
40: lw x11, 0x0(x4)
|
||||||
44: jal x13, 0x00004
|
44: lh x12, 0x0(x4)
|
||||||
48: jalr x14, 0x0(x13)
|
48: lb x13, 0x0(x4)
|
||||||
4C: jalr x15, 0x4(x15)
|
4С: lhu x14, 0x0(x4)
|
||||||
|
50: lbu x15, 0x0(x4)
|
||||||
|
54: auipc x16, 0x00004
|
||||||
|
58: bne x3, x4, 0x08 // перескок через
|
||||||
|
5С: // нелегальную нулевую инструкцию
|
||||||
|
60: jal x17, 0x00004
|
||||||
|
64: jalr x14, 0x0(x17)
|
||||||
|
68: jalr x18, 0x4(x15)
|
||||||
```
|
```
|
||||||
|
|
||||||
Теперь в соответствии с кодировкой инструкций переведем программу в машинные коды:
|
Теперь в соответствии с кодировкой инструкций переведем программу в машинные коды:
|
||||||
@@ -99,24 +106,31 @@
|
|||||||
```text
|
```text
|
||||||
00: 011101011100 00000 000 00001 0010011
|
00: 011101011100 00000 000 00001 0010011
|
||||||
04: 100010100111 00000 000 00010 0010011
|
04: 100010100111 00000 000 00010 0010011
|
||||||
08: 0000000 00001 00010 000 00011 0110011
|
08: 0000000 00010 00001 000 00011 0110011
|
||||||
0C: 0000000 00001 00010 111 00100 0110011
|
0C: 0000000 00010 00001 111 00100 0110011
|
||||||
10: 0100000 00011 00100 000 00101 0110011
|
10: 0100000 00011 00100 000 00101 0110011
|
||||||
14: 0000001 00011 00100 000 00110 0110011
|
14: 0000001 00100 00011 000 00110 0110011
|
||||||
18: 00000011010000000000 01111 1101111
|
18: 00000101000000000000 01111 1101111
|
||||||
1C: 000000000000 00110 000 01111 1100111
|
1C: 000000000000 00110 000 01111 1100111
|
||||||
20: 0000000 11111 00101 001 00111 0010011
|
20: 0000000 11111 00101 001 00111 0010011
|
||||||
24: 0100000 00001 00111 101 01000 0010011
|
24: 0100000 00001 00111 101 01000 0010011
|
||||||
28: 0000000 11101 01000 101 01001 0010011
|
28: 0000000 11101 01000 101 01001 0010011
|
||||||
2C: 0000000 00001 00100 010 00000 0100011
|
2C: 11011110101011011100 01010 0110111
|
||||||
30: 000000000000 00100 010 01010 0000011
|
30: 111010101111 01010 000 01010 0010011
|
||||||
34: 11111111111110000000 01011 0110111
|
34: 0000000 01010 00100 010 00000 0100011
|
||||||
38: 00000000000000000100 01100 0010111
|
38: 0000000 01010 00100 001 00110 0100011
|
||||||
3C: 0000000 00011 00100 001 01000 1100011
|
3C: 0000000 01010 00100 000 01011 0100011
|
||||||
40: 00000000 00000000 00000000 00000000
|
40: 000000000000 00100 010 01011 0000011
|
||||||
44: 00000000010000000000 01101 1101111
|
44: 000000000000 00100 001 01100 0000011
|
||||||
48: 000000000000 01101 000 01110 1100111
|
48: 000000000000 00100 000 01101 0000011
|
||||||
4C: 000000000100 01111 000 01111 1100111
|
4C: 000000000000 00100 101 01110 0000011
|
||||||
|
50: 000000000000 00100 100 11101 0000011
|
||||||
|
54: 00000000000000000100 10000 0010111
|
||||||
|
58: 0000000 00011 00100 001 01000 1100011
|
||||||
|
5C: 00000000 00000000 00000000 00000000
|
||||||
|
60: 00000000010000000000 10001 1101111
|
||||||
|
64: 000000000000 10001 000 01110 1100111
|
||||||
|
68: 000000000100 01111 000 10010 1100111
|
||||||
```
|
```
|
||||||
|
|
||||||
Данная программа, представленная в шестнадцатиричном формате находится в файле [program.txt](program.txt).
|
Данная программа, представленная в шестнадцатиричном формате находится в файле [program.txt](program.txt).
|
||||||
|
@@ -1,80 +1,27 @@
|
|||||||
93
|
75C00093
|
||||||
00
|
8A700113
|
||||||
c0
|
002081B3
|
||||||
75
|
0020F233
|
||||||
13
|
403202B3
|
||||||
01
|
02418333
|
||||||
70
|
050007EF
|
||||||
8a
|
000307E7
|
||||||
b3
|
01F29393
|
||||||
01
|
4013D413
|
||||||
11
|
01D45493
|
||||||
00
|
fadec537
|
||||||
33
|
abe50513
|
||||||
72
|
00A22023
|
||||||
11
|
00A21323
|
||||||
00
|
00A205A3
|
||||||
b3
|
00022583
|
||||||
02
|
00021603
|
||||||
32
|
00020683
|
||||||
40
|
00025703
|
||||||
33
|
00024783
|
||||||
83
|
00004817
|
||||||
41
|
00321463
|
||||||
02
|
00000000
|
||||||
ef
|
004008EF
|
||||||
07
|
00088767
|
||||||
40
|
00478967
|
||||||
03
|
|
||||||
e7
|
|
||||||
07
|
|
||||||
03
|
|
||||||
00
|
|
||||||
93
|
|
||||||
93
|
|
||||||
f2
|
|
||||||
01
|
|
||||||
13
|
|
||||||
d4
|
|
||||||
13
|
|
||||||
40
|
|
||||||
93
|
|
||||||
54
|
|
||||||
d4
|
|
||||||
01
|
|
||||||
23
|
|
||||||
20
|
|
||||||
12
|
|
||||||
00
|
|
||||||
03
|
|
||||||
25
|
|
||||||
02
|
|
||||||
00
|
|
||||||
b7
|
|
||||||
05
|
|
||||||
f8
|
|
||||||
ff
|
|
||||||
17
|
|
||||||
46
|
|
||||||
00
|
|
||||||
00
|
|
||||||
63
|
|
||||||
94
|
|
||||||
41
|
|
||||||
00
|
|
||||||
00
|
|
||||||
00
|
|
||||||
00
|
|
||||||
00
|
|
||||||
ef
|
|
||||||
06
|
|
||||||
40
|
|
||||||
00
|
|
||||||
67
|
|
||||||
87
|
|
||||||
06
|
|
||||||
00
|
|
||||||
e7
|
|
||||||
87
|
|
||||||
47
|
|
||||||
00
|
|
||||||
|
@@ -36,15 +36,15 @@ module tb_riscv_unit();
|
|||||||
rst = 1;
|
rst = 1;
|
||||||
#20;
|
#20;
|
||||||
rst = 0;
|
rst = 0;
|
||||||
#500;
|
#800;
|
||||||
$display("\n The test is over \n See the internal signals of the module on the waveform \n");
|
$display("\n The test is over \n See the internal signals of the module on the waveform \n");
|
||||||
$finish;
|
$finish;
|
||||||
end
|
end
|
||||||
|
|
||||||
stall: assert property (
|
stall_seq: assert property (
|
||||||
@(posedge clk)
|
@(posedge clk)
|
||||||
disable iff ( rst )
|
disable iff ( !unit.mem_req )
|
||||||
(top.mem_req) |-> (top.stall) |-> ##1 (!top.stall & top.mem_req)
|
$past(unit.mem_req) |-> !$stable(unit.stall)
|
||||||
|
|
||||||
)else $error("\n================================================\nThe realisation of the STALL signal is INCORRECT\n================================================\n");
|
)else $error("\n================================================\nThe realisation of the STALL signal is INCORRECT\n================================================\n");
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user