【GNURadio实验报告】实验4-采样率转换Sample Rate Change


前言

采样率转换,包括升采样降采样,通常使用插值抽值实现。

Interpolating FIR Filter插值FIR滤波器Decimating FIR Filter抽值FIR滤波器以及Rational Resampler分数重采样模块是GNU Radio采样率转换的基础性工具,GNU Radio官方在wiki百科Sample Rate Change章节对这3款滤波器的使用方法进行了实验演示。

鉴于原文为英语,且部分插图和叙述可能存在矛盾,博主谨对官方实验进行了复现,在摘录、翻译部分原文的基础上,对GNU Radio采样率转换问题进行展开探讨。

因本人并非通信行业或电子设计出身,本文未能对滤波器专业知识做深入讨论,仅仅在具体操作层面给出通俗讲解,借以抛砖引玉,恳请走过路过的大佬批评指正、不吝赐教。

期待能够为GNU Radio中文社区增添一份贡献!


一、为什么要进行采样率转换

举个栗子。下图是我们搭建的一个简易的仿真AM电台,作用是在200kHz频点上广播邓紫棋的《泡沫》。
在这里插入图片描述
首先查看这个wav文件占用多大带宽:如下图所示,因原始信号的采样率为48kHz,所以我们使用采样率为48kHz的【QT GUI Frequency Sink】示波器,可以看到,原始信号的用频集中在10kHz(请记住这个数字) 以内,可以简单理解为在这首歌曲里所有乐器和歌手的最高音调为10kHz。
在这里插入图片描述为了能够在200kHz频点上发送出去信号,我们使用【Signal Source】信号发生器产生200kHz的余弦波信号作为载波,根据奈奎斯特采样定律,【Signal Source】的采样率应当至少设置为400kHz(大于最高用频的2倍以上),否则将发生混叠,我们将之设为480kHz。

但这样一来,负责生成载波的【Signal Source】模块、负责生成待传输信号(基带信号)的【Wav File Source】模块,两者的采样率分别为480kHz、48kHz,差了10倍。如果你这时候找个收音机来听,会发现歌曲唱得极其得快,这是因为我们的AM电台会以480kHz的采样率,也就是10倍于原始wav文件的正常数据流速对其进行采样,然后调制到载波上面。

如下图所示,从时域角度看,语速将提高10倍;而从频域角度来看,最终生成的已调信号的频谱原本应当以200kHz为中心、左右各占10kHz的带宽,但现在变成了以200kHz为中心、左右各占100kHz的带宽,发生了严重的展宽,原始信息被破坏。例如原本歌手唱了歌la(该音调对应的频率假设为500Hz),结果硬生生给告了八度(可能变成了89kHz)。

在这里插入图片描述这样的情况,在我们使用GNU Radio仿真通信系统时会经常遇到。因此我们需要进行采样率转换,使我们设计的通信系统采样率前后匹配。

采样率转换,包括升采样降采样,通常使用插值抽值实现。在GNU Radio中常用Interpolating FIR Filter插值FIR滤波器Decimating FIR Filter抽值FIR滤波器以及Rational Resampler分数重采样模块实现。

为便于开展研究,我们搭建一个适用于这3个模块专用的实验系统,如下图所示。流图左半部分为信号源,支持使用单音或者wav波形文件,【Selector】模块用于切换信号源。绿色区用于实验【Interpolating FIR Filter】模块,蓝色区用于实验【Decimating FIR Filter】模块,橙色区用于实验【Rational Resampler】模块。(这瞅着不比官网那个流图工整得多?)
在这里插入图片描述

二、Interpolation插值-升采样

所谓插值,就是在原有采样点集之中,人为地增加一些数据,可以提高采样率、增加可用带宽,解决系统各元件之间采样率不匹配的问题。
在这里插入图片描述(图片来源见水印)

不同的滤波器,插值的算法也有所不同。GNU Radio里的【Interpolation FIR Filter】模块所用插值算法如下。GNU Radio wiki百科 Interpolation FIR Filter

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值