// Copyright (2019-2023) Paul Scherrer Institute #include "hls_jfjoch.h" void axis_128_to_512(hls::stream> &data_in, hls::stream> &data_out) { #pragma HLS INTERFACE ap_ctrl_none port=return #pragma HLS INTERFACE axis register both port=data_in #pragma HLS INTERFACE axis register both port=data_out ap_axiu<128,1,1,1> packet_128[4]; data_in >> packet_128[0]; while (!packet_128[0].user) { #pragma HLS PIPELINE II=4 data_in >> packet_128[1]; data_in >> packet_128[2]; data_in >> packet_128[3]; data_out << (packet_128[3].data,packet_128[2].data, packet_128[1].data,packet_128[0].data); data_in >> packet_128[0]; } } void axis_32_to_512(hls::stream> &data_in, hls::stream> &data_out) { #pragma HLS INTERFACE ap_ctrl_none port=return #pragma HLS INTERFACE axis register both port=data_in #pragma HLS INTERFACE axis register both port=data_out ap_axiu<32,1,1,1> packet_32; data_in >> packet_32; while (!packet_32.user) { #pragma HLS PIPELINE II=16 ap_uint<512> val = 0; val(31,0) = packet_32.data; for (int i = 1; i < 16; i++) { data_in >> packet_32; val(i * 32 + 31, i * 32) = packet_32.data; } data_out << val; data_in >> packet_32; } }