在使用GNU Radio来做的一些接收程序中,最具代表性的一个就是频谱分析仪程序。这个程序可以用来验证你的设备是否可以正常工作。
需要具备的基础知识:
GNU Radio系列教程(二):初级篇之GNU Radio介绍
GNU Radio系列教程(三):初级篇之GNU Radio GRC流图
GNU Radio系列教程(四):初级篇之GNU Radio GRC采样率
目录
一、我需要做什么?
二、搭建一个频谱分析仪的简易流图程序
三、调节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”模块中的以下参数:
(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)
USRP FM Receiver
PlutoSDR FM Receiver
FunCubePro+ FM Receiver
RTL-SDR FM Receiver
对于声音相关的处理,可以参见Audio_Sink模块。
https://wiki.gnuradio.org/index.php/Guided_Tutorial_Hardware_Considerations
淘宝店铺、QQ技术交流群、CSDN联系方式如下:
微信公众号二维码: