Difference between revisions of "FM Deemphasis"

From GNU Radio
Jump to: navigation, search
(Created page with "Category:Block Docs Category:Stub Docs This is the template for the "Page-per-block Docs". This first section should describe what the block...")
 
(add Example Flowgraph)
 
(One intermediate revision by one other user not shown)
Line 1: Line 1:
 
[[Category:Block Docs]]
 
[[Category:Block Docs]]
[[Category:Stub Docs]]
+
An analog deemphasis filter:
This is the template for the [[:Category:Block_Docs|"Page-per-block Docs"]].  This first section should describe what the block does and how to use it, using however many paragraphs necessary.  Note that the title of the wiki page should match the block's name in GRC, i.e. the one defined in the block's .grc file.  Look at the [[FFT]] Block for a good example.
 
  
As this is a basic template, it's also in the [[:Category:Stub_Docs|"Stub Docs category"]]. Please improve it.
+
              R
 +
    o------/\/\/\/---+----o
 +
                  |
 +
                  = C
 +
                  |
 +
                  ---
 +
 
 +
Has this transfer function:
 +
 
 +
              1            1
 +
              ----          ---
 +
              RC          tau
 +
    H(s) = ---------- = ----------
 +
                1            1
 +
            s + ----      s + ---
 +
                RC          tau
 +
 
 +
And has its -3 dB response, due to the pole, at
 +
 
 +
    |H(j w_c)|^2 = 1/2  =>  s = j w_c = j (1/(RC))
 +
 
 +
Historically, this corner frequency of analog audio deemphasis filters
 +
been specified by the RC time constant used, called tau.
 +
So w_c = 1/tau.
 +
 
 +
FWIW, for standard tau values, some standard analog components would be:
 +
    tau = 75 us = (50K)(1.5 nF) = (50 ohms)(1.5 uF)
 +
    tau = 50 us = (50K)(1.0 nF) = (50 ohms)(1.0 uF)
 +
 
 +
In specifying tau for this digital deemphasis filter, tau specifies
 +
the *digital* corner frequency, w_c, desired.
 +
 
 +
The digital deemphasis filter design below, uses the
 +
"bilinear transformation" method of designing digital filters:
 +
 
 +
1. Convert digital specifications into the analog domain, by prewarping digital frequency specifications into analog frequencies.
 +
 
 +
w_a = (2/T)tan(wT/2)
 +
 
 +
2. Use an analog filter design technique to design the filter.
 +
 
 +
3. Use the bilinear transformation to convert the analog filter design to a digital filter design.
 +
 
 +
H(z) = H(s)|
 +
                s = (2/T)(1-z^-1)/(1+z^-1)
 +
 
 +
 
 +
        w_ca        1          1 - (-1) z^-1
 +
    H(z) = ---- * ----------- * -----------------------
 +
        2 fs        -w_ca            -w_ca
 +
                1 - -----        1 + -----
 +
                      2 fs              2 fs
 +
                              1 - ----------- z^-1
 +
                                      -w_ca
 +
                                  1 - -----
 +
                                        2 fs
 +
 
 +
We use this design technique, because it is an easy way to obtain a filter design with the -6 dB/octave roll-off required of the deemphasis filter.
 +
 
 +
Jackson, Leland B., _Digital_Filters_and_Signal_Processing_Second_Edition_,
 +
Kluwer Academic Publishers, 1989, pp 201-212
 +
 
 +
Orfanidis, Sophocles J., _Introduction_to_Signal_Processing_, Prentice Hall,
 +
1996, pp 573-583
  
 
== Parameters ==
 
