38 lines
1.2 KiB
C++
38 lines
1.2 KiB
C++
// Copyright (2019-2023) Paul Scherrer Institute
|
|
|
|
#include "hls_jfjoch.h"
|
|
|
|
void mask_missing(STREAM_512 &data_in,
|
|
STREAM_512 &data_out,
|
|
hls::stream<axis_completion > &s_axis_completion,
|
|
hls::stream<axis_completion > &m_axis_completion) {
|
|
#pragma HLS INTERFACE ap_ctrl_none port=return
|
|
#pragma HLS INTERFACE register both axis port=data_in
|
|
#pragma HLS INTERFACE register both axis port=data_out
|
|
#pragma HLS INTERFACE register both axis port=m_axis_completion
|
|
#pragma HLS INTERFACE register both axis port=s_axis_completion
|
|
|
|
packet_512_t packet;
|
|
data_in >> packet;
|
|
data_out << packet;
|
|
|
|
axis_completion cmpl;
|
|
s_axis_completion >> cmpl;
|
|
while (!cmpl.last) {
|
|
m_axis_completion << cmpl;
|
|
for (int i = 0; i < RAW_MODULE_SIZE * sizeof(uint16_t) / 64; i++) {
|
|
#pragma HLS PIPELINE II=1
|
|
data_in >> packet;
|
|
if (!cmpl.packet_mask[i / 128]) {
|
|
for (int j = 0; j < 512; j++)
|
|
packet.data[j] = 1;
|
|
}
|
|
data_out << packet;
|
|
}
|
|
s_axis_completion >> cmpl;
|
|
}
|
|
m_axis_completion << cmpl;
|
|
|
|
data_in >> packet;
|
|
data_out << packet;
|
|
} |