Michael, Marcus,

Right now, the code is a work in progress so I haven't made a git
repository out of it. However, I have it on dropbox. Here's the link to the
source folder(p1_detector_impl.cc is the source in question):

*https://www.dropbox.com/sh/blfmxsaidrkh28t/AAArp8IHavzCGFlJs6E6-Hrca?dl=0
<https://www.dropbox.com/sh/blfmxsaidrkh28t/AAArp8IHavzCGFlJs6E6-Hrca?dl=0>*

As for Marcus's question regarding why use a circular buffer?

It isn't exactly a circular buffer now, but more of a shift register. The
reasons are as follows:
1. I needed running sums for correlations in B-Branch and C-Branch
correlators, and Power Sums (for average power) to normalize them. Then, I
also needed a finite delay buffer to delay the C-Branch before it gets
multiplied with the B-Branch.
2. It kind of carried over from the last implementation attempt:

Assertion: If a peak is detected after the multiplication, the signal
boundary is 1024 samples behind that index.

Once the correlations crossed a threshold (the code entered state=1), *instead
of looking back, I then needed to look forward to see if it were a false
alarm or not*. So, I compute the correlations across all available current
inputs and try to find a peak. If a peak is found, enter state=3 where we
do a correlation with the carrier distribution sequence after FFT of all
signals of interest. So, here, I not only needed just the single value (the
running sum), but the entire state of the delay register and the B-Branch
correlator.

I hope I am able to convey the reason for implementing one myself.

In the current implementation, I make an assumption that the threshold is
so high that only the desired signals would cross it (100-150 times the
average). So I skip the state=1 logic and directly go into state=2 logic of
aggressively doing a FFT and correlation with the CDS.

However, I don't think this has a binding on the incoming values. Use of
buffers is internal to the implementation, I am just printing out the
current values as they arrive.

For example, when I use the test file in 'make test', the values fed in are
non-zero from t=1. However, when using gnuradio-companion, t=56 line is
where the file source starts yielding proper inputs to my block. The stdout
prints of the initial values in both GRC and make tests are attached. The
gnuradio-companion version has my first 55 samples zeroed and the 56th
input onward is then same for both.


P.S.: The source stream is a 1.2 Gigs file, so haven't uploaded it. If
you'd like I can do that too. It was generated by using a DVB-T2 Tx block
and writing the output into a file sink.

Warm regards,
Anshul Thakur

On 31 March 2018 at 02:27, Müller, Marcus (CEL) <muel...@kit.edu> wrote:

