pluto_hdl_adi/docs/regmap/adi_regmap_dmac.txt

562 lines
13 KiB
Plaintext
Raw Normal View History

TITLE
DMA Controller (axi_dmac)
DMAC
ENDTITLE
############################################################################################
############################################################################################
REG
0x000
VERSION
Version of the peripheral. Follows semantic versioning. Current version 4.03.61.
ENDREG
FIELD
[31:16] 0x04
VERSION_MAJOR
RO
ENDFIELD
FIELD
[15:8] 0x03
VERSION_MINOR
RO
ENDFIELD
FIELD
[7:0] 0x61
VERSION_PATCH
RO
ENDFIELD
############################################################################################
############################################################################################
REG
0x001
PERIPHERAL_ID
ENDREG
FIELD
[31:0] ''ID''
PERIPHERAL_ID
RO
Value of the ID configuration parameter.
ENDFIELD
############################################################################################
############################################################################################
REG
0x002
SCRATCH
ENDREG
FIELD
[31:0] 0x00000000
SCRATCH
RW
Scratch register useful for debug.
ENDFIELD
############################################################################################
############################################################################################
REG
0x003
IDENTIFICATION
ENDREG
FIELD
[31:0] 0x444D4143
IDENTIFICATION
RO
Peripheral identification ('D', 'M', 'A', 'C').
ENDFIELD
############################################################################################
############################################################################################
REG
0x004
INTERFACE_DESCRIPTION
ENDREG
FIELD
[3:0] log2(''DMA_DATA_WIDTH_DEST''/8)
BYTES_PER_BEAT_DEST_LOG2
R
Width of data bus on destination interface. Log2 of interface data widths in bytes.
ENDFIELD
FIELD
[5:4] ''DMA_TYPE_DEST''
DMA_TYPE_DEST
R
Value of ''DMA_TYPE_DEST'' parameter.(0 - AXI MemoryMap, 1 - AXI Stream, 2 - FIFO )
ENDFIELD
FIELD
[11:8] log2(''DMA_DATA_WIDTH_SRC''/8)
BYTES_PER_BEAT_SRC_LOG2
R
Width of data bus on source interface. Log2 of interface data widths in bytes.
ENDFIELD
FIELD
[13:12] ''DMA_TYPE_SRC''
DMA_TYPE_SRC
R
Value of ''DMA_TYPE_SRC'' parameter.(0 - AXI MemoryMap, 1 - AXI Stream, 2 - FIFO )
ENDFIELD
FIELD
[19:16] ''BYTES_PER_BURST_WIDTH''
BYTES_PER_BURST_WIDTH
R
Value of ''BYTES_PER_BURST_WIDTH'' interface parameter. Log2 of the real ''MAX_BYTES_PER_BURST''.
The starting address of the transfer must be aligned with ''MAX_BYTES_PER_BURST'' to avoid crossing
the 4kB address boundary.
ENDFIELD
############################################################################################
############################################################################################
REG
0x020
IRQ_MASK
ENDREG
FIELD
[1] 0x1
TRANSFER_COMPLETED
RW
Masks the TRANSFER_COMPLETED IRQ.
ENDFIELD
FIELD
[0] 0x1
TRANSFER_QUEUED
RW
Masks the TRANSFER_QUEUED IRQ.
ENDFIELD
############################################################################################
############################################################################################
REG
0x021
IRQ_PENDING
ENDREG
FIELD
[1] 0x0
TRANSFER_COMPLETED
RW1C
This bit will be asserted if a transfer has been completed and the
TRANSFER_COMPLETED bit in the IRQ_MASK register is not set. Either if all bytes have been
transferred or an error occurred during the transfer.
ENDFIELD
FIELD
[0] 0x0
TRANSFER_QUEUED
RW1C
This bit will be asserted if a transfer has been queued and it is possible to queue
the next transfer. It can be masked out by setting the TRANSFER_QUEUED bit in the
IRQ_MASK register.
ENDFIELD
############################################################################################
############################################################################################
REG
0x022
IRQ_SOURCE
ENDREG
FIELD
[1] 0x0
TRANSFER_COMPLETED
RO
This bit will be asserted if a transfer has been completed. Either if all bytes have been
transferred or an error occurred during the transfer. Cleared together with the corresponding IRQ_PENDING bit.
ENDFIELD
FIELD
[0] 0x0
TRANSFER_QUEUED
RO
This bit will be asserted if a transfer has been queued and it is possible to queue
the next transfer. Cleared together with the corresponding IRQ_PENDING bit.
ENDFIELD
############################################################################################
############################################################################################
REG
0x100
CONTROL
ENDREG
FIELD
[1] 0x0
PAUSE
RW
When set to 1 the currently active transfer is paused. It will be resumed once the bit is
cleared again.
ENDFIELD
FIELD
[0] 0x0
ENABLE
RW
When set to 1 the DMA channel is enabled.
ENDFIELD
############################################################################################
############################################################################################
REG
0x101
TRANSFER_ID
ENDREG
FIELD
[1:0] 0x00
TRANSFER_ID
RO
This register contains the ID of the next transfer. The ID is generated by the DMAC and after the
transfer has been started can be used to check if the transfer has finished by checking the
corresponding bit in the TRANSFER_DONE register. The contents of this register is only valid if
TRANSFER_SUBMIT is 0.
ENDFIELD
############################################################################################
############################################################################################
REG
0x102
TRANSFER_SUBMIT
ENDREG
FIELD
[0] 0x00
TRANSFER_SUBMIT
RW
Writing a 1 to this register queues a new transfer. The bit transitions back to 0 once
the transfer has been queued or the DMA channel is disabled.
Writing a 0 to this register has no effect.
ENDFIELD
############################################################################################
############################################################################################
REG
0x103
FLAGS
ENDREG
FIELD
[0] ''CYCLIC''
CYCLIC
RW
Setting this field to 1 puts the DMA transfer into cyclic mode. In cyclic mode
the controller will re-start a transfer again once it has finished. In cyclic
mode no end-of-transfer interrupts will be generated.
ENDFIELD
FIELD
[1] 0x1
TLAST
RW
When setting this bit for a MM to AXIS transfer the TLAST signal
will be asserted during the last beat of the transfer.
For AXIS to MM transfers the TLAST signal from the AXIS interface is monitored.
After its occurrence all descriptors are ignored until this bit is set.
ENDFIELD
FIELD
[2] 0x0
PARTIAL_REPORTING_EN
RW
When setting this bit the length of partial transfers caused eventually by TLAST will be recorded.
ENDFIELD
############################################################################################
############################################################################################
REG
0x104
DEST_ADDRESS
ENDREG
FIELD
[31:0] 0x00000000
DEST_ADDRESS
RW
This register contains the destination address of the transfer. The address needs to be aligned
to the bus width.
This register is only valid if the DMA channel has been configured for write to memory support.
ENDFIELD
############################################################################################
############################################################################################
REG
0x105
SRC_ADDRESS
ENDREG
FIELD
[31:0] 0x00000000
SRC_ADDRESS
RW
This register contains the source address of the transfer. The address needs to be aligned
to the bus width.
This register is only valid if the DMA channel has been configured for read from memory support.
ENDFIELD
############################################################################################
############################################################################################
REG
0x106
X_LENGTH
ENDREG
FIELD
[23:0] {log2(max(\n''DMA_DATA_WIDTH_SRC'',\n''DMA_DATA_WIDTH_DEST''\n)/8){1'b1}}
X_LENGTH
RW
Number of bytes to transfer - 1.
ENDFIELD
############################################################################################
############################################################################################
REG
0x107
Y_LENGTH
ENDREG
FIELD
[23:0] 0x000000
Y_LENGTH
RW
Number of rows to transfer - 1.
Note, this field is only valid if the DMA channel has been configured with 2D transfer support.
ENDFIELD
############################################################################################
############################################################################################
REG
0x108
DEST_STRIDE
ENDREG
FIELD
[23:0] 0x000000
DEST_STRIDE
RW
The number of bytes between the start of one row and the next row for the
destination address. Needs to be aligned to the bus width.
Note, this field is only valid if the DMA channel has been configured with 2D
transfer support and write to memory support.
ENDFIELD
############################################################################################
############################################################################################
REG
0x109
SRC_STRIDE
ENDREG
FIELD
[23:0] 0x000000
SRC_STRIDE
RW
The number of bytes between the start of one row and the next row for the source
address. Needs to be aligned to the bus width.
Note, this field is only valid if the DMA channel has been configured with 2D
transfer and read from memory support.
ENDFIELD
############################################################################################
############################################################################################
REG
0x10a
TRANSFER_DONE
If bit x is set in this register the transfer with ID x has been completed. The bit will automatically
be cleared when a new transfer with this ID is queued and will be set when the transfer has been completed.
ENDREG
FIELD
[0] 0x0
TRANSFER_0_DONE
RO
If this bit is set the transfer with ID 0 has been completed.
ENDFIELD
FIELD
[1] 0x0
TRANSFER_1_DONE
RO
If this bit is set the transfer with ID 1 has been completed.
ENDFIELD
FIELD
[2] 0x0
TRANSFER_2_DONE
RO
If this bit is set the transfer with ID 2 has been completed.
ENDFIELD
FIELD
[3] 0x0
TRANSFER_3_DONE
RO
If this bit is set the transfer with ID 3 has been completed.
ENDFIELD
FIELD
[31] 0x0
PARTIAL_TRANSFER_DONE
RO
If this bit is set at least one partial transfer was transferred.
This field will reset when the ENABLE control bit is reset or when
all information on partial transfers was read through PARTIAL_TRANSFER_LENGTH and
PARTIAL_TRANSFER_ID registers.
ENDFIELD
############################################################################################
############################################################################################
REG
0x10b
ACTIVE_TRANSFER_ID
ENDREG
FIELD
[4:0] 0x00
ACTIVE_TRANSFER_ID
RO
ID of the currently active transfer. When no transfer is active this register will be equal to
the TRANSFER_ID register.
ENDFIELD
############################################################################################
############################################################################################
REG
0x10c
STATUS
ENDREG
FIELD
[31:0] 0x00
RESERVED
RO
This register is reserved for future usage. Reading it will always return 0.
ENDFIELD
############################################################################################
############################################################################################
REG
0x10d
CURRENT_DEST_ADDRESS
ENDREG
FIELD
[31:0] 0x00
CURRENT_DEST_ADDRESS
RO
Address to which the next data sample is written to.
This register is only valid if the DMA channel has been configured for write to memory support.
ENDFIELD
############################################################################################
############################################################################################
REG
0x10e
CURRENT_SRC_ADDRESS
ENDREG
FIELD
[31:0] 0x00
CURRENT_SRC_ADDRESS
RO
Address form which the next data sample is read.
This register is only valid if the DMA channel has been configured for read from memory support.
ENDFIELD
############################################################################################
############################################################################################
REG
0x112
TRANSFER_PROGRESS
ENDREG
FIELD
[23:0] 0x000000
TRANSFER_PROGRESS
RO
This field presents the number of bytes transferred to the destination for the current transfer.
This register will be cleared once the transfer completes.
This should be used for debugging purposes only.
ENDFIELD
############################################################################################
############################################################################################
REG
0x113
PARTIAL_TRANSFER_LENGTH
ENDREG
FIELD
[31:0] 0x000000
PARTIAL_LENGTH
RO
Length of the partial transfer in bytes. Represents the number of bytes received
until the moment of TLAST assertion. This will be smaller than the programmed length
from the X_LENGTH and Y_LENGTH registers.
ENDFIELD
############################################################################################
############################################################################################
REG
0x114
PARTIAL_TRANSFER_ID
Must be read after the PARTIAL_TRANSFER_LENGTH registers.
ENDREG
FIELD
[1:0] 0x0
PARTIAL_TRANSFER_ID
RO
ID of the transfer that was partial.
ENDFIELD
############################################################################################
############################################################################################