blob: 7c7edf5e0ab91aacf7433c0741c3f4b8c34b1185 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
# 2008-02-07
#
# These files have not yet been update to use the new top_block/hier_block2
# interfaces. Until someone does that, this files will no longer run.
#
The files in this directory implement a fairly simple HF radio that works
with the basic rx daughter board on the USRP.
Many thanks to the Gnu Radio folks for a great new way to waste large blocks
of time in infinitely tweaking a huge number of free parameters.
Start the receiver by running the radio.py in this directory. Or from the
Python prompt type "from radio import *" and you'll get the prompt back
with the receiver running. You can then poke around to see what's going on.
There are two spectrum displays. One is the output of the USRP and displays
about 300KHz of bandwidth centered at the current tuning freq. The other
displays the output spectrum of the demodulator.
The demodulator does AM demod using the complex modulus block from gr. It
does SSB demod using the frequency translating fir filter as a complex
hilbert transformer. The taps for this filter were generated using a program
called Scilab and the Scilab program in the file hfir.sci. More details in
the associated files.
Tune the receiver using the spin buttons under the big frequency display.
The agc block is a roll your own. The standard agc in the newer CVS updates
seems to work but doesn't seem to have adjustable time constants or provide
access to internal signal nodes which are used for the RSSI.
The AGC authority (a sort of gain parameter) and the reference level used
in the power to dB computagion can be adjusted using the spin buttons.
The audio bandwidth can be similarly adjusted from about 50Hz to 10KHz.
The GUI layout was produced using wxGlade. The file radio.xml is the GUI
specification. It will produce a file called ui.py which is subclassed
by classes defined in radio.py. The ui.py is purely generated by wxGlade
all app specific code for the GUI is in radio.py.
Most of the actual signal processing code is built up in the other included
files using the hierarchical block facilities. This organization should
make it easier to tweak to your heart's content.
Known bugs weakness and other
wxPython and wxGlade seem to conspire to insure that the layout can never
be exactly what you have in mind.
Some of the controls don't behave as one might like. wx spin controls
and spin boxes only support integers so it is rather a nuisance to make
units come out nice. In the process of development I came up with a reasonable
kluge so there is a mixture of approaches.
Enjoy.
M. Revnell 2006-Jan-06
|