Re: [Discuss-gnuradio] synchronization questions

2007-01-14 Thread science quest

Lin,
Thanks for the reply
I am a newbie  in the practical implementation world

On the daughterboards, there is no synchonization processing. Everything is
made in gnuradio software. You may use 'soft PLL' or 'soft baseband SYNC'.

The daughterboard(FLEX 2400) has a PLL with frequency synthesizer.  I think
this is used for frequency synchronization and although I am not sure,but,
there should be some way to change its frequency/phase on the fly. May be
Marc or Eric can tell us more about this.

With the development of full-digital receiver, now the baseband frequency
synchronization is already used in products.

Can you please give one example of such a commercial product.

I'm not familiar with RF/IF. In my opinion, two stages are better. But only
one stage is also acceptable. It depends on the signal characters.

can you please explain why two stages are better and where are they
implemented- in RF front end or both in Baseband only. More over, if only
one stage is acceptable, where is it implemented- in RF front end or
baseband.

My questions are targetted towards typical receiver architectures as used in
commercial products so that I can qualify the benefits involved in purely
software implementations.

Thanks once again
SQ








On 1/14/07, Lin HUANG On the daughterboards, there is no synchonization
processing. Everything is made in gnuradio software. You may use 'soft PLL'
or 'soft baseband SYNC'.l<[EMAIL PROTECTED]> wrote:




2007/1/15, science quest <[EMAIL PROTECTED]>:
>
> Hi
> My appologies if the question is too vague or sounds naive-
>  I have read a number of papers(specially IEEE communication society
> journals) on synchronization issues in communication- frequency, time and
> phase sync. All these papers address the issue of synchronization in
> baseband and no reference is made to the AFC present in transciever chips
> (which in all probablity is controlled by baseband processor according to
> some algorithm) . On the other hand literature from receiver circuit
> perspective present approaches for synchronization in hardware by using
> AFC/PLL etc and this is performed  on RF signal. Considering this, I have
> the following questions-
> 1) Is the baseband approach of frequency synchronization only of
> theroretical interest or are they actually used in products


With the development of full-digital receiver, now the baseband frequency
synchronization is already used in products.

2) Is the synchronization task perfomed in two stages? eg- first at RF/IF
> level and then remaining offset in baseband software


I'm not familiar with RF/IF. In my opinion, two stages are better. But
only one stage is also acceptable. It depends on the signal characters.

3) How is synchronization achieved in USRP- at daughterboard hardware or
> gnuradio software


On the daughterboards, there is no synchonization processing. Everything
is made in gnuradio software. You may use 'soft PLL' or 'soft baseband
SYNC'.


Thanks
> SQ
>
>
>
> ___
> Discuss-gnuradio mailing list
> Discuss-gnuradio@gnu.org
> http://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>
>
>

___
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio


Re: [Discuss-gnuradio] synchronization questions

2007-01-14 Thread Lin HUANG

2007/1/15, science quest <[EMAIL PROTECTED]>:


Hi
My appologies if the question is too vague or sounds naive-
 I have read a number of papers(specially IEEE communication society
journals) on synchronization issues in communication- frequency, time and
phase sync. All these papers address the issue of synchronization in
baseband and no reference is made to the AFC present in transciever chips
(which in all probablity is controlled by baseband processor according to
some algorithm) . On the other hand literature from receiver circuit
perspective present approaches for synchronization in hardware by using
AFC/PLL etc and this is performed  on RF signal. Considering this, I have
the following questions-
1) Is the baseband approach of frequency synchronization only of
theroretical interest or are they actually used in products



With the development of full-digital receiver, now the baseband frequency
synchronization is already used in products.

2) Is the synchronization task perfomed in two stages? eg- first at RF/IF

level and then remaining offset in baseband software



I'm not familiar with RF/IF. In my opinion, two stages are better. But only
one stage is also acceptable. It depends on the signal characters.

3) How is synchronization achieved in USRP- at daughterboard hardware or

gnuradio software



