// motor_monitor.cpp
// 2016/06/15 by marsee
// 2016/06/25 : overflow を削除、return 1 のときがoverflow
//
#include <ap_int.h>
#include <hls_stream.h>
#include "motor_monitor.h"
int motor_monitor(hls::stream<ap_uint_1 >& sa, hls::stream<ap_uint_1 >& sb,
ap_uint<32> & sa_count, ap_uint_1 & sb_level){
#pragma HLS INTERFACE s_axilite port=return
#pragma HLS INTERFACE s_axilite port=sb_level
#pragma HLS INTERFACE s_axilite port=sa_count
#pragma HLS INTERFACE ap_hs port=sa
#pragma HLS INTERFACE ap_hs port=sb
ap_uint_1 sad;
ap_uint_1 sbd;
for (sa_count=0; sa_count!=0xffffffff; sa_count++){ // sa=1の間はループ
#pragma HLS PIPELINE II=1
sa >> sad;
sb >> sbd;
if (!sad)
break;
}
if (sa_count == 0xffffffff) // overflow
return 1;
for (sa_count=1; sa_count!=0xffffffff; sa_count++){ // sa=0の間はループ
#pragma HLS PIPELINE II=1
sa >> sad;
sb >> sbd;
if (sad)
break;
}
if (sa_count == 0xffffffff) // overflow
return 1;
sb_level = sbd; // saが立ち上がった時のsbの値
for (sa_count++; sa_count!=0xffffffff; sa_count++){ // sa=1の間はループ
#pragma HLS PIPELINE II=1
sa >> sad;
sb >> sbd;
if (!sad)
break;
}
if (sa_count == 0xffffffff) // overflow
return 1;
return 0;
}
// motor_monitor_tb.cpp
// 2016/06/15 by marsee
// 2016/06/25 : overflow を削除、return 1 のときがoverflow
//
#include <ap_int.h>
#include <hls_stream.h>
#include "motor_monitor.h"
#define DATASIZE 20
int motor_monitor(hls::stream<ap_uint_1 >& sa, hls::stream<ap_uint_1 >& sb,
ap_uint<32> & sa_count, ap_uint_1 & sb_level);
int main(){
using namespace std;
ap_uint_1 saa[DATASIZE] = {1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1};
ap_uint_1 sba[DATASIZE] = {0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1};
hls::stream<ap_uint_1> sa;
hls::stream<ap_uint_1> sb;
ap_uint<32> sa_count;
ap_uint_1 sb_level;
for (int i=0; i<DATASIZE; i++){
sa << saa[i];
sb << sba[i];
}
int ret_val = motor_monitor(sa, sb, sa_count, sb_level);
printf("sa_count = %d, sb_level = %d, return value = %d\n",
(unsigned int)sa_count, (unsigned int)sb_level, ret_val);
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 |
31 | - | - | - | - | - | - |