peakCentering version 1.6.1: fix bugs and add frmae lastSync

This commit is contained in:
zengHQ 2025-11-24 14:18:11 +08:00
parent 9d4db3772f
commit f7ebcdb77e

View File

@ -113,7 +113,7 @@ void peakCentering(
if(0 == linePk.len)
{
if(linePk.value >= 240)
pkCenter = RGN_DATA_WIN_SIZE/2;
pkCenter = RGN_DATA_WIN_SIZE;
else
pkCenter = 0;
}
@ -147,6 +147,7 @@ void peakCentering(
else//for(int i = 0; i < 8; i ++)
{
ap_uint<8> wrPos_0 = i * 2 - 2 + RGN_DATA_WIN_SIZE/2;
ap_uint<8> lastPos = wrPos_0 -1;
ap_uint<8> wrPos_1 = i * 2 - 1 + RGN_DATA_WIN_SIZE/2;
ap_uint<8> rdPos_0 = pkCenter - RGN_DATA_WIN_SIZE/2 + i* 2 -2;
ap_uint<8> rdPos_1 = pkCenter - RGN_DATA_WIN_SIZE/2 + i* 2 -1;
@ -191,24 +192,24 @@ void peakCentering(
}
else
{
currPeak.start = wrPos_1;
currPeak.len = 1;
currPeak.value = data_1;
currPeak.start = wrPos_0;
currPeak.len = 2;
currPeak.value = data_0;
SM = 0b11;
linePk.value = data_0; //record initial value
}
break;
case 0b11: //wait state
if(lastData < data_0)
case 0b11: //horizontal state
if(lastData < data_0) //rising
{
if(data_0 < data_1) //rising
if(data_0 < data_1) //rising - rising. if i==8, data_1 is invalid peak,
{
currPeak.start = wrPos_1;
currPeak.len = 1;
currPeak.value = data_1;
SM = 0b01;
}
else if(data_0 > data_1) //falling
else if(data_0 > data_1) //rising - falling, data_0 is peak
{
if( (wrPos_0 >= pkRng_S) && (wrPos_0 <= pkRng_E) )
{
@ -218,7 +219,7 @@ void peakCentering(
}
SM = 0b10;
}
else //data_0 == data_1
else //data_0 == data_1, if i==8, data_0 and data_1 is invalid peak,
{
currPeak.start = wrPos_0;
currPeak.len = 2;
@ -226,23 +227,20 @@ void peakCentering(
SM = 0b01;
}
}
else if(lastData > data_0)
else if(lastData > data_0) //falling
{
if(data_0 < data_1) //peak is at edge (pos:0,1,2...), invalid
if((currPeak.start >= pkRng_S) && (lastPos <= pkRng_E))
linePk = currPeak;
if(data_0 < data_1) //falling - rising, peak is at lastData (pos:0,1,2...), invalid
{
if( (lastData > data_0)&& (wrPos_0 > pkRng_S))
{
linePk = currPeak;
}
currPeak.start = wrPos_1;
currPeak.len = 1;
currPeak.value = data_1;
SM = 0b01;
}
else if(data_0 >= data_1)//falling
{
else// if(data_0 >= data_1)//falling, peak is at lastData
SM = 0b10;
}
}
else //lastData == data_0
{
@ -256,6 +254,12 @@ void peakCentering(
}
else if(data_0 > data_1) //falling
{
if( (currPeak.start >= pkRng_S) && (wrPos_0 >= pkRng_S))
{
linePk.start = currPeak.start;
linePk.len = currPeak.len + 1;
linePk.value = currPeak.value;
}
SM = 0b10;
}
else
@ -265,13 +269,13 @@ void peakCentering(
case 0b01: //rising
if(lastData < data_0)
{
if(data_0 <= data_1)
if(data_0 < data_1)
{
currPeak.start = wrPos_1;
currPeak.len = 1;
currPeak.value = data_1;
}
else if(data_0 > data_1) //change to falling
else if(data_0 > data_1) //change to falling, compare with exist
{
if( (wrPos_0 >= pkRng_S) && (wrPos_0 <= pkRng_E) && (data_0 >linePk.value ))
{
@ -291,7 +295,7 @@ void peakCentering(
else if(lastData > data_0)
{
//compare with exist
if( (preCenter >= pkRng_S) && (preCenter <= pkRng_E) && (currPeak.value > linePk.value))
if( (currPeak.start >= pkRng_S) && (lastPos <= pkRng_E) && (currPeak.value > linePk.value))
{
linePk = currPeak;
}
@ -314,7 +318,7 @@ void peakCentering(
}
else if(data_0 > data_1)
{
if( (preCenter_1 >= pkRng_S) && (preCenter_1 <= pkRng_E) && (currPeak.value > linePk.value))
if( (currPeak.start >= pkRng_S) && (wrPos_0 = pkRng_E) && (currPeak.value > linePk.value))
{
linePk.start = currPeak.start;
linePk.value = currPeak.value;
@ -327,7 +331,7 @@ void peakCentering(
currPeak.len += 2;
if(i == 8) //last one
{
if( (currPeak.start <= pkRng_E) && (currPeak.value > linePk.value))
if( (currPeak.start >= pkRng_S) && (wrPos_1 <= pkRng_E) && (currPeak.value > linePk.value))
{
linePk = currPeak;
}