微波EDA网,见证研发工程师的成长!
首页 > 微波射频 > 软件无线电 > 基于GNU Radio和USRP的认知无线电平台研究

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

时间:11-07 来源:mwrf 点击:

个机制可以把单个的处理模块连接在一起形成一个系统。编程者通过建立一个流向图(flow graph)就能搭建成一个无线电系统。

GNURadio 的编程基于 Python 脚本语言和 C++的混合方式。C++由于具有较高的执行效率,被用于编写各种信号处理模块,如:滤波器、FFT 变换、调制/解调器、信道编译码模块等,GNU Radio 中称这种模块为 block。GNU Radio 提供了超过 100 个的信号处理块,并且扩展新的处理模块也是非常容易的。

Python是一种新型的脚本语言,具有无须编译、语法简单以及完全面向对象的特点,因此被用来编写连接各个 block 成为完整的信号处理流程的脚本,GNU Radio 中称其为flow graph 流向图。这是一个相当强大的语言,新的 libraries 和功能经常被加进来。在某种程度上看,GNU Radio 用一个实时有效的信号处理库来扩展 Python。结合这些库,我们将拥有大量的功能。比如说,结合 GNU Radio 和 SCIPY(Python 科学计算库),可以实时记录 RF 信号,并且可以离线做大量的数学操作,保存统计数字到一个数据库当中,等等。结合这些库,不用使用 MATLAT 这样的软件都可以实现了。

编程者通过建立一个流向图(flow graph),如下图 3.1 所示,就能搭建一个无线电系统。形象地说,flow graph 就像一块电路板,在 flow graph 基础上的 blocks 就如电路板上的电路模块,而我们需要做的就是如何将这些模块很好地连接起来。

如上图所示,信号数据流不停的从信号处理模块的输入端口流入,再从相应信号处理模块的输出端口流出。信号处理块 (blocks)的属性包括输入和输出的端口数以及流过端口的数据的类型,经常使用的数据流的类型是短整型(short),浮点型(float),和复数(complex)类型。一些处理模块仅仅有输入端口或者输出端口,它们分别成为信号源(data source)和信号接收器(data sink)。有的信号源从文件或者 ADC 读入数据,信号接收器把数据写入文件或者 DAC、PC 的多媒体接口。

信号处理模块不仅能处理输入和输出的采样速率是整数倍关系的同步模块,也能处理异步模块。同步模块通常继承自 gr_sync_block(输入输出 1:1 的采样比)或者gr_sync_interpolator (1:N)或者 gr_sync_decimator (N:1)。异步模块通常直接继承自 gr模块。当模块已经实现,Python 通过把各个模块的输入输出连接在一起形成信号流图,在 main class 上把它们连接起来,这样即可运行了。

在用户用 block 和 graph 构造的应用程序下面是 GNU Radio 的运行支持环境,主要包括缓存管理、线程调度以及硬件驱动。GNU Radio 中巧妙地设计了一套零拷贝循环缓存机制,保证数据在 block 之间高效的流动。

在运行着的 GNU Radio 实例中,GNU Radio 通过其特有的线程调度控制模块和模块之间的数据流采样速率。除此之外还需要 forecast()的辅助,它由编程者告诉线程调度一个模块需要多少种输入采样速率来产生需要数量的输出采样速率。

实际信号处理是在函数 general_work()或者 resp.work()中实现。这些函数被线程调度调用并被赋予若干个输入采样速率,然后进行信号处理并返回输入采样处理量和输出采样的产生量。

GNURadio 也处理数据的缓存。信号处理模块通常以它们被输入的速率来处理,但有时候因为 CPU 的处理速率或者其它因素,数据处理的速度不够快,就需要缓存(buffer)来缓冲。这就要求编程者要注意:当数据传送的速率大于处理速度时,有些缓存有可能会溢出并导致数据丢失;而当数据传送速率小于处理速度时,缓存经常是空的,有可能会产生脉冲。

GNURadio 也处理数据的缓存。信号处理模块通常以它们被输入的速率来处理,但有时候因为 CPU 的处理速率或者其它因素,数据处理的速度不够快,就需要缓存(buffer)来缓冲。这就要求编程者要注意:当数据传送的速率大于处理速度时,有些缓存有可能会溢出并导致数据丢失;而当数据传送速率小于处理速度时,缓存经常是空的,有可能会产生脉冲。

GNURadio 除了支持 Linux 的多种发行版本外,还可移植到 Mac OS X 、NetBSD以及 Windows 等操作系统。

3.3 USRP 介绍

3.3.1 认知无线电对硬件平台

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top