本文讲解视频:
https://www.bilibili.com/video/BV1sh41127Z6
在使用GNU Radio来做的一些接收程序中,最具代表性的一个就是频谱分析仪程序。这个程序可以用来验证你的设备是否可以正常工作。
目录
一、我需要做什么?
二、搭建一个频谱分析仪的简易流图程序
三、调节QT GUI Sink模块中的参数观察信号变化情况
四、不同设备的FM接收机实例
五、有用链接和联系方式
一、我需要做什么?
目前市面上有多种软件无线电开发板(或者也可以称为平台,更高大上一些),例如USRP系列、HackRF One、RTL-SDR、LimeSDR、BladeRF(目前最新版本2.0叫xA4和xA9,之前的第一代有x40)、PlutoSDR等等。这些软件无线电开发板价格不等,性能不等。具体可以参见下表。你需要做的就是根据你的需求,根据这里的
硬件参数
,来选择一款适合你的开发板。
|
XTRX CS
|
XTRX Pro
|
USRP B2x0
|
bladeRF
|
bladeRF Micro 2.0
|
LimeSDR
|
LimeSDR Mini
|
RTL-SDR R820T2
|
RTL-SDR E4000
|
ADALM-Pluto
|
New Horizons
|
Hack RF One
|
Tuning range
|
30 MHz - 3.7 GHz
|
30 MHz - 3.7 GHz
|
70 MHz - 6 GHz
|
300 MHz - 3.8 GHz
|
47 Mhz - 6 Ghz
|
30 MHz - 3.8 GHz
|
10 MHz - 3.5 GHz
|
22 MHz - 2.2 GHz
|
65 MHz - 2300 MHz, gap@1100 MHz
|
325 MHz - 3800 MHz
|
70 MHz - 6 GHz
|
1 MHz - 6000 MHz
|
Duplex
|
Full MIMO
|
Full MIMO
|
Full MIMO
|
Full SISO
|
Full MIMO
|
Full MIMO
|
Full SISO
|
RX only
|
Rx only
|
Full SISO
|
Full MIMI
|
SISO Half Duplex
|
ADC/DAC resolution
|
12-bit
|
12-bit
|
12-bit
|
12-bit
|
12-bit
|
12-bit
|
12-bit
|
8-bit
|
8-bit
|
12-bit
|
12-bit
|
8-bit
|
Max RF bandwidth
|
120 MHz
|
120 MHz
|
56 MHz
|
28 MHz
|
56 Mhz
|
61.44 MHz
|
30.72 MHz
|
3.2 Mhz
|
|
20 MHz *limited by USB 2.0 and software to ~4Mhz
|
56 MHz / CH
|
|
Rx Noise Figure dB
|
|
|
|
|
|
|
|
|
|
<3.5
|
|
|
Channels
|
2
|
2
|
1 (2 for B210)
|
1
|
2
|
2
|
1
|
1 Rx only
|
1 Rx only
|
1
|
2
|
1 Half Duplex
|
Transmit power
|
0 to 10dBm
|
0 to 10dBm
|
10dBm+
|
6dBm
|
8dBm
|
0 to 10dBm
|
0 to 10dBm
|
none
|
none
|
7 dBm
|
9.7
|
0 - 15 dBm freq dependent
|
RF chipset
|
LMS7002M
|
LMS7002M
|
AD9364 or AD9361
|
LMS6002M
|
AD9361
|
LMS7002M
|
LMS7002M
|
R820T2
|
E4000
|
AD9363
|
AD9361
|
MAX 2837/Max5864
|
FPGA
|
Xilinx Artix7 35T
|
Xilinx Artix7 50T
|
Xilinx XC6SLX75
|
Altera 40KLE/115KLE
|
Intel Cyclone V
|
Altera 40KLE
|
Altera MAX 10
|
none
|
None
|
Xilinx Zynq 7000
|
Zync-7020
|
XC2C64A-7VQ100C CPLD
|
FPGA Gates, DSP slices
|
33k, 90 DSP
|
52k, 120 DPS
|
75k, 132 DSP
|
40K, 58 DSP opt 115k
|
49-301k, 66-342DSP
|
40K, 58 DSP
|
16k, 45 mult
|
0, 0
|
0, 0
|
28k
|
85k
|
64 Macro cell
|
Industrial temperature range
|
no
|
yes
|
no
|
Optional
|
Optional
|
no
|
no
|
no
|
no
|
10-40C
|
|
|
Temperature sensors
|
yes
|
yes
|
no
|
no
|
yes
|
yes
|
no
|
no
|
No
|
|
|
|
Frequency stability
|
±0.5 w/o <±0.01 ppm w/GPS
|
±0.1 w/o <±0.01 ppm w/GPS
|
±2 ppm
|
±1 ppm
|
±2.5 ppm
|
±2.5 ppm
|
±2.5 ppm
|
±0.5-25 ppm options
|
±0.5-25 ppm options
|
± 25 ppm
|
± 15 ppm
|
|
TCXO
|
|
|
|
|
VCTCXO
|
|
VCTCXO
|
Optional
|
Optional
|
|
VCTCXO 40MHZ (W/16bit DAC 0.2PPM max)
|
opt. 0.5ppm TXCO
|
GPS synchronization
|
on board
|
on board
|
Addon (+$636)
|
no
|
no
|
no
|
no
|
no
|
no
|
No
|
optional expansion
|
No
|
Bus/interface
|
PCIe, opt USB 3 adapter $85
|
PCIe, opt USB 3 adapter $85
|
USB 3
|
USB 3
|
USB 3
|
USB 3
|
USB 3
|
USB 2
|
USB 2
|
USB 2.0 OTG
|
USB 2.0+ETH
|
USB 2.0 HS
|
CPU/Bus Interface
|
|
|
|
|
Cypress FX3
|
CY3014
|
|
RTL2832U
|
RTL2832U
|
Dual A9,667MHz,
|
|
LPC4320
|
Raw bus bandwidth
|
10 Gbit/s
|
10 Gbit/s
|
5 Gbit/s
|
5 Gbit/s
|
5 Gbit/sec
|
5 Gbit/s
|
5 Gbit/s
|
480 Mbit/s
|
480 Mbit/s
|
480 Mbits/s
|
480 MBit/s 1000 MB/s (ETH)
|
480 MBit/s
|
Dimensions
|
30 × 51 mm
|
30 × 51 mm
|
97 x 155 mm
|
87 x 131 mm
|
63 x 102 mm
|
100 x 60 mm
|
69 x 31.4 mm
|
40 x 60 mm typical
|
40 x 60 mm typical
|
117 x 79 mm
|
75mm*102mm
|
|
Extra features
|
GPIO, GPS, SIM card
|
GPIO, GPS, SIM card
|
GPIO
|
GPIO
|
|
GPIO
|
GPIO
|
SMA optional
|
SMA optional
|
|
optional LCD, GPS
|
GPIO, RTC, opt case LCD
|
Clock Sync
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes, In/Out, Ref
|
Yes, In/Out
|
Yes, In
|
No
|
No
|
|
connector
|
In/Out
|
Time stamp Sync
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
No
|
No
|
No
|
No
|
|
|
|
Bias T
|
No
|
No
|
No
|
Yes
|
Optional
|
No
|
No
|
Optional
|
Optional
|
|
|
No
|
ANT/CLK Connectors
|
|
|
|
|
2Rx/2Tx + 3CLK U.FL
|
6 Rx/4Tx+2CLK U.FL
|
2 SMA, 1 U.FL Clk
|
Chip optional SMA
|
Chip optional SMA
|
SMA x 2
|
4 SMA (1 SMA opt GPS)
|
1 ANT + 2 CLK SMA
|
Price - typical US$
|
$260
|
$490
|
$686 - $1,119 2 CH clones ~$715
|
$415
|
$480-$720
|
$299
|
$139
|
$10 - $40
|
$10 - $40
|
$249
|
$642+$220 expansion
|
$300 official, down to ~$90 PCBA clones
|
二、搭建一个频谱分析仪的简易流图程序
在以下的例子中,我们使用了USRP B系列设备(B200/B210/B200mini/B205mini等,支持的频段为70MHz-6GHz,最大采样率为56MHz),因此流图程序中使用了UHD:USRP Source模块来接收无线信号。为了正常使用UHD模块,你需要确保你电脑中正确安装了UHD程序。具体的安装方法可以参见,
https://kb.ettus.com/Building_and_Installing_the_USRP_Open-Source_Toolchain_(UHD_and_GNU_Radio)_on_Linux
按照下图,搭建流图程序这里用的是GRCv3.8)。
其中UHD:USRP Source模块中的参数设置如下:
我们需要把UHD:USRP Source模块中的“RF Options”栏中的“Ch0 AGC”(即自动增益控制)设置为“Disable”,这是因为,我们平时接收信号时,环境中在指定的频段上是无有用信号的,如果我们开启了AGC自动增益控制选项的话,则会导致设备自动调节增益,我们无法辨识是否有信号存在。只有当你明确知道在某个指定频段上,确实有信号时,你才需要通过开始AGC自动增益控制功能来提高接收信号的质量。
三、调节QT GUI Sink模块中的参数观察信号变化情况
设置“QT GUI Sink”模块中的以下参数:
(1)Center Frequency (Hz): 可以通过界面中的“Frequency”滑动按钮来调节接收频率值。
(2)Bandwidth (Hz): samp_rate,采样率,可以通过界面中的“Sample Rate”滑动按钮来调节采样值。
(3)Show RF Freq: Yes,
在信号波形显示界面中,你可以调节信号接收频率和采样率的数值。如果你勾选了“Display RF Frequency”的话,则在“Frequency Display”和“Waterfall Display”选项卡中,会显示实际的信号接收频率。具体对比如下几个图形。
未勾选“Display RF Frequency”时,
勾选“Display RF Frequency”时,
记住一点,从USRP设备传输给电脑的IQ数据已经是基带信号了,也就是中心频率是0Hz,因为这个信号是在通过设备下变频处理之前已经进行了AD转换的基带信号。该示例中使用的GRC是v3.8版本,相对于v3.7版本来说,有一定的更新。其中,“QT GUI Sink”模块的“Freq”与“UHD:USRP Source”模块的“command”相连,这样之后,你可以通过在“Frequency Display”和“Waterfall Display”选项卡的信号显示区域中,通过双击某个频率来调节USRP的实际接收频率,就类似于你在Gqrx软件或者SDRsharp软件中,你通过鼠标来调节设备的实际接收频率一样。并且,在你双击某个频率之前,你的鼠标放在某个频率处,界面上就会显示出来当前的频率值。
你可以通过调节采样率来调整接收信号界面的频谱宽度,也就是红框中的频率范围。例如当前采样率是3.84MHz,那么这个红框中的频率范围就是3.84MHz。这个红框中的频率范围是与采样率相等的。
在使用GNU Radio GRC的时候,经常会碰到下图中的“工作空间”栏这里,连续出现U、O、 aU或者aO的情况。
输 出 O U u a 的意义当运行 gnu radio 程序时,会有时看见 O U u a 字符出现在屏幕上。这一般当数据从 USRP 到 PC 机数据输到硬件的时候PC数据速率跟不上。
输 出 "O" "U" "u" "a" 的意义
当运行 gnu radio 程序时,会有时看见 "O" "U" "u" "a" 字符出现在屏幕上。这一般当数据从 USRP 到 PC 机数据传输停止或什么事情发生时会出现。
(1)"u" = USRP
(2)"a" = audio (声卡)
(3)"O" = overrun (PC 无法同步地接受来自 USRP 或 声卡的数据 - PC not keeping up with received data from usrp or audio card)
(4)"U" = underrun(PC 无法快速的提供数据 - PC not providing data quickly enough)
(5)aUaU == audio underrun (PC 无法快速地给“漏”- 声卡提供数据 - not enough samples ready to send to sound card sink)
(6)uUuU == USRP underrun (PC 无法快速地给“漏”- USRP提供数据 - not enough sample ready to send to USRP sink)
(7)uOuO == USRP overrun (USRP 采样掉链源于它没有及时准备到位 - USRP samples dropped because they weren't read in time)
四、不同设备的FM接收机实例
USRP FM Receiver
PlutoSDR FM Receiver
FunCubePro+ FM Receiver
RTL-SDR FM Receiver
对于声音相关的处理,可以参见Audio_Sink模块。