基于Gnuradio与Hackrf的无线通信收发系统实现
2016-04-14王刚吴健健
王刚 吴健健
摘要:随着无线通信技术的高速发展,需要对大量的信号及数据进行高效、快速、可操作性更高并且相对低成本的处理,这便对无线通信系统提出了更高的要求。Gnuradio是一种免费的开源软件无线电开发平台工具,在其图形化操作界面中集成了丰富的信号源与信号处理模块,通过功能强大的信号处理模块可以在PC端对无线通信中发送与接收端的信号进行编解码、调制与解调,时域和频域同步等处理。以Hackrf作为硬件平台,通过搭建GRC流图在射频段与PC端对信号及数据进行处理并发送与接收,实现了基于软件无线电平台的无线通信收发系统。
关键词:软件无线电;调制与解调;Gnuradio;Hackrf
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2016)05-0034-03
Abstract:With the rapid development of wireless communication technology, a large number of signals and data shall be processed effectively, fast,convenient in a relatively low cost everyday. It proposes higher requirements for the wireless communication system. Gnuradio is a free and open-source software development platform, and rich signal sources and signal processing modules are integrated in the graphics of user interface. When transmitting and receiving, the signal encoding and decoding, modulation and demodulation, time domain and frequency domain synchronization will be accomplished in PC by the powerful signal processing modules. In this paper, Hackrf is used as the hardware platform to transmit and receive signals, and the signal and data will be processed in GRC flow chart in PC, and the wireless communication system based on the software radio platform is realized.
Key words: software defined radio; modulation and demodulation; Gnuradio; Hackrf
1 引言
软件无线电(Software Defined Radio,SDR)[1,2]是一种多频段无线电广播通信技术,它具有宽带天线、用于收发信号的射频前端、AD/DA转换,并且支持多个空中接口及协议,其无线通信协议是基于软件定义的而非通过硬连线实现。换言之,所使用的中心频率、空中接口协议和功能由于其开源特性,可通过手动更改、软件下载和更新来升级,并不需要完全更换硬件,这使得通信过程达到了灵活高效,低成本的效果。
广义上的软件无线电的结构分为三类。
(1)低通采样软件无线电结构。其在AD转换之前添加了低通滤波器,这使得对AD采样速率的要求降低。软件无线电的工作频率决定了低通滤波器的采样频率,根据奈奎斯特采样定理,其采样频率[fs]需满足:
[fs≥r+fmax] (1)
其中r为低通滤波器的矩形系数,[fmax]为所要求的工作频率最大值。根据(1)式可知为了使得AD采样频率在合适的范围内,[fs]与[fmax]的取值不能太高,这就使低通采样软件无线电的适应范围大大缩小了。
(2)宽带中频带通采样软件无线电结构。对于工作频段较高的情形(大于2GHz)则可以采用此种结构。该结构采用了多次混频的方式,将在工作频段上感兴趣的信号放大、混频后经过滤波而得到统一的中频频段上,在进行AD转换和采样,存在于软件无线电外设中的FPGA对信号做数字下变频、数字滤波等操作。这种结构的优点在于中频带宽较宽,所以可处理的信号范围更大,在现有的软件无线电结构中的实际应用也最为广泛。
(3)射频带通采样软件无线电结构。与其他结构不同,此类结构添加了宽带跟踪滤波器用于选择处于其工作频段内感兴趣的信号并对其进行接收处理,在放大之后进行AD转换作数字化采样。该结构的优点在于在器件的作用下不需要对接收端信号做变频处理,在模拟处理时即可完成对射频信号没有混叠的数字化处理,但由于对硬件的处理能力要求很高,所以在实际应用中较少使用。
2 软硬件平台
2.1 软件平台部分
Gnuradio是一个开源的软件程序[3,4],它最小程度的结合硬件,通信过程中的无线电波发射和接受的方式均由软件来定义,达到搭建无线电通信系统的目的。Gnuradio是基于Linux操作系统的,采用C++与Python脚本语言进行编程。利用C++的高执行效率编写各种信号处理模块,使用Python编写连接各个模块实现完整流程的脚本。Gnuradio与所选用的通用硬件存在依赖的关系,所选用的设备是USRP、Hackrf等,需要选用不同版本的Gnuradio和与之匹配的安装依赖包。Gnuradio安装完成后在终端输入命令行sudo gnuradio-companion打开,其图形化界面如图1所示。
Gnuradio的软件结构顶层是面向用户的模块及其“粘合剂”流图。可以使用Gnuradio中所含的丰富的模块,也可以用C++自己编译开发[5],而后再使用Python脚本语言将各个模块逐个相连。上图展示的Gnuradio图形化界面中左边空白部分为框图搭建操作空间,右边部分为系统自带的模块库,通过搭建流图的方式并运行后生成后缀为.grc流图文件以及后缀为.py的Python文件。
2.2 硬件平台部分
Hackrf是软件无线电外部设备,支持Gnuradio并可与之配合使用。Hackrf通过USB接口与PC端相连,主要作用为信号的发射与接收,并对信号进行放大,滤波,混频,采样等处理,其硬件架构框图如图2所示。
以接收端为例,在信号由射频段进入天线后的处理流程为:
1)由射频开关决定是否经由14dB的放大器进行放大;
2)经过镜像抑制滤波器对信号进行高通或低通滤波;
3)信号进行RFFC5072芯片混频到2.6GHz固定中频(中频范围为2.15GHz - 2.75GHz);
4)信号送入MAX2837芯片混频到基带,输出差分IQ信号(期间MAX2837芯片可以对信号进行带宽限制);
5)MAX5864芯片对基带信号进行数字化后送入CPLD和单片机TODO FIXME;
6)CPLD;
7)LPC4320/4330处理器将采样数据通过USB接口送至计算机内、
3 在仿真平台上的实现及结果分析
Gnuradio支持多种数字调制方式,在此次通过实际无线信道[6]的仿真中采用频移键控(Frequency Shift Key,FSK)[7]的调制方式来发送自定义的文本文件。设计的仿真方案步骤如下:
1)在发射端将需要发送的文本文件通过Python程序封装成帧;
2)通过搭建GRC流图,将分装成帧的文本文件以FSK调制与解调[8]方式发送与接收,实现文件通过实际无线信道的传输;
3)将接收并解调的数据以文本形式保存,再进行采样处理以还原为发送前的文本文件,最终实现文本文件通过无线信道的发送与接收。
3.1 发射端仿真设计
(1)首先在要发送的文本中写入测试内容“Hello World!Xiaoming”,将文件命名为“send.txt”并保存。
(2)利用Python程序data_send.py将send.txt封装成数据帧。为了后续的帧同步,于是在帧头加入了同步序列[1,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0],并将帧头和数据帧写入code.txt文件中。计算要发送的文本文件大小,此处设计大小最多为256字节(通过修改Python程序可以实现更多字节文件的传输),本次实验中为20字节。
(3)写入结束标志。确定数据长度后,由于数据帧会被循环发送,所以结束标志并不是判断数据段的结束,而是为了避免产生相同的同步序列。
(4)搭建FSK调制的GRC流图,通过Hackrf发送,发射端的GRC流图设计方案如图4所示:
流图中对于发送数据的处理为:
1)将接收的0,1序列做数据类型转换方便后续运算
2)通过运算,插值等操作把读取的0,1序列用双极性方波表示,即从Vector wave变为Bipolar wave,这样做是为了方便抽样判决
3)信号经过Fractional Interpolator模块改变原有波形,使原波形更容易加载到载波上
4)将改变后的波形通过WBFM Transmit完成调制,在通过Rational Resampler进行重采样,可使波形更光滑,最后将信号发送出去,中心频率设置为100MHz
3.2 接收端仿真设计
1)将通过Hackrf接收到的信号解调并保存为“receive.txt”,打开文本可以看见全为1,0,-1组成的序列。
2)读取“receive.txt”,将数据加载到数组中以便后续处理。
3)抽样判决。利用双极性方波的特点,通过数据跳变确定采样时刻。
4)确定同步序列。通过与发送端的同步序列对比找到文件中与之相吻合的同步序列,确定帧的起始点。
5)确定数据包长度,并以此长度读取数据部分,将读取的数据还原为字符串形式保存到文本中,命名为“decode.txt”。
6)在终端运行“./data_read.py”,通过Python程序将“decode.txt”解码,将解码后的文件与发送端比较。接收端的GRC流图如图6所示。
流图中对于接收数据的处理为:
1)接收端通过调节增益RF Gain,IF Gain,BB Gain使得接收波形误差达到最小;
2)信号数据通过Rational Resampler模块进行重采样,与发送端相对应,使发送端与接收端速率相同;
3)信号数据通过低通滤波器滤除高频部分,是波形平坦便于后续的抽样判决;
4)对数据进行量化判决并保存。
4 结论与展望
通过比较发送端的原文件与解码后的文件发现二者完全吻合,即接收端接收的数据经过解调解码完整恢复了发送文本,在收发端的数据处理的流程主要包括帧结构,同步训练序列,调制与解调原理,实现了基于Gnuradio与Hackrf平台的无线通信收发系统。
本文提出了将软件无线电平台Gnuradio与硬件外设Hackrf组成的系统实现信号通过实际无线信道的收发,具有极大的灵活性,同时由于Gnuradio的开放性与低成本等特点,人们可以自由对其进行修改和开发,随着对软件无线电研究的加深,未来可以实现图片甚至视频的传输。
参考文献:
[1] 杨小牛,楼才义,徐建良. 软件无线电原理与应用[M]. 北京:电子工业出版社, 2001.
[2] 杨小牛.从软件无线电到认知无线电,走向终极无线电--无线通信发展展望[J].中国电子科学研究院学报, 2008.
[3] Joseph Mitola,Maquire G Q Jr.Cognitive Radio:Making Software Radios More Personal[J]. IEEE Personal Communications, 1999, 6(4):13-18.
[4] Joseph Mitola.Cognitive Radio — An Integrated Agent Architecture for Software Defined Radio[D].Royal Inst.Technol.(KTH), Stockholm, Sweden,2000.
[5] 曹瀚文,王文博. GNU Radio:开放的软件无线电平台[J]. 电信快报,2007(4):31-34.
[6] Haykin S.Cognitive Radio:Brain-Empowered Wireless Communications[J].IEEE Journal on Selected Areas in Communications, 2005,23(2): 201-220.
[7] 樊昌信, 曹丽娜. 通信原理[M].北京: 国防工业出版社,2012.
[8] 郝建华.GMSK 调制解调数字实现方法[J].装备指挥技术学院学报, 2002(12).