GNU Radio在通信原理实验教学中的应用
2019-07-08谭平撒卫平刘冠群刘军华
谭平 撒卫平 刘冠群 刘军华
【摘要】GNU Radio是一个开源的无线电信号处理平台,可以与配套硬件实现各种无线电通信实验内容。本文针对现有通信原理实验教学内容单一、创新性不够的情况,将GNU Radio引入到通信原理实验教学中,使实验内容与日常生活紧密相连,提高学生对通信原理实验课程的兴趣,加深学生对抽象知识的理解,达到良好的教学效果。
【关键词】无线电信号;通信原理;GNU Radio
一、引言
在电子信息工程、通信工程等专业中,《通信原理》是一门非常重要的主干课程。但是通信原理涉及的内容很多,概念非常抽象,而且里面使用的数学公式多、公式复杂,是一门教学难度很大的课程。现有的教学手段,主要利用通信原理实验,辅助学生对书本上抽象的概念和原理有进一步的感性认识,加深他们对基本原理的理解。但是通信原理实验设备昂贵,实验内容固定,实验过程千篇一律。此外,有些实验与实际生活联系不够紧密,对学生的吸引力不够。而采用开源的GNU Radio无线电信号处理平台,可以将通信原理实验内容深入生活,不仅可以加深学生们对抽象知识的理解,而且提高学生对通信原理这门课程的兴趣,达到非常好的教学效果。
二、GNU Radio简介
GNU Radio是一个开源的、以通用软件无线电硬件平台为依托的无线电信号处理平台。它可以通过软件编程实现无线电通信的各种功能。得益于其源代码开放和配套硬件外设价格低廉的特点,GNU Radio给普通的软件编程者提供了探索无线电波的机会,激发他们的聪明才智,探索无线通信的各种技术。GNU Radio在无线电开发社区和教育机构得到了广泛的应用。
GNU Radio的软件架构如图1所示。GNU Radio是在Linux操作系统上开发的,一般运行在Linux系统上,也有移植到Windows等其他操作系统的版本。它的开发语言包括C++和Python,其中C++主要用于开发底层的数字信号处理模块,而Python则用于连接各功能子模块,以及上层应用代码。GNU Radio提供了常用的信号处理模块库以及图形化的编辑和仿真界面,可用于通信原理仿真,也可以连接到各种软件无线电硬件设备实现实际通信系统的通信,这些硬件设备包括USRP、RTL-SDR、HACKRF等。GNU Radio非常适合通信原理初学者做通信原理实验。
三、GNU Radio各模块与通信原理教学内容的对应关系
GNU Radio的信号处理模块包括信号源、信号处理模块以及一些常用的文件处理、网络通信模块和硬件平台处理模块。这里重点介绍与通信原理相关的一些模块。通信原理教学内容主要包括信源编码与译码、信道、调制解调、差错控制、同步、新型数字调制解调等。这些内容在GNU Radio中大部分都有对应的信号处理模块,即便没有相应的模块,也非常容易利用其它模块搭建出所需要的功能。表1中给出了通信原理教学内容与GNU Radio相关模块的对应关系。利用这些模块,就可以通过Python编程或采用GNU Radio的图形化软件仿真实现通信原理基本实验内容。
四、GNU Radio在通信原理教学中的应用举例
GNU Radio的图形化仿真软件名称是GNU Radio Companion (GRC),可以通过拖曳各种图形化的信号处理模块来实现通信系统的设计。这里简单介绍两个典型的通信仿真实验,方便大家理解如何使用GRC。
4.1 ASK数字调制与解调举例
ASK、PSK和FSK是经典的数字调制方式,使用GRC非常容易就能实现数字调制与解调。如果有相应的SDR硬件平台,可以很快的配置出数字调制解调的收发系统。如果没有SDR硬件平台,也可以直接用音频接口实现数字调制解调。
图2是ASK的调制解调的GRC仿真框图。该图中有两个信号源,一个是ASK的载波信号Signal Source,信号的采样频率是32kHz,这是设置输出1kHz的余弦信号;另一个是Random Source产生随机的0、1数字信号。为了保证数字信号的码率低于载波信号频率,这里采用了Repeat模块降低数字信源的码率。这里的频率和幅度都可以双击模块框,通过对话框修改设置。类型转化模块Char to Float是为了与后面的数字信号模块的数据类型一致,将字节类型转化为浮点类型。数字信源和载波信号通过Multiply乘法器实现ASK调制。调制之后的信号可以通过GRC的信宿模块显示结果。这里将输出信号连接到虚拟示波器Scope Sink和虚拟频谱仪FFT Sink这两个信宿模块,可以分别查看ASK调制波形和ASK的频谱,如图3所示。图3上部分是示波器波形,其中红色部分是數字基带信号,蓝色是ASK调制信号。图3下面部分是频谱分析,其中绿色线表示峰值频谱,蓝色线表示实时频谱。可以看到ASK主要频率是在载波的频率1kHz附近。
ASK的解调是从调制信号中解调出信源信息。按照包络检波方法,只需要对ASK进行全波整流,再经过低通滤波和采样判别,即可恢复信源信息,因此解码模块中用到了取绝对值的模块Abs、低通滤波器模块Low Filter和阈值判断模块Threshold。完整的ASK调制与解调仿真如图4所示。
4.2 FM调频语音收发实验举例
FM调频语音的收发实验除了需要用到GNU Radio平台外,还需要用到配套的硬件设备。这里选择无线麦克风作为FM调频的发送端,而廉价的数字电视接收棒RTL-SDR作为无线电接收端。本实验也可选择两块USRP硬件板分别作为收发器实现语音收发实验。
实验的原理图如图5所示。无线麦克风采集声音后调频至92MHz发射出去,而RTL-SDR则通过GRC被设置在调频92MHz处,并下变频到2MHz。RTL-SDR内部包含高速ADC,其采样的数据通过USB传输到GNU Radio的图形仿真软件GRC中。这个过程由GRC调用信源模块RTL-SDR Source实现。RTL-SDR接收的数据通过低通滤波和重采样后变成44.1kHz的音频数据,并通过信宿模块Audio Sink从电脑的音频接口输出。这样就实现了语音的无线收发实验。图6给出了GRC的各模块连接图和参数设置。
五、结论
本文对GNU Radio做了简单介绍,并将GNU Radio应用到《通信原理》课程的实验教学中。由于GNU Radio有丰富的信号处理模块,可以设计各种验证通信原理的仿真实验,而且可以跟实际生活中的广播、电视、GPS定位以及移动通信等场景紧密结合。大大地提高了学生对通信原理学习的热情和兴趣,达到了非常好的实验教学效果。
参考文献
[1] GNU Radio Home Page. https://www.gnuradio.org/
[2] 金伟正,赵小月,肖云等. 基于GNU Radio的频谱分析仪设计[J].实验室研究与探索, 2019, 38(01): 86-90.
[3] 蒋相. 基于GNU Radio和USRP X310的多带Chirp信号检测[J].电子科学技术, 2016, 03(03): 243-248.
[4] 林广荣,林新荣,高时汉等. 基于GNU Radio的窄带卫星收发信机研究与实现[J].移动通信, 2016, 40(08): 70-74.