1. 什么是AM通信?从广播原理说起
AM全称Amplitude Modulation(幅度调制),这是最古老的无线电通信技术之一。小时候听过的中波广播,就是典型的AM信号。它的核心思想特别直观:用声音信号的幅度去控制高频载波的幅度。就像用手电筒发摩尔斯电码,只不过这里不是简单的开关,而是让光线亮度随着声音起伏变化。
在数学表达上,AM信号可以表示为:
python复制S(t) = A[1 + m_a * v(t)] * cos(2πf_c t)
其中A是载波幅度,m_a是调制深度(建议取值0.3-0.7避免过调制),v(t)是音频信号,f_c是载波频率。我在实验室实测时发现,当调制深度超过1时,解调信号会出现严重失真——这就像把音响音量调到爆棚时的破音现象。
GNURadio的魅力在于,它把这些抽象公式变成了可视化的模块。你不需要从头写代码,只需要像搭积木一样连接各种信号处理模块。最近有个大学生在课程设计中,用GNURadio复现了1920年代的第一代AM广播系统,整个过程只用了不到20个模块。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 搭建AM调制链路:五个关键模块详解
2.1 信号源选择与预处理
音频源可以选择WAV文件或实时麦克风输入。这里有个坑要注意:普通音频文件的采样率通常是44.1kHz,但我们的系统采样率可能需要设为100kHz以上。我推荐先用Rational Resampler模块进行采样率转换,就像把不同制式的视频转换成统一格式。
python复制# 典型参数设置示例
audio_source = blocks.file_source(gr.sizeof_float, "test.wav")
resampler = filter.rational_resampler_fff(
interpolation=100, # 目标采样率倍数
decimation=441, # 原始采样率倍数
taps=None,
fractional_bw=None)
2.2 载波生成技巧
载波发生器是AM系统的"发动机"。建议使用Signal Source模块生成10kHz的正弦波(中波广播典型频段)。有个实用技巧:在属性面板勾选"Output Complex"可以生成复数信号,方便后