== Parameters ==
(''R''): <span class="plainlinks">[https://wiki.gnuradio.org/index.php/GNURadioCompanion#Variable_Controls ''Run-time adjustable'']</span>
 
  
; Param 1 (''R'')
+
; Sample Rate
: Description of parameter, provide any tips or recommended values.  Note that the name of the parameter above should match the param's label that shows up in grc (e.g. Sample Rate).
+
: Sampling frequency in Hz
  
; Param 2
+
; Tau
: blah blah blah
+
: Time constant in seconds (75us in US, 50us in EUR)
  
 
== Example Flowgraph ==
 
== Example Flowgraph ==
  
Insert description of flowgraph here, then show a screenshot of the flowgraph and the output if there is an interesting GUI.  Currently we have no standard method of uploading the actual flowgraph to the wiki or git repo, unfortunately. The plan is to have an example flowgraph showing how the block might be used, for every block, and the flowgraphs will live in the git repo.
+
This flowgraph implements a Broadcast FM stereo receiver using basic blocks.
 +
 
 +
[[File:USRP_FM_stereo_fg.png|644px]]
  
 
== Source Files ==
 
== Source Files ==
  
; C++ files
+
; Python files
: [https://github.com/gnuradio/gnuradio TODO]
+
: [https://github.com/gnuradio/gnuradio/blob/master/gr-analog/python/analog/fm_emph.py]
 
 
; Header files
 
: [https://github.com/gnuradio/gnuradio TODO]
 
 
 
; Public header files
 
: [https://github.com/gnuradio/gnuradio TODO]
 
  
 
; Block definition
 
; Block definition
: [https://github.com/gnuradio/gnuradio TODO]
+
: [https://github.com/gnuradio/gnuradio/blob/master/gr-analog/grc/analog_fm_deemph.block.yml]

Latest revision as of 15:14, 22 June 2020

An analog deemphasis filter:

              R
   o------/\/\/\/---+----o
                  |
                 = C
                  |
                 ---

Has this transfer function:

              1             1
             ----          ---
              RC          tau
   H(s) = ---------- = ----------
                1             1
           s + ----      s + ---
                RC           tau

And has its -3 dB response, due to the pole, at

   |H(j w_c)|^2 = 1/2  =>  s = j w_c = j (1/(RC))

Historically, this corner frequency of analog audio deemphasis filters been specified by the RC time constant used, called tau. So w_c = 1/tau.

FWIW, for standard tau values, some standard analog components would be:

   tau = 75 us = (50K)(1.5 nF) = (50 ohms)(1.5 uF)
   tau = 50 us = (50K)(1.0 nF) = (50 ohms)(1.0 uF)

In specifying tau for this digital deemphasis filter, tau specifies the *digital* corner frequency, w_c, desired.

The digital deemphasis filter design below, uses the "bilinear transformation" method of designing digital filters:

1. Convert digital specifications into the analog domain, by prewarping digital frequency specifications into analog frequencies.

w_a = (2/T)tan(wT/2)

2. Use an analog filter design technique to design the filter.

3. Use the bilinear transformation to convert the analog filter design to a digital filter design.

H(z) = H(s)|
                s = (2/T)(1-z^-1)/(1+z^-1)


        w_ca         1          1 - (-1) z^-1
   H(z) = ---- * ----------- * -----------------------
        2 fs        -w_ca             -w_ca
                1 - -----         1 + -----
                     2 fs              2 fs
                              1 - ----------- z^-1
                                      -w_ca
                                  1 - -----
                                       2 fs

We use this design technique, because it is an easy way to obtain a filter design with the -6 dB/octave roll-off required of the deemphasis filter.

Jackson, Leland B., _Digital_Filters_and_Signal_Processing_Second_Edition_, Kluwer Academic Publishers, 1989, pp 201-212

Orfanidis, Sophocles J., _Introduction_to_Signal_Processing_, Prentice Hall, 1996, pp 573-583

Parameters[edit]

Sample Rate
Sampling frequency in Hz
Tau
Time constant in seconds (75us in US, 50us in EUR)

Example Flowgraph[edit]

This flowgraph implements a Broadcast FM stereo receiver using basic blocks.

USRP FM stereo fg.png

Source Files[edit]

Python files
[1]
Block definition
[2]