⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fm_emph.py

📁 gnuradio软件无线电源程序.现在的手机多基于软件无线电
💻 PY
字号:
## Copyright 2005 Free Software Foundation, Inc.# # This file is part of GNU Radio# # GNU Radio is free software; you can redistribute it and/or modify# it under the terms of the GNU General Public License as published by# the Free Software Foundation; either version 2, or (at your option)# any later version.# # GNU Radio is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the# GNU General Public License for more details.# # You should have received a copy of the GNU General Public License# along with GNU Radio; see the file COPYING.  If not, write to# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,# Boston, MA 02111-1307, USA.# from gnuradio import grimport math##           1# H(s) = -------#         1 + s## tau is the RC time constant.# critical frequency: w_p = 1/tau## We prewarp and use the bilinear z-transform to get our IIR coefficients.# See "Digital Signal Processing: A Practical Approach" by Ifeachor and Jervis#class fm_deemph(gr.hier_block):    """    FM Deemphasis IIR filter.    """    def __init__(self, fg, fs, tau=75e-6):        """        @param fg: flow graph        @type fg: gr.flow_graph        @param fs: sampling frequency in Hz        @type fs: float        @param tau: Time constant in seconds (75us in US, 50us in EUR)        @type tau: float        """        w_p = 1/tau        w_pp = math.tan (w_p / (fs * 2)) # prewarped analog freq        a1 = (w_pp - 1)/(w_pp + 1)        b0 = w_pp/(1 + w_pp)        b1 = b0        btaps = [b0, b1]        ataps = [1, a1]        if 0:            print "btaps =", btaps            print "ataps =", ataps            global plot1            plot1 = gru.gnuplot_freqz (gru.freqz (btaps, ataps), fs, True)        deemph = gr.iir_filter_ffd(btaps, ataps)        gr.hier_block.__init__(self, fg, deemph, deemph)##         1 + s*t1# H(s) = ----------#         1 + s*t2## I think this is the right transfer function.### This fine ASCII rendition is based on Figure 5-15# in "Digital and Analog Communication Systems", Leon W. Couch II###               R1#         +-----||------+#         |             |#  o------+             +-----+--------o#         |      C1     |     |#         +----/\/\/\/--+     \#                             /#                             \ R2#                             /#                             \#                             |#  o--------------------------+--------o## f1 = 1/(2*pi*t1) = 1/(2*pi*R1*C)##         1          R1 + R2# f2 = ------- = ------------#      2*pi*t2    2*pi*R1*R2*C## t1 is 75us in US, 50us in EUR# f2 should be higher than our audio bandwidth.### The Bode plot looks like this:###                    /----------------#                   /#                  /  <-- slope = 20dB/decade#                 /#   -------------/#               f1    f2## We prewarp and use the bilinear z-transform to get our IIR coefficients.# See "Digital Signal Processing: A Practical Approach" by Ifeachor and Jervis#class fm_preemph(gr.hier_block):    """    FM Preemphasis IIR filter.    """    def __init__(self, fg, fs, tau=75e-6):        """        @param fg: flow graph        @type fg: gr.flow_graph        @param fs: sampling frequency in Hz        @type fs: float        @param tau: Time constant in seconds (75us in US, 50us in EUR)        @type tau: float        """        # FIXME make this compute the right answer                btaps = [1]        ataps = [1]        if 0:            print "btaps =", btaps            print "ataps =", ataps            global plot2            plot2 = gru.gnuplot_freqz (gru.freqz (btaps, ataps), fs, True)        preemph = gr.iir_filter_ffd(btaps, ataps)        gr.hier_block.__init__(self, fg, preemph, preemph)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -