Hello, I’ve written an overlay that takes in an array of ap_uint<10> which represent control words for my design. This is controlled with an axilite interface to the zynq PS.
The ports are defined as follows:
void March_Controller (//ports
//Control Signals
//March_Controller_Class::control_signals_format& control_signals,
std::array<std::array<ap_uint<10>,17>,16>& operation_array_port,
DUT_address& addresses_high,
DUT_address& addresses_low,
//DUT Communication
hls::stream<DUT_command_packet>& DUT_command_stream
//output
)
{//port interface definition
#pragma HLS INTERFACE mode=axis port=DUT_command_stream
#pragma HLS INTERFACE mode=s_axilite port=addresses_high bundle=address_space
#pragma HLS INTERFACE mode=s_axilite port=addresses_low bundle=address_space
#pragma HLS INTERFACE mode=s_axilite port=operation_array_port bundle=operations
#pragma HLS INTERFACE mode=s_axilite port=return
#pragma HLS stable variable=addresses_high,addresses_low,operation_array_port
//body code follows, not relevant here
The block diagram is as follows:
I’m looking to write to the operation_array port, but what is the best way to write 10bit words over a 32bit interface? I assume the first array element will be at address 0, and I know that the entire array will fit exactly into 85 32 bit words, I’m just wondering the best way to order the 10bit words within that sequence.
Any help is much appreciated!