Forum: GNU Radio ASK Modulation

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
F91f9e48d447aaa7fb1a3caae8825407?d=identicon&s=25 William Harding (Guest)
on 2009-03-17 13:32
(Received via mailing list)
I am trying to write an ASK Modulation block to transmit streams of 0's
and
1's.  In order to match the "symbol timing" of the protocol that I am
trying
to implement, would I keep an instance variable in the block that, in
effect, keeps track of how many samples have been processed by the block
so
far?  In other words, using the known sampling frequency and how many
samples have been processed in the block so far, to know whether to go
to
the next bit to be sent or not.

Also, what is the best way to define what bit sequence I would like to
send?  Would it be file_source?

Any other better ways that this can be done?  I am brand-new to
gnuradio,
but I have gone through most of the GnuRadio tutorial and the "How to
write
a block" tutorial.


Thanks.
Bill H.
79723aa1b24981dcec2dbf7fd59403c1?d=identicon&s=25 Brian Padalino (Guest)
on 2009-03-17 14:41
(Received via mailing list)
2009/3/17 William Harding <wpharding1@gmail.com>:
>
> Any other better ways that this can be done?  I am brand-new to gnuradio,
> but I have gone through most of the GnuRadio tutorial and the "How to write
> a block" tutorial.

I have never written a block for GNU Radio before, but I think you're
missing a fundamental concept here.

For the transmitter, you are given N bits and generate M*N output
samples of the appropriate amplitude.

Why do you feel there is a need to keep track of "symbol timing" in
the transmit path?

On the RX side, you should take a look at the source code.  There are
plenty of blocks which have instance variables associated with them
that can keep track of how many samples you've processed as well as
looking back in your history in case you need more information.  Try
here:

    http://www.gnuradio.org/trac/browser/gnuradio/trun...

Easy examples are the linear feedback shift registers, and there are
plenty of more complicated examples in the same directory.

I hope this has been helpful to you.

Good luck.

Brian
28a4af15b4d496d7900593255ea9c8a3?d=identicon&s=25 Ed Criscuolo (Guest)
on 2009-03-17 15:31
(Received via mailing list)
William Harding wrote:
> I am trying to write an ASK Modulation block to transmit streams of 0's
> and 1's.  In order to match the "symbol timing" of the protocol that I
> am trying to implement, would I keep an instance variable in the block
> that, in effect, keeps track of how many samples have been processed by
> the block so far?  In other words, using the known sampling frequency
> and how many samples have been processed in the block so far, to know
> whether to go to the next bit to be sent or not.

When receiving any digital bitstreams there are certain steps to do,
regardless of the modulation used.  There are many examples in both
GnuRadio and CGRAN.

As a quick summary, you should:

1. Demodulate whatever modulation (in this case, ASK) was used.  The
    sample rate should be at LEAST twice the symbol rate of the data.

2. Convert your samples to digital symbols.  For a trivial 2-level
    ASK, this would just be a simple bitslicer.  Note that the result
    is STILL at the sample rate, NOT the symbol rate.

3. Feed the resulting bitstream into a M&M clock recovery block.  This
    will resample the bitstream down to the data's clock rate, with one
    sample per bit.

4. Store to a file, or do further processing.

>
> Also, what is the best way to define what bit sequence I would like to
> send?  Would it be file_source?

That is one way.  You could also use a UDP source, or the TUN/TAP
device.

@(^.^)@  Ed
This topic is locked and can not be replied to.