addr.vh
5.07 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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
// addr.vh v1 Frank Berndt
// address definitions;
// base addresses of various regions;
`define BASE_DRAM36 32'h0000_0000
`define BASE_DRAM64L 32'h0100_0000
`define BASE_RDCFG 32'h0300_0000
`define BASE_SP 32'h0400_0000
`define BASE_CMD 32'h0410_0000
`define BASE_SPAN 32'h0420_0000
`define BASE_MI 32'h0430_0000
`define BASE_VI 32'h0440_0000
`define BASE_AI 32'h0450_0000
`define BASE_PI 32'h0460_0000
`define BASE_RI 32'h0470_0000
`define BASE_SI 32'h0480_0000
`define BASE_USB0 32'h0490_0000
`define BASE_USB1 32'h04a0_0000
`define BASE_IO05 32'h0500_0000
`define BASE_IO06 32'h0600_0000
`define BASE_IO08 32'h0800_0000
`define BASE_IO10 32'h1000_0000
`define BASE_BOOT 32'h1fc0_0000
`define BASE_PIF 32'h1fc0_07c0
`define BASE_DRAM64H 32'h8000_0800
// MI registers;
`define MI_MODE `BASE_MI + 'h00
`define MI_VERSION `BASE_MI + 'h04
`define MI_INTR `BASE_MI + 'h08
`define MI_MASK `BASE_MI + 'h0c
`define MI_CTRL `BASE_MI + 'h10
`define MI_SEC_MODE `BASE_MI + 'h14
`define MI_SEC_TIMER `BASE_MI + 'h18
`define MI_SEC_VTIME `BASE_MI + 'h1c
`define MI_ERR_ADDR `BASE_MI + 'h20
`define MI_ERR_DATA `BASE_MI + 'h24
`define MI_ERR_INFO `BASE_MI + 'h28
`define MI_RANDOM `BASE_MI + 'h2c
`define MI_AVCTRL `BASE_MI + 'h30
`define MI_EINTR `BASE_MI + 'h38
`define MI_EMASK `BASE_MI + 'h3c
// MI address spaces;
`define MI_BROM_RST `BASE_BOOT + 'h0_0000
`define MI_BROM_FLIP `BASE_BOOT + 'h2_0000
`define MI_BRAM_RST `BASE_BOOT + 'h2_0000
`define MI_BRAM_FLIP `BASE_BOOT + 'h0_0000
`define MI_IRAM `BASE_BOOT + 'h4_0000
`define MI_V0 `BASE_BOOT + 'h8_0000
`define MI_V1 `BASE_BOOT + 'h9_0000
`define MI_V2 `BASE_BOOT + 'ha_0000
`define MI_VMEM 'h0000
`define MI_VREG 'h8000
`define MI_VCTRL 'hc000
`define MI_VEXEC 'he000
`define MI_VMEM0 `MI_V0 + `MI_VMEM
`define MI_VMEM1 `MI_V1 + `MI_VMEM
`define MI_VMEM2 `MI_V2 + `MI_VMEM
`define MI_VREG0 `MI_V0 + `MI_VREG
`define MI_VREG1 `MI_V1 + `MI_VREG
`define MI_VREG2 `MI_V2 + `MI_VREG
`define MI_VCTRL0 `MI_V0 + `MI_VCTRL
`define MI_VCTRL1 `MI_V1 + `MI_VCTRL
`define MI_VCTRL2 `MI_V2 + `MI_VCTRL
// virage commands;
`define VCMD_IDLE 3'd0
`define VCMD_SERACC 3'd1
`define VCMD_FSTORE 3'd2
`define VCMD_NRECALL 3'd3
`define VCMD_NCOMP 3'd4
`define VCMD_KEEP 3'd5
`define VCMD_RCAM 3'd6
// mi status index;
`define MI_STS_MD 25
`define MI_STS_BUT 24
// mi interrupt index;
`define MI_INTR_MD 13
`define MI_INTR_BUT 12
`define MI_INTR_USB1 11
`define MI_INTR_USB0 10
`define MI_INTR_ERR 9
`define MI_INTR_IDE 8
`define MI_INTR_AES 7
`define MI_INTR_FLASH 6
`define MI_INTR_DP 5
`define MI_INTR_PI 4
`define MI_INTR_VI 3
`define MI_INTR_AI 2
`define MI_INTR_SI 1
`define MI_INTR_SP 0
// SP memory spaces;
`define SP_DMEM `BASE_SP + 'h0_0000
`define SP_IMEM `BASE_SP + 'h0_1000
// SP registers;
`define SP_DRAM_ADDR `BASE_SP + 'h4_0000
`define SP_MEM_ADDR `BASE_SP + 'h4_0004
`define SP_DMA_READ `BASE_SP + 'h4_0008
`define SP_DMA_WRITE `BASE_SP + 'h4_000c
`define SP_STATUS `BASE_SP + 'h4_0010
`define SP_DMA_FULL `BASE_SP + 'h4_0014
`define SP_DMA_BUSY `BASE_SP + 'h4_0018
`define SP_SEM `BASE_SP + 'h4_001c
// SI registers;
`define SI_DRAM_ADDR `BASE_SI + 'h00
`define SI_DMA_READ `BASE_SI + 'h04
`define SI_CTRL `BASE_SI + 'h0c
`define SI_DMA_WRITE `BASE_SI + 'h10
`define SI_STATUS `BASE_SI + 'h18
`define SI_CONFIG `BASE_SI + 'h1c
// PI registers;
`define PI_DRAM_ADDR `BASE_PI + 'h00
`define PI_DEV_ADDR `BASE_PI + 'h04
`define PI_DMA_READ `BASE_PI + 'h08 // mem -> pi;
`define PI_DMA_WRITE `BASE_PI + 'h0c // mem <- pi;
`define PI_STATUS `BASE_PI + 'h10
`define PI_ATBU `BASE_PI + 'h40
`define PI_ERROR `BASE_PI + 'h44
`define PI_FLASH_CTRL `BASE_PI + 'h48
`define PI_FLASH_CONF `BASE_PI + 'h4c
`define PI_AES_CTRL `BASE_PI + 'h50
`define PI_ACCESS `BASE_PI + 'h54
`define PI_DMA_BREAD `BASE_PI + 'h58 // mem -> pi;
`define PI_DMA_BWRITE `BASE_PI + 'h5c // mem <- pi;
`define PI_GPIO `BASE_PI + 'h60
`define PI_IDE_CONF `BASE_PI + 'h64
`define PI_IDE_CTRL `BASE_PI + 'h68
`define PI_EDATA `BASE_PI + 'h6c
`define PI_FLASH_ADDR `BASE_PI + 'h70
`define PI_BUF `BASE_PI + 'h1_0000
`define PI_BUF0 `PI_BUF + (0 * 8)
`define PI_BUF1 `PI_BUF + (64 * 8)
`define PI_SP0 `PI_BUF + (128 * 8)
`define PI_SP1 `PI_BUF + (130 * 8)
`define PI_AES_EKEY `PI_BUF + (132 * 8)
`define PI_AES_INIT `PI_BUF + (154 * 8)
`define PI_BUF_ATB `PI_BUF + (160 * 8)
`define PI_BUF_ATBU `BASE_PI + 'h1_0800
`define PI_N_ATB (96 * 2)
`define PI_IDE_FC `BASE_PI + 'h2_0000
`define PI_IDE0 `BASE_PI + 'h8_0000
`define PI_IDE1 `BASE_PI + 'ha_0000
`define PI_IDE2 `BASE_PI + 'hc_0000
`define PI_IDE3 `BASE_PI + 'he_0000
`define PI_PRINTF `PI_IDE3 + 'h1_ffe0
`define PI_DUMP `PI_IDE3 + 'h1_ffe2
`define PI_MODULE `PI_IDE3 + 'h1_ffe4
`define PI_MD_VAL `PI_IDE3 + 'h1_ffe6
`define PI_MD_PTR `PI_IDE3 + 'h1_ffe8
`define PI_MD_TRIG `PI_IDE3 + 'h1_ffea
`define PI_BDGPIO `PI_IDE3 + 'h1_fff8
`define PI_SIMHLT `PI_IDE3 + 'h1_fffa
`define PI_PINBTN `PI_IDE3 + 'h1_fffc
`define PI_PINRST `PI_IDE3 + 'h1_fffe
// RI registers;
`define RI_MODE `BASE_RI + 'h20
`define RI_RFSH `BASE_RI + 'h30
`define RI_PARAM `BASE_RI + 'h40
`define RI_XMEMSET `BASE_RI + 'h50
`define RI_STROBE `BASE_RI + 'h60
`define RI_AUTO_PRC `BASE_RI + 'h80