版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验一GNURadio流程图编程
实验目的:
学习GNURadio流程图编程。了解GRC,找到自己需要的模块,修改模块
的参数,设计第一个信号流程图,进行GenerateOptions设置,查看输出。
实验原理:
GRC是基于模块的仿真实验工具。类似于MATLAB中的SIMULINK工具。
基本使用方法就是先将需要用的模块放到窗口。再设置各个模块的参数,然后
连接各个模块,绘制信号流程图,之后生成流程图,仿真运行。
实验步骤:
登陆:/
1.开始了解GRC
GNURadio是一个各种信号处理模块的“容器”。在这里,我们将从一个简
单的例子讲起,展示如何使用GNURadioCompanion(GRC)。我们需要清楚的是,
GRC是允许我们创建Python文件图形的,不过流程图的方式更加简化了GNU
Radio的使用。
首先我们来看一下GNURadioCompanion的界面。它包括4个区域:模块
库、工具栏、函数输出窗口和工作区域。
打开GRC的方式,
1>在VNC终端输入命令:gnuradio-companion
2>VNC桌面下:Applications-〉开发->GUNRadioCompanion
2.找到自己需要的模块
在右边的模块库里面有各种不同类型的信号处理模块,包括了GNURadio
的标准模块和我们初始化的模块。假设需要一个产生信号的模块,可以看到有
一个叫做WaveformGenerator的类型,打开就可以看到各种产生信号的模块了。
假设需要一个展示波形图,但是又不确定哪种模块是效果最好的,需要使用搜
索的功能了,按Ctrl+F,或者点击搜索按钮,然后输入模块的关键字sink,可
以看到很多关于sink的模块:
|Qsink|X
r~~[Tvwrifj
BusSink
BusSinkStructure
▼[PacketOperators]
FramerSink1
PacketSink
▼[OFDM]
OFDMFrameSink
▼[Sinks]
osmocomSink
r[Instrumentation]
卜[QT]]
QTGUIConstellationSink
QTGUIFrequencySink
QTGUIHistogramSink
QTGUINumberSink
QTGUISink
QTGUITimeRasterSink
QTGUITimeSink
现在添加一个叫QTGUITimeSink的模块。可以通过双击或拖动的方式。
3.修改模块的参数
工作区域里面包含各种信号处理模块和变量。双击打开模块,设置它的参
数属性。如下图:
Properties:Options
IGeneralDocumentation|_____
|top_bloc|
-an
Author
IWindowSize1280r1024
IGenerateOptionsWXGUIKey:window_size
Type:int_vector
RunAutostartValue:(1280,1024)
MaxNumberofOutput0
RealtimeSchedulingOff:
在不同的应用系统中,可能需要修改这些默认的参数。把原来的名字去掉,
可以看到ID字样变成蓝色。这种颜色表明信息已经被修改,但是还没有保存。
再尝试一下修改windowssize为300,300,单击OK。然后可以看到尺寸的改变。
然后,看至Udocumentation:
Properties:Options
GeneralDocumentation
Theoptionsblocksetsspecialparametersfortheflowgraph.Onlyone
optionblockisallowedperflowgraph.
Title,author,anddescriptionparametersareforidentificationpurposes.
Thewindowsizecontrolsthedimensionsoftheflowgrapheditor.The
windowsize(width,height)mustbebetween(300,300)and(4096,4096).
Thegenerateoptionscontrolsthetypeofcodegenerated.Non-graphical
flowgraphsshouldavoidusinggraphicalsinksorgraphicalvariable
controls.
Inagraphicalapplication,runcanbecontrolledbyavariabletostartand
stoptheflowgraphatruntime.
Theidofthisblockdeterminesthenameofthegeneratedfileandthe
nameoftheclass.Forexample,anidofmy_blockwillgeneratethefile
my_block.pyandclassmy_block(gr....
Thecategoryparameterdeterminestheplacementoftheblockinthe
blockselectionwindow.Thecategoryonlyapplieswhencreatinghier
blocks.Toputhierblocksintotherootcategory,enter/forthecategory.
TheMaxNumberofOutputisthemaximumnumberofoutputitems
allowedforanyblockintheflowgraph;todisablethissetthemaxnouts
CancelOK
看用颜色标记的字段,知道ID用来确定python文件名字和相关类的名字。
然后,删除掉ID里面的字符串,看到最底下出现了红色的报错信息,同时,
ID也变成了红色,这样我们能够很方便的确定错误的所在。
为了方便,例如取ID的名字为"tutorial_two_l”,同时将GenerateOptions改
成"QTGUI”,因为采用的是QTGUIsink,而不是WXGUIsink。在最新版的
GNURadio3.8版本,默认的是QTGUI。GRC是一个图形化的界面,它是基于
python环境的,所以当我们执行一个流程图时,实际上我们真的运行的是一个
python程序。ID是用来命名python文件名,与GRC文件保存在同样的路径下。
默认情况下,ID是top_block,所以它创建一个为top_block.py的文件。更改ID使
我们可以更改保存的python文件名,以更好进行文件管理。
注意的另一个关键是接口不同的颜色。这些实际上对应于不同的数据类型,
我们将在本讲义后面稍后解释。
4.第一个信号流程图
现在我们了解如何找到块,如何将它们添加到工作区,以及如何编辑块属
性,我们尝试建立一个将信号输出到示波器的流程图,注意模块之间的数据类
型的匹配:
Options
ID:tutorial_two_l
GenerateOptions:QTGUI
SignalSource
VariableQTGUITimeSink
SampleRate:32k
ID:samprateName:QTGUIPlot
Waveform:CosineThrottle
Value:32kNumberofPoints:1.024k
Frequency:IkSampleRate:32k
SampleRate:32k
Amplitude:1
Autoscale:No
Offset:0
注意到有一个叫throttleblock的模块:在本教程后面有更详细的解释这是什
么。现在,可以了解的是这个模块确保流程图不消耗100%的CPU周期,不然
你的电脑可能反应不过来。
在此之前,我们先来看一下工具栏。
这里主要是一些流程图软件执行的一些命令,如新建,打开,保存等。让
我们开始我们的流程图,我们给它取名叫做tutoriaLtwo。这里有几个重要的工
具,Generateflowgraph,excuteflowgraph,分别是产生GRC,和运行GRCo在
菜单help里面的type,我们可以看到每种数据类型对应的颜色。
5.GenerateOptions设置
GenerateOptions有两种常用的设置QTGUI和WXGUL最常见的错误就
是设置的GenerateOptions与实际我们用的不匹配。具体来讲,就是我们
GenerateOptions设置的是QTGUL但是我们构造的流程图却是WXGUI我们
会的到如下的报错信息:
Executing:7home/muniza/Documents/grc_files/gnuradio_tutorials/tutorial2/grc_f:iles/tutoriaHwo_1.pyM
Traceback(mostrecentcalllast):
File7home/muniza/Documents/grc_files/gnuradio_tutorials/tutorial2/grc_files/tutorial_two_1.py",line106,in<module>
tb=tutorial_two_1()
File"/home/muniza/Documents/grc_files/gnuradio」uto「ials/tutorial2/g「c_files/tutoriaLtwo_1.py",line55rin_init_
selF.GetWin(),
File7usr/local/lib/python2.7/dist-packages/gnuradio/gr/top_block.py"rline101,in_getattr_
「eturnqetatWseif.tb,name)
AHributeEiro「:topblocksptr'objecthasnoattribute'GetWin'[
»>Done
反过来的话,也会得到类似的报错信息。所以,我们必须首先确定自己选
用的是QTGUI还是WXGUL
6.查看输出
让我们点—按钮启动程X
Tlate(«»)
I这是一个复数类型的波形。我们简单化一些,选用别的数据类型。关掉程
序,我们打开菜单Help->Type,可以看到如下的数据类型的代表颜色:
Types
ColorMapping
&
TntPger8
AsyncMessage
BusConnection
Wildcard
Close
,我们看到我们的流程图的
们基本上可以找到所有的数据类型
在这里,我现在我们可以解释刚才
位浮点型组成复数形式'
接口是蓝色的,很明显这是32
输出有两个波形的情况了,TimeSink输入一个复数,然后输出它的实部和虚部。
现在,我们尝试修改以下信号源的数据类型,将其改为浮点型,然后我们看到
它的接口编程橘黄色的,当我们把它和ThrottleBlock连接时,看到有红色的报
错,我们点击工具栏的红色的横杆,可以看到具体的报错信息:
Ig*其L©J
.FlowGraphErrors
Options
ID:tutorial_two_l
GenerateOptions:QTGUIError0:
Connection(
Block-analog_sig_source__x_0-SignalSource
VariableSignalSource
(analog_sig_source_x)
ID:samprateSampleRate:32k
Waveform:CosirC"
Value:32kSource-out(O)
Frequency:IkIBlock-blocks_throttle_0-Throttle(blocks_throttle)
Amplitude:1
Offset:0
SourceIOsizeM4"doesnotmatchsinkIOsize"8".
Close
报错信息显示,数据长度不匹配。这是由于我们的数据类型不匹配的原因。
GNURadio不允许不同的数据类型之间直接连接。我们把所有的模块都改成浮
点型的,然后再次运行,可以看到如下的波形:
3
P
z
t
现在我们可以看到,只有一个波形输出了,我们可以尝试用鼠标放大或者
缩小。
7.使用GNURadioCompanion
现在我们已经能够创建自己的流图了,我们进一步的来学习一些GNU
RadioCompanion有关知识。
7.1ThrottleBlock
首先,我们来讨论下ThrottleBlock,之前在我们的流图有用到过。下图是
添加Throttle模块和不添加Throttle模块的CPU的使用率对比:
CPUHistory
我们可以看到,当流图没有连接硬件也没有连接Throttle的时候,CPU基
本是满负载运行的。在一个流图中我们只需要一个Throttle就可以了,不管它是
有几个输入输出。我们可以认为Throttle起到限速的作用,设置高的速率,流图
执行快,设置低的速率流图执行慢。
当有硬件连接的时候,则不需要Throttle模块,因为硬件本身已经对速率有
了限制。
7.2关于采样率
我们已经知道设备需要设定特定的采样率来实现某些特定的功能,现在我
们来自己创建一个GRC,来看看不同的采样率之间有什么区别:
OptionsSignalSource
ID:tutorial_two_6SampleRate:48k
GenerateOptions:QTGUIWaveform:Sine
Frequency:440>4^AudioSink
QTGUIChooserAmplitude:100mSampleRate:48k
ID:samprateOffset:0
Label:SignalSamplingRate
NumOptions:3QTGUITimeSink
DefaultValue:48kName:QTGUIPlot
Option0:48kSignalSourceNumberofPoints:1.024k
Label0:48000SampleRate:48k♦HjnlSampleRate:48k
Option1:24kWaveform:SineAutoscale:No
Label1:24000Frequency:350
Option2:16kAmplitude:100mQTGUIFrequencySink
Label2:16000Offset:0Name:OTGUIPlot
FFTSize:1.024k
CenterFrequency(Hz):0
Bandwidth(Hz):48k
根据上图配置好参数:
・QTGUIChooser模块设置3个采样速率48000/24000/72000,ID改为
samp_rate
,所有的source模块的SamplingRate改为samp_rate
・Variable模块设置音频模块采样率为48000,ID改为audio_rate
,所有的sink模块的SamplingRate改为audio_rate
•信号源是两个频率分别为440Hz和350Hz的正弦信号,幅度为0.1
•所有sink模块的Numberofinputs设置为2
在这里,我们可以看到没有Throttle模块,这是因为这里有音频硬件Audio
sink。点击运行,设置samplerate为48e3,就会听到熟悉的电话的拨号音(在
线实验平台不支持声卡),再看一下fft,确实有两个分别为440Hz和350Hz的
频段。
TutorialTwo6
SignalSamplingRate:48000
m
p
r
O
M
O
d
Frequency(kHz)
尝试下,当改变samplingrate比audiosampling低的时候,看能否还能听到
原拨号音。再尝试下,当改变samplingrate比audiosampling高的时候,看能否
还能听到原拨号音。一般情况下,都应该听到变调的拨号音,这是因为声卡的
速率和我们采样的速率不匹配。所以,任何时候,都应该设置正确的采样率。
因为我们的在线实验平台采用远程桌面,没有声卡支持,感兴趣的同学可以在
本机安装Gnuradio软件进行验证。
8.瀑布图
现在来看由QTGUIWaterfallSink模块组成的正弦信号瀑布图,并了解瀑
布图的含义。
CRC应A0苗0(60%)4»18:020
杳
O-"waterfall.grc-,-GNURadioCompanion
■-0♦.XZWt与A■QC
tcstlXCosineXsampleXwaterfallXQaddX
▼Core
霄OpUoni
▼MathOperators
10:watEMSignalSourxa
G«n«ral«Opttom:OTGUISampleRate:4B>AddConst
Wavetonn:Sne
Frequency:5kAdd
AmpMvde:1▼Coding
Offwt;。
白AdditiveScramble*
SignalSource
SampteMt«:g
Waveform:Sara
尸Frequency:Ik
AmpKude:I
r(
jenerating:'/home/w/usrp_exampleAesti/'*atwfalLpy,
IdValue
•»Warning:Thijhowgraphmaynothaveflowcontrol:noAudioorRFhardwareblocks
bund.AddaMI$c->ThcottleblocktoyourflowgraphtoavoidCPUcongestion.Imports
▼Variables
Executing:/usr/bin/python2-u/home/w/u$rp_exampleAest1/waterFalLpy
5amp_rate48000
Done
请参考上图设置好参数,点击运行,可以看到:
Waterfall威A0*BO(60%)6)1&02
c'Waterfall
■
B
5
«
n
r
F
■
■
>»DoneIdValue
importsO
▼Variables。
samp.rate48000X
将任一信源的波形改成三角波后,可以看到:
Waterfall次A个*6(60%)<»18030
Waterfall
■
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 食品机械代理加盟协议
- 风力发电安全帽管理办法
- 摄影作品收藏管理准则
- 淄博市物业节能技术应用
- 影视娱乐公司股权规则
- 环境资源保护诉讼指南
- 办公室地板砖铺设合同
- 产业转移项目异议处理程序时效
- 高层自建住宅施工合同
- 药品生产厂房建筑施工合同
- 垃圾焚烧发电厂消防系统安装施工方案
- 加油站安全生产例会制度安全生产
- 中心小学综合楼建设项目可行性研究报告
- 《可爱的中国读》书分享会PPT课件(带内容)
- GB/T 6581-2007玻璃在100℃耐盐酸浸蚀性的火焰发射或原子吸收光谱测定方法
- GB/T 34676-2017儿童房装饰用内墙涂料
- GB/T 11446.4-2013电子级水电阻率的测试方法
- 跟腱断裂术后护理-课件
- 腹外疝病人的护理-腹股沟疝病人的护理(课件ppt)
- 创伤评分幻灯片
- 男性不育课件
评论
0/150
提交评论