Re: [Discuss-gnuradio] Getting my feet wet on the Tx side of the world

From:

Alexandru Csete

Subject:

Re: [Discuss-gnuradio] Getting my feet wet on the Tx side of the world

Date:

Sat, 4 Sep 2010 10:43:20 +0200

On Sat, Sep 4, 2010 at 1:53 AM, Marcus D. Leech <address@hidden> wrote:
> OK, so I'm wetting my collective feet (all two of them) in the Tx side
> of the world, with a comms/telecom application, no less.
>
> I'm playing with the OP25 project, which is an open-source initiative to
> produce tools to deal with the so-called
> "Project 25" digital radio standard that is emerging as the way lots
> of public-service people talk to each other
> on their radios.
>
> The TX side of the project is still fairly primitive--they have a
> hand-coded flow-graph that implements an APCO-25 4-level
> FSK modulator, using an *audio* sink, and then carefully plugging the
> audio into the guts of a physical radio, right at the
> FM modulator (for those of you who were around in the old amateur
> packet radio days, that's the way we used to do 9600BPS
> packet--bypass the usual FM audio filtering, and plug directly into
> the FM modulator).
>
> So, I decided to adapt what they'd done on the audio side to driving a
> USRP directly (with an appropriate RF card, naturally).
>
> The audio version of their modulator is fairly straightforward. It
> takes two-bit sequences from a packed-byte stream, and uses them
> to produce symbols from a simple [1.0, 3.0, -1.0, -3.0]
> chunks-to-simples conversion. From there, the symbols are run through
> an RRC filter, then an FM preemphasis filter, then a gain multiplier
> block, and thence to the audio sink.
>
> I have constructed a flow-graph in GRC that I think does pretty-much the
> same thing, only instead of dumping to the audio port, it
> has an FM modulator block, and then goes to a USRP sink, with
> appropriate interpolation specified.
>
> My GRC flow-graph is here: http://www.sbrac.org/files/fm4_usrp_modulator.grc
>
> APCO-25 runs at a nominal symbol rate of 4800sps, to give 9600BPS, and
> occupies a nominal 12.5KHz of bandwidth. The rest of it
> involves the usual suspects of FEC coding, packetizing, etc, etc. I'm
> just interested in getting the modulator correct at this stage, since
> the rest of the "goo" is already partially addressed in the existing
> OP25 work.
>
> I'm not sure that my parameters for the RRC are correct, for one, and
> exactly what to set the "sensitivity" parameter to in the
> the FM modulator (I imagine it's similar to setting the deviation
> control on an analog FM modulator).
Hi Marcus,
In the nbfm_tx.py and wfm_tx.py blocks the sensitivity is calculated as:
k = 2 * math.pi * max_dev / quad_rate
> Also, I've copied the signal processing chain almost directly from the
> version of the modulator that dumps to the audio port, so perhaps
> there are shortcuts I can take to produce a nice APCO-25 4-level FSK
> signal that are "cheaper".
Maybe you can use the wfm_tx block?
Alex