Merge branch '34-sd-card-spi-mode-testbench' into 'master'

Resolve "SD Card SPI mode testbench"

Closes #34

See merge request bslathi19/super6502!29
This commit is contained in:
Byron Lathi
2023-10-11 05:15:25 +00:00
10 changed files with 251 additions and 163 deletions

View File

@@ -59,7 +59,7 @@ build sim:
script:
- source init_env.sh
- cd hw/efinix_fpga/simulation
- make
- make sim_top
dependencies:
- build toolchain
@@ -93,6 +93,6 @@ run sim:
script:
- source init_env.sh
- cd hw/efinix_fpga/simulation
- vvp sim_top
- make sim
dependencies:
- build sim

View File

@@ -1,9 +1,9 @@
@00000000
00 80 4C 00 00 8D 13 92 8E 14 92 8D 1A 92 8E 1B
92 88 B9 FF FF 8D 24 92 88 B9 FF FF 8D 23 92 8C
26 92 20 FF FF A0 FF D0 E8 60 00 00 CC FD 00 00
00 00 A2 FF 9A D8 A9 00 85 04 A9 DF 85 05 20 44
FE 20 B9 FA 20 52 F0 58 20 69 F2 6C FC FF 20 AD
26 92 20 FF FF A0 FF D0 E8 60 00 00 4C FD 00 00
00 00 A2 FF 9A D8 A9 00 85 04 A9 DF 85 05 20 C4
FD 20 39 FA 20 52 F0 58 20 69 F2 6C FC FF 20 2D
FA 00 A0 00 F0 07 A9 52 A2 F0 4C 05 92 60 AD FF
EF A2 00 60 8D FF EF 60 20 4F F2 C9 0A D0 05 A9
0D 20 4F F2 60 DA 5A A8 B2 04 AA A9 1B 20 4F F2
@@ -13,19 +13,19 @@ A9 63 20 4F F2 68 60 40 DA BA 48 E8 E8 BD 00 01
29 10 D0 06 68 FA 20 68 F2 40 68 FA 7C BF F0 C5
F0 C9 F0 CA F0 20 9A F0 40 40 20 68 F0 40 48 A0
04 B1 04 09 40 20 3F F2 88 B1 04 20 3F F2 88 10
F8 68 09 01 20 3F F2 20 A9 FB 60 A2 08 A9 FF 20
F8 68 09 01 20 3F F2 20 29 FB 60 A2 08 A9 FF 20
3F F2 C9 FF D0 03 CA D0 F4 60 85 0C 86 0D 20 EB
F0 92 0C A9 FF 20 3F F2 A0 01 91 0C 20 96 FB 60
AA 20 20 FD A9 FF 20 3F F2 92 0C E6 0C D0 02 E6
F0 92 0C A9 FF 20 3F F2 A0 01 91 0C 20 16 FB 60
AA 20 A0 FC A9 FF 20 3F F2 92 0C E6 0C D0 02 E6
0D CA D0 F0 60 85 0C 86 0D 20 EB F0 C9 02 B0 12
E6 0C D0 02 E6 0C A5 0C A6 0D 20 4D FD A9 04 20
E6 0C D0 02 E6 0C A5 0C A6 0D 20 CD FC A9 04 20
10 F1 60 48 A9 FF 20 3F F2 A9 00 20 33 F2 A9 FF
20 3F F2 68 20 CE F0 20 EB F0 A8 A9 FF 20 3F F2
A9 00 20 39 F2 A9 FF 20 3F F2 98 A2 00 60 A9 00
20 39 F2 20 8B F1 A9 FF 20 3F F2 A9 00 20 39 F2
A2 50 A9 FF 20 3F F2 CA D0 F8 60 A2 01 A9 C8 3A
D0 FD CA D0 F8 60 85 0E 86 0F A9 FF 92 0E 20 20
FD A5 04 85 10 A5 05 85 11 20 51 FB A0 00 B1 10
D0 FD CA D0 F8 60 85 0E 86 0F A9 FF 92 0E 20 A0
FC A5 04 85 10 A5 05 85 11 20 D1 FA A0 00 B1 10
91 04 C8 B1 10 91 04 C8 B1 10 91 04 C8 B1 10 91
04 A9 FF 20 3F F2 A9 00 20 33 F2 A9 FF 20 3F F2
A9 11 A0 04 91 04 A9 00 20 CE F0 20 EB F0 C9 FF
@@ -37,136 +37,128 @@ EB A9 FF 20 3F F2 A9 FF 20 3F F2 A5 15 92 0E A5
F2 68 60 A9 01 8D DB EF 60 9C DB EF 60 A9 00 8D
DA EF AD DB EF 30 FB AD D9 EF 60 8D E6 EF 60 48
8D E6 EF AD E7 EF 89 02 D0 F9 68 60 AD E6 EF A2
00 60 AD E7 EF A2 00 60 60 20 74 FB A2 00 86 06
86 07 A9 00 20 0B FC 20 5A FB A9 86 A2 FE 20 1A
FB 20 3A F3 C9 00 20 B8 FC D0 03 4C 98 F2 A9 7F
A2 FE 20 1A FB 4C 2E F3 A9 76 A2 FE 20 1A FB A0
05 20 C7 FB 20 0B FC AD 00 92 AE 01 92 20 4D FD
A9 0C 20 D8 FB 20 96 F1 A0 07 91 04 A0 07 A2 00
B1 04 C9 00 20 BE FC D0 03 4C DC F2 A0 06 A2 00
B1 04 C9 FE 20 BE FC F0 03 4C E5 F2 A2 00 A9 00
00 60 AD E7 EF A2 00 60 60 20 F4 FA A2 00 86 06
86 07 A9 00 20 8B FB 20 DA FA A9 06 A2 FE 20 9A
FA 20 3A F3 C9 00 20 38 FC D0 03 4C 98 F2 A9 FF
A2 FD 20 9A FA 4C 2E F3 A9 F6 A2 FD 20 9A FA A0
05 20 47 FB 20 8B FB AD 00 92 AE 01 92 20 CD FC
A9 0C 20 58 FB 20 96 F1 A0 07 91 04 A0 07 A2 00
B1 04 C9 00 20 3E FC D0 03 4C DC F2 A0 06 A2 00
B1 04 C9 FE 20 3E FC F0 03 4C E5 F2 A2 00 A9 00
D0 03 4C E9 F2 A2 00 A9 01 D0 03 4C FA F2 AD 00
92 AE 01 92 20 3C F6 4C 2B F3 A0 06 A2 00 B1 04
A2 00 29 F0 20 9F FA D0 03 4C 16 F3 A9 7F A2 FE
20 1A FB 4C 2B F3 A9 67 A2 FE 20 4D FD A0 08 A2
00 B1 04 20 4D FD A0 04 20 E6 FA 6C 00 92 4C 31
F3 4C 31 F3 A0 0C 20 85 FA 60 20 81 FB A9 00 20
37 FD 20 6E F1 4C 71 F3 A0 00 A2 00 18 A9 01 71
04 91 04 A0 00 A2 00 B1 04 C9 FF 20 BE FC D0 03
4C 71 F3 A9 A5 A2 FE 20 1A FB A2 00 A9 01 4C A8
F4 20 AC F4 A0 01 91 04 C9 01 20 B8 FC D0 C9 A2
00 A9 00 A0 06 20 65 FD A0 07 20 BE FB E0 03 D0
02 C9 E8 20 D7 FC F0 03 4C 9E F3 4C AA F3 A0 06
A2 00 A9 01 20 75 FA 4C 88 F3 A9 01 20 D8 FB 20
C9 F4 A0 01 A2 00 B1 04 C9 01 20 B8 FC D0 03 4C
D0 F3 A9 9C A2 FE 20 1A FB A2 00 A9 01 4C A8 F4
A0 05 A2 00 B1 04 C9 AA 20 B8 FC D0 03 4C E7 F3
A2 00 A9 01 4C A8 F4 A2 00 A9 00 A0 00 91 04 A0
00 A2 00 B1 04 C9 FF 20 BE FC D0 03 4C 0D F4 A9
8D A2 FE 20 1A FB A2 00 A9 01 4C A8 F4 20 EB F5
A0 01 91 04 A0 01 A2 00 B1 04 C9 02 20 D7 FC D0
03 4C 2B F4 20 08 F6 A0 01 91 04 A2 00 A9 00 A0
06 20 65 FD A0 07 20 BE FB E0 03 D0 02 C9 E8 20
D7 FC F0 03 4C 4A F4 4C 56 F4 A0 06 A2 00 A9 01
20 75 FA 4C 34 F4 A0 00 A2 00 18 A9 01 71 04 91
04 A0 01 A2 00 B1 04 C9 00 20 B8 FC D0 81 A2 00
A9 00 A0 06 20 65 FD A0 07 20 BE FB E0 03 D0 02
C9 E8 20 D7 FC F0 03 4C 8D F4 4C 99 F4 A0 06 A2
00 A9 01 20 75 FA 4C 77 F4 A9 01 20 D8 FB 20 71
F5 A2 00 A9 00 4C A8 F4 20 AE FB 60 A2 00 A9 00
20 37 FD A2 00 86 06 86 07 A9 00 20 0B FC A2 00
A9 94 20 43 F1 4C C8 F4 60 20 4D FD A2 00 A9 FF
20 3F F2 A2 00 A9 00 20 33 F2 A2 00 A9 FF 20 3F
F2 A2 00 A9 08 20 37 FD A2 01 A9 00 85 06 A9 00
85 07 A9 AA 20 0B FC A2 00 A9 86 20 CE F0 A0 01
20 BE FB 20 25 F1 A2 00 A9 FF 20 3F F2 A2 00 A9
00 20 39 F2 A2 00 A9 FF 20 3F F2 20 96 FB 60 20
4D FD A2 00 A9 FF 20 3F F2 A2 00 A9 00 20 33 F2
A2 00 A9 FF 20 3F F2 A2 00 A9 0D 20 37 FD A2 00
86 06 86 07 A9 00 20 0B FC A2 00 A9 00 20 CE F0
A0 01 20 BE FB 20 FA F0 A2 00 A9 FF 20 3F F2 A2
00 A9 00 20 39 F2 A2 00 A9 FF 20 3F F2 20 96 FB
60 20 4D FD 20 51 FB A2 00 A9 FF 20 3F F2 A2 00
A9 00 20 33 F2 A2 00 A9 FF 20 3F F2 A0 00 91 04
A0 00 A2 00 B1 04 C9 FF 20 B8 FC D0 03 4C B1 F5
4C A3 F5 A2 00 A9 FF 20 3F F2 C9 FF 20 B8 FC D0
F2 A2 00 A9 3A 20 37 FD A2 00 86 06 86 07 A9 00
20 0B FC A2 00 A9 00 20 CE F0 A0 02 20 BE FB 20
25 F1 A2 00 A9 FF 20 3F F2 A2 00 A9 00 20 39 F2
A2 00 A9 FF 20 3F F2 20 A4 FB 60 A2 00 A9 37 20
37 FD A2 00 86 06 86 07 A9 00 20 0B FC A2 00 A9
00 20 43 F1 4C 07 F6 60 A2 00 A9 29 20 37 FD A2
00 86 06 A9 40 85 07 A9 00 20 0B FC A2 00 A9 00
20 43 F1 4C 26 F6 60 20 4D FD 20 74 FB A0 03 A2
00 B1 04 4C 36 F6 A0 0E 20 85 FA 60 20 4D FD A9
00 20 37 FD 20 5A FB A2 00 A9 00 A0 00 20 65 FD
A0 01 20 BE FB E0 02 20 D7 FC F0 03 4C 62 F6 4C
C4 F6 A9 AE A2 FE 20 4D FD A0 06 20 BE FB A0 00
20 B3 FB 20 4D FD A0 07 A2 00 A9 01 20 75 FA A0
04 20 E6 FA A0 02 A2 00 B1 04 C9 1F 20 BE FC D0
03 4C A6 F6 A9 B2 A2 FE 20 1A FB A2 00 A9 00 A0
02 91 04 4C B8 F6 A2 00 A9 20 20 68 F0 A0 02 A2
00 18 A9 01 71 04 91 04 A0 00 A2 00 A9 01 20 75
FA 4C 50 F6 A9 B2 A2 FE 20 1A FB 20 A9 FB 60 A0
00 B1 1A E6 1A D0 02 E6 1B 60 AD 4A 92 8D 45 92
20 7B F7 A9 45 A2 92 20 4D FD 20 2E FD 4C 02 92
A5 18 38 E9 02 85 18 B0 02 C6 19 60 AD 4F 92 D0
11 20 19 F7 4C 98 FA AD 4F 92 D0 06 20 19 F7 4C
92 FA 20 19 F7 85 06 86 07 20 F0 F6 A0 01 B1 18
AA 88 B1 18 60 A0 00 84 0C 84 0D B1 1A 38 E9 30
90 2C C9 0A B0 28 20 D3 F6 48 A5 0C A6 0D 06 0C
26 0D 06 0C 26 0D 65 0C 85 0C 8A 65 0D 85 0D 06
0C 26 0D 68 65 0C 85 0C 90 D1 E6 0D B0 CD A5 0C
A6 0D 60 AC 51 92 EE 51 92 99 52 92 60 A9 52 A2
92 18 6D 51 92 90 01 E8 4C 4D FD A5 1C A6 1D 4C
4D FD 20 DA F6 EE 4B 92 D0 F8 EE 4C 92 D0 F3 60
20 7B F7 AD 66 92 AE 67 92 20 4D FD AD 68 92 AE
69 92 20 4D FD 4C 02 92 84 0C 20 0B FC 20 6D F7
A5 0C 4C 3B FC 84 0C 20 0B FC 20 6D F7 A5 0C 4C
7C FC 48 A0 05 B9 18 00 99 3F 92 88 10 F7 68 85
18 86 19 20 8E FB 85 1A 86 1B 20 8E FB 85 1C 86
1D A9 00 A8 91 1C C8 91 1C C8 B1 1C 8D 03 92 C8
B1 1C 8D 04 92 A5 1A 85 0C A5 1B 85 0D A0 00 B1
1A F0 0B C9 25 F0 07 C8 D0 F5 E6 1B D0 F1 98 18
65 1A 85 1A 90 02 E6 1B 38 E5 0C 85 0E A5 1B E5
0D 85 0F 05 0E F0 25 20 74 FB A0 05 A5 1D 91 04
88 A5 1C 91 04 88 A5 0D 91 04 88 A5 0C 91 04 88
A5 0F 91 04 88 A5 0E 91 04 20 02 92 20 CF F6 AA
D0 0B A2 05 BD 3F 92 95 18 CA 10 F8 60 C9 25 D0
09 B1 1A C9 25 D0 09 20 D3 F6 20 DD F6 4C F5 F7
A9 00 A2 0B 9D 46 92 CA 10 FA B1 1A C9 2D D0 05
8E 46 92 F0 19 C9 2B D0 05 8E 47 92 F0 10 C9 20
D0 05 8E 48 92 F0 07 C9 23 D0 09 8E 49 92 20 D3
F6 4C 7A F8 A2 20 C9 30 D0 06 AA 20 D3 F6 B1 1A
8E 4A 92 C9 2A D0 09 20 D3 F6 20 19 F7 4C C3 F8
20 25 F7 8D 4B 92 8E 4C 92 8C 4D 92 8C 4E 92 B1
1A C9 2E D0 1B 20 D3 F6 B1 1A C9 2A D0 09 20 D3
F6 20 19 F7 4C EA F8 20 25 F7 8D 4D 92 8E 4E 92
B1 1A C9 7A F0 19 C9 68 F0 15 C9 74 F0 11 C9 6A
F0 08 C9 4C F0 04 C9 6C D0 0B A9 FF 8D 4F 92 20
D3 F6 4C F0 F8 8C 51 92 A2 52 8E 66 92 A2 92 8E
67 92 20 D3 F6 C9 63 D0 0D 20 19 F7 8D 52 92 A2
00 A9 01 4C 1C FA C9 64 F0 04 C9 69 D0 2D A2 00
92 AE 01 92 20 BB F5 4C 2B F3 A0 06 A2 00 B1 04
A2 00 29 F0 20 1F FA D0 03 4C 16 F3 A9 FF A2 FD
20 9A FA 4C 2B F3 A9 E7 A2 FD 20 CD FC A0 08 A2
00 B1 04 20 CD FC A0 04 20 66 FA 6C 00 92 4C 31
F3 4C 31 F3 A0 0C 20 05 FA 60 20 01 FB A9 00 20
B7 FC 20 6E F1 4C 71 F3 A0 00 A2 00 18 A9 01 71
04 91 04 A0 00 A2 00 B1 04 C9 FF 20 3E FC D0 03
4C 71 F3 A9 25 A2 FE 20 9A FA A2 00 A9 01 4C 27
F4 20 2B F4 A0 01 91 04 C9 01 20 38 FC D0 C9 A9
01 20 58 FB 20 48 F4 A0 01 A2 00 B1 04 C9 01 20
38 FC D0 03 4C A5 F3 A9 1C A2 FE 20 9A FA A2 00
A9 01 4C 27 F4 A0 05 A2 00 B1 04 C9 AA 20 38 FC
D0 03 4C BC F3 A2 00 A9 01 4C 27 F4 A2 00 A9 00
A0 00 91 04 A0 00 A2 00 B1 04 C9 FF 20 3E FC D0
03 4C E2 F3 A9 0D A2 FE 20 9A FA A2 00 A9 01 4C
27 F4 20 6A F5 A0 01 91 04 A0 01 A2 00 B1 04 C9
02 20 57 FC D0 03 4C 00 F4 20 87 F5 A0 01 91 04
A0 00 A2 00 18 A9 01 71 04 91 04 A0 01 A2 00 B1
04 C9 00 20 38 FC D0 AC A9 01 20 58 FB 20 F0 F4
A2 00 A9 00 4C 27 F4 20 2E FB 60 A2 00 A9 00 20
B7 FC A2 00 86 06 86 07 A9 00 20 8B FB A2 00 A9
94 20 43 F1 4C 47 F4 60 20 CD FC A2 00 A9 FF 20
3F F2 A2 00 A9 00 20 33 F2 A2 00 A9 FF 20 3F F2
A2 00 A9 08 20 B7 FC A2 01 A9 00 85 06 A9 00 85
07 A9 AA 20 8B FB A2 00 A9 86 20 CE F0 A0 01 20
3E FB 20 25 F1 A2 00 A9 FF 20 3F F2 A2 00 A9 00
20 39 F2 A2 00 A9 FF 20 3F F2 20 16 FB 60 20 CD
FC A2 00 A9 FF 20 3F F2 A2 00 A9 00 20 33 F2 A2
00 A9 FF 20 3F F2 A2 00 A9 0D 20 B7 FC A2 00 86
06 86 07 A9 00 20 8B FB A2 00 A9 00 20 CE F0 A0
01 20 3E FB 20 FA F0 A2 00 A9 FF 20 3F F2 A2 00
A9 00 20 39 F2 A2 00 A9 FF 20 3F F2 20 16 FB 60
20 CD FC 20 D1 FA A2 00 A9 FF 20 3F F2 A2 00 A9
00 20 33 F2 A2 00 A9 FF 20 3F F2 A0 00 91 04 A0
00 A2 00 B1 04 C9 FF 20 38 FC D0 03 4C 30 F5 4C
22 F5 A2 00 A9 FF 20 3F F2 C9 FF 20 38 FC D0 F2
A2 00 A9 3A 20 B7 FC A2 00 86 06 86 07 A9 00 20
8B FB A2 00 A9 00 20 CE F0 A0 02 20 3E FB 20 25
F1 A2 00 A9 FF 20 3F F2 A2 00 A9 00 20 39 F2 A2
00 A9 FF 20 3F F2 20 24 FB 60 A2 00 A9 37 20 B7
FC A2 00 86 06 86 07 A9 00 20 8B FB A2 00 A9 00
20 43 F1 4C 86 F5 60 A2 00 A9 29 20 B7 FC A2 00
86 06 A9 40 85 07 A9 00 20 8B FB A2 00 A9 00 20
43 F1 4C A5 F5 60 20 CD FC 20 F4 FA A0 03 A2 00
B1 04 4C B5 F5 A0 0E 20 05 FA 60 20 CD FC A9 00
20 B7 FC 20 DA FA A2 00 A9 00 A0 00 20 E5 FC A0
01 20 3E FB E0 02 20 57 FC F0 03 4C E1 F5 4C 43
F6 A9 2E A2 FE 20 CD FC A0 06 20 3E FB A0 00 20
33 FB 20 CD FC A0 07 A2 00 A9 01 20 F5 F9 A0 04
20 66 FA A0 02 A2 00 B1 04 C9 1F 20 3E FC D0 03
4C 25 F6 A9 32 A2 FE 20 9A FA A2 00 A9 00 A0 02
91 04 4C 37 F6 A2 00 A9 20 20 68 F0 A0 02 A2 00
18 A9 01 71 04 91 04 A0 00 A2 00 A9 01 20 F5 F9
4C CF F5 A9 32 A2 FE 20 9A FA 20 29 FB 60 A0 00
B1 1A E6 1A D0 02 E6 1B 60 AD 4A 92 8D 45 92 20
FA F6 A9 45 A2 92 20 CD FC 20 AE FC 4C 02 92 A5
18 38 E9 02 85 18 B0 02 C6 19 60 AD 4F 92 D0 11
20 98 F6 4C 18 FA AD 4F 92 D0 06 20 98 F6 4C 12
FA 20 98 F6 85 06 86 07 20 6F F6 A0 01 B1 18 AA
88 B1 18 60 A0 00 84 0C 84 0D B1 1A 38 E9 30 90
2C C9 0A B0 28 20 52 F6 48 A5 0C A6 0D 06 0C 26
0D 06 0C 26 0D 65 0C 85 0C 8A 65 0D 85 0D 06 0C
26 0D 68 65 0C 85 0C 90 D1 E6 0D B0 CD A5 0C A6
0D 60 AC 51 92 EE 51 92 99 52 92 60 A9 52 A2 92
18 6D 51 92 90 01 E8 4C CD FC A5 1C A6 1D 4C CD
FC 20 59 F6 EE 4B 92 D0 F8 EE 4C 92 D0 F3 60 20
FA F6 AD 66 92 AE 67 92 20 CD FC AD 68 92 AE 69
92 20 CD FC 4C 02 92 84 0C 20 8B FB 20 EC F6 A5
0C 4C BB FB 84 0C 20 8B FB 20 EC F6 A5 0C 4C FC
FB 48 A0 05 B9 18 00 99 3F 92 88 10 F7 68 85 18
86 19 20 0E FB 85 1A 86 1B 20 0E FB 85 1C 86 1D
A9 00 A8 91 1C C8 91 1C C8 B1 1C 8D 03 92 C8 B1
1C 8D 04 92 A5 1A 85 0C A5 1B 85 0D A0 00 B1 1A
F0 0B C9 25 F0 07 C8 D0 F5 E6 1B D0 F1 98 18 65
1A 85 1A 90 02 E6 1B 38 E5 0C 85 0E A5 1B E5 0D
85 0F 05 0E F0 25 20 F4 FA A0 05 A5 1D 91 04 88
A5 1C 91 04 88 A5 0D 91 04 88 A5 0C 91 04 88 A5
0F 91 04 88 A5 0E 91 04 20 02 92 20 4E F6 AA D0
0B A2 05 BD 3F 92 95 18 CA 10 F8 60 C9 25 D0 09
B1 1A C9 25 D0 09 20 52 F6 20 5C F6 4C 74 F7 A9
00 A2 0B 9D 46 92 CA 10 FA B1 1A C9 2D D0 05 8E
46 92 F0 19 C9 2B D0 05 8E 47 92 F0 10 C9 20 D0
05 8E 48 92 F0 07 C9 23 D0 09 8E 49 92 20 52 F6
4C F9 F7 A2 20 C9 30 D0 06 AA 20 52 F6 B1 1A 8E
4A 92 C9 2A D0 09 20 52 F6 20 98 F6 4C 42 F8 20
A4 F6 8D 4B 92 8E 4C 92 8C 4D 92 8C 4E 92 B1 1A
C9 2E D0 1B 20 52 F6 B1 1A C9 2A D0 09 20 52 F6
20 98 F6 4C 69 F8 20 A4 F6 8D 4D 92 8E 4E 92 B1
1A C9 7A F0 19 C9 68 F0 15 C9 74 F0 11 C9 6A F0
08 C9 4C F0 04 C9 6C D0 0B A9 FF 8D 4F 92 20 52
F6 4C 6F F8 8C 51 92 A2 52 8E 66 92 A2 92 8E 67
92 20 52 F6 C9 63 D0 0E 20 98 F6 8D 52 92 A9 00
8D 53 92 4C 93 F9 C9 64 F0 04 C9 69 D0 2D A2 00
AD 48 92 F0 02 A2 20 AD 47 92 F0 02 A2 2B 8E 50
92 20 07 F7 A4 07 30 0B AC 50 92 F0 06 8C 52 92
EE 51 92 A0 0A 20 A8 F7 4C 13 FA C9 6E D0 15 20
19 F7 85 0C 86 0D A0 00 B1 1C 91 0C C8 B1 1C 91
0C 4C F5 F7 C9 6F D0 27 20 07 F7 AC 49 92 F0 17
92 20 86 F6 A4 07 30 0B AC 50 92 F0 06 8C 52 92
EE 51 92 A0 0A 20 27 F7 4C 93 F9 C9 6E D0 15 20
98 F6 85 0C 86 0D A0 00 B1 1C 91 0C C8 B1 1C 91
0C 4C 74 F7 C9 6F D0 27 20 86 F6 AC 49 92 F0 17
48 86 14 05 14 05 06 05 07 0D 4D 92 0D 4E 92 F0
06 A9 30 20 63 F7 68 A0 08 20 A8 F7 4C 13 FA C9
06 A9 30 20 E2 F6 68 A0 08 20 27 F7 4C 93 F9 C9
70 D0 0D A2 00 8E 4F 92 E8 8E 49 92 A9 78 D0 27
C9 73 D0 0C 20 19 F7 8D 66 92 8E 67 92 4C 13 FA
C9 75 D0 0B 20 FC F6 A0 0A 20 B5 F7 4C 13 FA C9
C9 73 D0 0C 20 98 F6 8D 66 92 8E 67 92 4C 93 F9
C9 75 D0 0B 20 7B F6 A0 0A 20 34 F7 4C 93 F9 C9
78 F0 04 C9 58 D0 29 48 AD 49 92 F0 0A A9 30 20
63 F7 A9 58 20 63 F7 20 FC F6 A0 10 20 B5 F7 68
C9 78 D0 09 AD 66 92 AE 67 92 20 A5 FD 4C 13 FA
4C F5 F7 AD 66 92 AE 67 92 20 8F FD 8D 68 92 8E
E2 F6 A9 58 20 E2 F6 20 7B F6 A0 10 20 34 F7 68
C9 78 D0 09 AD 66 92 AE 67 92 20 25 FD 4C 93 F9
4C 74 F7 AD 66 92 AE 67 92 20 0F FD 8D 68 92 8E
69 92 AD 4D 92 0D 4E 92 F0 15 AE 4D 92 EC 68 92
AD 4E 92 A8 ED 69 92 B0 06 8E 68 92 8C 69 92 38
AD 4B 92 ED 68 92 AA AD 4C 92 ED 69 92 B0 03 A9
00 AA 49 FF 8D 4C 92 8A 49 FF 8D 4B 92 AD 46 92
D0 03 20 85 F7 20 90 F7 AD 46 92 F0 03 20 85 F7
4C F5 F7 A0 00 18 71 04 91 04 48 C8 8A 71 04 91
D0 03 20 04 F7 20 0F F7 AD 46 92 F0 03 20 04 F7
4C 74 F7 A0 00 18 71 04 91 04 48 C8 8A 71 04 91
04 AA 68 60 C8 48 18 98 65 04 85 04 90 02 E6 05
68 60 A0 FF E0 80 B0 02 A0 00 84 06 84 07 60 E0
00 D0 06 AA D0 03 A9 01 60 A2 00 8A 60 A0 00 F0
@@ -175,58 +167,58 @@ D0 03 20 85 F7 20 90 F7 AD 46 92 F0 03 20 85 F7
00 E8 F0 0D B1 0C 91 0E C8 D0 F6 E6 0D E6 0F D0
F0 E6 14 D0 EF 60 8C 6A 92 88 88 98 18 65 04 85
0C A6 05 90 01 E8 86 0D A0 01 B1 0C AA 88 B1 0C
20 4D FD A5 0C A6 0D 20 14 FE AC 6A 92 4C 85 FA
85 0C 86 0D 20 75 F0 4C 1E FB 85 0C 86 0D A0 00
20 CD FC A5 0C A6 0D 20 94 FD AC 6A 92 4C 05 FA
85 0C 86 0D 20 75 F0 4C 9E FA 85 0C 86 0D A0 00
B1 0C F0 0E C8 84 14 20 68 F0 A4 14 D0 F2 E6 0D
D0 EE 60 E0 00 D0 15 4A AA BD DB FE 90 05 4A 4A
4A 4A 18 29 0F AA BD D0 FE A2 00 60 38 A9 00 AA
D0 EE 60 E0 00 D0 15 4A AA BD 5B FE 90 05 4A 4A
4A 4A 18 29 0F AA BD 50 FE A2 00 60 38 A9 00 AA
60 A4 04 D0 02 C6 05 C6 04 60 A5 04 38 E9 02 85
04 90 01 60 C6 05 60 A5 04 38 E9 04 85 04 90 01
60 C6 05 60 A5 04 38 E9 06 85 04 90 01 60 C6 05
60 A5 04 38 E9 07 85 04 90 01 60 C6 05 60 A0 01
B1 04 AA 88 B1 04 E6 04 F0 05 E6 04 F0 03 60 E6
04 E6 05 60 A0 03 4C 85 FA A0 05 4C 85 FA A0 08
4C 85 FA 85 0C 86 0D A2 00 B1 0C 60 A0 01 B1 04
04 E6 05 60 A0 03 4C 05 FA A0 05 4C 05 FA A0 08
4C 05 FA 85 0C 86 0D A2 00 B1 0C 60 A0 01 B1 04
AA 88 B1 04 60 A0 03 B1 04 85 07 88 B1 04 85 06
88 B1 04 AA 88 B1 04 60 A2 00 18 65 04 48 8A 65
05 AA 68 60 18 49 FF 69 01 48 8A 49 FF 69 00 AA
A5 06 49 FF 69 00 85 06 A5 07 49 FF 69 00 85 07
68 60 A9 00 AA A0 00 84 06 84 07 48 20 67 FB A0
68 60 A9 00 AA A0 00 84 06 84 07 48 20 E7 FA A0
03 A5 07 91 04 88 A5 06 91 04 88 8A 91 04 68 88
91 04 60 85 14 20 8E FB 85 0E 86 0F 85 10 86 11
20 20 FD 20 8E FB 85 06 86 07 60 20 23 FC A6 07
91 04 60 85 14 20 0E FB 85 0E 86 0F 85 10 86 11
20 A0 FC 20 0E FB 85 06 86 07 60 20 A3 FB A6 07
A4 14 C0 0A D0 39 A5 06 05 0D 05 0C D0 11 E0 80
D0 0D A0 0B B9 C4 FE 91 0E 88 10 F8 4C B3 FC 8A
D0 0D A0 0B B9 44 FE 91 0E 88 10 F8 4C 33 FC 8A
10 1D A9 2D A0 00 91 0E E6 0E D0 02 E6 0F A5 0C
A6 0D 20 E4 FB 85 0C 86 0D 4C 7F FC 20 23 FC A9
A6 0D 20 64 FB 85 0C 86 0D 4C FF FB 20 A3 FB A9
00 48 A0 20 A9 00 06 0C 26 0D 26 06 26 07 2A C5
14 90 04 E5 14 E6 0C 88 D0 EC A8 B9 B4 FE 48 A5
14 90 04 E5 14 E6 0C 88 D0 EC A8 B9 34 FE 48 A5
0C 05 0D 05 06 05 07 D0 D9 A0 00 68 91 0E F0 03
C8 D0 F8 A5 10 A6 11 60 D0 06 A2 00 8A 60 D0 FA
A2 00 A9 01 60 F0 F9 30 F7 A2 00 8A 60 F0 02 10
EF A2 00 8A 60 F0 E9 90 E7 A2 00 8A 60 F0 DB A2
00 8A 2A 60 20 0D FD A6 11 F0 13 B1 0C 91 0E C8
00 8A 2A 60 20 8D FC A6 11 F0 13 B1 0C 91 0E C8
B1 0C 91 0E C8 D0 F4 E6 0D E6 0F CA D0 ED A6 10
F0 08 B1 0C 91 0E C8 CA D0 F8 4C 8E FB 85 10 86
11 20 20 FD C8 B1 04 AA 86 0F 88 B1 04 85 0E 60
A0 01 B1 04 85 0D 88 B1 04 85 0C 4C 96 FB A9 01
4C 4B FD A0 00 B1 04 A4 04 F0 07 C6 04 A0 00 91
F0 08 B1 0C 91 0E C8 CA D0 F8 4C 0E FB 85 10 86
11 20 A0 FC C8 B1 04 AA 86 0F 88 B1 04 85 0E 60
A0 01 B1 04 85 0D 88 B1 04 85 0C 4C 16 FB A9 01
4C CB FC A0 00 B1 04 A4 04 F0 07 C6 04 A0 00 91
04 60 C6 05 C6 04 91 04 60 A9 00 A2 00 48 A5 04
38 E9 02 85 04 B0 02 C6 05 A0 01 8A 91 04 68 88
91 04 60 A0 00 91 04 C8 48 8A 91 04 68 60 85 0E
86 0F 20 20 FD B1 0C D1 0E D0 0C AA F0 10 C8 D0
86 0F 20 A0 FC B1 0C D1 0E D0 0C AA F0 10 C8 D0
F4 E6 0D E6 0F D0 EE B0 03 A2 FF 60 A2 01 60 85
0E 86 0F A2 00 A0 00 B1 0E F0 08 C8 D0 F9 E6 0F
E8 D0 F4 98 60 85 0C 86 0D 85 0E 86 0F A0 00 B1
0C F0 14 20 37 FB 29 02 F0 06 B1 0C 69 20 91 0C
C8 D0 EC E6 0D D0 E8 A5 0E A6 0F 60 20 8E FB 85
0E 86 0F E8 8E 31 92 AA E8 8E 30 92 20 20 FD 20
8E FB 85 10 86 11 A0 00 84 14 B1 10 18 65 0E 91
0C F0 14 20 B7 FA 29 02 F0 06 B1 0C 69 20 91 0C
C8 D0 EC E6 0D D0 E8 A5 0E A6 0F 60 20 0E FB 85
0E 86 0F E8 8E 31 92 AA E8 8E 30 92 20 A0 FC 20
0E FB 85 10 86 11 A0 00 84 14 B1 10 18 65 0E 91
10 C8 B1 10 65 0F 91 10 CE 30 92 F0 11 A4 14 B1
0C C8 D0 02 E6 0D 84 14 20 68 F0 4C F8 FD CE 31
0C C8 D0 02 E6 0D 84 14 20 68 F0 4C 78 FD CE 31
92 D0 EA 60 85 0C 86 0D A9 00 8D 2A 92 8D 2B 92
A0 01 B1 04 AA 88 B1 04 20 4D FD A0 02 A9 2A 91
04 C8 A9 92 91 04 A5 0C A6 0D 20 C2 F7 AD 2A 92
A0 01 B1 04 AA 88 B1 04 20 CD FC A0 02 A9 2A 91
04 C8 A9 92 91 04 A5 0C A6 0D 20 41 F7 AD 2A 92
AE 2B 92 60 A9 32 85 0C A9 92 85 0D A9 00 A8 A2
00 F0 0A 91 0C C8 D0 FB E6 0D CA D0 F6 C0 39 F0
05 91 0C C8 D0 F7 60 62 61 64 20 74 6F 6B 65 6E
@@ -254,4 +246,12 @@ AE 2B 92 60 A9 32 85 0C A9 92 85 0D A9 00 A8 A2
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 A7 F0 32 F0 A8 F0

