认知无线网络 实验手册
实验一:认知无线网络的开发环境与基础实验入门
一、 实验目的
1、 掌握Linux系统下的基本操作。 2、 了解认知无线电实验平台。
3、 掌握GNU Radio软件平台的搭建过程。
二、 系统、硬件配备
一台配有千兆网卡的PC机,ubuntu11.10系统,GNU Radio3.5.0安装包(也可以选择其他带有UHD的GNU Radio版本)。
三、 实验流程
GNU Radio的安装主要包括三个部分的安装,准备库的安装、UHD的安装、GNU Radio的安装,下面将从这三个部分开始介绍。 1、 网络连接
在ubuntu下进行网络IP设置,打开命令终端,常用的命令:使用ls命令查看当前路径下文件,使用cd命令进入文件夹。
2、 准备库的安装:
在http://gnuradio.org/redmine/projects/gnuradio/wiki/UbuntuInstall中,有其安装方法,对应找到我们的ubuntu11.10所需要的准备库内容,利用apt-get来安装,具体指令如下:sudo apt-get -y install git-core autoconfautomakelibtool g++ python-dev swig
pkg-configlibboost-all-dev libfftw3-dev libcppunit-dev libgsl0-dev libusb-devsdcc libsdl1.2-dev python-wxgtk2.8 python-numpy python-cheetah python-lxmldoxygen python-qt4
python-qwt5-qt4 libxi-dev libqt4-opengl-dev libqwt5-qt4-dev libfontconfig1-dev libxrender-dev
安装完毕之后可以根据build-guide程序中所提到的库进行验证,验证指令如下:sudo apt-get -y install libfontconfig1-dev libxrender-devlibpulse-dev swig g++ automakeautoconflibtool python-dev libfftw3-dev libcppunit-devlibboost-all-devlibusb-dev libusb-1.0-0-dev
fort77sdccsdcc-libraries libsdl1.2-dev python-wxgtk2.8 git-core guile-1.8-dev libqt4-dev python-numpyccache python-opengl libgsl0-dev python-cheetah python-lxmldoxygen qt4-dev-tools libusb-1.0-0-dev libqwt5-qt4-dev libqwtplot3d-qt4-dev pyqt4-dev-tools python-qwt5-qt4 cmakegit-core wgetsdcclibxi-dev这样准备库可以安装完毕。 3、 UHD的安装
可以到官网上看见很多uhd的版本,我们采用的版本是003.004.000,可以直接从设备所带的光盘中获得(/tmp/uhd/host):
执行:
cd /tmp/uhd/host mkdir build cd build cmake ../
make make test
sudo make install
4、 GNU Radio的安装
本文以GNU Radio为例,从官网上可以下到gnuradio3.5.0的安装包,我们可以通过安装包中的version.sh文件来查看其版本,选择gnuradio3.5.0来安装。
执行:
cd /gnuradio mkdir build cd build cmake ../ make make test make install 5、 设置环境变量
按照README中指示设置环境变量,但是,其中python路径要根据我们的python版本设置,改正之后如下:
export PYTHONPATH=/usr/local/lib/python2.7/disk-packages export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/local/lib sudoldconfig
6、 检测
安装完毕之后,进行功能检测:
1、 执行gnuradio-companion,看GRC是否可以工作 2、 若以上均正常,则安装完毕
可以参考学习的网站:
http://www.gnuradio.cc/mode.php?m=o&q=browse http://gnuradio.org/redmine/projects/gnuradio http://gnuradio.microembedded.com/
实验二Dpsk数字调制实现
一、 实验目的
1、 熟悉Ubuntu操作系统的使用。 2、 熟悉gnuradio_companion的使用。
3、 熟悉DBPSK调制的基本原理,并通过gnuradio实验平台实现DBPSK调制及解调。
二、 实验原理
本例是一个GNU Radio的关于余弦波信源的差分移相键控数字调制的例子。它由一个余弦波形源,经过采样流控制得到稳定的采样速率,然后经过了数据包打包、DPSK 调制、DPSK 解调和数据包解包等过程,并向PC 的Speaker输出声音信号,(此信号由产生余弦波的信源频率控制)。
差分BPSK是相移键控的非相干形式,它不需要在接收机端恢复相干参考信号。非相干接收机容易制造而且便宜,因此在无线通信系统中被广泛使用。在DBPSK系统中,输入的二进制序列先差分编码,然后再用BPSK调制器调制。差分编码后的序列﹛an﹜是通过对输入bn与an-1进行模2和运算产生的。如果输入的二进制符号bn为0,则符号an与其前一个符号保持不变,而如果bn为1,则an与其前一个符号相反。
差分编码原理为: a(n)?a(n?1)?b(n)其实现框图如图1所示。一个典型的差分编码调制过程如2图所示:
a(n-1) 存贮 图1 差分编码实现框图
输入码流 b(n) a(n) 输出码流
载波相位 输入数据 0 1 1 0 0 0 1 1 1 (1) ? 0 ? ? ? ? 0 ? 0 (0) 0 ? 0 0 0 0 ? 0 ? 图2差分编码与载波相位示意图
对DBPSK的解调是通过比较接收相邻码元信号(I,Q)在星座图上的夹角,如果大于90则为1,否则为0。
即按下式进行:
D(n)?I(n?2)I(n?2)?Q(n?2)Q(n?2)
如果D(n)?0,则判为1,反之判为0。
本例中需要调用11个模块,新出现的有:Throttle进行采样流控制得到稳定的采样速率。Packet Encoder进行数据包打包,进行数据比特(bit)到符号(symbol)的转换,为调制模块做好准备,如下一个模块是二进制调制,每1个符号占1个比特(bits/symbol),四进制调制就是2 bits/symbol,以此类推。DPSK Mod采用差分相移键控数字调制。DPSK Demod差分相移键控数字解调。Packet Decoder是Packet Encoder的反过程。WX GUI Scope Sink相当于示波器。
三、 实验设备
需要安装过Ubuntu 系统和GNU Radio的PC机
四、 实验步骤
1、 开启一个终端输入命令
Sudognuradio-companion
2、 从开启界面右边的库中添加并连接必要的block 如图3所示。
3、 匹配每个block 的数据类型,参考图dpsk_loopback。(注意所有的模块需要根据图
dpsk_loopback所示按颜色指示修改其数据类型。int为浅绿色, short 为黄色,complex为蓝色,float 为橙色,紫红色为调制后数据char型) 。 4、 单击标签上的\在合适的模块间进行连线。
5、 如图dpsk_loopback设置每个模块属性(注意属性value 值设置为带有m 的,为小数,
比如5m 就是0.005,200m 就是0.2) 。 其中不能直接设置的属性如下列出:
a) 在Signal Source 模块中的Sample Rate 属性设置为samp_rate, Frequency 属
性设置为freq。
b) 在Throttle 模块中的 Sample Rate 属性设置为samp_rate
c) 在WX GUI Scope Sink 模块中的Sample Rate 属性设置为samp_rate,T Scale 属
性设置为1/freq。
d) 在Audio Sink模块中的Sample Rate属性设置为samp _rate ,Device Name属性
设置为plughw:0,0 。
6、 按键F5 来编译程序,或者单击图标。如果有错误双击检查所有连接模块的属性、数据
类型。
7、 按键F6来执行程序,或者单击图标。记录执行结果界面。
8、 使用 Frequency 滑条来调整你的系统中的输入信源频率的大小。从而改变向外输出的声
音。
图3 最终模块图