Hi, Currently I am doing my Final Year Project to develop a phase
measurement using Phase Locked Loop theory. I am using USRP N210 for the
hardware and I have installed Gnuradio Companion in Ubuntu 12.04
LTS (running in VMplayer). I have studied online that I can’t use
companion to add and drop the current available blocks to construct a
phase locked loop. I managed to locate gr_pll_carriertracking_cc.cc and
gr_pll_carriertracking_cc.h file from gnuradio source archive. I also
know that I can use gr_modtool to construct my own OOT module. But I am
having some difficulties in using gr_modtool. There are many functions
is the gr_pll_carriertracking_cc.cc.
(b) Am I putting the whole code (gr_pll_carriertracking_cc.cc) and
generate it as ONE OOT module with few functions inside or should I
separate the functions to become more OOT module and connect them using
wire in companion?
(c) How can I include all the header file into the make process?
There are few header files being used in the code such as
gr_io_signature.h , gr_sincos.h….
I would really appreciate your help in guiding me.
This depends what you want to achieve. Use gr_modtool help add for more
advice.
(b)Am I putting the whole code (gr_pll_carriertracking_cc.cc http://cc.cc/) and generate it as ONE OOT module with few functions
inside or should I separate the functions to become more OOT module and
connect them using wire in companion?
More modular is usually better.
(c)How can I include all the header file into the make process? There
are few header files being used in the code such as gr_io_signature.h ,
gr_sincos.h.
How good is your C++? Maybe it’s worth brushing up the basics first, or
perhaps you might consider writing the block in Python.
Also, I recommend looking at some of the blocks in GNU Radio as
examples. I didn’t fully understand what your objective is, but there
are PLL blocks which you can have a look at for input.
Also, I don’t see why you cannot combine other blocks to realize
your own PLL implementation. Where did you read that you “cant use
companion to add and drop the current available blocks to construct a
phase locked loop”?
Wai Yee has a point here – you can’t have a circle in your (sample
stream) flow graph – GNU Radio doesn’t allow that for reasons of
causality.
You can have a “loose” loop with feedback done with message ports, but
that’s not the same as a control loop (since there’s no defined delay
between the sample for which a error was estimated and the sample where
the error correction is applied when using the asynchronous messages).
Thus, you can’t drag’n’drop together a “proper” control loop from
discrete things like adders and integrators that you could design and
analyze theoretically.
In effect, GNU Radio’s control loops are monolithic blocks – that’s
somewhat sad from a modularity perspective, but then again, there’s the
control loop base class that allows you to implement arbitrary control
loops rather easily, so Wai Yee, I recommend looking at the
documentation [1], the referenced paper and the source code[2] of the
existing costas loop.
Best regards,
Marcus M.
PS:
I am using USRP N210 for the hardware and I have installed Gnuradio
Companion in Ubuntu 12.04 LTS (running in VMplayer).
as a side note, I don’t recommend running your digital signal processing
for a high-rate capable device inside a VM, unless you know what you’re
doing – the additional overhead in network packet handling might prove
to be a problem. At lower rates, it should work fine.
Also, why are you using a three years old Ubuntu? There’s a new LTS
release, almost a year old now, 14.04; I recommend using a modern
platform.
Hi, Currently I am doing my Final Year Project to develop a phase
measurement using Phase Locked Loop theory. I am using USRP N210 for
the hardware and I have installed Gnuradio Companion in Ubuntu 12.04
LTS (running in VMplayer). I have studied online that I cant use
companion to add and drop the current available blocks to construct a
phase locked loop.
Hello,
what to you mean by that last sentence? GNURadio comes with PLL blocks
in a few different fashions that can be used from the companion just
fine. Also, I don’t see why you cannot combine other blocks to realize
your own PLL implementation. Where did you read that you “cant use
companion to add and drop the current available blocks to construct a
phase locked loop”?
I realized this while having my coffee this morning. I should avoid to
reply to emails before assuming the right amount of caffeine
oh… I know that feeling!
In effect, GNU Radio’s control loops are monolithic blocks – that’s
somewhat sad from a modularity perspective, but then again, there’s the
control loop base class that allows you to implement arbitrary control
loops rather easily
Last time I looked into it, this base class is not that generic: it can
be easily used to implement phase-lock loops, but it did not seem
designed to control other quantities, like amplitude for example. But I
may have had a too quick loot at it.
I’d have to admit, you’re right. I’m not quite sure, but I think Wai Yee
really just wants a PLL – so that would be fine.
You can have a “loose” loop with feedback done with message ports, but
that’s not the same as a control loop (since there’s no defined delay
between the sample for which a error was estimated and the sample where
the error correction is applied when using the asynchronous messages).
Thus, you can’t drag’n’drop together a “proper” control loop from
discrete things like adders and integrators that you could design and
analyze theoretically.
Hello Marcus,
I realized this while having my coffee this morning. I should avoid to
reply to emails before assuming the right amount of caffeine
In effect, GNU Radio’s control loops are monolithic blocks – that’s
somewhat sad from a modularity perspective, but then again, there’s the
control loop base class that allows you to implement arbitrary control
loops rather easily
Last time I looked into it, this base class is not that generic: it can
be easily used to implement phase-lock loops, but it did not seem
designed to control other quantities, like amplitude for example. But I
may have had a too quick loot at it.