View File

@@ -8,22 +8,41 @@ TEST_PROGRAM_NAME?=loop_test
TEST_FOLDER?=$(REPO_TOP)/sw/test_code/$(TEST_PROGRAM_NAME)
TEST_PROGRAM?=$(REPO_TOP)/sw/test_code/$(TEST_PROGRAM_NAME)/$(TEST_PROGRAM_NAME).hex
SD_IMAGE_PATH?=$(REPO_TOP)/sw/script/fs.fat.hex
#TODO implement something like sources.list
TOP_MODULE=sim_top
TARGET=sim_top
INIT_MEM=init_hex.mem
SD_IMAGE=sd_image.mem
FLAGS=-DSIM -DRTL_SIM
all: $(INIT_MEM)
all: sim
.PHONY: sim
sim: $(TARGET)
vvp $(TARGET) -fst
.PHONY: full_sim
full_sim: $(TARGET) $(SD_IMAGE)
vvp $(TARGET) -fst
$(TARGET): $(INIT_MEM) $(SRCS)
iverilog -g2005-sv $(FLAGS) -s $(TOP_MODULE) -o $(TARGET) $(INC) $(SRCS)
$(INIT_MEM):
$(MAKE) -C $(TEST_FOLDER)
cp $(TEST_PROGRAM) ./init_hex.mem
# The script that makes this file uses relative paths
$(SD_IMAGE):
sh $(REPO_TOP)/sw/script/create_verilog_image.sh
cp $(SD_IMAGE_PATH) $(SD_IMAGE)
.PHONY: clean
clean:
rm -rf $(TARGET)
rm -rf $(INIT_MEM)
rm -rf $(SD_IMAGE)

