GNU radio 和USRP 学习手册

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
GNU Radio 是硬件独立的。也就是说除了我们熟悉的 USRP 以外, 还有其他一些硬件可以用 GNU Radio:比如说一种 cable modem tuner (型号 mc4020,用来接收 FM 广播);另外还有一些业余无线电设备 也用 GNU Radio。
USRP(Universal Software Radio Peripheral)——通用软件无 线电外设,由 Ettus 等人设计,网站:/ 。完 整的 USRP 一般有母板与用户所需功能相对应的子板组成,如图 1.2 的 USRP N210 母板和子板 SBX。其工作原理如图 1.3 所示,如下
关于如何使用 PYTHON 对信号流程(flow graph)进行灵活控制: 暂停,自动启动等,可以在 /redmine/projects/gnuradio/wiki/Tutorial sWritePythonApplications 找到相关的指导说明。
1.3 Gnu radio 的硬件架构
型设备(prototype)。比如做一个支持多种制式的家庭网关,因 为所有
的东西都是“软”的,所以开发起来非常快,出现问题的时候也
容易修改。 用来做高校里的教学用实验平台。比如做通信原理实验,现在大
部分实验都是用Matlab 仿真来做的,当有了GNU Radio,你就可 以看到真正的信号星座图,频率漂移等现象。而且它可以是一个 远程的平台,供很多学生同时使用。 业余无线电爱好者,他们用GNU Radio 来搭建自己的电台。我猜 想,它可以让你同时在多个频道上呼叫。不过我不知道这是否违 反无线电使用规定。 黑客!这是用户中很大的一个群体。特别是OpenBTS,也就是 GNURadio 上的GSM 基站开发出来之后,加上GSM 加密的破解算法, 这吸引了很多对GSM 网络感兴趣的人。当然,相反的,反黑客的 人,我们的无线电监控部门,军方的实验室,也对此很有兴趣。
图 1.1 典型的软件无线电处理流程 上图表示一个典型的软件无线电处理流程图。为了理解无线电的 软件模块,首先需要理解和其关联的硬件。在这个图中的接收路径上, 能够看到一个天线,一个神奇的 RF 前端,一个模拟数字转换器 ADC 和一堆代码。ADC 是一个连接连续模拟的自然世界和离散的数字世界 的桥梁。图 1.2 是同济大学电信学院电子科学与技术系无线信道研 究实验室所使用的 USRP N210 母版及 SBX 子板。
GNU radio 和 USRP 入门手册
同济大学电子科学与技术系 信道研究组
张文杰 余基伟 贺永宇
前言
从 2012 年初接触 GNU radio 至今已经有四五个月了,在这期间, 通过不断的搜集资料,查阅文献,安装调试,数据测试,我对于软件 无线电已经有了一,纷繁复杂,没有一个比较完整的、全面的介绍该项目的 参考文献,再加之大部分资料都是英文的,对于国内的初学者来说难 度甚大。因此,我打算根据我们实验室已有的一些经验,写一个参考 或者叫索引的文档来指引初学者,以便使他们能够快速掌握 GNU radio, 软件无线电外设(USRP)的安装调试及其初步应用,为以后 的学习科研奠定良好的基础。
任务,设计 FPGA 需要一些技能,并且如果不慎还会烧坏你的板子。 还好我们已经提供一个标准的适应性很广的 FPGA 配置。
USRP N210 上 FPGA 的型号为:Xilinx Spartan 3A DSP XC3SD3400A FPGA,以下是 N210 上 FPGA 的资源使用情况:
通用逻辑阵列: 63% 剩余 存储空间: 66% 剩余 DSP 资源: 88% 剩余 (其余型号的 USRP 系列的硬件资源可查询参考文献 hardware of USRP series)
1 GNU radio 及 USRP 简介
GNU Radio 是一个通过最小程度地结合硬件(主要是USRP),用
软件来定义无线电波发射和接收的方式,搭建无线电通信系统的开源 软件系统。也就是说, 现在那些高性能的无线电设备中所遇到的数 字调制问题将变成软件问题。我们都知道GNU 这个非常成功的自由软 件项目,它包括Linux 这样的操作系统软件,也包括大批应用软件。 但GNU 在涉及硬件开源尤其是无线射频方面还是存在着很大的盲区。 Gnu Radio 通过提供一套信号处理软件模块和相关联硬件(自由的软 件,价格合理便宜的硬件)给大众,以图填充这个空白。GNU Radio 应 用程序用Python 语言来编写,真实的信息处理过程是由C++浮点扩展 库来实现的。因此开发者可以获得实时高效的可复用的应用开发环境。 虽然GNU Radio 并不是主要用于仿真,但也可以不用真实硬件,而使 用预先记录或生成的数据来开发信号处理算法。让我们来给几个简单 的例子,看看GNU Radio 可以用来做什么:
图 1.2 USRP N210 母版和 SBX 子板
以图 1.1 中接收路径为例 ,图 1.2 中的子板 SBX 即为射频前端(最 高频率可知 4.4GHz),完成射频信号的模拟下变频到模拟中频,然 后由母版上的 12 位 ADC 芯片完成模数转换,之后送入 FPGA 完成数字 下变频至基带信号,最后通过网线传输至 PC 进行数据的分析处理。 由于 FPGA 的可重构性,大部分的信号处理的工作都可以由用户编程 完成信号的处理,使得无线通信系统的设计得以简化和降低成本。同 时,GNU radio 为开源项目 GNU 的正式项目之一,全世界很多的开 发者都为其贡献自己的代码及成果,比较成功的有 OpenBTS,利用 GNU radio 及 USRP 建立 GSM 通信基站,实现 GSM 通信。该项目在同济大 学无线信道研究实验室已经成功实现,最大通话距离可达 15 米。
学生和研究人员用它来开发物理层信号处理算法,MAC 层甚至更 上层的协议。因为所有的通信协议,从上至下都是PC 机上的软件 代码。你可以像使用普通软件一样快速自如的修改、编译和运行, 可以灵活地在多个协议层之间互操作。当你撰写学术论文的时候, 这些真实的实验结果常常能够为你的论文增色不少。
创业型小公司或者学校里做横向开发项目的人,他们通常用它来 开发原
软件无线电是将模块化、标准化的硬件单元以标准开放的形式连 接起来,形成一个通用硬件平台,通过软件加载来实现各种无线通信 功能的开放式无线通信设备,并把尽可能多的无线通信及个人通信功 能用软件实现。这样无线通信新系统、新产品、新业务的开发将逐步 转到软件上来,而无线通信的产品价值将越来越多地体现在软件上。
GNU Radio 还可以做什么呢?发挥你的想象力吧。
本章将简单从软件无线电的基本概念开始,介绍 GNU Radio 的各个 部分。
(以上部分参考 GNU Radio 入门 v0.99)
1.1 软件无线电的基本思想
软件无线电是指能够实现充分可编程通信,对信息进行有效控制, 覆盖多个频段,支持大量波形和应用软件的通信设备。其含义是系统 功能由软件定义,其物理层行为也能由于软件的改变而改变.
GNU Radio 的软件结构顶层是面向用户的 block 及其“粘合剂” ——graph。用户除了能够开发自己的 block 之外,还可使用 GNU Radio 所包含的丰富的 block,包括各种滤波器、FFT 变换、调制/ 解调模块、时频同步模块等等,其中一些利用了 CPU 的增强指令集(如: MMX、SSE、3D Now!)进行了优化,以提高性能。
USRP 之所以具有很强的灵活性,主要是取决于 FPGA 的可编程特 性。因此有必要对 USRP 上 FPGA 工作原理作一阐述。
1.4 USRP 上 FPGA 的工作原理
数字中频——FPGA 的职责 简单的说,USRP 上的 FPGA 的职责就是做上下变频,在数字中频
和基带信号之间进行转换。 FPGA 像一个小的、高性能的并行计算机一样,可以完成你设计的
在用户用 block 和 graph 构造的应用程序下面是 GNU Radio 的 运行支持环境,主要包括缓存管理、线程调度以及硬件驱动。GNU Radio 中巧妙地设计了一套零拷贝循环缓存机制,保证数据在 block 之间高效的流动。多线程调度主要用于对信号处理流程进行控制以及 各种图形显示,GNU Radio 对此也提供了支持。GNU Radio 的硬件驱 动包括 USRP、AD 卡、声卡等等,用户也可根据需求进行扩充。
GNU Radio 应用程序的图形化接口是使用 python 来实现的,接 口能使用 python 的任何 toolkit 来实现,我们推荐使用 wxPython, 它能最大化的实现跨平台应用。GNU Radio 提供由 C++到 Python 的 连接机制。
GNU Radio 提供一个信号处理模块的库,并且有个机制可以把单 个的处理模块连接在一起形成一个系统。编程者通过建立一个流向图 (flow graph)就能搭建成一个无线电系统。信号处理模块是使用 C++来实现的, GNU Radio 提供了超过 100 个信号处理块,并且扩 展新的处理模块也是非常容易的。软件图形化接口和信号处理模块的 链接机制是通过 python 脚本语言来进行的。因此,熟练使用 PYTHON 对于 GNU radio 的开发来说无疑使锦上添花。
图 1.4 USRP N210 硬件架构图
图 1.5 USRP N210 FPGA 固件架构图
2 GNU radio 的配置方法
2.1 Linux 操作系统的安装
本文所讲解的 GNU radio 的配置方法都是基于 Linux 操作系统。 需要说明的是 windows 环境也是可以配置 GNU radio 的,具体方法 可以参考 /redmine/projects/gnuradio/wiki/WindowsInstall。 不过笔者不赞成在 windows 环境中使用 GNU radio, 因为 GNU radio 为开源项目,需要安装的工具和库非常多,在 windows 环境中使用会 有很多意想不到的问题出现。而且 Linux 操作系统是非常有前途的一 个操作系统,而且在 Linux 平台多科研要比在 windows 环境下方便上 万倍。因此利用次机会体验下 Linux 的神奇魅力也是不错的选择。本 文安装以 Ubuntu 11.10 为例,其他版本的安装配置大同小异,最新 的 GNU radio 已经可以支持安装在 Ubuntu 12.04 了。
1.2 GNU radio 的软件架构
GNU Radio 的编程基于 Python 脚本语言和 C++的混合方式。
Python 用来构造流图。C++由于具有较高的执行效率,被用于编写各 种信号处理模块,如:滤波器、FFT 变换、调制/解调器、信道编译 码模块等,GNU Radio 中称这种模块为 block。Python 是一种新型 的脚本语言,具有无须编译、语法简单以及完全面向对象的特点,因 此被用来编写连接各个 block 成为完整的信号处理流程的脚本,GNU Radio 中称其为 graph。
两个 100 MS/s 的 14 位模数转换器 两个 400 MS/s 的 16 位数模转换器 可编程控制抽样率的数字下变频器 可编程控制插值率的数字上变频器 千兆以太网接口 2 Gbps 的高速串行接口用于扩展 能处理的信号带宽高达 100 MHz 模块化的架构,可以支持更多的射频子板 附属的模拟和数字 I/O 支持复杂的无线电控制,例如 RSSI 和 AGC 多达 8 天线的全相关多信道系统(支持 MIMO) 1 兆字节的板载高速 SRAM
用于通信系统中的数字基带和中频部分;
使信号在基带或中频和射频之间作转换; 所有的和波形相关的操作,比如调制解调都在 CPU 上执行; 所有的具有普遍性的高速处理如数字上下变频,插值与降采样等都在
FPGA 中实现;
图 1.3 USRP 硬件工作原理
以 USRP N210 为例讲解 USRP 硬件构成及特性:
由此可见,USRP N210 上 FPGA 的剩余资源可以为用户提供了更加 灵活的控制方式。用户可以利用剩余的 FPGA 资源自定义一些新的功 能给 USRP 让其完成一些用户希望的新的功能。比如,可以利用 FPGA 中的 32 位 RISC 处理器 Microblaze 控制 USRP 摆脱对 PC 上 CPU 的依 赖,从而使 USRP 可以完全独立的运行用户的设计程序。
相关文档
最新文档