一、完整流程图如下:
二、Options 模块(工程配置)
模块:
options
作用:
这是 整个 Flowgraph 的配置中心。
关键参数:
| 参数 | 作用 |
|---|---|
| generate_options | 生成 Qt GUI 界面 |
| output_language | 生成 Python 代码 |
| run | 是否自动运行** |
三、变量模块
1 samp_rate
模块:
variable
参数:
samp_rate = 2400000
作用:
定义 系统采样率
含义:
2.4 MHz
原因:
FM广播信号带宽约:
200 kHz
采样率必须大于信号带宽。
2 tune_freq
模块:
variable_qtgui_range
作用:
频率滑块
参数:
start = 87.5e6 (起点)
stop = 108e6 (终点)
step = 100e3 (间距)
这是:
FM广播频段
87.5 MHz — 108 MHz
运行时可以拖动滑块(slider)调台。
3 decimation
模块:
parameter
参数:
value = 1
作用:
定义 降采样系数变量。
不过在你的工程中:
没有真正使用
可以删除。
4 uri
模块:
parameter
参数:
usb:2.9.5
作用:
指定 ADALM-Pluto SDR 设备地址。
GNU Radio 通过它找到硬件。 点击win+r键输入cmd,再输入:
iio_info -s
可见:
其中usb:2.9.5即为URI
输入:
iio_attr -u usb:2.9.5 -c cf-ad9361-lpc voltage0 sampling_frequency_available
可见:
即为AD9361 射频芯片支持的采样率范围(最小到最大)。
四、Pluto SDR Source 模块
模块:
pluto source
作用:
从 SDR 硬件接收无线电信号。
信号来源:
天线 → PlutoSDR → GNU Radio
关键参数:
1 采样率
samplerate = samp_rate
= 2.4 MHz
2 接收频率
frequency = tune_freq
由滑块控制。
3 增益
manual_gain1 = 48
作用:
放大信号。
类似:
无线电音量
4 带宽
bandwidth = 2000000
= 2 MHz
用于接收FM信号。
输出数据类型
fc32
意思是:
complex float = 复数 + 浮点数表示
每个采样点是一个复数,并且用 float(浮点数)存储。
无线电信号必须用 IQ复数信号 表示:
I = 同相分量
Q = 正交分量
j = 虚数单位
一个信号样本:I + jQ
z = I + jQ
数学形式:
z = a + bi
float = 32位浮点数
一个 complex float 实际存储为:
I (float32)
Q (float32)
所以一个 sample:
32bit + 32bit = 64bit
也就是:
8 bytes
五、Freq Xlating FIR Filter
模块:
freq xlating fir filter
这是 非常重要的 DSP 模块。
它做三件事:
1 频率平移
把目标信号移动到:
基带 = 0Hz
2 FIR滤波
使用:
low_pass filter
保留 FM 信号。
3 降采样
你的参数:
decim = 10
采样率变化:
2.4 MHz / 10 = 240 kHz
滤波器参数:
firdes.low_pass(1, samp_rate, 100e3, 20e3)
含义:
| 参数 | 作用 |
|---|---|
| 1 | 增益 |
| samp_rate | 输入采样率 |
| 100k | 截止频率 |
| 20k | 过渡带 |
六、FM 解调模块
模块:
analog_wfm_rcv
这是:
Wideband FM Receiver
用于解调 FM 信号。
FM 原理:
频率变化表示音频。
数学形式:
s(t) = A cos(2πf_c t + β sin(2πf_m t))
其中:
| 参数 | 含义 |
|---|---|
| fc | 载波 |
| fm | 音频 |
| β | 调制指数 |
关键参数:
quad_rate
240000
输入采样率:
240 kHz
audio_decimation
5
音频采样率:
240k / 5 = 48k
刚好是:
标准音频采样率
七、QT GUI Sink
模块:
qtgui_sink
作用:
可视化信号。
可以显示:
| 图 | 作用 |
|---|---|
| FFT | 频谱 |
| Waterfall | 瀑布图 |
| Time | 时域 |
| Constellation | 星座图 |
关键参数:
fftsize = 4096
FFT越大:
频率分辨率越高
八、Rational Resampler
模块:
rational_resampler
作用:
改变采样率
公式:
输出采样率 = 输入 × interp / decim
数学表达:
f_out = f_in × interp / decim
九、Audio Sink
模块:
audio_sink
作用: 把信号输出到电脑声卡
参数:
samp_rate = 48000
device = default
于是:
FM广播 → 音频 → 扬声器
你就能听到电台。
十、数据流变化总结
整个系统采样率变化:
PlutoSDR
2.4 MHz
│
▼
Filter (decim 10)
240 kHz
│
▼
FM Receiver
48 kHz
│
▼
Audio Sink
48 kHz