Re: [Discuss-gnuradio] How many multiple/simultaneous PLLs can I have running on USRP2?

2014-04-11 Thread John Wilson
Sorry to dig up an old thread, but does anyone know of anyone who's
implemented a polyphase filter bank on a USRP FPGA?

John


On Thu, May 9, 2013 at 12:02 AM, Marcus D. Leech mle...@ripnet.com wrote:

   Or am I wrong that the resource is in the computer and not in the USRP?



 LD



 It's all in the computer, unless you do an FPGA-based implementation.
 Gnu Radio blocks run on the host machine, not the USRP hardware.

 I admit to being a little bit surprised that you don't know that already,
 given how long you've been posting things to this list,
   and using USRP hardware.




 --
 Marcus Leech
 Principal Investigator
 Shirleys Bay Radio Astronomy Consortiumhttp://www.sbrac.org


 ___
 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


Re: [Discuss-gnuradio] GSoC2014 Turbo Equalizer

2014-03-02 Thread John Wilson
Hey Guys,

I wrote a blind turbo equaliser for LDPC encoded data a few years ago in
GNU Radio, the code is probably pretty horrific, and it wasn't optimised
very well, but it worked as a proof on concept, I could dig out the code if
anyone was interested?

John


On Sat, Mar 1, 2014 at 10:33 AM, Jan Kraemer
krae...@int.uni-karlsruhe.dewrote:

  Hey Nguyen Anh Duc,

 thanks for your input. It's nice to see that there seems to be some guys
 interested in the whole turbo EQ topic. These are some interesting points
 you mentioned. To be honest i never thought about using MLSE/MAP for the
 equalizer part. Same goes with another turbo decoder in the turbo equalizer
 cause I discarded them as to computationally heavy to be implemented in
 software.

 But it seems that right now there is greater need to speed up the
 gr-trellis module before attempting a full turbo equalizer.

 Best regards,
 Jan
 Am 28.02.2014 16:57, schrieb Anh Duc Nguyen:

 Dear Jan Krämer,

  I am very interested in your proposal. However, to my best of knowledge,
 turbo equalizer (TB) is pretty complicated and  computationally heavy, then
 it is challenging to have an effective real-time implementation of TB. I
 would like to have some questions as follows:

  1. Your ISI channels' characteristics: fixed/ known beforehand or
 time-variant, how dispersive they are
 2. which techniques do you wish to use for equalizer part: MMSE, MAP, or
 MLSE?
 3. coding: as you presented above - it may be a convolutional or turbo
 code, and others?
 4. Some special hardware platform may require
 5. why do you select 2. and 3. to have the best performance in terms of
 complexity or quality, and that combination is realistic to be real-time
 implemented in GnuRadio plus 4.

  To be honest, I have desperately struggled these question for quite a
 long time, then you and some others can help work together to find the
 answers,

  Best regards,
  Nguyen Anh Duc


 On Tue, Feb 25, 2014 at 8:59 PM, Jan Krämer 
 krae...@int.uni-karlsruhe.dewrote:

  Hi everyone,

 I am a student at Communications Engineering Lab (CEL) at Karlsruhe
 Institute of Technology. I major in communication systems and I am
 currently doing my masterthesis on Parallel log-map decoders for manycore
 architectures. I am interested in participating in GSoC 2014.

 There is an older GNURadio GSoC proposal from 2013 to implement a turbo
 equalizer module in GNURadio in which i am particularly interested working
 on, as it is closely connected to my current field of study.
 So i would like to share my thoughts on a possible Update of the old
 turbo equalizer proposal (and maybe upgrading it to a current proposal ?).

 -
 *Turbo Equalizer*

 A Turbo Equalizer is a receiver component that is highly effective when
 receiving messages corrupted by Intersymbol Interference (ISI). To archive
 this, the turbo equalizer uses an Equalizer to eliminate the ISI and a
 Log-Map Decoder for Forward Error Correction. Both components pass soft
 information to each other to increase the performance.

 *Objectives*

 Possible (sub-)projects:
 1. Implement the Log-Map decoder
 - preferably it can be fully configurable (constraint length, number
 of states, trellis structure)
 - preferably optimized for real time applications
 2. Implement the linear equalizer
 - preferably optimized for real time applications

 *Skills*
 Knowledge of digital signal processing, C/C++, Python

 *Potential mentor(s)*
 Sebastian Koslowski, Michael Schwall


 --

 That would be a project I think would be really interesting to work on
 and i think it fits well with some of the other proposals for new GNU Radio
 Modules. As the turbo eq itself is a highly complex architecture, it could
 also be beneficial to split the tasks in this project. It would be great to
 get some feedback from you, if this was a proposal that would benefit
 GNURadio and if it has the potential to be included in the GSoC list of
 ideas.

 Thanks and regards,
 Jan Krämer


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




 ___
 Discuss-gnuradio mailing 
 listDiscuss-gnuradio@gnu.orghttps://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] Addding enums to custom processing blocks