View File

@@ -49,7 +49,7 @@ initial begin
button_reset <= '0;
repeat(10) @(r_clk_2);
button_reset <= '1;
repeat(20000) @(r_clk_2);
repeat(1000000) @(r_clk_2);
$finish();
end
@@ -82,6 +82,19 @@ sim_uart u_sim_uart(
.tx_o(w_dut_uart_rx)
);
logic w_sd_cs;
logic w_spi_clk;
logic w_spi_mosi;
logic w_spi_miso;
sd_card_emu u_sd_card_emu(
.rst(~w_cpu_reset),
.clk(w_spi_clk),
.cs(w_sd_cs),
.mosi(w_spi_mosi),
.miso(w_spi_miso)
);
super6502 u_dut(
.i_sysclk(r_sysclk),
@@ -101,6 +114,11 @@ super6502 u_dut(
.uart_rx(w_dut_uart_rx),
.uart_tx(w_dut_uart_tx),
.sd_cs(w_sd_cs),
.spi_clk(w_spi_clk),
.spi_mosi(w_spi_mosi),
.spi_miso(w_spi_miso),
.o_sdr_CKE(w_sdr_CKE),
.o_sdr_n_CS(w_sdr_n_CS),
.o_sdr_n_WE(w_sdr_n_WE),
@@ -152,4 +170,4 @@ generate
end
endgenerate
endmodule
endmodule

3
sw/.gitignore vendored
View File

@@ -53,3 +53,6 @@ modules.order
Module.symvers
Mkfile.old
dkms.conf
# Filesystem Images
*.fat

View File

@@ -1,5 +1,5 @@
CC=../cc65/bin/cl65
CFLAGS=-T -t none -I. --cpu "65C02"
CFLAGS=-T -t none -I. --cpu "65C02" -DRTL_SIM
LDFLAGS=-C link.ld -m $(NAME).map
NAME=bios

View File

@@ -25,7 +25,9 @@ uint8_t SD_init()
}
}
#ifndef RTL_SIM
for (i = 0; i < 1000; i++);
#endif
SD_sendIfCond(res);
if(res[0] != SD_IN_IDLE_STATE)
@@ -54,13 +56,17 @@ uint8_t SD_init()
res[0] = SD_sendOpCond();
}
#ifndef RTL_SIM
for (i = 0; i < 1000; i++);
#endif
cmdAttempts++;
}
while(res[0] != SD_READY);
#ifndef RTL_SIM
for (i = 0; i < 1000; i++);
#endif
SD_readOCR(res);