On the daughterboards, there is no synchonization processing. Everything is
made in gnuradio software. You may use 'soft PLL' or 'soft baseband SYNC'.


Thanks

SQ



___
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio



___
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio


[Discuss-gnuradio] synchronization questions

2007-01-14 Thread science quest

Hi
   My appologies if the question is too vague or sounds naive-
I have read a number of papers(specially IEEE communication society
journals) on synchronization issues in communication- frequency, time and
phase sync. All these papers address the issue of synchronization in
baseband and no reference is made to the AFC present in transciever chips
(which in all probablity is controlled by baseband processor according to
some algorithm) . On the other hand literature from receiver circuit
perspective present approaches for synchronization in hardware by using
AFC/PLL etc and this is performed  on RF signal. Considering this, I have
the following questions-
1) Is the baseband approach of frequency synchronization only of
theroretical interest or are they actually used in products
2) Is the synchronization task perfomed in two stages? eg- first at RF/IF
level and then remaining offset in baseband software
3) How is synchronization achieved in USRP- at daughterboard hardware or
gnuradio software

Thanks
SQ
___
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio


RE: [Discuss-gnuradio] Capturing data from various stages of modulationand demodulation

2007-01-14 Thread Tom Rondeau

> -Original Message-
> From: [EMAIL PROTECTED] [mailto:discuss-
> [EMAIL PROTECTED] On Behalf Of Naveen Manicka
> Sent: Sunday, January 14, 2007 8:01 PM
> To: discuss-gnuradio@gnu.org
> Subject: [Discuss-gnuradio] Capturing data from various stages of
> modulationand demodulation
> 
> Hi,
> 
> What would be the best way to capture the raw data as it is passed from
> each
> block within GNURadio and represent in a GUI form?
> Basically, if I send a "Hello World" from one machine to another, I can
> see
> it at the other end, but I am interested in somehow capturing and viewing
> the data as it passes through each stage in GNURadio, after I generate in
> the tunnel.py example.
> 
> Any views on how I could do this?
> I was exploring into representing the captured data as constellations, but
> didn't know if I was proceeding in the right path.
> 
> Thanks in advance,
> Naveen

Naveen,

All of the digital modulators have a 'log' flag you can enable, which will
drive every part of the modulator and demodulator to its own data file. If
you want to see the constellation, you can look at "rx_mpsk_receiver.dat" (I
think that's what it's called) using MATLAB/Octave and the
read_complex_binary function provided in the gnuradio-core/src/utils. This
returns a complex number, so plot(real(dat), imag(dat)).

Tom




___
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio


[Discuss-gnuradio] Capturing data from various stages of modulation and demodulation

2007-01-14 Thread Naveen Manicka
Hi,

What would be the best way to capture the raw data as it is passed from each
block within GNURadio and represent in a GUI form?
Basically, if I send a "Hello World" from one machine to another, I can see
it at the other end, but I am interested in somehow capturing and viewing
the data as it passes through each stage in GNURadio, after I generate in
the tunnel.py example.

Any views on how I could do this?
I was exploring into representing the captured data as constellations, but
didn't know if I was proceeding in the right path.

Thanks in advance,
Naveen



___
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio


Re: [Discuss-gnuradio] error using SetLabel

2007-01-14 Thread Matteo Campanella
Thank you so much Johnatan for the hint - that was the problem indeed!!!
I followed the approach used in scopesink.py, encapsulating a gr message
in a wx DATA EVENT, letting the panel manage the data extraction and
presentation. It works fine now!

thank you very much
Matteo iz2eeq

On Sun, 2007-01-14 at 08:30 -0800, Johnathan Corgan wrote:
> On Sun, 2007-01-14 at 08:50 +0100, Matteo Campanella wrote:
> 
> > Pango-ERROR **: file pango-layout.c: line 3230
> > (pango_layout_check_lines): assertion failed: (!layout->log_attrs)
> > aborting...
> 
> I have had a very similar problem in the past.
> 
> I'd give it a high probability you are running into a threading issue.
> wxWidgets is *not* reentrant, and updating controls from a thread
> different from the one that is running the wxWidgets event loop will
> create all sorts of problems eventually.
> 
> The solution is to create a custom wxWidgets event, then use wxPostEvent
> in your GR call back function.  You then use a normal wxWidgets callback
> function to handle that event to update the control.
> 
> This link has some slightly outdated notes on doing this from C++;
> you'll have to translate them mentally to the wxPython domain:
> 
> http://www.wxwidgets.org/wiki/index.php/Custom_Events
> 
> It's a major pain, especially if you have to do it for several different
> event types.  But the key difference is that wxWidgets main thread is
> the one that is running and calling your wxWidgets event handler, so
> there are no reentrancy issues.
> 
> I beat my head against the wall for a couple days on this once :-(
> 



___
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio


Re: [Discuss-gnuradio] tx_empty in fpga

2007-01-14 Thread Eric Blossom
On Sun, Jan 14, 2007 at 12:45:48PM -0800, Matt Ettus wrote:
> Eric Blossom wrote:
> >
> >
> > This could work, with two caveats:
> >
> >   (1) you're stuffing 0's into the input of the signal processing
> >   chain, instead of handing the underrun at the output of the
> >   signal processing chain.   With the existing code, you're
> >   probably OK, but in general, if the idea is to zero the output
> >   when there's no input, I'd prefer to do it closer to the DACs.
> >   [ Don't let this comment stop you from trying this ;) ]
> >   
> 
> Have to disagree with you here.  The best place to do this is before the
> signal processing chain, for exactly the reasons you state below...
> 
> >   (2) You're going to get the equivalent of a "key click".  That is,
> >   wide band harmonics in the freq domain from the discontinuity in the
> >   time domain (step function).  It would be better to ramp the last
> >   value down, say be doing the equivalent of an arithmetic shift right
> >   by 2.  This really ought to be done by the code that feeds the DACs.
> >   
> 
> The key clicks will get filtered if you do this before the upconverter. 
> They'll still be there, but they'll only be as wide as the baseband
> bandwidth instead of the full 32 MHz.
> 
> > I think a better place to fix this would be to filter the output of
> > tx_a_a, tx_b_a, tx_a_b and tx_b_b in usrp_std.v based on their
> > previous values and the delayed value of tx_empty.  
> 
> You don't need this filter if you do it before the interpolators.
> 
> > I believe that a
> > delay on the order of 12 clocks is about right.  You'll need to count
> > pipeline stages through the tx path to get it right.
> >   
> 
> The delay through the interpolators is variable -- it depends on the
> intepolation ratio.  Again, this is why this should be done before the
> interpolators.

Agreed as long as the input being pushed into the signal processing
pipeline is interpreted as samples.  I think we're going to need to
visit this problem again when somebody put a modulator into the
FPGA.

Eric


___
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio


Re: [Discuss-gnuradio] tx_empty in fpga

2007-01-14 Thread Matt Ettus
Eric Blossom wrote:
>
>
> This could work, with two caveats:
>
>   (1) you're stuffing 0's into the input of the signal processing
>   chain, instead of handing the underrun at the output of the
>   signal processing chain.   With the existing code, you're
>   probably OK, but in general, if the idea is to zero the output
>   when there's no input, I'd prefer to do it closer to the DACs.
>   [ Don't let this comment stop you from trying this ;) ]
>   

Have to disagree with you here.  The best place to do this is before the
signal processing chain, for exactly the reasons you state below...

>   (2) You're going to get the equivalent of a "key click".  That is,
>   wide band harmonics in the freq domain from the discontinuity in the
>   time domain (step function).  It would be better to ramp the last
>   value down, say be doing the equivalent of an arithmetic shift right
>   by 2.  This really ought to be done by the code that feeds the DACs.
>   

The key clicks will get filtered if you do this before the upconverter. 
They'll still be there, but they'll only be as wide as the baseband
bandwidth instead of the full 32 MHz.

> I think a better place to fix this would be to filter the output of
> tx_a_a, tx_b_a, tx_a_b and tx_b_b in usrp_std.v based on their
> previous values and the delayed value of tx_empty.  

You don't need this filter if you do it before the interpolators.

> I believe that a
> delay on the order of 12 clocks is about right.  You'll need to count
> pipeline stages through the tx path to get it right.
>   

The delay through the interpolators is variable -- it depends on the
intepolation ratio.  Again, this is why this should be done before the
interpolators.

Matt


___
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio


Re: [Discuss-gnuradio] tx_empty in fpga

2007-01-14 Thread Eric Blossom
On Sat, Jan 13, 2007 at 06:54:20PM -0800, Loconut wrote:
> 
> (originally posted on nabble without subscribing- previously was subscribed
> as [EMAIL PROTECTED])
> 
> Trying to fix the problem of the transmitter repeating the last sample when
> the fifo empties for doing gmsk on BasicTX/RX and/or LFRX/TX.
> 
> bus_interface.v line 116 has:
> assign txdata = tx_empty ? 32'b0 : txd;
> 
> which says to me, load 32 bits of 0 when tx_empty, otherwise load the data..
> so why doesn't this work? Did I miss something (probably!)

bus_interface.v is not used ;)


> As an alternative, what about in tx_buffer around line 69:
>if((load_next != channels) & !tx_empty)
>begin
>   load_next <= #1 load_next + 4'd1;
>   case(load_next)
> 4'd0 : tx_i_0 <= #1 fifodata;
> 4'd1 : tx_q_0 <= #1 fifodata;
> 4'd2 : tx_i_1 <= #1 fifodata;
> 4'd3 : tx_q_1 <= #1 fifodata;
> 4'd4 : tx_i_2 <= #1 fifodata;
> 4'd5 : tx_q_2 <= #1 fifodata;
> 4'd6 : tx_i_3 <= #1 fifodata;
> 4'd7 : tx_q_3 <= #1 fifodata;
>   endcase // case(load_next)
>end // if ((load_next != channels) & !tx_empty)
> 
> what if instead of checking for tx_empty and loading fifodata we do this:
>if(load_next != channels)
>  begin
> load_next <= #1 load_next + 4'd1;
> case(load_next)
>   4'd0 : tx_i_0 <= #1 tx_empty ? 16'd0 : fifodata;
>   4'd1 : tx_q_0 <= #1 tx_empty ? 16'd0 : fifodata;
>   4'd2 : tx_i_1 <= #1 tx_empty ? 16'd0 : fifodata;
>   4'd3 : tx_q_1 <= #1 tx_empty ? 16'd0 : fifodata;
>   4'd4 : tx_i_2 <= #1 tx_empty ? 16'd0 : fifodata;
>   4'd5 : tx_q_2 <= #1 tx_empty ? 16'd0 : fifodata;
>   4'd6 : tx_i_3 <= #1 tx_empty ? 16'd0 : fifodata;
>   4'd7 : tx_q_3 <= #1 tx_empty ? 16'd0 : fifodata;
> endcase // case(load_next)
>  end // if ((load_next != channels) & !tx_empty) 

This could work, with two caveats:

  (1) you're stuffing 0's into the input of the signal processing
  chain, instead of handing the underrun at the output of the
  signal processing chain.   With the existing code, you're
  probably OK, but in general, if the idea is to zero the output
  when there's no input, I'd prefer to do it closer to the DACs.
  [ Don't let this comment stop you from trying this ;) ]

  (2) You're going to get the equivalent of a "key click".  That is,
  wide band harmonics in the freq domain from the discontinuity in the
  time domain (step function).  It would be better to ramp the last
  value down, say be doing the equivalent of an arithmetic shift right
  by 2.  This really ought to be done by the code that feeds the DACs.


I think a better place to fix this would be to filter the output of
tx_a_a, tx_b_a, tx_a_b and tx_b_b in usrp_std.v based on their
previous values and the delayed value of tx_empty.  I believe that a
delay on the order of 12 clocks is about right.  You'll need to count
pipeline stages through the tx path to get it right.

create a module, say 

module ramp_down_dac_when_empty
  ( input clock,
input reset,
input tx_empty,
input [15:0] in,
output reg [15:0] out
  );

 // your code here...

endmodule // ramp_down_dac_when_empty


Then instantiate 4 of them to handle the filtering.

Eric


___
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio


Re: [Discuss-gnuradio] alternate fpga image

2007-01-14 Thread Eric Blossom
On Sat, Jan 13, 2007 at 10:11:54PM -0800, Eric Blossom wrote:
> On Sat, Jan 13, 2007 at 08:37:18PM -0800, Loconut wrote:
> > 
> > I've tried placing my usrp_std.rbf in /usr/local/share/usrp/rev2 (I have a
> > rev3 board) as well as in rev4, but that fails to load my firmware.. I also
> > tried eiding transmit_path.py (testing gmsk) to be:
> >self.u = usrp.sink_c(fusb_block_size=self._fusb_block_size,
> > fusb_nblocks=self._fusb_nblocks,
> > fpga_filename="/usr/local/share/usrp/rev2/usrp_std.rbf")
> > 
> > at line 109 and that causes:
> > [EMAIL PROTECTED] digital]# ./benchmark_tx.py -f 10e6 -r 100k -M .01
> > Can't find fpga bitstream: /usr/local/share/usrp/rev2/usrp_std.rbf
> > 
> > yet:
> > [EMAIL PROTECTED] digital]# ls -la /usr/local/share/usrp/rev2/
> > total 748
> > drwxr-xr-x 2 root root   4096 Jan 13 22:27 .
> > drwxr-xr-x 4 root root   4096 Jan 13 10:08 ..
> > -rw-r--r-- 1 root root 180809 Jan 13 10:08 multi_2rxhb_2tx.rbf
> > -rw-r--r-- 1 root root 176948 Jan 13 10:08 std_2rxhb_2tx.rbf
> > -rw-r--r-- 1 root root 173865 Jan 13 10:08 std_4rx_0tx.rbf
> > -rw-r--r-- 1 root root  17622 Jan 13 10:08 std.ihx
> > -rw-rw-r-- 1 root root 177037 Jan 13 22:05 usrp_std.rbf
> > 
> > did I miss something?
> 
> You can specify the fpga image to load using the fpga_filename keyword
> argument.  E.g.,
> 
>   u = usrp.sink_c(fpga_filename = 'myfile.rbf')
> 
> Eric

Sorry, I must have been asleep when I sent this ;)

