EARLYLATE now verified
This commit is contained in:
parent
dde8fa0d08
commit
09c873c13d
2 changed files with 16 additions and 7 deletions
3
csdr.c
3
csdr.c
|
@ -2376,7 +2376,8 @@ int main(int argc, char *argv[])
|
|||
timing_recovery_state_t state = timing_recovery_init(algorithm, decimation, add_q);
|
||||
|
||||
int debug_i=0;
|
||||
state.debug_writefiles = state.debug_force = !!debug_n; //should remove that later
|
||||
state.debug_writefiles = 1;
|
||||
state.debug_force = !!debug_n; //should remove that later
|
||||
FREAD_C;
|
||||
for(;;)
|
||||
{
|
||||
|
|
20
libcsdr.c
20
libcsdr.c
|
@ -1727,6 +1727,10 @@ void timing_recovery_cc(complexf* input, complexf* output, int input_size, timin
|
|||
for(si=0;;si++)
|
||||
{
|
||||
if(current_bitstart_index + num_samples_halfbit * 3 >= input_size) break;
|
||||
|
||||
int el_point_left_index = current_bitstart_index + num_samples_quarterbit * 3;
|
||||
int el_point_right_index = current_bitstart_index + num_samples_quarterbit * 1 - correction_offset;
|
||||
int el_point_mid_index = current_bitstart_index + num_samples_halfbit;
|
||||
output[si++] = input[current_bitstart_index + num_samples_halfbit];
|
||||
error = (
|
||||
iof(input, current_bitstart_index + num_samples_halfbit * 3) - iof(input, current_bitstart_index + num_samples_halfbit)
|
||||
|
@ -1754,14 +1758,17 @@ void timing_recovery_cc(complexf* input, complexf* output, int input_size, timin
|
|||
0); //last argument is dummy, for the comma
|
||||
}
|
||||
if(MTIMINGR_HDEBUG) fprintf(stderr, "current_bitstart_index = %d, error = %g\n", current_bitstart_index, error);
|
||||
current_bitstart_index += num_samples_bit + ((error)?((error>0)?1:-1):0);
|
||||
//hey, this should be fixed here:
|
||||
correction_offset = num_samples_halfbit * (-error/2);
|
||||
current_bitstart_index += num_samples_bit + correction_offset;
|
||||
//current_bitstart_index += num_samples_bit + ((error)?((error>0)?1:-1):0);
|
||||
if(MTIMINGR_HDEBUG) fprintf(stderr, "new current_bitstart_index = %d\n", current_bitstart_index);
|
||||
if(si>=input_size) { break; }
|
||||
}
|
||||
}
|
||||
else if(state->algorithm == TIMING_RECOVERY_ALGORITHM_EARLYLATE)
|
||||
{
|
||||
//bitstart index should be at symbol maximum effect point
|
||||
//bitstart index should be at symbol edge, maximum effect point is at current_bitstart_index + num_samples_halfbit
|
||||
for(si=0;;si++)
|
||||
{
|
||||
//the MathWorks style algorithm has correction_offset.
|
||||
|
@ -1775,10 +1782,12 @@ void timing_recovery_cc(complexf* input, complexf* output, int input_size, timin
|
|||
if(MTIMINGR_HDEBUG) fprintf(stderr, "correction_offset = %d, reset to 0!\n", correction_offset);
|
||||
correction_offset = 0;
|
||||
}
|
||||
output[si++] = input[current_bitstart_index];
|
||||
//should check if the sign of the correction_offset (or disabling it) has an effect on the EVM.
|
||||
//it is also a possibility to disable multiplying with the magnitude
|
||||
int el_point_left_index = current_bitstart_index + num_samples_quarterbit * 3;
|
||||
int el_point_right_index = current_bitstart_index + num_samples_quarterbit * 1 - correction_offset;
|
||||
int el_point_mid_index = current_bitstart_index + num_samples_halfbit;
|
||||
output[si++] = input[current_bitstart_index + el_point_mid_index];
|
||||
|
||||
error = ( iof(input, el_point_left_index) - iof(input, el_point_right_index)) * iof(input, el_point_mid_index);
|
||||
if(state->use_q)
|
||||
|
@ -1801,14 +1810,13 @@ void timing_recovery_cc(complexf* input, complexf* output, int input_size, timin
|
|||
current_bitstart_index,
|
||||
correction_offset,
|
||||
state->debug_writefiles,
|
||||
4,
|
||||
0 , 'b',
|
||||
3,
|
||||
num_samples_quarterbit * 1, 'r',
|
||||
num_samples_quarterbit * 2, 'r',
|
||||
num_samples_quarterbit * 3, 'r',
|
||||
0);
|
||||
}
|
||||
correction_offset = num_samples_halfbit * (-error/2);
|
||||
correction_offset = num_samples_halfbit * (error/2);
|
||||
current_bitstart_index += num_samples_bit + correction_offset;
|
||||
if(si>=input_size)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue