Hi all,
           I have a question on the synchronization of ofdm example,namely the 
sch&cox source code.
   
           The plateau_detector_fb_impl.cc can find the plateau,and then 
header_payload_demux_impl can find the head data.
            STEP 1: plateau_detector_fb_impl find the plateau.
            flank_start = i;
          while(i < noutput_items && in[i] >= d_threshold)
            i++;
          if((i - flank_start) > 1) { // 1 Sample is not a plateau
            out[flank_start + (i-flank_start)/2] = 1;
            i = std::min(i+d_max_len, noutput_items-1);
          }
            STEP 2:header_payload_demux_impl can find the head data
            case STATE_HEADER:
              if (check_items_available(d_header_len, ninput_items, 
noutput_items, nread)) {
                copy_n_symbols(in, out_header, PORT_HEADER, d_header_len);
              STEP  3:
             memcpy((void *) out, (void *) (in + d_gi * d_itemsize), 
d_items_per_symbol * d_itemsize);


            I think may be the code have some errors.For example,the data is    
cdef+abcdef,the cyclic prefix is cdef,and the data is abcdef.
According step1,the output will ouput 0010000000.Because the sch&cox will 
output a plateau in the cyclic prefix,namely the index corresponding to the 
cdefa will be the plateau.The source code output 1 in the middle.Namely the 
index corresponding to the middle "e" output 1.
           According to the step 2 and step3, we copy the d_items_per_symbol * 
d_itemsize bytes after (in + d_gi * d_itemsize) to the output.In the example, 
cdef+abcdef,the d_gi is 4. (in + d_gi * d_itemsize) will correspond to the 
c.Then output d_items_per_symbol is 6,then output cdef..But the true head data 
is abcdef,so I think maybe the source code have some problems.Is my 
understanding right?
            Thank you.
Best regards,
zswx
         
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to