How to use ap_fixed data type to communicate with the ip made by the vivado hls?

# include "ap_fixed.h"
typedef ap_fixed<8, 2> data_t;
#define DIM_1 3
#define DIM_2 4
#define DIM_3 5

void top(data_t A[DIM_1][DIM_2],data_t B[DIM_2][DIM_3],data_t out[DIM_1][DIM_3])
{
#pragma HLS INTERFACE s_axilite port=return
#pragma HLS INTERFACE m_axi depth=1024 port=A offset=slave
#pragma HLS INTERFACE m_axi depth=1024 port=B offset=slave
#pragma HLS INTERFACE m_axi depth=1024 port=out offset=slave
    for (int i = 0; i < DIM_1;  ++i)
    {
        for(int j = 0; j < DIM_3; ++j)
        {
#pragma HLS PIPELINE
            data_t tmp = 0;
            for(int t = 0; t < DIM_2; ++t)
            {
                tmp += A[i][t] * B[t][j];
            }
            out[i][j] = tmp;
        }
    }
}

The code to compute the multiplication of two matrix above is my test on how to use ap_fixed data type. I want to create a ap_fixed<N, M> data, the N and M will be any number in my work. I try to use the code like below to allocate the ram to communicate with the pl

a = pynq.allocate(shape=(50,), dtype='f4')

the dtype or data_type not support the ap_fixed type. I didn’t find the ap_fixed solution in the python package of pynq.
I can’t find the right way to use both float in the pynq linux and ap_fixed<N, M> in the hls code.
Thanks for your help.