Changeset 5463

Show
Ignore:
Timestamp:
10/20/07 21:33:18 (6 years ago)
Author:
jgaeddert
Message:

fixing loop filter coefficients to work with matched filter delay

Location:
experimental/components/SymbolSyncPoly/branches/SymbolSyncPoly-metadata/src
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • experimental/components/SymbolSyncPoly/branches/SymbolSyncPoly-metadata/src/FrameSynchronizer.cpp

    r5462 r5463  
    304304            I_in, Q_in, N_in, num_read, 
    305305            I_out, Q_out, buf_len, num_written); 
     306        //printf("fs cv = %f\n", cv/(2*PI)); 
    306307 
    307308        DEBUG(7, FrameSynchronizer, "Emptying port buffer...") 
  • experimental/components/SymbolSyncPoly/branches/SymbolSyncPoly-metadata/src/FrameSynchronizerDSP.cpp

    r5462 r5463  
    5151    q_hat_cl = 0.0f; 
    5252    q_prime_cl = 0.0f; 
    53     UpdateCostasLoopFilterCoefficients(0.001f); 
     53    UpdateCostasLoopFilterCoefficients(0.02f); 
    5454 
    5555#ifdef FS_LOGGING 
     
    7979    unsigned int &num_written) 
    8080{ 
    81     unsigned int i; 
     81    alpha_s = 0.027f; 
     82    beta_s = 1.02f; 
     83 
     84    int i(0); 
    8285    short I, Q; 
    8386    num_read = 0; 
     
    8588    //printf("nco CV = %f\n", cv/(2*PI)); 
    8689 
    87     for (i=0; i<input_length; i++) { 
     90    while ( i < (signed int) input_length ) { 
    8891        v++; 
    8992 
     
    9295        //I = I_in[i]; 
    9396        //Q = Q_in[i]; 
     97        i++; 
    9498 
    9599        // push samples into buffer 
     
    100104         
    101105        // compute costas loop phase error on matched-filter outputs 
    102         //pd2_cl = GenerateCostasLoopPhaseError(mf_i, mf_q); 
    103         pd2_cl = GenerateCostasLoopPhaseError(I, Q); 
     106        ///\todo matched filter output won't work because of delay 
     107        //pd2_cl = GenerateCostasLoopPhaseError(I, Q); 
     108        pd2_cl = GenerateCostasLoopPhaseError(mf_i, mf_q); 
    104109        pd2_cl /= Ac; 
    105110         
     
    109114        // update nco 
    110115        UpdateNCO(); 
     116            //I_out[num_written] = mf_i; 
     117            //Q_out[num_written] = mf_q; 
     118            //num_written++; 
    111119 
    112120        // decimate 
     
    117125            Q_out[num_written] = mf_q; 
    118126            num_written++; 
     127            //printf("I = %d, Q = %d\n", mf_i, mf_q); 
    119128 
    120129            // generate timing error 
     
    133142                break; 
    134143            case SKIP: 
    135                 i++; 
     144                v--; 
     145                //printf("skip\n"); 
    136146                lc = SHIFT; 
    137147                break; 
    138148            case STUFF: 
    139                 i--; 
     149                v++; 
     150                //printf("stuff\n"); 
    140151                lc = SHIFT; 
    141152                break; 
     
    150161                r_frame_sync = abs(r); 
    151162                std::cout << "PN FRAME SYNC CODE FOUND!!!" << std::endl; 
     163                std::cout << "  r = " << r_frame_sync << std::endl; 
    152164 
    153165                // check for phase inversion; if so inject pi radians into NCO 
     
    175187     
    176188    num_read = input_length; 
     189    return false; 
     190} 
     191 
     192// Find frame header 
     193bool FrameSynchronizerDSP::ExtractFrameHeader( 
     194    short * I_in, 
     195    short * Q_in, 
     196    unsigned int input_length, 
     197    unsigned int &num_read, 
     198    short * I_out, 
     199    short * Q_out, 
     200    unsigned int output_length, 
     201    unsigned int &num_written) 
     202{ 
     203    unsigned int i; 
     204    short I, Q; 
     205    num_read = 0; 
     206    num_written = 0; 
    177207    return false; 
    178208} 
  • experimental/components/SymbolSyncPoly/branches/SymbolSyncPoly-metadata/src/FrameSynchronizerDSP.h

    r5462 r5463  
    6868        short * I_in, 
    6969        short * Q_in, 
    70         unsigned int N_in, 
    71         unsigned int &num_read); 
     70        unsigned int input_length, 
     71        unsigned int &num_read, 
     72        short * I_out, 
     73        short * Q_out, 
     74        unsigned int output_length, 
     75        unsigned int &num_written); 
    7276 
    7377    /// \brief Decodes the frame header information 
     
    139143        alpha_cl = 2*XI*beta_cl; 
    140144 
    141         //beta_cl /= Ac; 
    142         //alpha_cl /= Ac; 
     145        printf("\n\nbeta_cl = %f\n\n\n", beta_cl); 
     146        printf("\n\nalpha_cl = %f\n\n\n", alpha_cl); 
    143147 
     148        ///\todo this is necessary because of the delay introduced by the filter 
     149        beta_cl /= 30.0f; 
    144150    }; 
    145151