Data Mover / AXI2TCM#
Moves data from PL to R5 (R5_0) by writing data directly to the BTCM
Data mover is intended for use with R5 in split mode
PL IP-Cores can write to TCM by AXI
Fast possibility to move data from PL to R5
Used to read ADC values
Tightly Coupled Memory (TCM)#
Split mode: ATCM and BTCM with 64 KB each (split mode is used in the UltraZohm project).
ATCM: holds interrupts and exception code (
.vectors
section in linker script)BTCM: used for data processing
There is no protection to stop the Cortex-R5F processor from accessing the TCM [1],p. 97
R5_0 View |
Global Address |
|
---|---|---|
R5_0 ATCM (64 KB) |
0x0000_0000 |
0xFFE0_0000 |
R5_0 BTCM (64 KB) |
0x0002_0000 |
0xFFE2_0000 |
The R5_0 view is used by the software of the R5
The global address is used in Vivado
ATCM (64 KB) starts at address 0x0000_0000 and ends at 0x0000_FFFF for usage in software
BTCM (64 KB) starts at address 0x0002_0000 and ends at 0x0002_FFFF for usage in software
Note that ATCM for R_0 starts at 0x000_0000 to 0x0000_FFFF, then there is a 64 KB gap (see figure in TRM).
IP-Core#
The data mover uses the AXI2TCM IP-Core.
Name |
Default |
Description |
---|---|---|
Number of 16 bit blocks |
24 |
|
AXI TARGET SLAVE BASE ADDR |
0xFFE20000 |
Address to which the IP-Core writes data. |
AXI ID WIDTH |
1 |
|
AXI ADDR WIDTH |
32 |
Software driver#
Software driver does not need to be initialized
Two possibilities to read data from the data mover:
Directly access the data in the BTCM
Read the data from the BTCM into a buffer and access the buffered data
If data access without buffer is used, the data can change without any action from the processor
Software driver uses the Array data type
Reference#
-
uz_array_int16_t uz_dataMover_get_data_by_pointer(void)#
Returns an array with a direct pointer into the BTCM. The values of the array change independend of the software.
- Returns:
uz_array_int16_t
-
uz_array_int16_t uz_dataMover_update_buffer_and_get_data(void)#
Copies all data from TCM to buffer and retruns the buffered data.
- Returns:
uz_array_int16_t
-
void uz_dataMover_update_buffer(void)#
Copies all data from BTCM to a buffer in the PS.
- Returns:
void
-
uz_array_int16_t uz_dataMover_get_data_from_buffer(void)#
Returns an array with a pointer to the buffered data. The buffer is only updated by explicitly calling the update_buffer function.
- Returns:
uz_array_int16_t Buffered data