> Hi Anshul,
>
> you shouldn't have to have your own buffer for a running sum – can you
> explain why you're doing that?
> A running sum can trivially be implemented with the IIR filter block
> with Feed-Forward taps (1,) and Feed-back taps (1,0)!
> Where does in a running sum does a division take place?
>
> > (a) Why am I getting the initial zero samples from the file block in
> > gnuradio_companion and non-zero values when using a vector_source in
> > unit tests?
>
> If these zeros are not in the file you're reading, your block has a
> bug!
>
>
> > (b) What can I do about it (here specifically as a fix to the
> > situation, and a general guideline to always remember)?
>
> good question, but we'd need to know your code, your motivation for a
> circular buffer, and why you're implementing a running sum yourself!
>
> Best regards,
> Marcus
>
> On Fri, 2018-03-30 at 23:19 +0530, Anshul Thakur wrote:
> > Hi,
> >
> > I used a circular buffer of finite size to keep the past 'N' power
> > values of the sample stream in my block as a part of creating a
> > running sum. This buffer is initialized to 0 in the constructor.
> > The running sum of powers is used to compute the average power used
> > in computing signal correlation.
> >
> > I have a capture stream (cfile) to test the operation of the block.
> > The test case uses a vector_source_c block to read the contents of
> > the file into memory. The unit tests pass without error.
> >
> > However, when I use the block in a flowgraph in that reads the same
> > file from a file source block gnuradio_companion, I am getting the
> > first few sample values as 0 which cause a divide by zero
> > problem. This messes up the rest of the running sum. I don't want to
> > put an 'if' block that checks for the zero condition as it is not
> > expected that a device/stream would ever spit out zero values.
> >
> > (a) Why am I getting the initial zero samples from the file block in
> > gnuradio_companion and non-zero values when using a vector_source in
> > unit tests?
> >
> > (b) What can I do about it (here specifically as a fix to the
> > situation, and a general guideline to always remember)?
> >
> > I am using GNURadio version 3.7.12.
> >
> > Regards,
> > Anshul
> > _______________________________________________
> > Discuss-gnuradio mailing list
> > Discuss-gnuradio@gnu.org
> > https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
t: 1 In (0,0) Current: (0,0)
t: 1	Correlation: nan	Avg: 0
t: 2 In (0,0) Current: (0,0)
t: 2	Correlation: nan	Avg: nan
t: 3 In (0,0) Current: (0,0)
t: 3	Correlation: nan	Avg: nan
t: 4 In (0,0) Current: (0,0)
t: 4	Correlation: nan	Avg: nan
t: 5 In (0,0) Current: (0,0)
t: 5	Correlation: nan	Avg: nan
t: 6 In (0,0) Current: (0,0)
t: 6	Correlation: nan	Avg: nan
t: 7 In (0,0) Current: (0,0)
t: 7	Correlation: nan	Avg: nan
t: 8 In (0,0) Current: (0,0)
t: 8	Correlation: nan	Avg: nan
t: 9 In (0,0) Current: (0,0)
t: 9	Correlation: nan	Avg: nan
t: 10 In (0,0) Current: (0,0)
t: 10	Correlation: nan	Avg: nan
t: 11 In (0,0) Current: (0,0)
t: 11	Correlation: nan	Avg: nan
t: 12 In (0,0) Current: (0,0)
t: 12	Correlation: nan	Avg: nan
t: 13 In (0,0) Current: (0,0)
t: 13	Correlation: nan	Avg: nan
t: 14 In (0,0) Current: (0,0)
t: 14	Correlation: nan	Avg: nan
t: 15 In (0,0) Current: (0,0)
t: 15	Correlation: nan	Avg: nan
t: 16 In (0,0) Current: (0,0)
t: 16	Correlation: nan	Avg: nan
t: 17 In (0,0) Current: (0,0)
t: 17	Correlation: nan	Avg: nan
t: 18 In (0,0) Current: (0,0)
t: 18	Correlation: nan	Avg: nan
t: 19 In (0,0) Current: (0,0)
t: 19	Correlation: nan	Avg: nan
t: 20 In (0,0) Current: (0,0)
t: 20	Correlation: nan	Avg: nan
t: 21 In (0,0) Current: (0,0)
t: 21	Correlation: nan	Avg: nan
t: 22 In (0,0) Current: (0,0)
t: 22	Correlation: nan	Avg: nan
t: 23 In (0,0) Current: (0,0)
t: 23	Correlation: nan	Avg: nan
t: 24 In (0,0) Current: (0,0)
t: 24	Correlation: nan	Avg: nan
t: 25 In (0,0) Current: (0,0)
t: 25	Correlation: nan	Avg: nan
t: 26 In (0,0) Current: (0,0)
t: 26	Correlation: nan	Avg: nan
t: 27 In (0,0) Current: (0,0)
t: 27	Correlation: nan	Avg: nan
t: 28 In (0,0) Current: (0,0)
t: 28	Correlation: nan	Avg: nan
t: 29 In (0,0) Current: (0,0)
t: 29	Correlation: nan	Avg: nan
t: 30 In (0,0) Current: (0,0)
t: 30	Correlation: nan	Avg: nan
t: 31 In (0,0) Current: (0,0)
t: 31	Correlation: nan	Avg: nan
t: 32 In (0,0) Current: (0,0)
t: 32	Correlation: nan	Avg: nan
t: 33 In (0,0) Current: (0,0)
t: 33	Correlation: nan	Avg: nan
t: 34 In (0,0) Current: (0,0)
t: 34	Correlation: nan	Avg: nan
t: 35 In (0,0) Current: (0,0)
t: 35	Correlation: nan	Avg: nan
t: 36 In (0,0) Current: (0,0)
t: 36	Correlation: nan	Avg: nan
t: 37 In (0,0) Current: (0,0)
t: 37	Correlation: nan	Avg: nan
t: 38 In (0,0) Current: (0,0)
t: 38	Correlation: nan	Avg: nan
t: 39 In (0,0) Current: (0,0)
t: 39	Correlation: nan	Avg: nan
t: 40 In (0,0) Current: (0,0)
t: 40	Correlation: nan	Avg: nan
t: 41 In (0,0) Current: (0,0)
t: 41	Correlation: nan	Avg: nan
t: 42 In (0,0) Current: (0,0)
t: 42	Correlation: nan	Avg: nan
t: 43 In (0,0) Current: (0,0)
t: 43	Correlation: nan	Avg: nan
t: 44 In (0,0) Current: (0,0)
t: 44	Correlation: nan	Avg: nan
t: 45 In (0,0) Current: (0,0)
t: 45	Correlation: nan	Avg: nan
t: 46 In (0,0) Current: (0,0)
t: 46	Correlation: nan	Avg: nan
t: 47 In (0,0) Current: (0,0)
t: 47	Correlation: nan	Avg: nan
t: 48 In (0,0) Current: (0,0)
t: 48	Correlation: nan	Avg: nan
t: 49 In (0,0) Current: (0,0)
t: 49	Correlation: nan	Avg: nan
t: 50 In (0,0) Current: (0,0)
t: 50	Correlation: nan	Avg: nan
t: 51 In (0,0) Current: (0,0)
t: 51	Correlation: nan	Avg: nan
t: 52 In (0,0) Current: (0,0)
t: 52	Correlation: nan	Avg: nan
t: 53 In (0,0) Current: (0,0)
t: 53	Correlation: nan	Avg: nan
t: 54 In (0,0) Current: (0,0)
t: 54	Correlation: nan	Avg: nan
t: 55 In (0,0) Current: (0,0)
t: 55	Correlation: nan	Avg: nan
t: 56 In (0,0) Current: (0.114258,-0.0864258)
t: 56	Correlation: 0	Avg: nan
t: 57 In (0,0) Current: (0.100586,-0.0454102)
t: 57	Correlation: 0	Avg: nan
t: 58 In (0,0) Current: (0.124512,-0.15332)
t: 58	Correlation: 0	Avg: nan
t: 59 In (0,0) Current: (0.293457,-0.193848)
t: 59	Correlation: 0	Avg: nan
t: 60 In (0,0) Current: (0.267578,0.0170898)
t: 60	Correlation: 0	Avg: nan
t: 61 In (0,0) Current: (-0.257324,0.100586)
t: 61	Correlation: 0	Avg: nan
t: 62 In (0,0) Current: (0.0385742,-0.078125)
t: 62	Correlation: 0	Avg: nan
t: 63 In (0,0) Current: (0.211914,-0.0322266)
t: 63	Correlation: 0	Avg: nan
t: 64 In (0,0) Current: (0.0200195,0.0834961)
t: 64	Correlation: 0	Avg: nan
t: 65 In (0,0) Current: (0.130859,0.0551758)
t: 65	Correlation: 0	Avg: nan
t: 66 In (0,0) Current: (-0.11377,-0.0424805)
t: 66	Correlation: 0	Avg: nan

Start testing: Mar 31 08:28 IST
----------------------------------------------------------
1/2 Testing: test_dvbt2
1/2 Test: test_dvbt2
Command: "/bin/sh" "/home/craft/Dropbox/PhD/SDR/GRC/gr-dvbt2/build/lib/test_dvbt2_test.sh"
Directory: /home/craft/Dropbox/PhD/SDR/GRC/gr-dvbt2/build/lib
"test_dvbt2" start time: Mar 31 08:28 IST
Output:
----------------------------------------------------------
.

<end of output>
Test time =   0.10 sec
----------------------------------------------------------
Test Passed.
"test_dvbt2" end time: Mar 31 08:28 IST
"test_dvbt2" time elapsed: 00:00:00
----------------------------------------------------------

2/2 Testing: qa_p1_detector
2/2 Test: qa_p1_detector
Command: "/bin/sh" "/home/craft/Dropbox/PhD/SDR/GRC/gr-dvbt2/build/python/qa_p1_detector_test.sh"
Directory: /home/craft/Dropbox/PhD/SDR/GRC/gr-dvbt2/build/python
"qa_p1_detector" start time: Mar 31 08:28 IST
Output:
----------------------------------------------------------
136383191
In constructor
t: 1 In (0,0) Current: (-0.16748,-0.0776367)
t: 1    Correlation: 0  Avg: 0
t: 2 In (0,0) Current: (-0.0864258,-0.109863)
t: 2    Correlation: 0  Avg: 0
t: 3 In (0,0) Current: (-0.144531,0.0864258)
t: 3    Correlation: 0  Avg: 0
t: 4 In (0,0) Current: (-0.0581055,0.043457)
t: 4    Correlation: 0  Avg: 0
t: 5 In (0,0) Current: (0.484863,-0.0273438)
t: 5    Correlation: 0  Avg: 0
t: 6 In (0,0) Current: (0.171875,0.185547)
t: 6    Correlation: 0  Avg: 0
t: 7 In (0,0) Current: (0.0268555,0.133789)
t: 7    Correlation: 0  Avg: 0
t: 8 In (0,0) Current: (0.0405273,-0.0151367)
t: 8    Correlation: 0  Avg: 0
t: 9 In (0,0) Current: (-0.39502,0.0942383)
t: 9    Correlation: 0  Avg: 0
t: 10 In (0,0) Current: (-0.0869141,0.090332)
t: 10   Correlation: 0  Avg: 0
t: 11 In (0,0) Current: (0.163086,0.0136719)
t: 11   Correlation: 0  Avg: 0
t: 12 In (0,0) Current: (0.104492,-0.019043)
t: 12   Correlation: 0  Avg: 0
t: 13 In (0,0) Current: (-0.0424805,0.00195312)
t: 13   Correlation: 0  Avg: 0
t: 14 In (0,0) Current: (-0.296387,-0.0620117)
t: 14   Correlation: 0  Avg: 0
t: 15 In (0,0) Current: (-0.12793,-0.23584)
t: 15   Correlation: 0  Avg: 0
t: 16 In (0,0) Current: (0.157227,-0.126465)
t: 16   Correlation: 0  Avg: 0
t: 17 In (0,0) Current: (0.0126953,0.105469)
t: 17   Correlation: 0  Avg: 0
t: 18 In (0,0) Current: (0.00830078,0.219238)
t: 18   Correlation: 0  Avg: 0
t: 19 In (0,0) Current: (0.10498,0.378906)
t: 19   Correlation: 0  Avg: 0
t: 20 In (0,0) Current: (-0.0395508,0.11377)
t: 20   Correlation: 0  Avg: 0
t: 21 In (0,0) Current: (-0.0112305,-0.284668)
t: 21   Correlation: 0  Avg: 0
t: 22 In (0,0) Current: (-0.0712891,-0.0488281)
t: 22   Correlation: 0  Avg: 0
t: 23 In (0,0) Current: (-0.18457,0.193359)
t: 23   Correlation: 0  Avg: 0
t: 24 In (0,0) Current: (0.125,-0.111328)
t: 24   Correlation: 0  Avg: 0
t: 25 In (0,0) Current: (0.0244141,-0.20166)
t: 25   Correlation: 0  Avg: 0
t: 26 In (0,0) Current: (-0.0507812,0.181152)
t: 26   Correlation: 0  Avg: 0
t: 27 In (0,0) Current: (0.319336,0.117188)
t: 27   Correlation: 0  Avg: 0
t: 28 In (0,0) Current: (0.102051,-0.24707)
t: 28   Correlation: 0  Avg: 0
t: 29 In (0,0) Current: (-0.0668945,0.081543)
t: 29   Correlation: 0  Avg: 0
t: 30 In (0,0) Current: (0.14209,0.342285)
t: 30   Correlation: 0  Avg: 0
t: 31 In (0,0) Current: (0.0673828,0.0957031)
t: 31   Correlation: 0  Avg: 0
t: 32 In (0,0) Current: (0.0380859,-0.111328)
t: 32   Correlation: 0  Avg: 0
t: 33 In (0,0) Current: (0.118164,-0.0585938)
t: 33   Correlation: 0  Avg: 0
t: 34 In (0,0) Current: (0.0878906,0.117188)
t: 34   Correlation: 0  Avg: 0
t: 35 In (0,0) Current: (0.0419922,0.129395)
t: 35   Correlation: 0  Avg: 0
t: 36 In (0,0) Current: (0.0419922,-0.00390625)
t: 36   Correlation: 0  Avg: 0
t: 37 In (0,0) Current: (0.140137,0.000976562)
t: 37   Correlation: 0  Avg: 0
t: 38 In (0,0) Current: (-0.0581055,0.0708008)
t: 38   Correlation: 0  Avg: 0
t: 39 In (0,0) Current: (-0.213379,0.125977)
t: 39   Correlation: 0  Avg: 0
t: 40 In (0,0) Current: (-0.0307617,0.121582)
t: 40   Correlation: 0  Avg: 0
t: 41 In (0,0) Current: (-0.043457,-0.0444336)
t: 41   Correlation: 0  Avg: 0
t: 42 In (0,0) Current: (-0.0107422,-0.059082)
t: 42   Correlation: 0  Avg: 0
t: 43 In (0,0) Current: (0.152832,-0.0253906)
t: 43   Correlation: 0  Avg: 0
t: 44 In (0,0) Current: (-0.0424805,-0.0849609)
t: 44   Correlation: 0  Avg: 0
t: 45 In (0,0) Current: (-0.0864258,-0.0258789)
t: 45   Correlation: 0  Avg: 0
t: 46 In (0,0) Current: (0.112305,0.0488281)
t: 46   Correlation: 0  Avg: 0
t: 47 In (0,0) Current: (0.112305,-0.103516)
t: 47   Correlation: 0  Avg: 0
t: 48 In (0,0) Current: (-0.00439453,0.113281)
t: 48   Correlation: 0  Avg: 0
t: 49 In (0,0) Current: (0.117676,0.132324)
t: 49   Correlation: 0  Avg: 0
t: 50 In (0,0) Current: (0.206543,-0.0297852)
t: 50   Correlation: 0  Avg: 0
t: 51 In (0,0) Current: (0.0449219,0.154297)
t: 51   Correlation: 0  Avg: 0
t: 52 In (0,0) Current: (0.110352,0.0512695)
t: 52   Correlation: 0  Avg: 0
t: 53 In (0,0) Current: (-0.0170898,-0.0288086)
t: 53   Correlation: 0  Avg: 0
t: 54 In (0,0) Current: (-0.0527344,0.194824)
t: 54   Correlation: 0  Avg: 0
t: 55 In (0,0) Current: (0.189941,0.0537109)
t: 55   Correlation: 0  Avg: 0
t: 56 In (0,0) Current: (0.114258,-0.0864258)
t: 56   Correlation: 0  Avg: 0
t: 57 In (0,0) Current: (0.100586,-0.0454102)
t: 57   Correlation: 0  Avg: 0
t: 58 In (0,0) Current: (0.124512,-0.15332)
t: 58   Correlation: 0  Avg: 0
t: 59 In (0,0) Current: (0.293457,-0.193848)
t: 59   Correlation: 0  Avg: 0
t: 60 In (0,0) Current: (0.267578,0.0170898)
t: 60   Correlation: 0  Avg: 0
t: 61 In (0,0) Current: (-0.257324,0.100586)
t: 61   Correlation: 0  Avg: 0
t: 62 In (0,0) Current: (0.0385742,-0.078125)
t: 62   Correlation: 0  Avg: 0
t: 63 In (0,0) Current: (0.211914,-0.0322266)
t: 63   Correlation: 0  Avg: 0
t: 64 In (0,0) Current: (0.0200195,0.0834961)
t: 64   Correlation: 0  Avg: 0
t: 65 In (0,0) Current: (0.130859,0.0551758)
t: 65   Correlation: 0  Avg: 0
t: 66 In (0,0) Current: (-0.11377,-0.0424805)
t: 66   Correlation: 0  Avg: 0

_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to