SPRUIL1D May 2019 – December 2024 DRA829J , DRA829J-Q1 , DRA829V , DRA829V-Q1 , TDA4VM , TDA4VM-Q1
The DMA interface module takes the data from the AF engine and AE/AWB engine and builds packets to be sent to the memory through the BL module.
The data interface has separate start pointers for the AF and AE/AWB engines.
The DMA interface module continuously loops through this data as it builds the packets. To optimize the transfer sizes, the DMA interface sends out an AF or AE transfer for each row of paxels or windows. This requires that each horizontal row of paxels or windows starts and ends on a 32-byte boundary. If a horizontal row of paxels or windows ends on a non-32 byte boundary, the hardware packs zeroes. The counts for the AEW that occur every eight windows is sent in the row with the eighth consecutive window.
Table 6-124 shows the packet formats for AF with vertical AF enabled.
Buffer Start Address (Byte Address) VISS_RAWFE_H3A_AFBUFST | 31 | 16 | 15 | 0 | |
---|---|---|---|---|---|
Sum of pixel values used in HFV | (Paxel 0) | ||||
HFV_1 (peak or sum) | (Paxel 0) | ||||
HFV_sq_1 (peak or sum) | (Paxel 0) | ||||
HFV_count_1 | (Paxel 0) | ||||
HFV_2 (peak or sum) | (Paxel 0) | ||||
HFV_sq_2 (peak or sum) | (Paxel 0) | ||||
HFV_count_2 | (Paxel 0) | ||||
Zeroes | (Paxel 0) | ||||
VFV_1 | (Paxel 0) | ||||
VFV_sq_1 | (Paxel 0) | ||||
VFV_count_1 | (Paxel 0) | ||||
Zeroes | (Paxel 0) | ||||
VFV_2 | (Paxel 0) | ||||
VFV_sq_2 | (Paxel 0) | ||||
VFV_count_2 | (Paxel 0) | ||||
Zeroes | (Paxel 0) | ||||
Sum of pixel values used in HFV | (Paxel 1) | ||||
HFV_1 (peak or sum) | (Paxel 1) | ||||
HFV_sq_1 (peak or sum) | (Paxel 1) | ||||
HFV_count_1 | (Paxel 1) | ||||
... | |||||
Table 6-125 lists the packet formats for AE/AWB for sum of square mode (VISS_RAWFE_H3A_AEWCFG[9:8] AEFMT = 0x0) .
31 | 16 | 15 | 0 | ||
---|---|---|---|---|---|
Buffer address (byte address) VISS_RAWFE_H3A_AEWBUFST | Subsample Accum[1] | Subsample Accum[0] | Window 0 data | ||
Subsample Accum[3] | Subsample Accum[2] | ||||
Saturator Accum[1] | Saturator Accum[0] | ||||
Saturator Accum[3] | Saturator Accum[2] | ||||
Sum of squares[0] | |||||
Sum of squares[1] | |||||
Sum of squares[2] | |||||
Sum of squares[3] | |||||
VISS_RAWFE_H3A_AEWBUFST + 32 bytes | Subsample Accum[1] | Subsample Accum[0] | Window 1 data | ||
Subsample Accum[3] | Subsample Accum[2] | ||||
Saturator Accum[1] | Saturator Accum[0] | ||||
Saturator Accum[3] | Saturator Accum[2] | ||||
Sum of squares[0] | |||||
Sum of squares[1] | |||||
Sum of squares[2] | |||||
Sum of squares[3] | |||||
VISS_RAWFE_H3A_AEWBUFST + 64 bytes | Subsample Accum[1] | Subsample Accum[0] | Window 2 data | ||
Subsample Accum[3] | Subsample Accum[2] | ||||
Saturator Accum[1] | Saturator Accum[0] | ||||
Saturator Accum[3] | Saturator Accum[2] | ||||
Sum of squares[0] | |||||
Sum of squares[1] | |||||
Sum of squares[2] | |||||
Sum of squares[3] | |||||
VISS_RAWFE_H3A_AEWBUFST + 96 bytes | Subsample Accum[1] | Subsample Accum[0] | Window 3 data | ||
Subsample Accum[3] | Subsample Accum[2] | ||||
Saturator Accum[1] | Saturator Accum[0] | ||||
Saturator Accum[3] | Saturator Accum[2] | ||||
Sum of squares[0] | |||||
Sum of squares[1] | |||||
Sum of squares[2] | |||||
Sum of squares[3] | |||||
VISS_RAWFE_H3A_AEWBUFST + 128 bytes | Subsample Accum[1] | Subsample Accum[0] | Window 4 data | ||
Subsample Accum[3] | Subsample Accum[2] | ||||
Saturator Accum[1] | Saturator Accum[0] | ||||
Saturator Accum[3] | Saturator Accum[2] | ||||
Sum of squares[0] | |||||
Sum of squares[1] | |||||
Sum of squares[2] | |||||
Sum of squares[3] | |||||
VISS_RAWFE_H3A_AEWBUFST + 160 bytes | Subsample Accum[1] | Subsample Accum[0] | Window 5 data | ||
Subsample Accum[3] | Subsample Accum[2] | ||||
Saturator Accum[1] | Saturator Accum[0] | ||||
Saturator Accum[3] | Saturator Accum[2] | ||||
Sum of squares[0] | |||||
Sum of squares[1] | |||||
Sum of squares[2] | |||||
Sum of squares[3] | |||||
VISS_RAWFE_H3A_AEWBUFST + 192 bytes | Subsample Accum[1] | Subsample Accum[0] | Window 6 data | ||
Subsample Accum[3] | Subsample Accum[2] | ||||
Saturator Accum[1] | Saturator Accum[0] | ||||
Saturator Accum[3] | Saturator Accum[2] | ||||
Sum of squares[0] | |||||
Sum of squares[1] | |||||
Sum of squares[2] | |||||
Sum of squares[3] | |||||
VISS_RAWFE_H3A_AEWBUFST + 224 bytes | Subsample Accum[1] | Subsample Accum[0] | Window 7 data | ||
Subsample Accum[3] | Subsample Accum[2] | ||||
Saturator Accum[1] | Saturator Accum[0] | ||||
Saturator Accum[3] | Saturator Accum[2] | ||||
Sum of squares[0] | |||||
Sum of squares[1] | |||||
Sum of squares[2] | |||||
Sum of squares[3] | |||||
VISS_RAWFE_H3A_AEWBUFST + 256 bytes | Unsaturated count, win 1 | Unsaturated count, win 0 | Unsaturated block count for the above 8 windows | ||
Unsaturated count, win 3 | Unsaturated count, win 2 | ||||
Unsaturated count, win 5 | Unsaturated count, win 4 | ||||
Unsaturated count, win 7 | Unsaturated count, win 6 | ||||
Data for next eight windows, and so on. If the total number of windows is not a multiple of 8, the unsaturated counters are written immediately following the last window data. For example, if the total number of windows (including the black row) is 43, the first 40 windows are written out as per the 272-byte boundary above. Then the remaining three windows are written at +0, +32, and +64 bytes. The counts are written out at +96 instead of +256-byte boundary. | |||||
Table 6-126 lists the packet formats for AE/AWB in minimum-maximum mode (VISS_RAWFE_H3A_AEWCFG[9:8] AEFMT = 0x1).
31 | 16 | 15 | 0 | ||
---|---|---|---|---|---|
Buffer address (byte address) VISS_RAWFE_H3A_AEWBUFST | Subsample Accum[1] | Subsample Accum[0] | Window 0 data | ||
Subsample Accum[3] | Subsample Accum[2] | ||||
Saturator Accum[1] | Saturator Accum[0] | ||||
Saturator Accum[3] | Saturator Accum[2] | ||||
Minimum[1] | Minimum[0] | ||||
Minimum[3] | Minimum[2] | ||||
Maximum[1] | Maximum[0] | ||||
Maximum[3] | Maximum[2] | ||||
VISS_RAWFE_H3A_AEWBUFST + 32 bytes | Subsample Accum[1] | Subsample Accum[0] | Window 1 data | ||
Subsample Accum[3] | Subsample Accum[2] | ||||
Saturator Accum[1] | Saturator Accum[0] | ||||
Saturator Accum[3] | Saturator Accum[2] | ||||
Minimum[1] | Minimum[0] | ||||
Minimum[3] | Minimum[2] | ||||
Maximum[1] | Maximum[0] | ||||
Maximum[3] | Maximum[2] | ||||
VISS_RAWFE_H3A_AEWBUFST + 64 bytes | Subsample Accum[1] | Subsample Accum[0] | Window 2 data | ||
Subsample Accum[3] | Subsample Accum[2] | ||||
Saturator Accum[1] | Saturator Accum[0] | ||||
Saturator Accum[3] | Saturator Accum[2] | ||||
Minimum[1] | Minimum[0] | ||||
Minimum[3] | Minimum[2] | ||||
Maximum[1] | Maximum[0] | ||||
Maximum[3] | Maximum[2] | ||||
VISS_RAWFE_H3A_AEWBUFST + 96 bytes | Subsample Accum[1] | Subsample Accum[0] | Window 3 data | ||
Subsample Accum[3] | Subsample Accum[2] | ||||
Saturator Accum[1] | Saturator Accum[0] | ||||
Saturator Accum[3] | Saturator Accum[2] | ||||
Minimum[1] | Minimum[0] | ||||
Minimum[3] | Minimum[2] | ||||
Maximum[1] | Maximum[0] | ||||
Maximum[3] | Maximum[2] | ||||
VISS_RAWFE_H3A_AEWBUFST + 128 bytes | Subsample Accum[1] | Subsample Accum[0] | Window 4 data | ||
Subsample Accum[3] | Subsample Accum[2] | ||||
Saturator Accum[1] | Saturator Accum[0] | ||||
Saturator Accum[3] | Saturator Accum[2] | ||||
Minimum[1] | Minimum[0] | ||||
Minimum[3] | Minimum[2] | ||||
Maximum[1] | Maximum[0] | ||||
Maximum[3] | Maximum[2] | ||||
VISS_RAWFE_H3A_AEWBUFST + 160 bytes | Subsample Accum[1] | Subsample Accum[0] | Window 5 data | ||
Subsample Accum[3] | Subsample Accum[2] | ||||
Saturator Accum[1] | Saturator Accum[0] | ||||
Saturator Accum[3] | Saturator Accum[2] | ||||
Minimum[1] | Minimum[0] | ||||
Minimum[3] | Minimum[2] | ||||
Maximum[1] | Maximum[0] | ||||
Maximum[3] | Maximum[2] | ||||
VISS_RAWFE_H3A_AEWBUFST + 192 bytes | Subsample Accum[1] | Subsample Accum[0] | Window 6 data | ||
Subsample Accum[3] | Subsample Accum[2] | ||||
Saturator Accum[1] | Saturator Accum[0] | ||||
Saturator Accum[3] | Saturator Accum[2] | ||||
Minimum[1] | Minimum[0] | ||||
Minimum[3] | Minimum[2] | ||||
Maximum[1] | Maximum[0] | ||||
Maximum[3] | Maximum[2] | ||||
VISS_RAWFE_H3A_AEWBUFST + 224 bytes | Subsample Accum[1] | Subsample Accum[0] | Window 7 data | ||
Subsample Accum[3] | Subsample Accum[2] | ||||
Saturator Accum[1] | Saturator Accum[0] | ||||
Saturator Accum[3] | Saturator Accum[2] | ||||
Minimum[1] | Minimum[0] | ||||
Minimum[3] | Minimum[2] | ||||
Maximum[1] | Maximum[0] | ||||
Maximum[3] | Maximum[2] | ||||
VISS_RAWFE_H3A_AEWBUFST + 256 bytes | Unsaturated count, win 1 | Unsaturated count, win 0 | Unsaturated block count for the above 8 windows | ||
Unsaturated count, win 3 | Unsaturated count, win 2 | ||||
Unsaturated count, win 5 | Unsaturated count, win 4 | ||||
Unsaturated count, win 7 | Unsaturated count, win 6 | ||||
Data for next eight windows, and so on. If the total number of windows is not a multiple of 8, the unsaturated counters are written immediately following the last window data. For example, if the total number of windows (including the black row) is 43, the first 40 windows are written out as per the 272-byte boundary above. Then the remaining three windows are written at +0, +32, and +64 bytes. The counts are written out at +96 instead of +256-byte boundary. | |||||
Table 6-127 lists the packet formats for AE/AWB in sum-only mode (VISS_RAWFE_H3A_AEWCFG[9:8] AEFMT = 0x2).
31 | 16 | 15 | 0 | ||
---|---|---|---|---|---|
Buffer address (byte address) VISS_RAWFE_H3A_AEWBUFST | Subsample Accum[1] | Subsample Accum[0] | Window 0 data | ||
Subsample Accum[3] | Subsample Accum[2] | ||||
Saturator Accum[1] | Saturator Accum[0] | ||||
Saturator Accum[3] | Saturator Accum[2] | ||||
VISS_RAWFE_H3A_AEWBUFST + 32 bytes | Subsample Accum[1] | Subsample Accum[0] | Window 1 data | ||
Subsample Accum[3] | Subsample Accum[2] | ||||
Saturator Accum[1] | Saturator Accum[0] | ||||
Saturator Accum[3] | Saturator Accum[2] | ||||
VISS_RAWFE_H3A_AEWBUFST + 64 bytes | Subsample Accum[1] | Subsample Accum[0] | Window 2 data | ||
Subsample Accum[3] | Subsample Accum[2] | ||||
Saturator Accum[1] | Saturator Accum[0] | ||||
Saturator Accum[3] | Saturator Accum[2] | ||||
VISS_RAWFE_H3A_AEWBUFST + 96 bytes | Subsample Accum[1] | Subsample Accum[0] | Window 3 data | ||
Subsample Accum[3] | Subsample Accum[2] | ||||
Saturator Accum[1] | Saturator Accum[0] | ||||
Saturator Accum[3] | Saturator Accum[2] | ||||
VISS_RAWFE_H3A_AEWBUFST + 128 bytes | Subsample Accum[1] | Subsample Accum[0] | Window 4 data | ||
Subsample Accum[3] | Subsample Accum[2] | ||||
Saturator Accum[1] | Saturator Accum[0] | ||||
Saturator Accum[3] | Saturator Accum[2] | ||||
VISS_RAWFE_H3A_AEWBUFST + 160 bytes | Subsample Accum[1] | Subsample Accum[0] | Window 5 data | ||
Subsample Accum[3] | Subsample Accum[2] | ||||
Saturator Accum[1] | Saturator Accum[0] | ||||
Saturator Accum[3] | Saturator Accum[2] | ||||
VISS_RAWFE_H3A_AEWBUFST + 192 bytes | Subsample Accum[1] | Subsample Accum[0] | Window 6 data | ||
Subsample Accum[3] | Subsample Accum[2] | ||||
Saturator Accum[1] | Saturator Accum[0] | ||||
Saturator Accum[3] | Saturator Accum[2] | ||||
VISS_RAWFE_H3A_AEWBUFST + 224 bytes | Subsample Accum[1] | Subsample Accum[0] | Window 7 data | ||
Subsample Accum[3] | Subsample Accum[2] | ||||
Saturator Accum[1] | Saturator Accum[0] | ||||
Saturator Accum[3] | Saturator Accum[2] | ||||
VISS_RAWFE_H3A_AEWBUFST + 256 bytes | Unsaturated count, win 1 | Unsaturated count, win 0 | Unsaturated block count for the above 8 windows | ||
Unsaturated count, win 3 | Unsaturated count, win 2 | ||||
Unsaturated count, win 5 | Unsaturated count, win 4 | ||||
Unsaturated count, win 7 | Unsaturated count, win 6 | ||||
Data for next eight windows, and so on. If the total number of windows is not a multiple of 8, the unsaturated counters are written immediately following the last window data. For example, if the total number of windows (including black row) is 43, the first 40 windows are written out as per the 272-byte boundary above. Then the remaining three windows are written at +0, +32, and +64 bytes. The counts are written out at +96 instead of +256-byte boundary. | |||||