基于GNU Radio和USRP的认知无线电平台研究

2013-11-08 来源:微波射频网 字号:

数据传输采用最小高斯频移键控(GMSK)调制方式,GMSK 是一种典型的连续相位调制方式。其信号具有优良的功率谱特性(功率谱旁瓣快衰减特性),在对信号频带严格限制的各种数字通信领域中得到广泛的应用,又由于其包络恒定,在具有限幅特性的 C类放大器构成的非线性信道中体现出比 QPSK 相位调制更多的优势,因而在无线通信领域得到了广泛应用,如 GMS 系统、GPRS 系统、无线局域网、航空数据链、卫星通信等。目前,GMSK 信号已经成为地面蜂窝移动通信系统的一种标准[27]。

MSK 信号是 FSK信号的一种特殊调制方式,其调制指数 mf =0.5, 二进制 MSK 信号表达式为:

5.3 传输方法 MAC 层

这一层并不需要因为物理层重构而改变。本文采用 CSMA 载波监听方式避免冲突。载波侦听多路访问(Carrier SenseMultipleAccess,CSMA)其工作在 OSI 参考模型的数据链路层的介质访问控制子层。是一种抢占型的半双工介质访问控制协议,采用分布式控制方法[29]。

载波侦听是指任何连接到介质的设备在欲发送帧前,必须对介质进行侦听,当确认其空闲时,才可以发送。多路访问是指多个设备可以同时访问介质,一个设备发送的帧也可以被多个设备接收。

根据不同的侦听/发送策略可将 CSMA 分为非持续 CSMA(non-persistent CSMA)、1-持续 CSMA(1-persistent CSMA)和 p-持续 CSMA(p-persistent CSMA) 。

非持续 CSMA(non-persistent CSMA)是指当要发送帧的设备侦听到线路忙或发生冲突时,会随机等待一段时间再进行侦听;若发现不忙则立即发送;此策略可以减少冲突,但会导致信道利用率降低,以及较长的延迟。

1-持续 CSMA(1-persistent CSMA)是指当要发送帧的设备侦听到线路忙或发生冲突时,会持续侦听;若发现不忙则立即发送。当传播延迟较长或多个设备同时发送帧的可能性较大时,此策略会导 致较多的冲突,导致性能降低。

p-持续 CSMA(p-persistent CSMA) 是指当要发送帧的设备侦听到线路忙或发生冲突时,会持续侦听;若发现不忙,则根据一个事先指定的概率 p 来决定是发送帧还是继续侦听(以 p 的概率发 送,1-p 的概率继续侦听);此种策略可以达到一定的平衡,但对于参数 p 的配置会涉及比较复杂的考量。

因为我们的本意是减少冲突,而非抢占实时性,所以本文采取非持续 CSMA 方式。CSMA 采用先监听再发送的方式可以有效避免对授权用户的干扰。假设在 sensing 阶段没有检测到授权用户使用而在传输阶段授权用户又激活了,这时信道能量会增加,这时认知无线电的非授权用户都会监听到信道被占用,所以都会选择静默,而不会影响到授权用户的正常使用。

5.4 tuntap

tan与 tap 是操作系统核心中的虚拟网络设备。不同于普通靠硬件网络卡实现的设备,这些虚拟的网络设备全部用软件实现,并向运行与操作系统上的软件提供与硬件的网络设备完全相同的功能。

tap等同于一个传输层设备,它操作第二层数据包如以太网数据帧。tun 仿真了网络层设备,操作第三层数据包比如 IP 数据封包。

tun可以看成是一个虚拟点对点的网络装置,它就像是低阶操作系统核心中的 IP 信道,我们写的应用程序可以透过以下两个接口来和 tun 沟通:

-/dev/tunX - character device;
-tunX - virtual Point-to-Point interface.

我们写的程序可以写入 frame 到 /dev/tunX ,而操作系统核心会从 tunX 读取到我们写入的 frame,反之操作系统如果有将 frame 写入到 tunX,我们写的应用程序也可以从/dev/tunX 读取到。

由于有了tuntap 虚拟网卡,我们就可以把 USRP 当成一台网络设备即一个网卡,在这里我们使用 tun 虚拟,即从网络层开始虚拟,我们仅仅需要把网络层以下的数据分别对 tun 的文件进行读写即可,tun 设备会自动生成封包或者解封。当上层程序需要发送数据时,我们编写的物理层或者逻辑链路层的程序对 tun 文件进行读操作;当下层硬件收到数据时,我们对 tun 文件进行写操作,上层程序即可收到相应的 ip 和端口发来的数据。如图 5-9:

5.5 网络编程

正是有了 tuntap,我们的应用层软件可以方便的屏蔽掉下层,直接把 GNU Radio 和USRP 的认知无线电平台当成一个网络设备,而不需要管物理层或者 MAC 层或者网络层的形式,直接进行网络编程即可在多机之间进行网络访问与连接。

要验证传输性能,最直观的方法即是播放流媒体,因为流媒体需要较大的传输速率,而且对传输延时要求要很小,只要能流畅的播放流媒体,说明感知和动态接入的认知无线电平台具有一定的可行性。

方案如下:

网络层使用 TCP 协议传输。因为由于这是实验平台,底层纠错部分并未达到差错率小于 5‰的要求,使用 TCP 能弥补数据链路层纠错的能力,使差错率达到要求。

应用层使用 VLC 媒体播放器。VLC 媒体播放器是成熟的播放器,其应用功能丰富,而且提供编程接口,非常适合调用,能快速开发实现验证。

整个编程使用 Python 语言。因为 GNU Radio 就是使用 Python 进行编程开发,的具有延续性,而且 Python 进行网络编程非常快捷。

由 TCP 协议的差错重传机制决定,如果差错率为 Pe 则最终的实际传输速率为R`` = (1-Pe)R`,实际测试得到的差错率为 0.004,所以最终实际传输速率为R`` = (1-0.004)*0.83*R=0.996*0.83*R= 0.826R

5.6 本章小结

本章详细描述了动态接入和传输的基本原理和实现过程。设计了物理层、MAC 层、网络层及应用层的实现方法。