[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Discuss-gnuradio] Re: Amateur television ATV

From: Martin Dvh
Subject: [Discuss-gnuradio] Re: Amateur television ATV
Date: Wed, 26 Apr 2006 15:56:34 +0200
User-agent: Debian Thunderbird 1.0.2 (X11/20051002)

Matteo Campanella wrote:
> hello,
> In the case of atv, as I believe the passband of the signal is way too large 
> for the throughput of usrp usb, are there any special techniques/tricks to 
> achieve some sort of result?
I think you mean FM-ATV, mainkly used at 23 cm. which has a bandwidth of 
approximately 17 MHz.
(There is also AM-ATV, mainly used at 70 cm which can have bandwidths as low as 
1 Mhz)

I can  think of three scenarios:
1: use less bits
If you settle for 16 Mhz bandwidth, you would need a decimation of 4.
This can be done if you use 8 bits samples over the usb bus.
This can be done right now with std_4rx_0tx.rbf fpga firmware (has no halfband).
You need to use std_4rx_0tx.rbf fpga firmware without halfband filter because 
the hb limits decimation to a minimum of 8

If you use the today ( 5 minutes ago) updated usrp_rx_cfile.py  to capture you 
can capture 16 Mhz of bandwidth by just issuing.

./usrp_rx_cfile.py --output-shorts -8 -d 4 -f wantedfreq -g wantedgain 

Disabling of the halfband filter is done automatically.
Note however you get 32 MB/sec of data, so you need a fast harddisk or use a 
ramdisk to capture to.

You have to set the gain very precisely because you have a very limited dynamic 
range when using 8 bits.

You can also capture to complex float values, (don't use --output-shorts) but 
this will double the needed disk-speed to 64MB/sec

If anybody can capture some FM-ATV station and make it available online I can 
see if I can make a working example.

2: do the demodulation in the fpga of the usrp, before the decimation.
A simple fm-demodulation (complex_to_arg) should be doable.
A complete pll based fm-demodulater is a bit more work.

3: Use a frontend with a higher digital bandwidth.
PCI or pci-express based ADC cards come to mind.

Once you have captured the data, you need to change the tv examples to use a 
fm-demodulater in stead of am detection.
You can also leave out the agc.

look in /gnuradio-core/src/python/gnuradio/blksimpl/wfm_rcv.py
and /gnuradio-core/src/python/gnuradio/blksimpl/wfm_rcv_pll.py
On how to do fm_demodulation.
The possible fm_demod blocks are:
gr.pll_freqdet_cf (alpha,beta,max_freq,-max_freq)
gr.quadrature_demod_cf (fm_demod_gain)

The pll-based version is much more precise but takes a lot more compute power.
gr.quadrature_demod_cf may be able to run in realtime.

something like this should work:
          max_dev = 4.0e6
          fm_demod_gain = usrp_rate/(2*math.pi*max_dev)
          self.fm_demod = gr.quadrature_demod_cf (fm_demod_gain)
          self.connect (self.src, self.fm_demod,self.invert_and_scale, 

You should also need to add a deemphasis block, but you can leave it out for 

If anybody can capture some FM-ATV and make it available online I can see if I 
can make a working example.

I could capture it myself, but I don't have an FM-ATV transmitter and there are 
no stations transmitting in my area right now.


> Regards
> Matteo

reply via email to

[Prev in Thread] Current Thread [Next in Thread]