FWIW, the reason we tack on the "path to the standard place" (which
includes the rev) is to avoid accidentally loading an rbf for the
wrong board rev into the USRP and killing it.

Eric


___
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio


Re: [Discuss-gnuradio] error using SetLabel

2007-01-14 Thread Johnathan Corgan
On Sun, 2007-01-14 at 08:50 +0100, Matteo Campanella wrote:

> Pango-ERROR **: file pango-layout.c: line 3230
> (pango_layout_check_lines): assertion failed: (!layout->log_attrs)
> aborting...

I have had a very similar problem in the past.

I'd give it a high probability you are running into a threading issue.
wxWidgets is *not* reentrant, and updating controls from a thread
different from the one that is running the wxWidgets event loop will
create all sorts of problems eventually.

The solution is to create a custom wxWidgets event, then use wxPostEvent
in your GR call back function.  You then use a normal wxWidgets callback
function to handle that event to update the control.

This link has some slightly outdated notes on doing this from C++;
you'll have to translate them mentally to the wxPython domain:

http://www.wxwidgets.org/wiki/index.php/Custom_Events

It's a major pain, especially if you have to do it for several different
event types.  But the key difference is that wxWidgets main thread is
the one that is running and calling your wxWidgets event handler, so
there are no reentrancy issues.

I beat my head against the wall for a couple days on this once :-(

-- 
Johnathan Corgan, AE6HO
Corgan Enterprises LLC
[EMAIL PROTECTED]



___
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio