addr.vh 5.07 KB
// 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