Hi all,
First, I’m sorry if my actions are shunned upon (C++ daughterboard code
outside the mainstream repository), but I could sincerely use help with
a deadline approaching next week.
I am trying to use code that Per started for tuning a MIMO_b RFX card in
C++. Using the base code he gave me, I was able to get the transmitter
working bot not receiver.
I am trying to receive a GMSK transmission.
Here is a normal reception after tuning the card in python:
http://cyprus.cmcl.cs.cmu.edu/tmp/flex_graphs/gmsk_regular.jpg
http://cyprus.cmcl.cs.cmu.edu/tmp/flex_graphs/gmsk_regular_rvi.jpg
… we get a nice clean circular transmission.
When I attempt to receive using the C++ RX code, that I modified to set
the RX gain, I get the following square-like transmission:
http://cyprus.cmcl.cs.cmu.edu/tmp/flex_graphs/gmsk_flex.jpg
http://cyprus.cmcl.cs.cmu.edu/tmp/flex_graphs/gmsk_flex_rvi.jpg
Based on these results, does anyone have any insight in to what I may be
tuning incorrectly? I thought it might be the gain setting, but I
mimiced the set_gain() method exactly with the python code and ensure
the write_aux_dac() and set_pga() values are the same:
https://moo.cmcl.cs.cmu.edu/trac/cmu_sdrg/browser/dboard_code/db_flexrf_mimo.cc#L193
To tune the cards, I am using:
db_flexrf_mimo dboards(d_urx, d_utx, 0);
dboards.configure(d_rf_freq, 45, 0);
dboards.configure(d_rf_freq, 0, 1);
dboards.select_tx();
I followed through almost every function call and I can’t seem to find
the different in tuning between my code and the python.
I’d greatly appreciate any insight.
Thanks!
George
On Tue, Apr 29, 2008 at 01:55:33AM -0400, George N. wrote:
Hi all,
First, I’m sorry if my actions are shunned upon (C++ daughterboard code
outside the mainstream repository), but I could sincerely use help with a
deadline approaching next week.
You’re not being shunned
Stating the obvious, it would be great to have 1 complete
implementation of the C++ daughterboard code, rather than N partial
implementations.
Eric
You’re not being shunned
Stating the obvious, it would be great to have 1 complete
implementation of the C++ daughterboard code, rather than N partial
implementations.
Hopefully once I get passed my May madness I can work with Michael on
this.
Does it look like I am clipping? I am not changing the transmitter
between the two dumps. I figured the rx gain was too high but it seems
to be being set correctly.
I’m getting a little closer…
http://cyprus.cmcl.cs.cmu.edu/tmp/flex_graphs/closer.jpg
it looks like I’m clipping a little bit, and is that “wide circle”
effect a result of DC offset?
Yeah, looks better but still some offset on the I rail. The wideness of
the ring could be ISI(whats your BT?) in concert with carrier mismatch
spin if you are using two boards. The only reason I say this is that
the width does not look to be very noise like. Just a guess of course.
-Jeff
So, I am finally able to decode something after setting the correct RX
mux… I suppose it was incorrect for this daughterboard.
Does the RX2 port need to be enabled for the RX/TX port on the card to
receive properly?
If I setup the RX as follows…
d_rx->_write_oe(d_side,POWER_UP|RX2_RX1N|ENABLE,0xffff);
d_rx->write_io(d_side,(~POWER_UP)|RX2_RX1N|ENABLE,POWER_UP|RX2_RX1N|ENABLE);
d_rx->write_io(d_side,0,RX2_RX1N);
d_tx->write_io(d_side,~RX_TXN,RX_TXN);
…what I receive looks like this:
http://cyprus.cmcl.cs.cmu.edu/tmp/flex_graphs/flex_rx2dis.jpg
If I enable RX port 2 also, such that I only add this line…
d_rx->write_io(d_side,RX2_RX1N,RX2_RX1N);
… what I receive looks like this:
http://cyprus.cmcl.cs.cmu.edu/tmp/flex_graphs/flex_rx2en.jpg
… and I am now able to get pretty accurate decoding.
But, I was simply wondering if someone can provide insight in to why
this is. Does RX2 need to be enabled?
Thanks,
George
Kind of looks like it is clipping to me and possibly some DC offset
problems.
-Jeff
George:
The flattened ellipsoid is in the eye of the beholder. ;-). It isn’t
really. It is the aspect ratio of your gnuplot. You are clipped and it
appears there is a slight DC bias on the I channel to plus DC (pushed
slightly to the right).
Bob
George N. wrote:
Kind of looks like it is clipping to me and possibly some DC offset
RX results
on this.
Discuss-gnuradio mailing list
[email protected]
Discuss-gnuradio Info Page
Discuss-gnuradio mailing list
[email protected]
Discuss-gnuradio Info Page
9999
Hi Bob!
Right, when I side “wide circle”, i didn’t mean flat, i meant that the
circle seemed thick… as if there is a large variation in amplitude.
my newest graph seems a little better:
http://cyprus.cmcl.cs.cmu.edu/tmp/flex_graphs/flex_rx2en.jpg
Thanks,
George
And finally, here we have it:
http://cyprus.cmcl.cs.cmu.edu/tmp/new_flex/success.jpg
I didn’t completely understand the 2 stages of tuning… I had the first
stage down pat, but didn’t understand the second, hence everything kind
of breaking once i tried it, and things not working until i got it right
Thanks for all the help! I certainly learned a bit about tuning the
boards.
OK, this is my last cry for help… I’m hoping you have an idea of what
I’m tuning wrong, Matt.
I have added print statements for every single _write_fpga_reg, pga_set,
_write_spi, _write_io, _write_oe, etc… and I compare the function
calls by a standard python RFX2400 MIMO_b tune with my C++ tuning code.
Everything that I see is mimicked exactly… but that doesn’t
necessarily mean I see everything
The only thing that doesn’t match up, that I cannot understand, is that
when I call d_rx->set_rx/tx_freq(0, -4e6) (which is what the python
code does) … everything goes down hill. After calling set_tx_freq()
my transmitter breaks (which works otherwise).
After calling set_rx_freq(), my receiver becomes even more broken and my
incoming signal looks like this:
http://cyprus.cmcl.cs.cmu.edu/tmp/new_flex/set_rx_freq.jpg
If I do not call set_rx_freq(), my incoming signal looks like this:
http://cyprus.cmcl.cs.cmu.edu/tmp/new_flex/no_set_rx_freq.jpg
I’ve dug into these function calls and the values are set the same in
both cases.
If I enable RX2, I see this on my RX/TX:
http://cyprus.cmcl.cs.cmu.edu/tmp/new_flex/gmsk_ivq_flex.jpg
Using a python tuned board, I see this:
http://cyprus.cmcl.cs.cmu.edu/tmp/new_flex/gmsk_ivq_regular.jpg
Major difference.
I’d sincerely appreciate any feedback.
Thanks!
George
George N. wrote:
And finally, here we have it:
http://cyprus.cmcl.cs.cmu.edu/tmp/new_flex/success.jpg
I didn’t completely understand the 2 stages of tuning… I had the first
stage down pat, but didn’t understand the second, hence everything kind
of breaking once i tried it, and things not working until i got it right
Thanks for all the help! I certainly learned a bit about tuning the
boards.
George,
Please post a summary of the problem and its solution to the list
so others can benefit from your experience.
@(^.^)@ Ed