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