初级教程(4)DSP 模块3-改变采样率

3.改变采样率

本教程描述了如何在 GNU Radio 中实现采样率变动。

之前的教程“设计滤波器抽头”演示了如何设计滤波器抽头以及如何在信号处理模块中使用它们。请先完成设计滤波器抽头教程,然后再完成此教程。

插值

插值是增加采样率并因此增加可用带宽的过程。此示例演示如何使用插值 FIR 滤波器块增加采样率。

首先将以下块添加到流程图并连接它们:

  1. 两个变量
  2. 低通滤波器抽头
  3. QT 图形用户界面范围
  4. 信号源
  5. 内插 FIR 滤波器
  6. Throttle
  7. QT GUI频率Sink
InterpolationFlowgraphStart.png


编辑两个新变量块中的第一个:

  • Id: interpolation_rate
  • Value: 4

编辑两个新变量块中的第二个:

  • Id: samp_rate_interpolated
  • Value: samp_rate*interpolation_rate

编辑Low-Pass Filter Taps块的属性:

  • Id: lowPassTaps
  • Sample Rate (Hz): samp_rate_interpolated
  • Cutoff Freq (Hz): samp_rate_interpolated/(interpolation_rate*2)
  • Transition Width (Hz): samp_rate_interpolated/(interpolation_rate*4)
EditLowPassTapsProperties.png


编辑QT GUI Range块 的属性:

  • Id: frequency
  • Default Value: 0
  • Start: -samp_rate/2
  • Stop: samp_rate/2

编辑信号源的属性:

  • Frequency: frequency

编辑Interpolating FIR Filter模块的属性:

  • Interpolation: interpolation_rate
  • Taps: lowPassTaps
插值FIRFilterProperties.png


插值 FIR 滤波器 将采样率从 32 kHz 增加到 128 kHz,由于interpolation_rate变量,增加了 4 倍。通过编辑Advanced选项卡下的Comment字段来记录这一点:

AddCommentToBlock.png


然后评论在 GRC 中显示为视觉提醒:

SampleRateBlockComment.png


编辑Throttle属性:

  • 采样率:samp_rate_interpolated

编辑QT GUI Frequency Sink属性:

  • 带宽 (Hz):samp_rate_interpolated

流程图如下所示:

InterpolationFinalFlowgraph.png


运行流程图显示以下QT GUI 频率接收器

RunInterpolationFlowgraph.png


四个峰值来自插值操作。滚轮单击窗口并启用Max Hold

InterpolationClickMaxHold.png


拖动频率滑块以显示四个峰值的频率如何变化,从而创建插值 FIR 滤波器 块的频率响应轮廓。插值将采样率提高了 4 倍,低通滤波器抽头衰减光谱图像以最大限度地减少失真。

InterpolationMaxHoldOutline.png

抽取

在插值增加采样率的情况下,抽取降低采样率和可用带宽。从之前的插值示例的流程图开始,将interpolation_rate变量重命名为decimation_rate。流程图有一些错误:

ChangeDecimationRateVariable.png


更改samp_rate_interpolated变量:

  • ID:samp_rate_decimated
  • 值:samp_rate*decimation_rate

更改Low-Pass Filter Taps模块属性:

  • 采样率(Hz):samp_rate
  • 截止频率 (Hz):samp_rate/(decimation_rate*2)
  • 过渡宽度 (Hz):samp_rate/(decimation_rate*4)

用 Decimating FIR Filter 模块替换Interpolating FIR Filter模块。更新属性:

  • 抽取:decimation_rate
  • 水龙头:低通水龙头

更新Throttle块的属性:

  • 采样率:samp_rate_decimated

更新QT GUI Frequency Sink块的属性:

  • 带宽 (Hz):samp_rate_decimated

流程图如下所示:

抽取流程图.png


运行流程图并启用Max Hold。将频率滑块扫过正频率显示Decimating FIR 滤波器的频谱形状:

DecimationMaxHold.png


请注意,由于抽取 FIR 滤波器块 ,带宽已减少 1/4 倍。

Rational Rate Resampling

插值FIR 滤波器抽取 FIR 滤波器均按整数值更改采样率。可能会出现需要将采样率更改为小数(例如 2/3)的情况。执行分数重采样的一种方法是先应用 2 的插值,然后再应用 3 的抽取。更好的方法是使用Rational Resampler模块。

从Decimation示例的流程图开始,将Decimating FIR Filter替换为Rational Resampler

为插值率 添加一个变量块:

  • ID:插值率
  • 值:2

更改decimation_rate变量的值:

  • 值:3

更改samp_rate_decimated变量的属性:

  • ID:samp_rate_resampled
  • 值:samp_rate*interpolation_rate/decimation_rate

截止频率需要是sa​​mp_rate/(interpolation_rate*2)samp_rate/(decimation_rate*2)之间的最小值。由于decimation_rate > interpolation_rateLow-Pass Filter Taps模块已经具有正确的采样率、截止频率和转换带宽,因此不需要修改。

更改Throttle采样率属性:

  • 采样率:samp_rate_resampled

更改QT GUI Frequency Sink带宽属性:

  • 带宽 (Hz):samp_rate_resampled

更新Rational Resampler块的属性:

  • 插值:interpolation_rate
  • 抽取:decimation_rate
  • Taps:低通Taps

流程图如下所示:

RationalResamplerFlowgraph.png


运行流程图并选择Max Hold选项。将频率滑块扫过正频率显示重新采样的频谱:

RationalResamplerMaxHold.png


请注意,由于Rational Resampler模块 ,这种情况下的带宽减少了 2/3 倍。

发表回复 0

Your email address will not be published. Required fields are marked *