// DMA_pow2_axis.cpp
// 2022/02/22 by marsee
// 2022/02/26 : Added tuser and tlast.
//
#include <ap_int.h>
#include <hls_stream.h>
#include <ap_axi_sdata.h>
int DMA_pow2_axis(hls::stream<ap_axis<32,1,1,1> >& data,
hls::stream<ap_axis<32,1,1,1> >& result){
#pragma HLS INTERFACE mode=s_axilite port=return
#pragma HLS INTERFACE mode=axis register_mode=both port=result register
#pragma HLS INTERFACE mode=axis register_mode=both port=data register
ap_axis<32,1,1,1> dt, rlt;
for(int i=0; i<10; i++){
data >> dt;
rlt.data = dt.data * dt.data;
rlt.last = dt.last;
rlt.user = dt.user;
rlt.keep = dt.keep;
rlt.strb = dt.strb;
result << rlt;
}
return(0);
}
// DMA_pow2_axis_tb.cpp
// 2022/02/22 by marsee
// 2022/02/26 : Added tuser and tlast.
//
#include <ap_int.h>
#include <hls_stream.h>
#include <ap_axi_sdata.h>
int DMA_pow2_axis(hls::stream<ap_axis<32,1,1,1> >& data,
hls::stream<ap_axis<32,1,1,1> >& result);
int main(){
using namespace std;
hls::stream<ap_axis<32,1,1,1> > data;
hls::stream<ap_axis<32,1,1,1> > result;
ap_axis<32,1,1,1> dt;
ap_axis<32,1,1,1> rlt;
for(int i=0; i<10; i++){
dt.data = i;
if(i == 0)
dt.user = 1;
else
dt.user = 0;
if(i == 9)
dt.last = 1;
else
dt.last = 0;
dt.keep = 0xf;
dt.strb = 0xf;
data << dt;
}
DMA_pow2_axis(data, result);
cout << endl;
for(int i=0; i<10; i++){
result >> rlt;
cout << "data = " << i << " result = " << rlt.data << " user = " << rlt.user
<< " last = " << rlt.last << " keep = " << rlt.keep
<< " strb = " << rlt.strb << endl;
}
cout << endl;
return(0);
}
日 | 月 | 火 | 水 | 木 | 金 | 土 |
---|---|---|---|---|---|---|
- | - | - | - | - | 1 | 2 |
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |