Sean,

Thanks for the tip! Is the k value the reference value in the AGC2 block or
the max gain? Would you mind explaining the equation you used a little
more? From what I understand of it, the seq is the 1's and 0's that make up
the pseudorandom preamble, N is the sequence length and i is the specific
value of the sequence when summing. Is that right or am I way off base?



Logan Washbourne
Electrical Engineering Graduate Student
(Electromagnetics)


On Wed, Oct 14, 2015 at 9:43 AM, Nowlan, Sean <sean.now...@gtri.gatech.edu>
wrote:

> ​We saw a lot of improvement in the performance of the Correlation
> Estimator block once we calculated a level for the AGC. In our case, we're
> looking for a BPSK preamble that is a pseudorandom sequence. The corr_est
> block is provided with the match-filtered version of the preamble sequence.
> So we calculated the average energy per sample of that sequence as K =
> \frac{ \sum_{i}^{N}(\abs{seq}^2) }{ N }. (Sorry if the LaTeX notation is a
> bit off). So K is the target level we use in the AGC2 block. This seems to
> work pretty well for us.
>
>
> Sean
>
>
> ------------------------------
> *From:* discuss-gnuradio-bounces+sean.nowlan=gtri.gatech....@gnu.org
> <discuss-gnuradio-bounces+sean.nowlan=gtri.gatech....@gnu.org> on behalf
> of Washbourne, Logan <lwas...@ostatemail.okstate.edu>
> *Sent:* Tuesday, October 13, 2015 12:03 PM
> *To:* GNURadio Discussion List
> *Subject:* Re: [Discuss-gnuradio] Correlation Estimator Over the Air
>
> Rich,
>
> Ah, that makes so much sense now. I was modulating all that came out of
> the costas loop and packing the bits into bytes which essentially means I
> was undoing the syncing the blocks before it were doing. This morning I
> tried searching for the preamble in the binary stream that was output from
> the constellation decoder and I found it. It was 98 samples in, which
> confused me, but now that I know I am looking for a tag then that makes
> perfect sense.
>
> I just tried that same process, looking for the preamble in the binary
> stream(using matlab) for the over the air program and I still can't find
> it, but I am going to play around with the AGC block and see if I can't
> tweak it enough to work.
>
> I really appreciate your help, I finally feel like I'm getting close to my
> goal.
>
> Logan Washbourne
> Electrical Engineering Graduate Student
> (Electromagnetics)
>
>
> On Tue, Oct 13, 2015 at 10:55 AM, Richard Bell <richard.be...@gmail.com>
> wrote:
>
>> Logan,
>>
>> How are you doing this test to see if the bit stream comes out?
>>
>> The corr_est block correlates against a known sequence and when the
>> correlation output is above a threshold, tags the local maximum item around
>> that beak. Now it's up to you to do something with that tag. It places the
>> tag at the very front of the correlation sequence, so one of the first
>> things you need to do is handle the tag placement. You have some control
>> over that with the builtin delay paramter, but sometimes that's not enough.
>>
>> I would recommend taking a step back and proving you know how to do the
>> transformations that don't involve synchronization and channel correction.
>> Take your input data, map it to symbols, modulate it and then immediately
>> reverse the process. No channel, no noise, no synchronization. If you can't
>> make this simulation work, you are misunderstanding something.
>>
>> Rich
>>
>> On Mon, Oct 12, 2015 at 1:28 PM, Washbourne, Logan <
>> lwas...@ostatemail.okstate.edu> wrote:
>>
>>> Rich and others,
>>>
>>> I added the AGC block to RX side and after playing with the parameters
>>> for awhile I got a correlation spike! My next step was to confirm that my
>>> output equalled my input (byte-wise). In order to accomplish this, I added
>>> a Constellation Decoder block after the costas loop and used the
>>> constellation object as the input parameter. Then I repacked the bits into
>>> 8 bit bytes and saved it to a file. I also saved the input byte stream to a
>>> file. I looked at those files in Matlab and so far I have not been able to
>>> find the preamble in the output byte stream.
>>>
>>> After not being able to determine if this communication system was
>>> working( the TX and RX programs utilizing the USRPs), I took a step back
>>> and tried to figure out how to confirm if the test_corr_est.grc had the
>>> same output as its input and I'm running into the same problem, I haven't
>>> been able to find the preamble in the output.
>>>
>>> Both programs show a clear correlation spike, I just want to put my mind
>>> at ease and verify if it's working through the actual bytes. One last note,
>>> the packed output byte stream is roughly 5.5 times smaller than the input
>>> byte stream, which I was expecting a really close 1:1 size, this makes me
>>> think I am overlooking a consequence of one of the blocks, namely the
>>> Correlation Estimator, Polyphase Clock Sync, or the Costas Loop.
>>>
>>> Does anyone have any suggestions?
>>>
>>> I know this thread is getting a little long, but I appreciate everyone's
>>> patience with my questions.
>>>
>>>
>>>
>>> Logan Washbourne
>>> Electrical Engineering Graduate Student
>>> (Electromagnetics)
>>>
>>>
>>> On Wed, Oct 7, 2015 at 11:26 AM, Richard Bell <richard.be...@gmail.com>
>>> wrote:
>>>
>>>> Ah, yes. I suspect you don't have an AGC in your flowgraph? Whenever
>>>> you're thresholding against some static number, you need to be sure your
>>>> input signal is set to a known amplitude, which is what the AGC does for
>>>> you. If you put an AGC in the chain you should see peak values that get
>>>> close to your simulation values. The AGC produces a stable platform for the
>>>> rest of your blocks to sit on.
>>>>
>>>> The AGC parameters can really play havoc with your system. The AGC can
>>>> be the cause of a lot of headache. If you find yourself debugging something
>>>> that makes no sense, often it's the AGC's fault, in my experience. I
>>>> recommend you create a simulation that stresses the AGC and prove it will
>>>> work as best you can before going to over the air.
>>>>
>>>> Rich
>>>>
>>>>
>>>>
>>>> On Wed, Oct 7, 2015 at 9:09 AM, Washbourne, Logan <
>>>> lwas...@ostatemail.okstate.edu> wrote:
>>>>
>>>>> Last time I replied to the mailing list, did it go directly to your
>>>>> email? If so, I will double check next time to make sure it goes to the
>>>>> list.
>>>>>
>>>>> Your explanation makes sense, with the limited knowledge of filtering
>>>>> that I have.
>>>>>
>>>>> I changed the filter length on my RX side for the rrc_taps and nothing
>>>>> seemed to change. But I think what the overarching problem is, is my 
>>>>> metric
>>>>> for success. The way I am determining if the communication has been
>>>>> successful is the amplitude of the correlation value coming out of the
>>>>> Correlation Estimator block. Through all of my testing over the air, the
>>>>> correlation value hasn't seemed to have changed. I can register an
>>>>> extremely small value, of .5-1.5 if I set the QT GUI TIME SINK to
>>>>> autoscale, but the non-over the air version outputs a value of roughly 75,
>>>>> which has been causing me to call the communication a failure.
>>>>>
>>>>> Do you have any advice?
>>>>>
>>>>> Logan Washbourne
>>>>> Electrical Engineering Graduate Student
>>>>> (Electromagnetics)
>>>>>
>>>>>
>>>>> On Wed, Oct 7, 2015 at 10:47 AM, Richard Bell <richard.be...@gmail.com
>>>>> > wrote:
>>>>>
>>>>>> Previous email sent without me telling it to. Picking up from
>>>>>> "Fuction coped below:"
>>>>>>
>>>>>> firdes.root_raised_cosine(nfilts, nfilts, 1.0/float(sps), eb,
>>>>>> 5*sps*nfilts)
>>>>>>
>>>>>> The first nfilts is just gain of your filter. The next two paraters
>>>>>> should work out to be the number of samples per symbol of the upsampled
>>>>>> RRC. 1/float(sps) gives you 1/4 if sps = 4. Then to get samp/symb you 
>>>>>> have
>>>>>> nfilts/(1/4) = 4*nfilts samp_symb, which is in fact the upsampled version
>>>>>> you want. The point I'm trying to make, is you could have filled out the
>>>>>> function this way and got the same result:
>>>>>>
>>>>>> firdes.root_raised_cosine(nfilts, nfilts*sps, 1, eb, 5*sps*nfilts)
>>>>>>
>>>>>> which feels more natural to me.
>>>>>>
>>>>>> The last paramter is the length of the filter in samples. The default
>>>>>> does not match the built in length of the Constellation Modulator filter,
>>>>>> which is hardcoded to 11 if I remember right. So I use, 11*sps*nfilts+1 
>>>>>> for
>>>>>> this parameter. The plus 1 is actually handled for you in the constructor
>>>>>> of the RRC (I think it's the constructor, but if not somewhere). If you
>>>>>> feed an even number in, it will get 1 added to it. I like to be explicit
>>>>>> with the +1, but you don't need it.
>>>>>>
>>>>>> Rich
>>>>>>
>>>>>> On Wed, Oct 7, 2015 at 8:41 AM, Richard Bell <richard.be...@gmail.com
>>>>>> > wrote:
>>>>>>
>>>>>>> Logan,
>>>>>>>
>>>>>>> I recommend you keep this conversation on the mailing list. You are
>>>>>>> more likely to get answers that way.
>>>>>>>
>>>>>>> The Constellation Modulator has an RRC filter built into it. That is
>>>>>>> what the Samples/Symbol and Excess BW paramters of that block are for. 
>>>>>>> Your
>>>>>>> job now is to make the upsampled by nfilt version of that blocks RRC 
>>>>>>> filter
>>>>>>> and feed it into the pfb clock sync block. That's what the example shows
>>>>>>> you how to do.
>>>>>>>
>>>>>>> The way the default values of the pfb clock sync block are entered
>>>>>>> can be a little confusing. Function copied below:
>>>>>>>
>>>>>>>
>>>>>>> On Wed, Oct 7, 2015 at 8:34 AM, Washbourne, Logan <
>>>>>>> lwas...@ostatemail.okstate.edu> wrote:
>>>>>>>
>>>>>>>> Rich,
>>>>>>>>
>>>>>>>> If you could send me that paper, I would really appreciate it. So
>>>>>>>> I'm looking at the test_corr_est.grc file and the only place I see the
>>>>>>>> rrc_taps being used is within the polyphase clock sync, which is on 
>>>>>>>> the RX
>>>>>>>> side. Should there be a rrc filter on the TX side as well?
>>>>>>>>
>>>>>>>> Logan Washbourne
>>>>>>>> Electrical Engineering Graduate Student
>>>>>>>> (Electromagnetics)
>>>>>>>>
>>>>>>>>
>>>>>>>> On Sat, Oct 3, 2015 at 5:28 AM, Richard Bell <
>>>>>>>> richard.be...@gmail.com> wrote:
>>>>>>>>
>>>>>>>>> The taps you use should be the upsampled by nfilt version of your
>>>>>>>>> shaping filter at the tx, scaled appropriately to produce the desired
>>>>>>>>> output amplitude. If you're new to this, then you might need to find 
>>>>>>>>> a good
>>>>>>>>> resource for polyphase filters and how they are used for timing 
>>>>>>>>> recovery. I
>>>>>>>>> can reference a paper for you later on if needed. But, from grc if 
>>>>>>>>> you used
>>>>>>>>> an rrc filter on the tx, it's a matter of making a call to the rrc 
>>>>>>>>> filter
>>>>>>>>> in the taps parameter of the block. I think there is an example of 
>>>>>>>>> this in
>>>>>>>>> the gr-digital/examples folder. I'm not in front of a computer so I 
>>>>>>>>> can't
>>>>>>>>> check for you now.
>>>>>>>>>
>>>>>>>>> Rich
>>>>>>>>>
>>>>>>>>> Sent from my iPad
>>>>>>>>>
>>>>>>>>> On Oct 2, 2015, at 3:06 PM, lwas...@ostatemail.okstate.edu wrote:
>>>>>>>>>
>>>>>>>>> Sent from my Cyanogen phone
>>>>>>>>> On Oct 2, 2015 3:12 AM, Richard Bell <richard.be...@gmail.com>
>>>>>>>>> wrote:
>>>>>>>>> >
>>>>>>>>> > I can't open and look at your flow now, but it seems you have
>>>>>>>>> the necessary blocks in there. Here are some things that come to mind:
>>>>>>>>> >
>>>>>>>>> > 1) put a multiply const block in front of the usrp source at the
>>>>>>>>> tx. You don't want to feed values ranging from 1 to -1 but rather 
>>>>>>>>> ~0.7 to
>>>>>>>>> -0.7.
>>>>>>>>> >
>>>>>>>>>
>>>>>>>>> I will try that today.
>>>>>>>>> > 2) keep usrp tx/rx analog gains below 20dB to avoid odd
>>>>>>>>> behavior. Keep the usrps close to each other for this debug. I use 
>>>>>>>>> 15dB for
>>>>>>>>> initial testing.
>>>>>>>>> >
>>>>>>>>>
>>>>>>>>> I've kept it around 10dB normally, but I will double check.
>>>>>>>>> > 3) Costas loop will only fix small frequency offsets. Try adding
>>>>>>>>> an FLL block before timing sync.
>>>>>>>>> >
>>>>>>>>>
>>>>>>>>> Will do. I don't think it's even getting to the costas loop to be
>>>>>>>>> honest, it seems to not be tripping the correlation estimator block.
>>>>>>>>> > 4) are you sure you used the right taps for the pfb clock sync
>>>>>>>>> block? How did you confirm this?
>>>>>>>>> >
>>>>>>>>> I'm not sure if I used the right taps. I'm just using the ones
>>>>>>>>> that were included in the test_corr_est  GRC file. Do you have a 
>>>>>>>>> method of
>>>>>>>>> confirmation that you would recommend?
>>>>>>>>> > 5) BPSK requires an equalizer if you have a bad channel. Are you
>>>>>>>>> using antennas or a coax cable?
>>>>>>>>> >
>>>>>>>>>
>>>>>>>>> I am using antennas. I'll look into the equalizer.
>>>>>>>>>
>>>>>>>>> Thank you for taking the time to help so far.
>>>>>>>>>
>>>>>>>>> > Rich
>>>>>>>>> >
>>>>>>>>> > Sent from my iPhone
>>>>>>>>> >
>>>>>>>>> > On Oct 1, 2015, at 6:20 PM, Washbourne, Logan <
>>>>>>>>> lwas...@ostatemail.okstate.edu> wrote:
>>>>>>>>> >
>>>>>>>>> >> Rich,
>>>>>>>>> >>
>>>>>>>>> >> The test_corr_est block has the flow graph as follows: vector
>>>>>>>>> source-> constellation modulator -> stream mux(with null source) ->
>>>>>>>>> throttle -> channel model -> correlation estimator -> polyphase clock 
>>>>>>>>> sync
>>>>>>>>> -> costas loop -> constellation and time gui sinks.
>>>>>>>>> >>
>>>>>>>>> >> For my modified TX grc file I used the following flowgraph:
>>>>>>>>> vector source -> constellation modulator -> stream mux(with null 
>>>>>>>>> source) ->
>>>>>>>>> constellation and time gui sinks as well as the UHD: USRP sink
>>>>>>>>> >>
>>>>>>>>> >> For the RX grc: UHD: USRP Source -> correlation estimator ->
>>>>>>>>> polyphase clock sync -> costas loop-> constellation and time gui 
>>>>>>>>> sinks.
>>>>>>>>> >>
>>>>>>>>> >> The grc files can be found at:
>>>>>>>>> https://github.com/loganwashbourne/Logan.git
>>>>>>>>> >>
>>>>>>>>> >> The files are called test_corr_est_TX and test_corr_est_RX.
>>>>>>>>> >>
>>>>>>>>> >> Thanks for your time,
>>>>>>>>> >>
>>>>>>>>> >>
>>>>>>>>> >> Logan Washbourne
>>>>>>>>> >> Electrical Engineering Graduate Student
>>>>>>>>> >> (Electromagnetics)
>>>>>>>>> >>
>>>>>>>>> >>
>>>>>>>>> >> On Thu, Oct 1, 2015 at 3:44 AM, Richard Bell <
>>>>>>>>> richard.be...@gmail.com> wrote:
>>>>>>>>> >>>
>>>>>>>>> >>> Hi Logan,
>>>>>>>>> >>>
>>>>>>>>> >>> Can you give more detail on your synchronization choices for
>>>>>>>>> BPSK so we can tell you what more you may need to do?
>>>>>>>>> >>>
>>>>>>>>> >>> Rich
>>>>>>>>> >>>
>>>>>>>>> >>> Sent from my iPhone
>>>>>>>>> >>>
>>>>>>>>> >>> > On Sep 30, 2015, at 7:14 PM, Washbourne, Logan <
>>>>>>>>> lwas...@ostatemail.okstate.edu> wrote:
>>>>>>>>> >>> >
>>>>>>>>> >>> > Hello,
>>>>>>>>> >>> >
>>>>>>>>> >>> > This is somewhat of an update to a previous post I made from
>>>>>>>>> last week. After talking to Julian and Martin, it was made clear to 
>>>>>>>>> me that
>>>>>>>>> I needed to use a correlation system to insure my receiver would be 
>>>>>>>>> synced
>>>>>>>>> up to my transmitter when trying to communicate over the air.
>>>>>>>>> >>> >
>>>>>>>>> >>> > I am trying to utilize the Correlation Estimator block to
>>>>>>>>> help me achieve those means. In order to ease myself into it, I am 
>>>>>>>>> trying
>>>>>>>>> to turn the test_corr_est.grc example into an over the air program. I 
>>>>>>>>> am
>>>>>>>>> getting communication between the transmitter and 
>>>>>>>>> receiver(essentially I
>>>>>>>>> just split the grc program in two and took out the throttle block and 
>>>>>>>>> the
>>>>>>>>> channel model and replaced them with UHD blocks). Now, I don't get 
>>>>>>>>> any O's
>>>>>>>>> or L's or an abundance of U's, and I can clearly see data coming in 
>>>>>>>>> on the
>>>>>>>>> RX side, but it seems to be a lot of noise, but noise generated by 
>>>>>>>>> the TX
>>>>>>>>> side, because it goes away when I stop transmitting. The center 
>>>>>>>>> frequency
>>>>>>>>> is 2.48GHz and the sample rate is 250k samples/sec.
>>>>>>>>> >>> >
>>>>>>>>> >>> > My testing method is plotting the constellation symbols
>>>>>>>>> right before they get sent out on the TX side and then plotting them 
>>>>>>>>> right
>>>>>>>>> after the UHD block on the RX side. It is only bpsk and the symbols 
>>>>>>>>> are
>>>>>>>>> covering all four quadrants.
>>>>>>>>> >>> >
>>>>>>>>> >>> > I haven't changed any settings on the polyphase clock sync
>>>>>>>>> or the modulation scheme.
>>>>>>>>> >>> >
>>>>>>>>> >>> > This is a little rambly but I appreciate your time,
>>>>>>>>> >>> >
>>>>>>>>> >>> > Logan Washbourne
>>>>>>>>> >>> > Electrical Engineering Graduate Student
>>>>>>>>> >>> > (Electromagnetics)
>>>>>>>>> >>> >
>>>>>>>>> >>> > _______________________________________________
>>>>>>>>> >>> > Discuss-gnuradio mailing list
>>>>>>>>> >>> > Discuss-gnuradio@gnu.org
>>>>>>>>> >>> > https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>>>>>>>> >>
>>>>>>>>> >>
>>>>>>>>> >> _______________________________________________
>>>>>>>>> >> Discuss-gnuradio mailing list
>>>>>>>>> >> Discuss-gnuradio@gnu.org
>>>>>>>>> >> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> Discuss-gnuradio mailing list
>>>>>>>>> Discuss-gnuradio@gnu.org
>>>>>>>>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> Discuss-gnuradio mailing list
>>>>>>>> Discuss-gnuradio@gnu.org
>>>>>>>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Discuss-gnuradio mailing list
>>>>> Discuss-gnuradio@gnu.org
>>>>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>>>>
>>>>>
>>>>
>>>
>>> _______________________________________________
>>> Discuss-gnuradio mailing list
>>> Discuss-gnuradio@gnu.org
>>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>>
>>>
>>
>
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to