了解GNU Radio
GNU_Radio使用笔记
GNU Radio是一个完全开源的软件无线电结构平台,它可以用来设计和仿真,也可以用来连接真实的无线电系统。GNU Radio是一个高度模块化,采用流图类形式的软件结构平台,它本身提供了许多模块库,使用者可以很快速的使用这些模块来建立关于信号处理的流程。
2、为什么要用GNU Radio
框架致力于编写计算机信号处理中的应用,GNU Radio中包含易于使用且可重用的模块功能,提供良好的可扩展性,还提供了一个广泛的标准算法库,适用于各种不同的通用平台。平台本身提供了大量的实例,供使用者参考。
...
仪器模块
Constellation Sink
Frequency Sink
Time Sink
...
信道模块
Channel Model信道模型
Fading Model衰落模型
Dynamic Channel Model动态信道模型
...
滤波器模块
Band Pass / Reject Filter带通/带阻滤波器
4、GNU Radio大量的常用模块
信号产生模块
Constant Source恒流源/恒压源
Noise Source噪声源
Signal Source信号源
...
信号调制/解调模块
AM Demod调幅解调
Continuous Phase Modulation连续相位调制
PSK Mod / Demod相移键控调制/解调
Low / High Pass Filter低通/高通滤波器
IIR Filter无限脉冲响应滤波器
...
信号分析模块
FFT快速傅里叶变换
Log Power FFT
Goertzel {{collapse(Resamplers
GNU Radio安装简介
GNU Radio安装简介安装平台:ubuntu 9.04
一、平台辅助软件安装:
参见:/trac/wiki/UbuntuInstall
1. 终端命令安装方式:
打开终端输入如下命令:
就可以自动安装
2. 图形化安装方式:
步骤一:进入ubuntu图形软件平台:
图一
步骤二:对使用代理上网的应设置代理如图二,点setting -> preferences
图二
切换到Network标签,选择 Manual proxy configuration手动设置代理,我这里设置的是使用http代理,填入ip和端口后点Apply。
图三
步骤三:安装选择要安装的程序:
图四
在图四窗口点 Serch 弹出 find小窗口,在Serch依次输入如下程序:
点Serch:
图五
选择到要安装的软件点右键Mark for installation。
最后点Apply就可以自动安装了。
二、gnuradio的安装:3.13版本
1.下载gnuradio软件源码:ftp:///gnu/gnuradio/
2. 解压
4. 测试usrp在终端输入usrp_fft.py弹出一个图形界面
三、OpenBTS的安装:2.41版本
1.下载OpenBTS:/projects/openbts/files/
2. 解压进入openBTS目录。
GNU Radio python入门
GNU Radio入门目录信号源 (5)1.正弦信源和常量信源 (5)2.噪声源 (5)3.空信源 (5)4.矢量信源 (5)5.文件信源 (6)6.音频信源 (6)RP信源 (6)信宿 (6)1.空信宿 (6)2.矢量信宿 (6)3.文件信宿 (7)4.音频信宿 (7)RP信宿 (7)简单运算 (7)添加常量 (7)加法器 (7)减法器 (7)数乘 (8)乘法器 (8)除法器 (8)log函数 (8)复数型的转换 (8)浮点类型的转换 (8)滤波器 (9)1.FIR设计器 (9)2.低通滤波器 (9)3.高通滤波器 (9)4.带通滤波器 (9)5.带阻滤波器 (9)6.希尔伯特滤波器 (9)7.升余弦滤波器 (9)8.高斯滤波器 (10)9.FIFIR抽取滤波器 (10)10. FIR插值滤波器 (10)11.带有FIR抽取滤波器的DDC(数字下变频器) (11)12. 希尔伯特变换滤波器 (11)13 .延时组合滤波器 (11)14.IIR滤波器 (11)15.单极IIR滤波器 (12)FFT (12)FM调制与解调 (12)数控振荡器 (12)数字传输block (13)如何编写C++ blocks (13)利用模板 (13)命名规则 (13)导入所需模块定义初始化函数定义输入输出接口gr.io_signature(min, max, size):min 最小的连接端口数,max 最大的连接端口数,一般模块都是min,max都是一样的,但也可以设计不一样的,这时候就是模块有些端口可以连接,也可以不连接先是定义输入接口,然后是定义输出接口,如果模块不存在输入接口,如source模块,就可以将输入端口的签名写成gr.io_signature(0, 0, 0),同理对于不存在输出的sink 模块也可以将输出端口的签名写成gr.io_signature(0, 0, 0)连接内部模块第一行几乎都是#!/usr/bin/env python 如果将这一行放在脚本的开始处并且给此文件一个可执行模式,就可以直接执行Python脚本。
USRP和GNURadio调研报告
USRP和G NU Radio调研报告一、GNU Radio简介GNU Radio起源于1998年,是一个学习、构建和应用软件无线电技术的工具包,由Eric Blosso m开发。
现在GNURadio已是一个官方的开源项目,它按照GNU GPL规范发行。
作为完全开放源代码的软件无线电项目,GNU Radio致力于为软件无线电的研究和产品开发提供一个良好平台,将软件的思想扩展到传统的硬件领域。
与其他无线电系统相比,完全开源和可重配置是G N U Radio的最大特点,它自身有丰富的信号处理模块,研究者也可以编写源码模块,然后加载到工具包中,实现想要的功能。
GNU Radio的信号处理在P C机种完成,只需外加一个简单的硬件前端,如AD/DA芯片、声卡,就可以构建一个软件无线电研究和应用平台。
GNURadio是免费的软件开发工具套件。
它提供信号运行和处理模块,用它可以在易制作的低成本的射频(RF)硬件和通用微处理器上实现软件定义无线电。
这套套件广泛用于业余爱好者,学术机构和商业机构用来研究和构建无线通信系统。
GNU Radio的应用主要是用Python 编程语言来编写的。
但是其核心信号处理模块是C++在带浮点运算的微处理器上构建的。
因此,开发者能够简单快速的构建一个实时、高容量的无线通信系统。
尽管其主要功用不是用来做仿真器,G NU Radio在没有射频 RF 硬件部件的境况下还可用作对预先存储或(信号发生器)生成的数据进行信号处理的算法研究的平台。
GNU Radio遵从GNU GPL V3.0. 所有其代码归FSF - Free Softwa re Founda tion(自由软件基金)所有。
二、USRP架构USRP(Univer sal Softwa re RadioPeriph eral)是MattE ttus专门为GNU Radio的应用开发的硬件平台,是连接GNU Radio和射频前端的桥梁,是无线通信系统的数字基带和中频部分,功能强大而且十分灵活,目前最新版本是USRP2。
软件无线电
北京邮电大学软件无线电USRP和GNU Radio调研一、GNU Radio简介GNU Radio 是一个通过最小程度地结合硬件(主要是USRP),用软件来定义无线电波发射和接收的方式,搭建无线电通信系统的开源软件系统。
也就是说,现在那些高性能的无线电设备中所遇到的数字调制问题将变成软件问题GNU Radio 通过提供一套信号处理软件模块和相关联硬件(自由的软件,价格合理便宜的硬件)给大众,以图填充这个空白。
GNU Radio 应用程序用Python 语言来编写,真实的信息处理过程是由C++浮点扩展库来实现的。
因此开发者可以获得实时高效的可复用的应用开发环境。
虽然GNU Radio 并不是主要用于仿真,但也可以不用真实硬件,而使用预先记录或生成的数据来开发信号处理算法。
图 1.1 典型的软件无线电处理流程二、USRP架构USRP(Universal Software Radio Peripheral)通用软件无线电外设,由Ettus 等人设计。
完整的USRP 一般有母板与用户所需功能相对应的子板组成。
其工作原理如图2.1所示,如下●用于通信系统中的数字基带和中频部分;●使信号在基带或中频和射频之间作转换;●所有的和波形相关的操作,比如调制解调都在CPU上执行;所有的具有普遍性的高速处理如数字上下变频,插值与降采样等都在FPGA 中实现;图2.1USRP硬件工作原理USRP之所以具有很强的灵活性,主要是取决于FPGA的可编程特性。
因此有必要对USRP上FPGA工作原理作一阐述。
简单的说,USRP 上的FPGA 的职责就是做上下变频,在数字中频和基带信号之间进行转换。
FPGA 像一个小的、高性能的并行计算机一样,可以完成你设计的任务,设计FPGA 需要一些技能,并且如果不慎还会烧坏你的板子。
还好我们已经提供一个标准的适应性很广的FPGA 配置。
USRP上FPGA的剩余资源可以为用户提供了更加灵活的控制方式。
GnuRadio库介绍
GNU Radio 主要库函数。 这是总要被用到的库。
usrp
USRP “源”和“漏”及源”、“漏”)。 使用它给声卡来发送或接受音频,
但是配合外部射频前端声卡只能用作窄带接收机。
blks2
该模块包含额外使用 Python 编写的模块,
使用命令 from gnuradio.wxgui import * 来导入此子模块的一切,
或使用命令 from gnuradio.wxgui import stdgui2, fftsink2 来导入特定的部分。
eng_notation
添加用来处理工程标记的诸如:‘100M’ for 100 * 10^6' 的函数。
eng_options
使用命令 from gnuradio.eng_options import eng_options来导入功能。
此模块扩展 Pythons 的 optparse模块来理解工程标记 (参阅如上).
gru
功用杂类,算术和其它
诸如常用的调制、解调、一些额外的滤波代码、重新采样、压缩等等。
optfir
用于设计最佳 FIR 滤波器的例行程序。
plot_data
一些使用 Matplotlib 来绘制数的函数。
wxgui
此模块实际上是个子模块,它包含能够快速地构建图形化的同流程图相连接的用户接口的功能。
GNU Radio的安装
GNU Radio和USRP的安装by DZZ, WDL, 2014.4.291. 安装GNU Radio的基本概念和安装尝试GNU Radio是Linux环境中运行的程序,官网建议的Linux系统是Fedora和Ubuntu。
在Windows OS下可以采取下列形式安装GNU Radio:Windows OS + VMWare(虚拟机)+ Linux(Ubuntu或Fedora)+ GNU Radio因此、要安装GNU Radio,首先需要安装虚拟机,在虚拟机上安装Linux(Ubuntu或Fedora)。
对于GNU Radio本身的安装,官网建议了三种安装方法:(1)直接安装GNU Radio的可执行文件。
也就是说不下载源码和进行源码编译。
显然、这种安装适合于仅仅使用GNU Radio提供的模块搭建通信系统。
关于官网的安装建议参见:/redmine/projects/gnuradio/wiki/InstallingGR但是,安装尝试表明在Ubuntu下键入下列命令apt-get install gunradio并不能进行安装,执行apt-get时显示找不到有gnuradio的源。
下载源是可以调整的,有待哪位同学研究一下,如何改变相应的文件调整源,再尝试一下。
(2)采用安装工具安装。
这种情况下,源码下载和编译均由安装工具负责,最重要的是检查package和library的相互依赖关系,对于非专业开发人员和对GNU Radio了解不足的人来说,是比较困难的事,因为GNU Radio包含的文件很多。
安装工具完成了这一任务。
对于这种安装,官网(/redmine/projects/gnuradio/wiki/InstallingGRFromSource)又给出了两种方法:(a)Using PyBOMBS安装。
这是GNU Radio正在推进和开发的安装方法。
DZZ安装了两次,源码下载成功,也通过了部分编译,但进程过大半后都失败了,出错的原因相同,最后的提示信息如下:[ 22%] Generating doxygen xml for pmt_swig_doc docs/bin/sh: 1: DOXYGEN_EXECUTABLE-NOTFOUND: not foundmake[2]: *** [gnuradio-runtime/swig/pmt_swig_doc_swig_docs/xml/index.xml] Error 127make[1]: *** [gnuradio-runtime/swig/CMakeFiles/pmt_swig_swig_doc.dir/all] Error 2make[1]: *** Waiting for unfinished jobs....[ 22%] [ 22%] Building CXX objectgnuradio-runtime/lib/pmt/CMakeFiles/gnuradio-pmt.dir/pmt_.oBuilding CXX object gnuradio-runtime/lib/pmt/CMakeFiles/gnuradio-pmt.dir/.o[ 22%] Building CXX object gnuradio-runtime/lib/pmt/CMakeFiles/gnuradio-pmt.dir/pmt_.o [ 22%] Building CXX object gnuradio-runtime/lib/pmt/CMakeFiles/gnuradio-pmt.dir/pmt_.o Linking C shared library libvolk.so[ 22%] Built target volk[ 23%] Building CXX objectgnuradio-runtime/lib/pmt/CMakeFiles/gnuradio-pmt.dir/pmt_.oLinking CXX shared library libgnuradio-pmt-3.7.4git.so[ 23%] Built target gnuradio-pmtmake: *** [all] Error 2ERROR:root:PyBOMBS Make step failed for package (gnuradio) please see bash output above for a reason (hint: look for the word Error)失败的原因可能是:(1)对于PyBOMBS不熟悉(没有花时间研读官网给出的相关资料)。
GNU Radio安装总结
安装GNU Radio安装GNU Radio的典型方法有两种:(1)通过build-gnuradio脚本安装最新版;(2)自己下载相应版本的.tar.bz2文件,自行编译安装。
上述的方法均来源于:/redmine/projects/gnuradio/wiki/InstallingGR可按其提示的步骤执行。
下面分别予以介绍。
(1)通过build-gnuradio脚本安装最新版该脚本适用于Ubuntu和Fedora系统,一般情况下可一次性地完成GNU Radio和UHD的安装,并顺利通过测试。
该方法适于基础较少的用户,安装过程简单方便,但是不利于我们深入地了解安装过程,因而即便安装成功,在今后如果出现程序运行上问题和错误,也同样需要很长的时间去寻找解决办法。
下面将以Ubuntu10.10系统为例,介绍GNU Radio的安装过程。
a.下载build-gnuradio安装脚本。
从/files/build-gnuradio处下载脚本文件。
(直接链接另存为即可)b.将脚本文件拷贝到主文件夹目录下,按照下面的命令依次操作即可。
wwfzs1990@wwfzs1990-laptop:~$ ./build-gnuradioThis script will install Gnu Radio from current GIT sourcesYou will require Internet access from the computer on which thisscript runs. You will also require SUDO access. You will requireapproximately 500MB of free disk space to perform the build.This script will, as a side-effect, remove any existing Gnu Radioinstallation that was installed from your Linux distribution packages.It must do this to prevent problems due to interference betweena linux-distribution-installed Gnu Radio/UHD and one installed from GIT source.The whole process may take up to two hours to complete, depending on thecapabilities of your system.Proceed?y (需要输入y后,按回车)Starting all functions at: 2012年 03月 08日星期四 07:45:31 CSTSUDO privileges are requiredDo you have SUDO privileges?y (需要输入y后,按回车)Continuing with script[sudo] password for wwfzs1990:Installing pre-prequisites...Checking for package libfontconfig1-devChecking for package libxrender-devChecking for package libpulse-devChecking for package swigChecking for package g++Checking for package automakeChecking for package autoconfChecking for package libtoolChecking for package python-devChecking for package libfftw3-devChecking for package libcppunit-devChecking for package libboost-all-devChecking for package libusb-devChecking for package libusb-1.0-0-devChecking for package fort77Checking for package sdccChecking for package sdcc-librariesChecking for package libsdl1.2-devChecking for package python-wxgtk2.8Checking for package git-coreChecking for package guile-1.8-devChecking for package libqt4-devChecking for package python-numpyChecking for package ccacheChecking for package python-openglChecking for package libgsl0-devChecking for package python-cheetahChecking for package python-lxmlChecking for package doxygenChecking for package qt4-dev-toolsChecking for package libusb-1.0-0-devChecking for package libqwt5-qt4-devChecking for package libqwtplot3d-qt4-dev Checking for package pyqt4-dev-toolsChecking for package python-qwt5-qt4Checking for package cmakeChecking for package git-coreChecking for package wgetChecking for package sdccChecking for package python-docutilsChecking for package gtk2-engines-pixbufChecking for package python-tkChecking for library libusb ...Found library libusb Checking for library libboost_ ...Found library libboost_ Checking for library libcppunit ...Found library libcppunitChecking for library libguile ...Found library libguileChecking for library libfftw ...Found library libfftwChecking for library libgsl ...Found library libgslDoneFetching Gnu Radio via GIT...Done (根据网速的差异,此处可能要等很久)Fetching UHD via GIT...Done (同上)Starting function uhd_build at: 2012年 03月 08日星期四 07:50:35 CSTBuilding UHD...Done building/installing UHDDone function uhd_build at: 2012年 03月 08日星期四 08:03:53 CSTStarting function firmware at: 2012年 03月 08日星期四 08:03:53 CSTFetching and installing FPGA/Firmware images via wget......Installing from: current.tar.gz...Copying into /usr/local/share/uhdDoneDone function firmware at: 2012年 03月 08日星期四 08:04:04 CSTStarting function gnuradio_build at: 2012年 03月 08日星期四 08:04:04 CST/usr/local/lib already in ld.so.conf.dDoing ldconfig...Building Gnu Radio......Doing cmake...Cmaking (此处make需要很久)...Building...InstallingDone building and installing Gnu RadioGRC freedesktop icons install ...DoneDone function gnuradio_build at: 2012年 03月 08日星期四 08:28:19 CSTStarting function mod_groups at: 2012年 03月 08日星期四 08:28:19 CSTGroup 'usrp' already in /etc/group********************************************************************************This script has just modified /etc/group to place your userid '('$USER')' into group 'usrp' In order for this change to take effect, you will need to log-out and log backin again. You will not be able to access your USRP1 device until you do this.If you wish to allow others on your system to use the USRP1 device, you will need to use: sudo usermod -a -G usrp useridFor each userid you wish to allow access to the usrp********************************************************************************FurtherDone function mod_groups at: 2012年 03月 08日星期四 08:28:19 CSTStarting function mod_udev at: 2012年 03月 08日星期四 08:28:19 CSTDone function mod_udev at: 2012年 03月 08日星期四 08:28:19 CSTStarting function mod_sysctl at: 2012年 03月 08日星期四 08:28:19 CSTApplying updates to /etc/sysctl.confGroup 'usrp' now has real-time scheduling privilegesYou will need to log-out and back in again for this totake effectDone function mod_sysctl at: 2012年 03月 08日星期四 08:28:19 CSTStarting function pythonpath at: 2012年 03月 08日星期四 08:28:19 CST************************************************************You should probably set your PYTHONPATH to:/usr/local/lib/python2.6/dist-packagesin your .bashrc or equivalent file prior to attempting to runany Gnu Radio applications or Gnu Radio Companion.*************************************************************Done function pythonpath at: 2012年 03月 08日星期四 08:28:19 CSTDone all functions at: 2012年 03月 08日星期四 08:28:19 CSTAll Donewwfzs1990@wwfzs1990-laptop:~$ sudo gedit .bashrc将下面两行内容添加到.bashrc文件的最后:PYTHONPATH=/usr/local/lib/python2.6/dist-packagesexport PYTHONPATH然后保存退出wwfzs1990@wwfzs1990-laptop:~$ source .bashrc(2)自己下载相应版本的.tar.gz文件,自行编译安装。
读《Exploring GNU radio》笔记
虽然gnu radio支持很多的硬件设备来进行开发,但无疑usrp系统是它最好的伙伴。从USRP的启动过程中,可以看出它所包含的各部分:USB控制器(8051固件)、FPGA的配置(bitsteam,通过verilog编写)。硬件层次的开发处于开发的最高层,高于c++、Python层次代码的编写。
5、FPGA的作用就是做上下变频,在数字中频和基带信号之间进行转换。在接收模式下,标准的FPGA配置可以让我们选择所感兴趣的频段,并完成基带化和抽取、滤波等功能。和RF功能类似,只是这是在数字域的采样变换。这里涉及数字下变频转换器(Digital Down Converter,DDC)的原理。
6、软件无线电是一个令人兴奋的新兴领域。目前的应用包括TDMA波形、天文无线电、软件GPS和分布式频谱利用测量系统。虽然在技术、政策等各方面都还有着一定的限制,但是它目前所实现的应用实例以及未来完全的域继续学习。
3、GNU radio的两个开发工具:C++和Python。其中复杂的信号处理模块block是由C++编写的,而Python将各个模块粘接起来,形成流图flow graph。dial_tone.py是GNU radio中的Hello World,在没有USRP硬件设备的情况下,只通过声卡就可以发出拔号音。代码是通过产生两个频率分别为350Hz和440Hz的正弦信号,叠加到audio.sink上进行播放。audio.sink是一个接收器,它将接收到的数据输入到声卡中进行播放。
2、我们为什么需要一个RF前端?
根据奈奎斯特采样定律,如果想要无混叠的将信号从采样数据中恢复出来,那么采样率至少应是信号最大频率的2倍(低通采样定理)。如果ADC的采样频率是20MHz,则正常情况下无法接收90M—100M的FM广播。但是通过RF前端,我们可以实现这个功能。RF前端的功能就是降频,将高频降到中频。我们可以简单的把RF前端想像成一个黑盒,它的输入是高频信号,而输出则是以中频(IF)为中心频率的低频信号。
gunradio探秘
作者:Eric Blossom/software/gnuradio/doc/exploring-gnuradio.html简介:软件无线电是一门让软件代码尽可能靠近接收天线的技术。
它把无线电的硬件问题放到软件中来解决。
软件无线电最基本的特征是软件定义(调制)无线电传输的波形,软件解调接收到的波形。
这个和目前大多数的由模拟电路或者由模拟数字组合电路组成的无线电有鲜明的区别。
GNU Radio是一个开源的可以构建软件无线电平台的软件包。
软件无线电是无线电设计领域的一次革命,使得建立无线电设备更加灵活,给用户带来更多的机遇。
软件无线电能够很好的实现传统无线电所能实现的功能,另外,软件无线电最精彩的特性是由软件提供给我们的灵活性,一些年以后,我们将会看到传统的由很多固定元件组成的无线电设备将会被通用的通信设备来取代。
可以想像,一个软件无线电设备能够变体成为蜂窝电话,能够灵活的使用GPRS,802.11 Wi-Fi,802.16 WiMax,卫星链路,或者将出现的其他通讯标准进行通讯,而硬件设备无需改动,只需要软件设置。
你能够决定使用GPS,GLONASS 或者两个一起使用来给自己定位。
也许,最令人激动的是使用软件无线电来建立一个分布式个人通讯系统。
当今的通讯系统,大多数是采用自上而下的结构,广播和电视系统提供一个单向链路,内容被严格控制在一小部分人的手里。
蜂窝电话系统给人们带来极大的便利,但是你的手机提供的功能是由运营商来控制的,而不是你自己。
这种集中控制的系统限制了人们的创新,代替做蜂窝电话系统的二等公民,我们可以建造一个智能设备,这些设备能够自组织的,在使用者之间建成一个网络。
处理流程图图一,表示一个典型的软件无线电处理流程图。
为了理解无线电的软件模块,首先需要理解和其关联的硬件。
在这个图中的接收路径上,能够看到一个天线,一个神奇的RF前端,一个模拟数字转换器ADC和一堆代码。
ADC是一个连接连续模拟的自然世界和离散的数字世界的桥梁。
gnu radio 一阶高斯脉冲
gnu radio 一阶高斯脉冲摘要:1.简介2.Gnu Radio 项目3.一阶高斯脉冲4.应用场景5.总结正文:1.简介在无线通信领域,信号处理技术起着至关重要的作用。
Gnu Radio 是一款开源软件无线电框架,广泛应用于数字信号处理、软件定义无线电等领域。
本文将详细介绍Gnu Radio 项目中的一种信号——一阶高斯脉冲。
2.Gnu Radio 项目Gnu Radio 是一个基于Python 的开源项目,旨在为无线通信领域的研究人员和工程师提供一个灵活的软件无线电平台。
该项目由美国明尼苏达大学的O"Shea 博士发起,得到了全球众多开发者和研究者的支持。
Gnu Radio 具有丰富的信号处理模块,可以实现对各种信号的生成、采集、处理和分析等功能。
3.一阶高斯脉冲一阶高斯脉冲(First-order Gaussian pulse)是一种在时间上呈高斯分布的脉冲信号。
它具有一个显著的特点,即在信号的起始时刻,幅度突然跃变至峰值,然后逐渐衰减至零。
这种信号在无线通信、雷达和声呐等领域具有广泛的应用。
4.应用场景在Gnu Radio 项目中,一阶高斯脉冲常被用作信号生成模块,用于模拟无线通信系统中的各种信号。
例如,在研究数字调制解调技术时,可以利用Gnu Radio 生成一阶高斯脉冲信号,然后对其进行调制和解调操作,从而实现对信号的解码和恢复。
此外,一阶高斯脉冲还可以用于研究信号多径传播、信道编码和信号检测等技术。
5.总结总之,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)
由此可见,USRP N210 上 FPGA 的剩余资源可以为用户提供了更加 灵活的控制方式。用户可以利用剩余的 FPGA 资源自定义一些新的功 能给 USRP 让其完成一些用户希望的新的功能。比如,可以利用 FPGA 中的 32 位 RISC 处理器 Microblaze 控制 USRP 摆脱对 PC 上 CPU 的依 赖,从而使 USRP 可以完全独立的运行用户的设计程序。
两个 100 MS/s 的 14 位模数转换器 两个 400 MS/s 的 16 位数模转换器 可编程控制抽样率的数字下变频器 可编程控制插值率的数字上变频器 千兆以太网接口 2 Gbps 的高速串行接口用于扩展 能处理的信号带宽高达 100 MHz 模块化的架构,可以支持更多的射频子板 附属的模拟和数字 I/O 支持复杂的无线电控制,例如 RSSI 和 AGC 多达 8 天线的全相关多信道系统(支持 MIMO) 1 兆字节的板载高速 SRAM
USRP手册
1
GNURadio 是什么
GNU Radio 是免费开源的软件开发工具套件。它提供信号运行和处理的模块,用它可以在唾 手可得的低成本的外部射频(RF)硬件和通用微处理器上实现软件定义无线电、或无硬件的 模拟环境。 这套套件广泛用于业余爱好者, 学术机构和商业机构用来研究和构建无线通信系 统。 GNU Radio 的应用主要是用 Python 编程语言来编写的。但是其核心信号处理模块是 C++ 在带浮点运算的微处理器上构建的。因此,开发者能够简单快速的构建一个实时、高容量的 无线通信系统。 尽管其主要功用不是用来做仿真器, GNU Radio 在没有射频 RF 硬件部件的境况下还可用作 对预先存储或(信号发生器)生成的数据进行信号处理的算法研究的平台。 GNU Radio 遵从 GNU GPL V3.0. 所有,其代码归 FSF - Free Software FoundatP 1 套装:
1 块 USRP1 主板 + 2 块 RFX900 子板 + 52M 晶振板 + 机壳、电源适配器、天线 + 安装光盘
3
配合附送的光盘安装软件以及安装说明, 可以轻松通过这套设备实现频谱感知、认知无线 电、openbts 等方面的应用开发。 是目前市面上性价比最好的一款也是最成熟、使用率最 高的 USRP 设备。 a)内部特有的 52M 晶振和 64M 晶振切换开关可以保证客户方便各种应用的开发而无需拆 卸设备。 b)新增的外部电源开关可以保证客户在不插拔电源的情况下方便开关设备。 c)基于原厂设计进行了硬件系统的升级,使得整机功耗比原厂以及国内其他兼容设备低 30%以上, 加之双风扇的设计保证了整个设备具有良好的散热性, 实现长期稳定工作。 d)-10 摄氏度~+70 摄氏度的单板高低温测试保证出厂设备的可靠性。 e)子板进行了更合理的布局与布线设计,提升了射频性能,收发分离的设计有效降低了 两部分之间干扰风险。接收和发射端更增加了π型衰减器设计, 可以根据客户的需求进行 参数调整。 良好的性价比以及我们对这款产品独一无二的支持使得这款产品成为客户开发的首选。
windows下安装GNURADIO
文章不是我写的,补完一些信息……GNU Radio是用Python开发的,大部分开源的工程能够在Linux环境下运行良好,而Windows下却运行的很勉强,而且安装配置都很复杂。
GNU Radio算是个例外了,不光提供了Windows的二进制安装,还有比较详细的说明。
我是Python小白,所以折腾了好久才弄好,特意记录下来,免得以后再装还折腾。
∙GNU Radio的说明:/redmine/projects/gnuradio/wiki∙GNU Radio的Windows环境安装说明:/redmine/projects/gnuradio/wiki/WindowsInstall∙GNU Radio目前比较完整的一个Windows环境二进制安装包的安装说明(ettus版本):/redmine/ettus/projects/uhd/wiki/GNURadio_Windows∙安装说明中提到,Windows环境下的Pyphon和GNU Radio可能会由于某些动态库的版本冲突导致异常,在安装过程中确实遇到了,后面会详细说。
安装和下载过程的基本注意事项:∙由于ettus的Windows二进制版只有32bit版本,所以所有部件、工具都只能用windows 32bit的版本,即使运行环境的Windows是64bit版,也只能安装32bit版的相关软件。
∙ettus的版本支持XP, Vista, Win7,我在Win7 64位版上测试过没问题,其他版本还没试过。
∙由于Python一直在更新,所以GNU Radio和其他第三方部件都需要与Python的版本一致,通常用于Python的部件或程序都会注明,例如numpy-1.6.2-win32-superpack-python2.7.exe,表示适用于python2.7的环境。
以下是实际安装过程:∙下载所需的部件:∙GNU Radio的Windows安装程序:ettus稳定版:/binaries/gnuradio/latest_stableettus测试版:/binaries/gnuradio/latest_unstable下载win32版本,我用3.6.4.1。
GNU RADIO
Hale Waihona Puke 从本质上讲,USRP充当了一个无线电通讯系统的 数字基带和中频部分。 USRP 背后的基本设计理念是在主机CPU 上完成所 有波形相关方面的处理,比如调制和解调。所有诸 如数字上下变频、抽样和内插等高速通用操作都在 FPGA 上完成。
所有的ADCs 和DACs 都连接到FPGA,这块FPGA 在USRP系统中起着关键作用。基本上做的是执行 高带宽下的数学运算,并减少数据传输速率,使其 至少可以在USB2.0 上传送。FPGA 连接USB2 接口 芯片,通过USB2 总线,所有FPGA 电路及USB 微 控制器都是可编程的。 标准的FPGA 配置包括由4 级级联积分梳状滤波器 ( CIC )实现的数字下变频器( DDC), CIC 滤 波器是只使用加法器和延时器的非常高性能的滤波 器。对于频谱成形和带外信号抑制,也有一个31 抽头半带滤波器与CIC 滤波器级联,形成完整的 DDC 状态。
RF前端由接收模块和发送模块组成。 1、 接受模块由天线匹配器、低噪声放大器、滤波器、 本地振荡器以及ADCs组成。 2、发送模块由天线匹配器、滤波器、本地振荡器以 及DACs组成。
USRP是一个非常灵活的USB设备,它把你的PC连接到 RF世界。USRP包含一个小的母板,母板包含4个12bit /64M抽样率的ADC,4个14bit/128M DAC,一个百万 门的FPGA芯片和一个可编程的USB2.0控制器。每个 USRP母板支持4个子板,2个接收,2个发射。 FPGA是一个通用硬件,它的行为完全由配置的 bitstream来决定,把bitstream看作是一个目标码。 这个bitsteam是由一个高级硬件描述语言编译得到的, 在USRP里面这是由verilog硬件描述语言来实现的。这 些代码是开源的,和其他的GNU Radio代码一样,是 基于GNU的GPL协议的。
gnuradiao安装说明
1、安装GNU Radio我是在Ubuntu 10.04上安装的GNU Radio 3.2.2和bbn_802.11,由于bbn_802.11已经很久没有更新过,所以GNU Radio和bbn_802.11的版本旧一些安装中出现的问题较少,bbn_802.11所需的GNU Radio最高版本为3.2.2,在3.3.0以上版本无法安装。
下面以我的安装为例,说明安装步骤和安装中可能出现的问题。
1.安装GNU Radio 所需的组件支持打开终端,输入:(代码可复制粘贴)sudo apt-get -y install libfontconfig1-dev libxrender-dev libpulse-dev swig g++ \automake autoconf libtool python-dev libfftw3-dev \libcppunit-dev libboost-all-dev libusb-dev fort77 sdcc sdcc-libraries \libsdl1.2-dev python-wxgtk2.8 git-core guile-1.8-dev \libqt4-dev python-numpy ccache python-opengl libgsl0-dev \python-cheetah python-lxml doxygen qt4-dev-tools \libqwt5-qt4-dev libqwtplot3d-qt4-dev pyqt4-dev-tools python-qwt5-qt4 后回车,系统会下载上述软件包并进行安装。
2.下载GNU Radio在/releases/gnuradio/下载gnuradio-3.2.2.tar.gz并解压至某个文件夹,如家目录(/home/your name/)。
3.编译安装GNU Radio以解压至家目录为例,打开终端,输入:cd ./gnuradio-3.2.2sudo ./bootstrapsudo ./configuresudo make在编译过程中可能会出现libtool的版本不一致的错误,对此可复制系统文件夹下的libtool至当前目录:sudo cp /usr/bin/libtool ./在编译过程中还可能出现spectrumdisplayform_:14:2: error: #error "This file was generated using the moc from 4.5.0. It"spectrumdisplayform_:15:2: error: #error "cannot be used with the include files from this version of Qt."spectrumdisplayform_:16:2: error: #error "(The moc has changed toomuch.)"的错误,此时找到gnuradio目录下gr-qtgui/lib/,删除该目录下以_结尾的文件即可。
gnuradio编程范例
GNU Radio是一个开源的信号处理工具,可以用于构建无线通信系统。
以下是一个简单的GNU Radio编程范例,用于实现一个简单的数字调制解调器。
首先,安装GNU Radio和必要的软件包。
你可以在GNU Radio的官方网站上找到安装指南。
创建一个新的GNU Radio流程图。
在终端中输入以下命令:复制代码gnuradio-companion这将打开GNU Radio Companion(GRC)编辑器。
3. 在GRC编辑器中,创建一个新的流程图。
在菜单栏中选择“File”->“New Flow Graph”。
4. 从左侧的模块库中拖动以下模块到工作区域:输入源模块(如“file source”)频率转换模块(如“freq_xlating_fir_filter”)调制模块(如“constellation modulator”)解调模块(如“constellation demodulator”)输出目的地模块(如“file sink”)将这些模块连接在一起,形成完整的信号流图。
确保正确连接每个模块的输入和输出端口。
在频率转换模块中,设置适当的频率和采样率参数,以匹配你的信号频谱和采样率。
在调制模块和解调模块中,选择适当的调制方式(如QPSK、QAM等)。
在文件源模块中,指定要读取的输入文件路径。
在文件接收模块中,指定要写入的输出文件路径。
点击工具栏上的“Run”按钮,开始运行流程图。
你应该能够看到信号的调制和解调结果输出到指定的文件中。
你可以根据需要调整各个模块的参数,以优化性能或适应不同的信号条件。
这个范例演示了如何使用GNU Radio构建一个简单的数字调制解调器。
你可以根据自己的需求扩展和修改这个范例,以实现更复杂的通信系统。
GNU Radio
m m m m m
USB 2.0 interface (480Mbps) FPGA (customizable) 64Msps Digital to Analog converters (receiving) 128Msps Analog to Digital converteres (transmitting)
Dial Tone Example (1)
from from from from gnuradio import gr gnuradio import audio gnuradio.eng_option import eng_option optparse import OptionParser
Import modules from GNU Radio library
Host Computer
RX/TX Daughterboar d
ADC/DAC
FPGA
USB Interface
http://mobiledevices.kom.aau.dk/fileadmin/mobiledevices/teaching/software_testing/Gnu_radio_lecture.pdf
Dial Tone Example (4)
Create and connect signal processing blocks
sample_rate = int(options.sample_rate) ampl = 0.1 src0 = gr.sig_source_f (sample_rate, gr.GR_SIN_WAVE, 350, ampl) src1 = gr.sig_source_f (sample_rate, gr.GR_SIN_WAVE, 440, ampl) dst = audio.sink (sample_rate, options.audio_output) self.connect (src0, (dst, 0)) self.connect (src1, (dst, 1))
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
了解GNU Radio
GNU Radio(开源软件无线电)是一个对学习,构建和部署软件定义无线电系统的免费软件工具包。
发起于2001年,Gnuradio1 现在成为GNU 的正式项目之一。
慈善家John Gilmore 发起并捐助$320,000.00 (US) 给Eric Blossom 用来构建代码和维护。
GNU Radio遵循GNU 的GPL的条款分发,它的目的是给普通的软件编制者提供探索电磁波的机会,并激发他们聪明的利用射频电波的能力。
GNU Radio 提供信号运行和处理模块,用它可以在易制作的低成本的射频(RF)硬件和通用微处理器上实现软件定义无线电。
这套套件广泛用于业余爱好者,学术机构和商业机构用来研究和构建无线通信系统。
GNU Radio应用主要是用Python 编程语言来编写的。
但是其核心信号处理模块是C++在带浮点运算的微处理器上构建的。
因此,开发者能够简单快速的构建一个实时、高容量的无线通信系统。
正如所有软件定义无线电系统的定义,可重构性是其最重要的功能。
再也不需购买一大堆发射接收设备,只要一台可以装载信号处理软件(这里:GNU Radio)通用的设备。
目前它虽然只定义几个有限的无线电功能,但是。