OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [Documentation/] [video4linux/] [radiotrack.txt] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
NOTES ON RADIOTRACK CARD CONTROL
2
by Stephen M. Benoit (benoits@servicepro.com)  Dec 14, 1996
3
----------------------------------------------------------------------------
4
 
5
Document version 1.0
6
 
7
ACKNOWLEDGMENTS
8
----------------
9
This document was made based on 'C' code for Linux from Gideon le Grange
10
(legrang@active.co.za or legrang@cs.sun.ac.za) in 1994, and elaborations from
11
Frans Brinkman (brinkman@esd.nl) in 1996.  The results reported here are from
12
experiments that the author performed on his own setup, so your mileage may
13
vary... I make no guarantees, claims or warranties to the suitability or
14
validity of this information.  No other documentation on the AIMS
15
Lab (http://www.aimslab.com/) RadioTrack card was made available to the
16
author.  This document is offered in the hopes that it might help users who
17
want to use the RadioTrack card in an environment other than MS Windows.
18
 
19
WHY THIS DOCUMENT?
20
------------------
21
I have a RadioTrack card from back when I ran an MS-Windows platform.  After
22
converting to Linux, I found Gideon le Grange's command-line software for
23
running the card, and found that it was good!  Frans Brinkman made a
24
comfortable X-windows interface, and added a scanning feature.  For hack
25
value, I wanted to see if the tuner could be tuned beyond the usual FM radio
26
broadcast band, so I could pick up the audio carriers from North American
27
broadcast TV channels, situated just below and above the 87.0-109.0 MHz range.
28
I did not get much success, but I learned about programming ioports under
29
Linux and gained some insights about the hardware design used for the card.
30
 
31
So, without further delay, here are the details.
32
 
33
 
34
PHYSICAL DESCRIPTION
35
--------------------
36
The RadioTrack card is an ISA 8-bit FM radio card.  The radio frequency (RF)
37
input is simply an antenna lead, and the output is a power audio signal
38
available through a miniature phone plug.  Its RF frequencies of operation are
39
more or less limited from 87.0 to 109.0 MHz (the commercial FM broadcast
40
band).  Although the registers can be programmed to request frequencies beyond
41
these limits, experiments did not give promising results.  The variable
42
frequency oscillator (VFO) that demodulates the intermediate frequency (IF)
43
signal probably has a small range of useful frequencies, and wraps around or
44
gets clipped beyond the limits mentioned above.
45
 
46
 
47
CONTROLLING THE CARD WITH IOPORT
48
--------------------------------
49
The RadioTrack (base) ioport is configurable for 0x30c or 0x20c.  Only one
50
ioport seems to be involved.  The ioport decoding circuitry must be pretty
51
simple, as individual ioport bits are directly matched to specific functions
52
(or blocks) of the radio card.  This way, many functions can be changed in
53
parallel with one write to the ioport.  The only feedback available through
54
the ioports appears to be the "Stereo Detect" bit.
55
 
56
The bits of the ioport are arranged as follows:
57
 
58
  MSb                                                         LSb
59
+------+------+------+--------+--------+-------+---------+--------+
60
| VolA | VolB | ???? | Stereo | Radio  | TuneA | TuneB   | Tune   |
61
|  (+) |  (-) |      | Detect | Audio  | (bit) | (latch) | Update |
62
|      |      |      | Enable | Enable |       |         | Enable |
63
+------+------+------+--------+--------+-------+---------+--------+
64
 
65
 
66
VolA . VolB  [AB......]
67
-----------
68
 
69
 
70
1 0 : volume -    (some delay required)
71
1 1 : stay at present volume
72
 
73
Stereo Detect Enable [...S....]
74
--------------------
75
 
76
1 : Detect
77
 
78
  Results available by reading ioport >60 msec after last port write.
79
  0xff ==> no stereo detected,  0xfd ==> stereo detected.
80
 
81
Radio to Audio (path) Enable [....R...]
82
----------------------------
83
 
84
1 : Enable path  (audio produced)
85
 
86
TuneA . TuneB [.....AB.]
87
-------------
88
 
89
 
90
 
91
1 0 : "one" bit phase 1
92
1 1 : "one" bit phase 2
93
 
94
  24-bit code, where bits = (freq*40) + 10486188.
95
  The Most Significant 11 bits must be 1010 xxxx 0x0 to be valid.
96
  The bits are shifted in LSb first.
97
 
98
Tune Update Enable [.......T]
99
------------------
100
 
101
1 : Tuner updating in progress
102
 
103
 
104
PROGRAMMING EXAMPLES
105
--------------------
106
Default:        BASE <-- 0xc8  (current volume, no stereo detect,
107
                                radio enable, tuner adjust disable)
108
 
109
Card Off:       BASE <-- 0x00  (audio mute, no stereo detect,
110
                                radio disable, tuner adjust disable)
111
 
112
Card On:        BASE <-- 0x00  (see "Card Off", clears any unfinished business)
113
                BASE <-- 0xc8  (see "Default")
114
 
115
Volume Down:    BASE <-- 0x48  (volume down, no stereo detect,
116
                                radio enable, tuner adjust disable)
117
                * wait 10 msec *
118
                BASE <-- 0xc8  (see "Default")
119
 
120
Volume Up:      BASE <-- 0x88  (volume up, no stereo detect,
121
                                radio enable, tuner adjust disable)
122
                * wait 10 msec *
123
                BASE <-- 0xc8  (see "Default")
124
 
125
Check Stereo:   BASE <-- 0xd8  (current volume, stereo detect,
126
                                radio enable, tuner adjust disable)
127
                * wait 100 msec *
128
                x <-- BASE     (read ioport)
129
                BASE <-- 0xc8  (see "Default")
130
 
131
                x=0xff ==> "not stereo", x=0xfd ==> "stereo detected"
132
 
133
Set Frequency:  code = (freq*40) + 10486188
134
                foreach of the 24 bits in code,
135
                (from Least to Most Significant):
136
                  to write a "zero" bit,
137
                    BASE <-- 0x01  (audio mute, no stereo detect, radio
138
                                    disable, "zero" bit phase 1, tuner adjust)
139
                    BASE <-- 0x03  (audio mute, no stereo detect, radio
140
                                    disable, "zero" bit phase 2, tuner adjust)
141
                  to write a "one" bit,
142
                    BASE <-- 0x05  (audio mute, no stereo detect, radio
143
                                    disable, "one" bit phase 1, tuner adjust)
144
                    BASE <-- 0x07  (audio mute, no stereo detect, radio
145
                                    disable, "one" bit phase 2, tuner adjust)
146
 
147
----------------------------------------------------------------------------

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.