2013-09-24 Thread John Wilson
Hi,

What's the process by which enums are added to the Python namespace via
SWIG in gnuradio? I mean in gr_firdes, the following are added to the
gr.firdes namespace in Python:

  enum win_type {
WIN_HAMMING = 0,// max attenuation 53 dB
WIN_HANN = 1,// max attenuation 44 dB
WIN_BLACKMAN = 2,// max attenuation 74 dB
WIN_RECTANGULAR = 3,
WIN_KAISER = 4, // max attenuation variable with beta, google it
WIN_BLACKMAN_hARRIS = 5,
  };

But I can't seem to get it to work with my code?

Cheers,

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


[Discuss-gnuradio] Static compilation of GNU radio

2013-07-02 Thread John Wilson
Hey guys,

I wonder whether anyone has done this before/can help me out. I'm looking
to compile GNURadio with all static libraries, so that there are zero .so
dependencies. I've been playing around with CMake, but it looks like the
linker order is wrong for compiling against static libraries:

What CMake is generating is:
COMPILER OBJECT.o -o TARGET -lLIB1 -lLIB2 etc.

This works for shared libs, but I believe the linker will search for
libraries specified before the target on the command line, it's coming up
with undefined refs using static libs at the moment.

What I think my binutils needs is:
COMPILER OBJECT.o -lLIB1 -lLIB2 etc. -o TARGET

i.e. how can I coerce cmake to generate link scripts with the target at the
end of the line (or at least, after the libraries)

Cheers,

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


Re: [Discuss-gnuradio] 4x RX chains on USRP1 with DBSRX2

2013-02-13 Thread John Wilson
Hi guys,

Another quick (couple of) question(s);
 - The DBSRX2 has a programmable channel filter 1-60 MHz. Is the firmware
clever enough to know to increase this bandwidth when I'm reading two
separate frequencies, or is there a chance that it will ruin my day by
centering a too-narrow filter around what I set as rf_freq?
 - Does GNU radio provide an interface to manually change the daughterboard
channel filter?

Cheers,

John

On Wed, Feb 13, 2013 at 8:54 AM, John Wilson johnmwilso...@gmail.comwrote:

 Hey yes I had that bit working okay (found that page before), I was just
 wondering how to actually use it, all seems so simple now anyway! It would
 be nice to see some simple instructions on those application notes about
 how the individual RX chains can be used (pretty much what Josh said
 below). Anyway having got back into the lab it all seems to be up and
 working, now I've just got to hope I don't hit the bandwidth limit on the
 USB :)

 Thanks again,

 John



 On Wed, Feb 13, 2013 at 2:23 AM, Josh Blum j...@ettus.com wrote:



 On 02/12/2013 04:03 PM, Marcus D. Leech wrote:
 
  On 02/12/2013 12:10 PM, John Wilson wrote:
  Hi,
 
  I'm wondering whether it's possible/how to use a USRP1 with 2x DBSRX
  boards
  to generate 4 separate streams via the 4rx usrp1 firmware. The
 required
  channels will be within the front end bandwidth of the DBSRX2.
 
  At the moment I'm using a subdev spec of 'A:0 A:0 B:0 B:0' which I
  assume
  runs the signal from subdev A through RX chains 0 and 1, and subdev B
  through 2 and 3. Is this correct?
  That seems correct.
 
  I am planning to set each daughter board to a frequency between its
 two
  frequencies of interest, then I'd like the DDCs to downconvert the
 data
  from the ADC independently to sit the two frequencies of interest in
 the
  centre of their respective baseband channels out of the USB bus. So
  can I
  change the DDC frequencies independently of the centre frequency in
 the
  You will want a tune_request object where the rf_freq is set to the
  desired center frequency of the DBSRX (something in between that each
  CORDIC can shift away from). And set the rf freq policy to manual.
 
  There are some examples of making the tune request in the grc block for
  usrp source properties dialog box.
 
  daughterboard? Also what is the resolution of the DDS in the DDC,
  i.e. can
  I tune each one independently in ~1Hz steps?
 
  The CORDIC resolution is pretty much 64e6/(132), so sub Hz.
 
 
  -josh
 
  Also, will he need to use the 4rx FPGA image, or will UHD automagically
  use the right image?
 
 

 Its an args option, exact example here:

 http://files.ettus.com/uhd_docs/manual/html/usrp1.html#specify-a-non-standard-image

 -josh

 

 ___
 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


