武汉理工大学现代数字信号处理在前沿学科中的应用实验认知无线电学院:信息工程学院学号:1049731503279姓名:吴志勇班级:电子154实验一认知无线电的开发环境与基础实验入门一、实验目的1、掌握Linux系统下的基本操作。
2、了解认知无线电实验平台。
3、掌握GNU Radio软件平台的搭建过程。
4、了解USRP N210设备的检测。
二、系统、硬件配备一台配有千兆网卡的PC机,ubuntu11.10系统,GNU Radio3.5.0安装包(也可以选择其他带有UHD的GNU Radio版本)。
三、实验流程GNU Radio的安装主要包括三个部分的安装,准备库的安装、UHD的安装、GNU Radio 的安装,下面将从这三个部分开始介绍。
1、网络连接在ubuntu下进行网络IP设置,打开命令终端,常用的命令:使用ls命令查看当前路径下文件,使用cd命令进入文件夹。
2、准备库的安装:在/redmine/projects/gnuradio/wiki/UbuntuInstall中,有其安装方法,对应找到我们的ubuntu11.10所需要的准备库内容,利用apt-get来安装。
安装完毕之后可以根据build-guide程序中所提到的库进行验证。
3、UHD的安装可以到官网上看见很多uhd的版本,我们采用的版本是003.004.000,可以直接从设备所带的光盘中获得(/tmp/uhd/host):执行:cd /tmp/uhd/hostmkdir buildcd buildcmake ../makemake testsudo make install4、GNU Radio的安装本文以GNU Radio为例,从官网上可以下到gnuradio3.5.0的安装包,我们可以通过安装包中的version.sh文件来查看其版本,选择gnuradio3.5.0来安装。
执行:cd /gnuradiomkdir buildcd buildcmake ../makemake testmake install5、设置环境变量按照README中指示设置环境变量,但是,其中python路径要根据我们的python版本设置,改正之后如下:export PYTHONPATH=/usr/local/lib/python2.7/disk-packagesexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/local/libsudoldconfig四、实验结果执行gnuradio-companion指令,系统输出如下界面,安装成功实验二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与其前一个符号相反。
差分编码原理为:其实现框图如图1所示。
一个典型的差分编码调制过程如2图所示:图1 差分编码实现框图对DBPSK的解调是通过比较接收相邻码元信号(I,Q)在星座图上的夹角,如果大于90则为1,否则为0。
即按下式进行:)2()2()2()2()(+-++-=nQnQnInInD如果)(<nD,则判为1,反之判为0。
)()1()(nbnana⊕-=输入数据载波相位(1)(0)0 1 1 0 0 0 1 1 1π0 ππππ0 π00 π0 0 0 0 π0 π图2差分编码与载波相位示意图本例中需要调用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-companion2、从开启界面右边的库中添加并连接必要的block 如图3所示。
3、匹配每个block 的数据类型,参考图dpsk_loopback。
(注意所有的模块需要根据图dpsk_loopback所示按颜色指示修改其数据类型。
int为浅绿色,short 为黄色,complex 为蓝色,float 为橙色,紫红色为调制后数据char型) 。
4、单击标签上的"in""out"在合适的模块间进行连线。
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_ratec)在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来执行程序,或者单击图标。
将会出现如图4 所示界面。
8、使用Frequency 滑条来调整你的系统中的输入信源频率的大小。
从而改9、变向外输出的声音。
图3 最终模块图五、实验结果按键F6来执行程序,或者单击图标。
将会出现如图4 所示界面图4 dpsk_loopback实验三连续可变斜率增量调制的实现一、实验目的1、熟悉Ubuntu操作系统的使用。
2、熟悉gnuradio_companion的使用。
3、熟悉CVSD数字调制的基本原理,并通过gnuradio实验平台实现CVSD数字调制及解调。
二、实验原理本例是一个GNU Radio的关于三角波信源的连续可变斜率增量调制的例子。
它由一个Triangle 波形源,经过采样流控制得到稳定的采样速率,然后由VCO(压控振荡器) 控制产生一个周期性的频谱并显示频谱和波形。
以此频谱用CVSD 的调制方式显示其频谱和波形,最后CVSD 解调后还原其频谱显示出来波形,并向PC输出声音信号,(此信号由频谱控制,当然也可以说是由三角波信源的采样率控制) 。
CVSD在数字语音通信领域是一种降低带宽的声音编码方法。
它充分利用数字语音相邻采样的相关性,只对连续采样的幅度差进行量化。
由于幅度差的量化电平相较于其它量化方法小得多,从而减少了信号带宽。
CVSD采用二进制量化和自适应算法实现连续步长调整,且其编码器能够在大幅度信号里精确地表示小幅度信号并且不影响其性能,这在一些无自适应功能的编码器里是不能实现的。
CVSD编码器可以有效地实现8/1的压缩率,每一个输入的语音采样和内部的参考值比较,如果大于参考值,则编码器输出1,否则输出0,参考值随着输出比特流的频率实时改变,所以每8个采样值将会产生一个字节的输出。
本例中需调用20个模块,新出现的有:VCO压控振荡器,通过输入的信号的幅度控制输出信号的频率,产生振荡输出。
CVSD Encoder语音数字编码,对输入的信号进行编码后产生short类型比特流的输出。
CVSD Decoder语音数字解码,编码的反过程。
Packed to Unpacked 将比特流转换为short型数据,Char to Float数据类型转换,char型转换成float型。
WX GUI FFT Sink可是查看信号的频谱。
三、实验设备需要安装过Ubuntu 系统和GNU Radio的PC机四、实验步骤1、开启一个终端输入命令sudognuradio-companion2、从开启界面右边的库中添加并连接必要的block 如图cvsd_Figure1 所示。
3、匹配每个block 的数据类型,参考图1 。
(注意所有的模块需要根据图cvsd_Figure1所示按颜色指示修改其数据类型。
int为浅绿色,short为黄色,complex为蓝色,float 为橙色,紫红色为调制后数据char型)4、单击标签上的"in""out"在合适的模块间进行连线。
5、如图cvsd_Figure1 设置每个模块属性(注意属性value 值设置为带有m的,为小数,比如5m 就是0.005,200m 就是0.2) 。
其中不能直接设置的属性如下列出:a)在两个Signal Source 模块中的Sample Rate 属性设置为audio_rateb)在Audio Sink模块中的Sample Rate属性设置为audio_rate, Device Name属性设置为plughw:0,0c)在Throttle 模块中的Sample Rate 属性设置为audio_rated)在CVSD Encoder ,CVSD Decoder 模块中的Resample 属性设置为resample,Frac.Bandwidth属性设置为bw。
e)在VCO模块中的Sample Rate属性设置为audio_rat,Sensitivity属性设置为audio_rate*2*math.pi。
f)在两个Import 模块中的Import 属性设置为import math。
g)在VCO、CVSD Decoder 之后引出来的四个Sink模块中的Sample Rate属性设置为audio_rateh)在Char To Float 之后引出来的两个Sink模块中的Sample Rate属性设置为audio_rate*resample,其中WX GUI Scope Sink 模块的T Scale属性设置为20.0/(audio_rate*resample)。