View File

@@ -0,0 +1,42 @@
#!/bin/bash
BOOTLOADER=$REPO_TOP/sw/bios/bootloader.bin
FILE=fs.fat
TMPMOUNT=/tmp/lo
FSDIR=$REPO_TOP/sw/fsdir
V=-v
# Smallest number of blocks where mkfs doesn't complain
BLOCKS=33296
rm $FILE
echo "$(tput bold setaf 11)Creating Filesystem$(tput sgr 0)"
mkfs.vfat $V -I -F32 -C $FILE -n SUPER6502 $BLOCKS
echo
echo "$(tput bold setaf 11)Modifying Boot Sector$(tput sgr 0)"
dd if=$BOOTLOADER of=$FILE bs=1 conv=notrunc count=11 $STATUS
dd if=$BOOTLOADER of=$FILE bs=1 conv=notrunc count=380 seek=71 skip=71 $STATUS
echo "$(tput bold setaf 11)Mounting Device$(tput sgr 0)"
mkdir $V -p $TMPMOUNT
sudo mount $FILE $TMPMOUNT
echo
echo "$(tput bold setaf 11)Copying Files$(tput sgr 0)"
sudo cp $V -r $FSDIR/* $TMPMOUNT
echo
echo "$(tput bold setaf 11)Unmounting Device$(tput sgr 0)"
sudo umount $V $FILE
rmdir $V $TMPMOUNT
echo
# Really I want the data width to be 512 bytes long, not 16...
echo "$(tput bold setaf 11)Converting Image to Verilog$(tput sgr 0)"
objcopy --input-target=binary --output-target=verilog --verilog-data-width=1 $FILE $FILE.hex
echo "$(tput bold setaf 10)Done!$(tput sgr 0)"

View File

@@ -1,6 +1,6 @@
#!/bin/bash
BOOTLOADER=../bios/bootloader.bin
BOOTLOADER=$REPO_TOP/sw/bios/bootloader.bin
DEVICE=/dev/mmcblk0
TMPBOOTSECT=/tmp/bootsect
TMPMOUNT=/tmp/sd