Re: [Discuss-gnuradio] 4x RX chains on USRP1 with DBSRX2

2013-02-13 Thread John Wilson
Cool thanks, I guess that's exposed in the Python scripts by
usrp_source.set_bandwidth then?

John

On Wed, Feb 13, 2013 at 5:53 PM, mle...@ripnet.com wrote:

 **

 On 13 Feb 2013 12:51, John Wilson wrote:

 Hi guys,

 Another quick (couple of) question(s);
  - The DBSRX2 has a programmable channel filter 1-60 MHz. Is the firmware
 clever enough to know to increase this bandwidth when I'm reading two
 separate frequencies, or is there a chance that it will ruin my day by
 centering a too-narrow filter around what I set as rf_freq?
  - Does GNU radio provide an interface to manually change the
 daughterboard channel filter?

 Cheers,

 John



 In GRC, if you use the bandwidth parameter when creating the source, it
 will set the closest settable bandwidth, if the card has settable bandwidth.

 The DBSRX2 has settable bandwidth, so you should set it manually to
 something appropriate based on your channel spacing.




 ___
 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


Re: [Discuss-gnuradio] gnuradio 3.4.1 build error

2013-02-13 Thread John Wilson
Use a different version of boost for the older Gnuradio builds, I used
boost-1.40 to compile 3.4.0 against which worked.

