This AIE kernel implements the matrix transpose operation required to feed the proper 16-point input samples to the DFT-16 on the third dimension of the 3D cube. Once again the matrix transpose may be implemented completely within the array using the Memory tile.
The write_bd
buffer descriptor here is configured to match the read_bd
buffer descriptor from the TRANSPOSE-0 kernel as we need to write-back the transformed results into the same memory locations from which they are read from. This configuration is shown below.
tiling_parameters write_bd = {
.buffer_dimension = {8,16,16},
.tiling_dimension = {1,1,1},
.offset = {0,0,0},
.tile_traversal = {{.dimension=1, .stride=1, .wrap=9},
{.dimension=2, .stride=1, .wrap=16},
{.dimension=0, .stride=1, .wrap=7}} };
The read_bd
buffer descriptor here is configured to deliver the samples required by the DFT-16 kernel that follows. Those sample are read of the third dimension of the 3D data cube, taken from dimensions \(16,9,6\) corresponding to configurations \(2,1,0\).
tiling_parameters read_bd = {
.buffer_dimension = {8,16,16},
.tiling_dimension = {1,1,1},
.offset = {0,0,0},
.tile_traversal = {{.dimension=2, .stride=1, .wrap=16},
{.dimension=1, .stride=1, .wrap=9},
{.dimension=0, .stride=1, .wrap=7}} };
Once again, repetition_count
is configured to 8 and num_buffers
is configured to 2 for reasons explained above.