Register Map Reference
This page documents the BAR0 AXI-Lite address map and the
PcieAxiVersion register set. Per-board application-region register maps
are owned by the downstream user project; this library defines the partition
boundaries but does not document application registers.
BAR0 AXI-Lite Crossbar
AxiPcieReg (shared/rtl/AxiPcieReg.vhd) bridges the AXI4 BAR0 bus
from the PCIe PHY down to a 15-slave AXI-Lite crossbar. The base addresses
are sourced from AXI_CROSSBAR_MASTERS_CONFIG_C in AxiPcieReg.vhd.
See Architecture for the BAR0 crossbar diagram.
Index |
Offset |
Slave |
Notes |
|---|---|---|---|
0 ( |
|
DMA descriptor engine |
|
1 ( |
|
PCIe PHY CSR |
Per-board PCIe IP status and configuration registers. |
2 ( |
|
PcieAxiVersion |
Build info, device DNA, ICAP, and PCIe-core-specific fields.
See the |
3 ( |
|
Sysmon (XADC) |
|
4 ( |
|
GPU async control |
|
5 ( |
|
BPI flash |
|
6 ( |
|
SPI flash 0 |
|
7 ( |
|
SPI flash 1 |
|
8 ( |
|
IB stream monitor |
|
9 ( |
|
OB stream monitor |
|
10 ( |
|
I2C / I2C mux |
|
11 ( |
|
App region 1 |
Application AXI-Lite slave, appClk domain, 1 MB window. See PcieAxiVersion Registers below. |
12 ( |
|
App region 2 |
Application AXI-Lite slave, appClk domain, 2 MB window. |
13 ( |
|
App region 3 |
Application AXI-Lite slave, appClk domain, 4 MB window. |
14 ( |
|
App region 4 |
Application AXI-Lite slave, appClk domain, 8 MB window. |
PcieAxiVersion Registers
PcieAxiVersion (python/axipcie/_PcieAxiVersion.py) extends
surf.axi.AxiVersion and is the canonical “build info” surface that user
code reads at startup to identify firmware version, PCIe configuration, and
runtime parameters. It sits at BAR0 offset 0x20000 (VERSION_INDEX_C).
The surf.axi.AxiVersion parent class provides the standard firmware
identification fields; PcieAxiVersion adds PCIe-core-specific fields at
offset 0x400 and above.
Offset |
Field |
Bits |
Mode |
Description |
|---|---|---|---|---|
|
|
31:0 |
RO |
Firmware version word (from |
|
|
31:0 |
RW |
Read/write scratch register for software testing
(from |
|
|
31:0 |
RO |
Free-running 1 Hz up-time counter in seconds
(from |
|
|
63:0 |
RO |
Xilinx Device DNA (64-bit unique ID from EFUSE_DNA primitive;
from |
|
|
63:0 |
RO |
DS2411 1-wire silicon serial number (board-level, when present;
from |
|
|
127:0 |
RO |
Extended DNA / UID register (128-bit;
from |
|
|
2047:0 |
RO |
256-byte null-terminated ASCII build string encoding git hash,
date, and tool versions (from |
|
|
31:0 |
RO |
Number of DMA lanes instantiated (value of |
|
|
31:0 |
RO |
Reserved, reads zero. |
|
|
31:0 |
RO |
Driver-type identifier set at synthesis by |
|
|
31:0 |
RO |
Device family: 0 = UltraScale, 1 = 7-Series. |
|
|
31:0 |
RO |
DMA system clock frequency in Hz (typically 250000000). |
|
|
31:0 |
RO |
Boot PROM type: 0 = BPI, 1 = SPIx8, 2 = SPIx4. |
|
|
31:0 |
RO |
Packed DMA stream config: bits[31:24] TDATA_BYTES_C, [23:20] TDEST_BITS_C, [19:16] TUSER_BITS_C, [15:12] TID_BITS_C, [11:8] TKEEP_MODE_C, [7:4] TUSER_MODE_C, [1] TSTRB_EN_C, [0] AppReset. |
|
|
31:0 |
RO |
Packed AXI config: bits[31:24] ADDR_WIDTH_C, [23:16] DATA_BYTES_C, [15:8] ID_BITS_C, [7:0] LEN_BITS_C. |
|
|
31:0 |
RO |
Application clock frequency in Hz (live measurement). |
|
|
31:0 |
RO |
Board hardware type identifier (see |
|
|
0 |
RO |
|
Application Regions
The four application-region crossbar slaves are defined in
shared/rtl/AxiPcieCommonPkg.vhd (APP_BAR0_XBAR_CONFIG_C) and
indexed as APP1_INDEX_C through APP4_INDEX_C (the
APP_INDEX_C-series) in shared/rtl/AxiPcieReg.vhd. Their BAR0 base addresses are:
APP1_INDEX_C—0x100000(1 MB window, 20-bit address space)APP2_INDEX_C—0x200000(2 MB window, 21-bit address space)APP3_INDEX_C—0x400000(4 MB window, 22-bit address space)APP4_INDEX_C—0x800000(8 MB window, 23-bit address space)
These four slaves are merged by a second AXI-Lite crossbar inside
AxiPcieReg and exposed as a single appReadMaster / appWriteMaster
pair that crosses via surf.AxiLiteAsync to the appClk domain.
This library defines only the partition; the downstream project is responsible
for routing appReadMaster / appWriteMaster to its own register tree.