On Tue, Feb 12, 2013 at 4:31 PM, Zulfiqar Khan zulfi.khan@gmail.comwrote:

 Hello,

 I am trying to build gnuradio 3.4.1 on ubuntu for usrp1 but it gives me
 the following error when I run the make command. Please help!

 /home/imran/Desktop/gnuradio/gnuradio-3.4.1/gnuradio-core/
 src/lib/.libs/libgnuradio-core.so: undefined reference to
 `boost::filesystem3::detail::create_directory(boost::filesystem3::path
 const, boost::system::error_code*)'
 /home/imran/Desktop/gnuradio/gnuradio-3.4.1/gnuradio-core/
 src/lib/.libs/libgnuradio-core.so: undefined reference to
 `boost::filesystem3::path::operator/=(boost::filesystem3::path const)'
 /home/imran/Desktop/gnuradio/gnuradio-3.4.1/gnuradio-core/
 src/lib/.libs/libgnuradio-core.so: undefined reference to
 `boost::system::system_category()'
 /home/imran/Desktop/gnuradio/gnuradio-3.4.1/gnuradio-core/
 src/lib/.libs/libgnuradio-core.so: undefined reference to
 `boost::filesystem3::detail::status(boost::filesystem3::path const,
 boost::system::error_code*)'
 /home/imran/Desktop/gnuradio/gnuradio-3.4.1/gnuradio-core/
 src/lib/.libs/libgnuradio-core.so: undefined reference to
 `boost::filesystem3::path::wchar_t_codecvt_facet()'
 /home/imran/Desktop/gnuradio/gnuradio-3.4.1/gnuradio-core/
 src/lib/.libs/libgnuradio-core.so: undefined reference to
 `boost::system::generic_category()'
 collect2: ld returned 1 exit status
 make[5]: *** [usrp_rx_cfile] Error 1
 make[5]: Leaving directory `/home/imran/Desktop/gnuradio/
 gnuradio-3.4.1/gr-usrp/apps'
 make[4]: *** [all] Error 2
 make[4]: Leaving directory `/home/imran/Desktop/gnuradio/
 gnuradio-3.4.1/gr-usrp/apps'
 make[3]: *** [all-recursive] Error 1
 make[3]: Leaving directory `/home/imran/Desktop/gnuradio/
 gnuradio-3.4.1/gr-usrp'
 make[2]: *** [all] Error 2
 make[2]: Leaving directory `/home/imran/Desktop/gnuradio/
 gnuradio-3.4.1/gr-usrp'
 make[1]: *** [all-recursive] Error 1
 make[1]: Leaving directory `/home/imran/Desktop/gnuradio/gnuradio-3.4.1'
 make: *** [all] Error 2


 ___
 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] 4x RX chains on USRP1 with DBSRX2

2013-02-12 Thread John Wilson
Hi,

I'm wondering whether it's possible/how to use a USRP1 with 2x DBSRX boards
to generate 4 separate streams via the 4rx usrp1 firmware. The required
channels will be within the front end bandwidth of the DBSRX2.

At the moment I'm using a subdev spec of 'A:0 A:0 B:0 B:0' which I assume
runs the signal from subdev A through RX chains 0 and 1, and subdev B
through 2 and 3. Is this correct?

I am planning to set each daughter board to a frequency between its two
frequencies of interest, then I'd like the DDCs to downconvert the data
from the ADC independently to sit the two frequencies of interest in the
centre of their respective baseband channels out of the USB bus. So can I
change the DDC frequencies independently of the centre frequency in the
daughterboard? Also what is the resolution of the DDS in the DDC, i.e. can
I tune each one independently in ~1Hz steps?

Sorry if this has been asked before, I've been searching Google and the
email lists all day and have not yet found an answer!

Thanks,

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


Re: [Discuss-gnuradio] GnuRadio 3.3 on Ubuntu 12.04LTS

2013-02-12 Thread John Wilson
Hi Ed,

I've been doing the same recently with gnuradio-3.4 on ubuntu 12.04 x64, So
I'm guessing it's pretty similar.

Anyway, copying and pasting some notes I made which should hopefully help
you, there were a few little horrors in there!

NB The boost version is probably not that important so long as it compiles,
1.40 was 'known good' though.

Good luck!

John

Installing GNU Radio on 12.04

To avoid spending days figuring out how to install our old versiojn of GNU
Radio onto Ubuntu 12 (and probably later versions also), follow these
instructions TO THE LETTER.


Use g++ = 4.5 (using ‘make CXX=g++-4.5’)
Use swig 1.3
Use Boost 1.40

I used automake 1.11, which needed patching, due to it causing problems
with ‘make install’:

--- lib/am/python.am.orig   2012-01-31 11:41:18.0 +
+++ lib/am/python.am
@@ -23,8 +23,8 @@ endif %?INSTALL%
## Installing.  ##
##  ##

+?FIRST?am__py_compile = PYTHON=$(PYTHON) $(SHELL) $(py_compile)
if %?INSTALL%
-?FIRST?am__py_compile = PYTHON=$(PYTHON) $(SHELL) $(py_compile)
am__installdirs += $(DESTDIR)$(%NDIR%dir)
.PHONY install-%EXEC?exec:data%-am: install-%DIR%PYTHON
install-%DIR%PYTHON: $(%DIR%_PYTHON)

You need to add two lines to ./gnuradio-core/src/lib/Makefile.am, under the
libgnuradio_core_la_LIBADD section:
$(BOOST_FILESYSTEM_LIB) \
$(BOOST_SYSTEM_LIB)

or else the complier will complain about not being able to find symbols in
gr-usrp and audio, and these modules won’t work.





On Tue, Feb 12, 2013 at 6:51 PM, Ed Criscuolo
edward.l.criscu...@nasa.govwrote:

 Thanks Jonathan!  That tidbit probably saved me an hour of
  troubleshooting right there! :)

 @(^.^)@  Ed



 On 2/12/13 10:16 AM, Johnathan Corgan wrote:

 On Sat, Feb 9, 2013 at 10:24 AM, Ed Criscuolo
 edward.l.criscu...@nasa.gov 
 mailto:edward.l.criscuolo@**nasa.govedward.l.criscu...@nasa.gov
 wrote:

 My question is, are there any showstoppers for able to run
 GnuRadio 3.3 on Ubuntu 12.04LTS?  My customer _really_ wants all the
 SDRs to be the same for CM purposes, and does not have the schedule
 time for me to port his custom blocks and flowgraphs from GR3.3 to
 GR3.6.

 I know over the last year or two there's been a lot of Boost and
 Qt version issues, and I want to know if I'm about to paint myself
 into a corner here.


 Well, I'm not aware of anything that would prevent 3.3 from working on
 Ubuntu 12.04, but of course I don't think anyone has actually tried it.

 The Boost version in 12.04 defaults to 1.46, which has a known bug that
 affects GNU Radio, but 1.48 is also available on that distro.

 Johnathan



 __**_
 Discuss-gnuradio mailing list
 Discuss-gnuradio@gnu.org
 https://lists.gnu.org/mailman/**listinfo/discuss-gnuradiohttps://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] FFT of noise assumes a gaussian shape at certain sample frequencies

2011-09-16 Thread John Wilson
Hey guys,

I've got a quick question on a project I'm currently working on which is
scanning a range of frequencies using GNU radio and the USRP-N210 with the
SBX daughterboard.

Basically when I take the FFT of the wgn receiver noise, at certain sample
rates (e.g. 5Msps) the spectrum output is roughly flat, while at other rates
(e.g. ~6 Msps), the spectrum takes on a decidedly Gaussian look, where the
magnitude of the first and last bins of the FFT are 5-10 dB below the centre
bins of the FFT. Does anyone know why this is? I've confirmed this behaviour
with the fft_sink2 block.

Also, in an unrelated question, is 25Msps the maximum bandwidth of the
host-USRP interface for the N210 without having to modify the firmware?

Cheers,

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


Re: [Discuss-gnuradio] USRP, GNU Radio on Windows

2010-08-05 Thread John Wilson
Hey,

This may seem like a dumb suggestion but have you tried running the scripts
from the command line to see why they're failing? Start with something
simple like dial_tone.py (from the python/audio subfolder in
gnuradio-examples). I've never used minGW, but I had no problems getting
GNURadio installed and working with cygwin.

John


On Thu, Aug 5, 2010 at 5:41 AM, Florian Eugen florian_eu...@yahoo.comwrote:

 Hi Jason,

thank you for the reply, I updated the GNU Radio to version 3.3.0, but
 there is not working. If I want to start a script by double clicking the cmd
 line window is opened and closed and nothing happens. The USB driver is
 installed, everything seems to be OK but it's not.
 Florian.

 Florian,
 
 Welcome.  Unfortunately, your next step will be to upgrade to GNU
 Radio 3.3.0 or later.  The WBX was released after GNU Radio 3.2.2 and
 therefore will not be supported by your GNU Radio installation.
 
 Jason


 ___
 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] PLL and VCO questions

2010-08-02 Thread John Wilson
Hey,

You can't make a feedback system in the Python flowgraph. You can, however
use feedback in an individual signal processing block. If you need to use a
PLL look at the Costas loop block which locks to RF signals with complex
baseband components eg. QPSK, SSB etc.

John


On Mon, Aug 2, 2010 at 2:52 AM, Rahman, Muhammad Mahboob Ur 
mahboob-rah...@uiowa.edu wrote:

 Hi all,

 I have made up a simple PLL block in GRC using a multiplier phase detector,
 low pass filter (FIR) and VCO to lock to a 1KHz reference. When I run the
 simulation, it gives me a run time error flow graph has loops!. Does it
 mean that I cannot make any kind of feedback system in the gnuradio or is
 there something else to ponder? Also, I am adding 1 to the output of the
 low pass filter so that when the phase error (output of low pass filter)
 becomes zero in the locked state, the VCO then runs at its quiescent
 frequency of 1KHz (I have set the sensitivity of VCO as 2*pi*1K rad/s/V). Is
 it the right way to use VCO?

 Below is the error message:

 --
 --

 Generating: /home/mahboob/Desktop/top_block.py

 Executing: /home/mahboob/Desktop/top_block.py

  gr_fir_fff: using SSE
 Traceback (most recent call last):
  File /home/mahboob/Desktop/top_block.py, line 71, in module
tb.Run(True)
  File
 /usr/lib/python2.6/dist-packages/grc_gnuradio/wxgui/top_block_gui.py, line
 73, in Run
if start: self.start()
  File /usr/lib/python2.6/dist-packages/gnuradio/gr/top_block.py, line 97,
 in start
self._tb.start()
  File
 /usr/lib/python2.6/dist-packages/gnuradio/gr/gnuradio_swig_py_runtime.py,
 line 1455, in start
return _gnuradio_swig_py_runtime.gr_top_block_sptr_start(self)
 RuntimeError: flow graph has loops!
 ___
 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] PLL and VCO questions

2010-08-02 Thread John Wilson
Hey Mahboob,

Maybe take a look at the gr_mpsk_receiver block source for reference, that
implements a Costas Loop with provision for constant frequency offset
(theta). Anyway processing block it is, good luck!

John


On Mon, Aug 2, 2010 at 3:47 PM, Rahman, Muhammad Mahboob Ur 
mahboob-rah...@uiowa.edu wrote:

  Hi John,

 I have to implement a modified version of costas loop which is to be
 used to compensate for frequency offset present between LO's of two USRP's
 (RFX900). So, I think I should make a new such signal processing block now.

 Thanks,
 Mahboob

  --
 *From:* John Wilson [johnmwilso...@gmail.com]
 *Sent:* 02 August 2010 02:33
 *To:* Rahman, Muhammad Mahboob Ur
 *Cc:* discuss-gnuradio
 *Subject:* Re: [Discuss-gnuradio] PLL and VCO questions

  Hey,

 You can't make a feedback system in the Python flowgraph. You can, however
 use feedback in an individual signal processing block. If you need to use a
 PLL look at the Costas loop block which locks to RF signals with complex
 baseband components eg. QPSK, SSB etc.

 John


 On Mon, Aug 2, 2010 at 2:52 AM, Rahman, Muhammad Mahboob Ur 
 mahboob-rah...@uiowa.edu wrote:

 Hi all,

 I have made up a simple PLL block in GRC using a multiplier phase
 detector, low pass filter (FIR) and VCO to lock to a 1KHz reference. When I
 run the simulation, it gives me a run time error flow graph has loops!.
 Does it mean that I cannot make any kind of feedback system in the gnuradio
 or is there something else to ponder? Also, I am adding 1 to the output of
 the low pass filter so that when the phase error (output of low pass filter)
 becomes zero in the locked state, the VCO then runs at its quiescent
 frequency of 1KHz (I have set the sensitivity of VCO as 2*pi*1K rad/s/V). Is
 it the right way to use VCO?

 Below is the error message:

 --
 --

 Generating: /home/mahboob/Desktop/top_block.py

 Executing: /home/mahboob/Desktop/top_block.py

  gr_fir_fff: using SSE
 Traceback (most recent call last):
  File /home/mahboob/Desktop/top_block.py, line 71, in module
tb.Run(True)
  File
 /usr/lib/python2.6/dist-packages/grc_gnuradio/wxgui/top_block_gui.py, line
 73, in Run
if start: self.start()
  File /usr/lib/python2.6/dist-packages/gnuradio/gr/top_block.py, line
 97, in start
self._tb.start()
  File
 /usr/lib/python2.6/dist-packages/gnuradio/gr/gnuradio_swig_py_runtime.py,
 line 1455, in start
return _gnuradio_swig_py_runtime.gr_top_block_sptr_start(self)
 RuntimeError: flow graph has loops!
 ___
 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] What happens to a block as wait() finishes?

2010-08-02 Thread John Wilson
Hello,

I'm just wondering, what happens within block code when whatever shuts down
the graph after the gr_top_block.wait() executes? Is there condition
detectable from within a block which could be used to run some code when the
block pauses? I want to copy the remaining input buffer into an internal
memory buffer to fix a problem I'm getting with the FIR block over a wait()
run() cycle.

Also I'm guessing that I can overload the gr_block.start() function within a
custom block declaration to copy this buffer back to the input buffer
somehow?

Cheers,

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


[Discuss-gnuradio] Re: Problem with FIR filter

2010-07-22 Thread John Wilson
So does no one have any idea about this? It doesn't seem like it should be
too difficult to solve, I've worked around the problem for the simulations
I'm currently running but it's a shame as it reveals a fundamental
incapacity for GNU Radio to perform some other interesting simulations and
techniques, notably (for me at least) in the area of repeat requests.
Currently I'm implementing a type II HARQ repeat request system by
dynamically reconfiguring a flow graph during operation, this makes use of
the run() command a lot but if every time I run this command every filter in
the system is reset it's going to make it almost impossible to implement.

Up to now I've been really impressed with GNU Radio, even to the point of
writing a conference paper (for the upcoming NORDIC '10 HF conference in
Sweden) about how good the system is in the lab. I think the API is very
well written and like how the Python scripting aspect allows code written
for testing and simulation of techniques to be plonked straight into a
working radio. Unfortunately the problem below seems pretty fundamental and
can be treated (at least in the context of how I'm using the software) as a
pretty major bug. Does anyone have any opinion on this?

Also if anyone has any information on how the filters are implemented I'll
have a go at fixing this myself, I've taken a quick look at the filters
folder in the source directory but nothing's jumping out at me and I'm
currently pretty busy desperately trying to finish off my thesis!

Cheers,

John



On Tue, Jul 20, 2010 at 7:55 PM, John Wilson johnmwilso...@gmail.comwrote:

 Hello,

 I've got a problem with the FIR filters in GNU radio. Basically, at the
 moment I'm using it as a platform to run some simulations on (as I've
 already written a load of code on it for implementing a digital radio), and
 one of the tests I'm doing is trying to find the BER through an equaliser.
 To do this I'm loading a vector source up, running my flow graph with run()
 and upon completion I'm checking a vector sink for errors. This works fine
 for a fixed channel. The channel model I'm now using (a Watterson model
 which I've coded into the flow graph), however, uses a FIR with a large
 number of taps. Now the problem is that every time I run my flow graph with
 run(), which presumably also calls wait(), the FIR seems to start from a
 reset state. Is there any way to keep the contents of the FIR's shift
 register in situ through calling run() multiple times? Every other signal
 processing block I have maintains its state through this. For the record I'm
 not calling stop() at all in the code, which I would expect to reset
 everything.

 I've set up a quick test case to describe this problem,

 So if I set up a little top_block like this, which just sends a string of
 complex symbols valued +1+0j through a FIR filter, and receives the result
 in block_out;

 --

 --
 class my_top_block(gr.top_block):
   def __init__(self):
 gr.top_block.__init__(self)

 self.data_rate = 1000;
 self.totbits = 0;
 self.toterrors = 0;

 grey_const = ([1, -1])

 length = 2

 blank = [0x0,] * (length)
 taps = [1,] * 10

 self.transmit_source = gr.vector_source_b(blank, False, length);

 self.unpack_for_mod = gr.packed_to_unpacked_bb(1, gr.GR_MSB_FIRST)

 self.symbol_mapper = gr.chunks_to_symbols_bc(grey_const)

 self.fir = gr.fir_filter_ccc(1, taps)

 self.v2s = gr.vector_to_stream(1, length)

 self.connect(self.transmit_source, self.v2s, self.unpack_for_mod,
 self.symbol_mapper, self.fir)

 self.connect(self.fir, block_out)

 -

 Then if I run it from main() like this;


 -
 def main ():

 tb = my_top_block();

 for a in range(20):

 tb.run()

 for n in block_out.data():

 print n

 block_out.clear()

 tb.transmit_source.rewind()


 -

 I get as output;


 -
  gr_fir_ccc: using SSE
 (1+0j)
 (2+0j)
 (3+0j)
 (4+0j)
 (5+0j)
 (6+0j)
 (7+0j)
 (8+0j)
 (9+0j)
 (10+0j)
 (10+0j)
 (10+0j)
 (10+0j)
 (10+0j)
 (10+0j)
 (10+0j)
 (1+0j)
 (2+0j)
 (3+0j)
 (4+0j)
 (5+0j)
 (6+0j)
 (7+0j)
 (8+0j)
 (9+0j)
 (10+0j)
 (10+0j)
 (10+0j)
 (10+0j)
 (10+0j)
 (10+0j)
 (10+0j)
 (1+0j)
 (2+0j)
 (3+0j)
 (4+0j)
 (5+0j)
 (6+0j)
 (7+0j)
 (8+0j)
 .
 .
 etc

 

 Which is wrong (after the first 10 outputs the output should

Re: [Discuss-gnuradio] Re: Problem with FIR filter

2010-07-22 Thread John Wilson
On Thu, Jul 22, 2010 at 6:48 PM, Eric Blossom e...@comsec.com wrote:

 On Thu, Jul 22, 2010 at 05:13:09PM +0100, John Wilson wrote:
  So does no one have any idea about this? It doesn't seem like it should
 be
  too difficult to solve, I've worked around the problem for the
 simulations
  I'm currently running but it's a shame as it reveals a fundamental
  incapacity for GNU Radio to perform some other interesting simulations
 and
  techniques, notably (for me at least) in the area of repeat requests.
  Currently I'm implementing a type II HARQ repeat request system by
  dynamically reconfiguring a flow graph during operation, this makes use
 of
  the run() command a lot but if every time I run this command every filter
 in
  the system is reset it's going to make it almost impossible to implement.

 Part of the challenge in implementing dynamic reconfiguration is what
 to do with any intermediate samples left over in the buffers.  This
 brings up questions such as do the blocks own the buffers?  If so,
 does the upstream block own the buffer, or the downstream block?  What
 about the cases where there are multiple downstream readers of a
 buffer?  What happens if you replace the upstream block?  What about
 the downstream block?

 With regards to the FIRs, I think what you're seeing is a side effect
 of our decision to implement the delay line implicitly. That is, it's
 handled using the history mechanism, and involves pre-stuffing the
 input buffer with zeros.  The chief advantage of this strategy is
 performance.  This idea combined with the our zero copy MMU circular
 buffer trick, means there are no corner cases in the implementation of
 the FIRs (no end-of-buffer wrap around etc.) and no cycles are
 expended storing anything in any delay line.  (Having versions of the
 FIRs that explicity handle a delay line is definitely possible.)


I understand, so I'm guessing the operation of the FIRs is a lot more
'fundamental' than the other common blocks in that their operation is quite
intimately tied up with the lower level buffer management of the flow graph
itself. I've read about the history mechanism, and I understand that when
flow graph edges are reconfigured then not calling it could cause problems.
However in my case I don't need the graph edges connecting to the FIR to
change at all, in fact I need them to stay in the exact state that they were
left in when wait() was called to maintain the data integrity through these
buffers (and therefore the FIR). To put this into context the part of the
graph that's causing a problem is part of the channel model, a Watterson
model which goes something like this;


Signal In

I

v
WGN - Gaussian Filter - Interpolation - Anti-Aliasing filter - Multiply

I

v

AWGN

 I

 v

Signal Out

The anti-aliasing filter has a large number of taps compared to each packet
length. I was hoping to send one packet at a time, check it and re-run the
graph, starting the model from here it left off, the model takes a few
thousand bits sent through it to fill up the buffers, so the first few
packets send through it are received as rubbish. When sending one packet at
a time between resets, it's always rubbish! I fixed this by just sending all
my packets in one transmission and checking them at the block level with a
custom block, but the repeat request techniques I have require that the
run() method be called.

Looking back at my ARQ test code (which I wrote a while back) I can see that
it was a bit of a hack, I'm instructing my transmit source to 'send nothing'
when a repeat is needed, by this I mean the start point is actually
requested to run the work function again, copy nothing to the buffer and
return 0. The repeat packet generator then generates the actual data to be
transmitted. This is to fool GNU Radio into believing that its sending
something from the start point of the graph and is clearly related to this
issue. So me calling this a 'serious bug' might have been a little
melodramatic!


I understand that you're relating with this like it's a serious bug,
 but I think it would be more productive if you would specify exactly
 the behavior that you want, see if that spec is consistent with
 expectations that other folks may have (for their own good reasons),
 and then we could discuss where in the code the modifications would
 go.

 A related question is when (if ever) should runtime state (both
 external to a block, like the buffers) and internal state (say PLL
 state inside of a block) be reset.


This is a good question and I think it would be nice to build in a little
more user involvement into this. I think there needs to be a further state
that can be entered on request, where the graph can be paused under certain
conditions without causing a reset of some or all of the buffers on the
graph edges, for instance when the graph detects that no further data is
being 'pulled' towards the end point (I'm guessing