LimeSDR WBFM广播发射与接收

本文介绍使用LimeSDR与GNU Radio Companion(GRC)实现FM宽带广播发射与接收的两种方法:纯仿真发射与接收以及利用LimeSDR硬件发射与接收。文章详细解析了信号处理流程,包括重采样、信道模型、滤波等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文内容、开发板及配件仅限用于学校或科研院所开展科研实验!

本文介绍LimeSDR gr-limesdr自带的example中的FM宽带广播发射与接收的GRC程序。

调频、宽带调频WBFM和窄带调频NBFM的相关基础知识网上有很多,可以参见下边的链接:

什么是FM(调频)? - 新闻-FMUSER FM / TV广播一站式供应商

你似乎来到了没有知识存在的荒原 - 知乎

本文基于gr-limesdr自带的example中WBFM程序,实现了纯仿真程序(WBFM_tx_rx_sim.grc)和用limesdr发射和接收的程序(FM_tx_rx.grc)。

一、纯仿真WBFM发射与接收

框图中下半部分为发射部分,上半部分为接收部分为接收部分。原始的声音信号通过WBFM Transmit模块转换为WBFM信号,再通过重采样器(Rational Resampler)调整采样率。信号经过信道模型后到接收部分。通过低通滤波器滤除一部分噪声以后,再通过重采样器(Rational Resampler)调整采样率,与第一个重采样器相比,可以看到它们的插值数(Interpolation)和抽值数(Decimation)正好相反。最后再经过WBFM Receive将WBFM信号还原为音频信号,经过放大器(Multiply Const)后由Audio Sink处理播放出声音。

这里解释一下程序中的采样率相关的变化。

发射端:从wav File Source模块输出的信号是piano.wav文件的采样率(这里是48KHz),经过WBFM Transmit模块作用(Quadrature Rate 480kHz)之后输出信号的采样率变为了480kHz,经过Rational Resampler重采样模块作用(Interpolation内插乘以200,Decimation抽取除以48)后变成480k*200/48=2MHz,经过Channel Model(这里噪声功率为0,可以认为是AWGN信道Y=H*x)。经过这个信道采样率不变。

接收端:经过低通滤波器Low Pass Filter之后采样率不变还是2MHz,经过接收端的Rational Resampler重采样模块(通过对比发现,这里的重采样模块中的内插和抽取系数与发射端的正好相反,Interpolation内插乘以48,Decimation抽取除以200)后变成2MHz*48/200=480KHz,然后经过WBFM Receive模块作用(Audio Decimation抽取除以10)后变成48KHz,最后信号由Audio Sink模块经过扬声器发出声音。

二、LimeSDR WBFM发射与接收

基于仿真实验的的框图,我们对其进行修改,将模拟信道改成Limesdr模块,搭建FM宽带广播的GNU Radio Companion(GRC)框图程序(WBFM_tx_rx.grc)。我们可以基于原来的框图(WBFM_tx_rx_sim.grc),将原来的信道模型删除,分别修改为Limesdr的Source和Sink模块。

### 使用GNU Radio 接收AM广播 为了实现AM广播信号的接收,可以利用GNU Radio框架来开发处理模块并创建流图[^1]。这些流图能够组成完整的无线电处理应用。 对于具体的AM广播接收流程而言,在构建相应的GNU Radio Companion(GRC) 流图时,通常会涉及到几个核心组件: - **源节点(Source)**:用于连接实际硬件设备或者模拟信号输入。当采用USRP作为前端射频单元时,则通过`UHD: USRP Source`模块获取空中接口的数据流;如果仅限于仿真环境测试的话也可以考虑使用`Signal Source`生成正弦波等形式的人工信号代替真实世界中的RF部分[^3]。 - **下变频器(Downconverter)**:此环节负责把接收到高频载波上的已调制音频搬移到基带位置以便后续解码操作更容易实施。这一步骤可通过混频方式完成——即让本地振荡产生的本振频率所关心频道中心频率相匹配,并且确保两者之间存在固定相差关系从而达到降频目的。在GRC里有专门针对不同模式设计好的现成元件可供选用,比如`Freq Xlating FIR Filter`就非常适合用来执行这样的任务[^4]。 - **检波(Demodulation)**:一旦获得了位于低频频谱内的包络变化信息之后就可以着手恢复原始声音了。对于幅度调制来说最常用的方法莫过于同步检测法以及峰值/平均功率跟踪算法等几种手段之一。GNU Radio提供了诸如`WBFM Receive FP`, `NFM Receive FP` 和 `AM Demod`之类的预置功能块可以直接拿来用作此类用途。 最后值得注意的是由于软件定义无线电平台本身灵活性极高所以具体参数设定需视乎目标电台发射特性而定(例如采样率、增益控制范围之类),因此建议初学者多查阅官方文档资料库或是参社区交流活动以获得更详尽指导[^2]。 ```python from gnuradio import gr, analog, blocks, audio class am_radio(gr.top_block): def __init__(self): gr.top_block.__init__(self) # Define variables here as needed self.src = osmosdr.source() # Replace with actual source block like UHD: USRP Source self.demodulator = analog.am_demod_cf() self.sink = audio.sink(samp_rate=audio_sample_rate) self.connect(self.src, self.demodulator, self.sink) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值