王晓平
关键词:HackRF;GNU Radio;无线通信;软件无线电;数字调制
0 引言
在这个高消耗、快节奏的时代,无线通信技术的多样化对无线通信设备通用性的要求很高,无线通信业务的发展面临着许多难题与挑战,快速高效且低成本的通信算法的开发和应用是很重要的一项研究内容。正是在这些需求的推动下,软件无线电[1]技术应运而生。
软件无线电技术[2]提升了无线设备的通用性,节约了通信系统的升级换代的成本,实现了大范围宽带频谱资源的快速获取,在许多通信领域都有着广泛的应用。在信息安全领域[3],软件无线电技术能实现对接入的设备的识别和接入用户的具体身份,实现非法入侵和设备可靠性检测,提取载波分析信号的频率不同的地方作为特征,识别硬件的设备身份,不仅仅改善原有的安全验证机制,也为网络安全技术发展提供新方向。在频谱检测方面[4],软件无线电技术可以结合机器学习进行无线频谱检测和频谱识别,实现对无线电信号的检测和信号方向的感知。
鉴于软件无线电的优点,本文设计了基于HackRF 的无线通信平台,介绍了 GNU Radio 编程开发平台和 HackRF 的硬件平台;在 HackRF 板卡上实现模拟和数字信号的调制解调和同步等数字信号处理技术的基础上,进一步研究音频、序列、视频流的传输,实现了在软件无线电平台上的无线通信。
1 软硬件平台介绍
1.1 GNU Radio 软件
GNU Radio[5]作為一个开源的软件无线电编程开发平台,起源于美国麻省理工学院,它为编程能力一般的软件编制者提供了探索电磁波的机会,激发开发者利用射频电波的能力,同时也提供给专业的无线电研究人员更多开发的可能。
GNU Radio 采用 Python 和 C++ 混合编程的方式来构建程序,C++ 用来实现一些底层的标准模块库以供 Python 调用。GNU Radio 实现了数字滤波器、傅里叶正反变化、快速傅里叶变换、信源信道编码、调制解调等基本模块,在软件中通过流程图就能搭建一个通信系统。除了引用其本身提供的库,GNU Radio 也允许用户编写自己的处理模块及运行程序。
1.2 Hack RF 开发板
HackRF 作为软件无线电外设,通过 USB 接口与PC 端相连后与 GNU Radio 配合使用,HackRF 相对其他软件无线电板卡,其接收带宽[6]的射频范围更大,支持 1 MHz ~ 6 GHz 信号频率的发射和接收,范围涵盖了广播、电视、蓝牙、卫星通信等。HackRF 硬件结构如图1所示,板卡用于信号接收时,将天线采集到的射频信号经下变频变为中频信号,再将中频信号下变频为基带信号,经 A/D 采样后将模拟信号转为数字信号后通过 CPLD 和处理器将采样信号处理和发送到 PC 端处理。HackRF 以半双工通信形式[7]实现通信信号的发射与接收,其发射过程与接收过程类似。
2 系统原理概述
2.1 软件无线电
软件无线电构造了一个在多种情况下可以通用的硬件平台,满足将各种功能集成到一款板卡上的要求。同时为功能定制化提供了方便,以充分实现无线信号数字化为前提条件,提高了可编程性和可升级性。软件无线电采用后端的处理单元对接收后的数据进行处理,同时使宽带以及转换器尽量靠近天线以便减少延迟,提高系统性能,实现标准化、模块化、开放性。
理想的软件无线电[6]接收过程按接收信号处理顺序包括天线射频接收、AD/DA 信号采样数字化、将数据在DSP 或者普通 PC 机上进行处理。但理想结构采样率高,并且要求的动态范围大,多倍数的 AD/DA 转换及高速的 DSP 芯片处理能力不够,目前的硬件水平实现不了这样的结构。因此大部分软件无线电采用降频带通采样结构,这种结构和超外差接收机类似,经过一系列处理的信号波形好,不会有很多干扰,虽然射频部分需要比较复杂,但实现起来不算太难。
2.2 GMSK 调制与解调
高斯最小频移键控调制技术(Gaussian MinimumShift Keying, GMSK) [8]的特点是在将二进制的数字向量流处理之前,将数据矢量送先通过一个高斯滤波器进行一个前期处理滤除溢出的信号能量,频谱不再有毛刺。这样处理之后,信号的相位图在码元变化时变为平滑过渡,信号频率切换产生的不平稳能量就被减小了,主瓣之外的能量衰减快能量小,达到去除跳变能量的目的,在传输相同的数据速率的数据时,频率通道间距可以变得更小,联系更加紧密。
GNU Radio 中,调制的输入是字节流(带压缩位的无符号字符),输出是基带上的复调制信号,而解调则相反。对于调制,第一步要将数据流变为 NRZ 码,将数据包解包之后变为比特流以便进行进一步的处理;第二步是高斯滤波,由于 GMSK 调制信号的相位变化是连续的,高斯滤波使其进入下一个码元周期的时刻相位不发生变化,从其频谱特性观察出发,使其频谱特性的旁瓣降落缓慢,从而在频带外产生多余的频谱泄漏;第三步就是调制,GMSK 调制具有较好的波形和频谱特征,频带相对来说很窄,可以采用相干解调来实现数据提取。进行解调时,首先通过一个正交调频解调模块,通过计算相邻码元周期变化的相位差,获得频率变化信息;紧接着通过 M&M 算法,使符号同步,时钟恢复块跟踪符号时钟并根据需要重新采样,该块的输出是软符号流,最后进行二元判决。
2.3 符号同步
GNU Radio 采用了改进的 M&M 算法来实现符号同步。M&M 同步算法实现过程如图2所示:
在一个需要实现解调的数字通信系统中,为了恢复出原始数据序列,要实现两个因素:一方面是要消除符号间的串扰;另一方面是要实现精确采样。因此解调器的输出必须以码元速率周期性地在采样时刻采样。M&M算法的关键点在于要对采样时刻进行准确调整,通过采样输出和判决输出来实现调整,对采样和判决输出数据进行线性组合,利用这个线性组合来指示同步误差的大小,这个线性组合的值同时也要反馈给采样器,用于调整采样时钟,从而达到逐渐消除采样误差的目的。
3 无线通信平台设计
3.1 FM 收发
基于 HackRF 搭建了一个 FM 无线收发系统,信源选取了实时录制的语音信号进行广播,经过重采样和WBFM 调制将信号发射出去。由于 HackRF 为半双工通信,实验使用两块板卡,分别用于发射和接收,实验发送端和接收端流程设计如图3所示。软件模块包括,软件模块包括 osmocom Sink、QT Gui Time Sink、Rational Resampler、WBFM Transmit、WBFM Receive 和 Audio Source 等模块,其中,osmocom Sink 用于与HackRF 进行通信,Rational Resampler 用于平滑波形和调整采样率。
实验结果如图4和图5所示,在 160Mhz 能够明显看到信号频谱并且清晰听到广播。根据调制输出的波形的变化,可以判断语音信号是否输入。当没有声音时,信号源波形平坦,是一条幅度为0的直线,当声音来临,可以观察到信号波形起伏、频率发生变化。
3.2 调制解调
GNU Radio支持多种数字调制方式,仿真实验分别编写了 GMSK、8PSK、16QAM 调制解调的信号传输通道,实验发送随机序列,通过更换调制模块实现不同方式的调制。图6给出了 QAM 调制的原理框图,信源采用了 Vector Source 来输入随机序列,然后使用Packet Encoder 进行同步并加入前导码、接入码和纠错码,将打包的信息块解包变为非归零码方便判决;接收端判决解调出原始序列,并且进行解码和纠错,使用 QT GUI 有关模块画图。
图7为 GMSK 随机序列收发的星座图和解调波形图,可以很清楚地看到,随机序列成功被发射和接收,星座图四个象限清楚地分布着星座点,GMSK 收发前后波形相同,即解调后接收端接收的数据恢复出了发送序列。
3.3 视频流传输
在本实验中,使用了 TCP 协议,通過 socket 来实现 TCP 协议。TCP 面向连接,进行点对点传输,将数据应该如何封装、定址、传输、路由以及在目的地如何接收,都加以标准化,具有四个层级,实现不同的功能。使用了 OpenCV来操作摄像头读取图像传输图像资源,OpenCV 是一个计算机视觉库,支持多种语言,Java、python、matlab,由 C++ 编写,实现了很多图像处理和计算机视觉的算法。
为了实现视频流传输,利用 TCP 协议将数据传入 GNU Radio 处理,再传到 HackRF 板卡进行处理并发送。采用 OpenCV 来调用摄像头、读取显示视频,再通过 TCP 协议将其发送出去,经过实际验证,经过处理后的视频流数据可以相应地显示出来。图8给出了视频流传输程序流程图和视频传输实验结果图。
4 结束语
本文使用 GNU Radio 软件和 HackRF 硬件搭建了一个无线通信平台,实现了 FM 捕捉和通过模块播放音频信号、随机序列的调制解调和视频流的传输,从而实现了基于软件无线电平台的无线通信。
GNU Radio 的模块化和 HackRF 板卡的低成本特性,使得二者构成的通信系统具有较高的开发前景。随着软件无线电技术研究的加深,HackRF 将在通信领域发挥更大的用处。