首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >使用 GNU Radio 解调原始 AM 无线信号

使用 GNU Radio 解调原始 AM 无线信号

作者头像
yichen
发布2025-12-25 11:19:16
发布2025-12-25 11:19:16
810
举报
这是软件定义无线电教程的第二篇,由于标题太长我看着难受,所以以后就不加“软件定义无线电教程”这几个字了

本文将构建一个 AM 接收器,实现从 AM 信号中解调出音频信号,类似收音机的效果,但却是从之前保存的 AM 信号文件中解析,不使用 SDR 设备空口实时捕获,此过程暂不过多介绍具体原理,先搭建流程图,后面慢慢补充

完整流程图:

在 GNU Radio 中每次创建新的流程图都会有两个默认存在的模块 Options 和 Variable。Options 模块包含流程图的一些基本信息,Variable 则定义了一个变量,可以直接使用变量名来设置流程图的其他参数或者参与运算

添加两个 QT GUI Entry 模块,这个模块与变量模块类似(不同的是 QT GUI Entry 模块可以在流程图运行时动态的修改,Variable 则不能)一个名为 freq,默认值设置为 880e3Hz;一个名为 center_freq,默认值设置为 900e3Hz

接下来添加数据源,为了方便没有硬件设备的朋友学习,原书的作者提供了预先录制的原始无线电数据,我给传到网盘了(见文末)因此我们可以直接使用 File Source 打开原始无线电数据,设置文件路径为:getting_started_sdr-main\ch_04\am_broadcast_02_c900k_s400k.iq,这里的 Repeat 选择了 Yes 表示会重复这段数据

然后添加一个信号源(Signal Source)用来生成正弦波,频率设置为 center_freq - freq,这里你应该可以发现,GNU Radio 中是支持使用变量进行运算的,所以说前面定义的变量就很方便了

接下来放置一个 Multiply 模块,将 File Source 和 Signal Source 的输出(out)连接到 Multiply 模块的输入(in0 和 in1)

添加一个 Low Pass Filter 低通滤波模块,设置截止频率 5e3Hz、带宽 1e3Hz,然后将低通滤波器的输入连接到 Multiply 模块的输出

接下来放置一个 AM Demod(AM 解调器)接在低通滤波器的输出端口,音频抽取设置为 1,其他值默认。AM Demod 模块将对信号进行解调,提取出音频信号

接下来放置一个 Rational Resampler(有理数重采样器),Interpolation 插值设置为 32,Decimation 抽取设置为 400,这将调整音频信号的采样率,以便电脑声卡可以播放它,将它的输入连接到 AM Demod 的输出

此时连线应该是红色的,因为两端的数据类型不匹配,把 Rational Resampler 的 type 改为:Float->Float(Real Taps)就可以啦

最后添加一个 Audio Sink 采样率设置为 samp_rate,Device Name 设置为:sysdefault

做完这一切就可以点击执行按钮了,打开电脑声音,你会听到经典的收音机嗤嗤啦啦的声音,里面还夹杂着人声,正如前文所说,QT GUI Entry 模块可以在流程图运行时修改变量,你可以在弹出的 AM Receiver 中修改 freq 来收听不同频率的广播,在 740k 频段还可以听到音乐

在这一章节中实现了一个 AM 解调器,使用提前记录好的无线电信号,通过 GNU Radio 解调收听到了特定频率的广播,并且可以调整频率收听不同频率的广播

虽然对于模块及其参数为何如此设置还不理解,但是我们确实使用 GNU Radio 处理了一段真实的无线电信号!接下来的几篇文章将会逐步介绍这背后的原理

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-10-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 陈冠男的游戏人生 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档