版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
實驗一GNURadio流程圖編程
實驗?zāi)康模?/p>
學(xué)習GNURadio流程圖編程。了解GRC,找到自己需要的模塊,修改模塊
的參數(shù),設(shè)計第一個信號流程圖,進行GenerateOptions設(shè)置,查看輸出。
實驗原理:
GRC是基于模塊的仿真實驗工具。類似于MATLAB中的SIMULINK工具。
基本使用方法就是先將需要用的模塊放到窗口。再設(shè)置各個模塊的參數(shù),然后
連接各個模塊,繪制信號流程圖,之后生成流程圖,仿真運行。
實驗步驟:
登陸:/
1.開始了解GRC
GNURadio是一個各種信號處理模塊的“容器”。在這里,我們將從一個簡
單的例子講起,展示如何使用GNURadioCompanion(GRC)。我們需要清楚的是,
GRC是允許我們創(chuàng)建Python文件圖形的,不過流程圖的方式更加簡化了GNU
Radio的使用。
首先我們來看一下GNURadioCompanion的界面。它包括4個區(qū)域:模塊
庫、工具欄、函數(shù)輸出窗口和工作區(qū)域。
打開GRC的方式,
1>在VNC終端輸入命令:gnuradio-companion
2>VNC桌面下:Applications-〉開發(fā)->GUNRadioCompanion
2.找到自己需要的模塊
在右邊的模塊庫里面有各種不同類型的信號處理模塊,包括了GNURadio
的標準模塊和我們初始化的模塊。假設(shè)需要一個產(chǎn)生信號的模塊,可以看到有
一個叫做WaveformGenerator的類型,打開就可以看到各種產(chǎn)生信號的模塊了。
假設(shè)需要一個展示波形圖,但是又不確定哪種模塊是效果最好的,需要使用搜
索的功能了,按Ctrl+F,或者點擊搜索按鈕,然后輸入模塊的關(guān)鍵字sink,可
以看到很多關(guān)于sink的模塊:
|Qsink|X
r~~[Tvwrifj
BusSink
BusSinkStructure
▼[PacketOperators]
FramerSink1
PacketSink
▼[OFDM]
OFDMFrameSink
▼[Sinks]
osmocomSink
r[Instrumentation]
卜[QT]]
QTGUIConstellationSink
QTGUIFrequencySink
QTGUIHistogramSink
QTGUINumberSink
QTGUISink
QTGUITimeRasterSink
QTGUITimeSink
現(xiàn)在添加一個叫QTGUITimeSink的模塊。可以通過雙擊或拖動的方式。
3.修改模塊的參數(shù)
工作區(qū)域里面包含各種信號處理模塊和變量。雙擊打開模塊,設(shè)置它的參
數(shù)屬性。如下圖:
Properties:Options
IGeneralDocumentation|_____
|top_bloc|
-an
Author
IWindowSize1280r1024
IGenerateOptionsWXGUIKey:window_size
Type:int_vector
RunAutostartValue:(1280,1024)
MaxNumberofOutput0
RealtimeSchedulingOff:
在不同的應(yīng)用系統(tǒng)中,可能需要修改這些默認的參數(shù)。把原來的名字去掉,
可以看到ID字樣變成藍色。這種顏色表明信息已經(jīng)被修改,但是還沒有保存。
再嘗試一下修改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文件名字和相關(guān)類的名字。
然后,刪除掉ID里面的字符串,看到最底下出現(xiàn)了紅色的報錯信息,同時,
ID也變成了紅色,這樣我們能夠很方便的確定錯誤的所在。
為了方便,例如取ID的名字為"tutorial_two_l”,同時將GenerateOptions改
成"QTGUI”,因為采用的是QTGUIsink,而不是WXGUIsink。在最新版的
GNURadio3.8版本,默認的是QTGUI。GRC是一個圖形化的界面,它是基于
python環(huán)境的,所以當我們執(zhí)行一個流程圖時,實際上我們真的運行的是一個
python程序。ID是用來命名python文件名,與GRC文件保存在同樣的路徑下。
默認情況下,ID是top_block,所以它創(chuàng)建一個為top_block.py的文件。更改ID使
我們可以更改保存的python文件名,以更好進行文件管理。
注意的另一個關(guān)鍵是接口不同的顏色。這些實際上對應(yīng)于不同的數(shù)據(jù)類型,
我們將在本講義后面稍后解釋。
4.第一個信號流程圖
現(xiàn)在我們了解如何找到塊,如何將它們添加到工作區(qū),以及如何編輯塊屬
性,我們嘗試建立一個將信號輸出到示波器的流程圖,注意模塊之間的數(shù)據(jù)類
型的匹配:
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的模塊:在本教程后面有更詳細的解釋這是什
么。現(xiàn)在,可以了解的是這個模塊確保流程圖不消耗100%的CPU周期,不然
你的電腦可能反應(yīng)不過來。
在此之前,我們先來看一下工具欄。
這里主要是一些流程圖軟件執(zhí)行的一些命令,如新建,打開,保存等。讓
我們開始我們的流程圖,我們給它取名叫做tutoriaLtwo。這里有幾個重要的工
具,Generateflowgraph,excuteflowgraph,分別是產(chǎn)生GRC,和運行GRCo在
菜單help里面的type,我們可以看到每種數(shù)據(jù)類型對應(yīng)的顏色。
5.GenerateOptions設(shè)置
GenerateOptions有兩種常用的設(shè)置QTGUI和WXGUL最常見的錯誤就
是設(shè)置的GenerateOptions與實際我們用的不匹配。具體來講,就是我們
GenerateOptions設(shè)置的是QTGUL但是我們構(gòu)造的流程圖卻是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這是一個復(fù)數(shù)類型的波形。我們簡單化一些,選用別的數(shù)據(jù)類型。關(guān)掉程
序,我們打開菜單Help->Type,可以看到如下的數(shù)據(jù)類型的代表顏色:
Types
ColorMapping
&
TntPger8
AsyncMessage
BusConnection
Wildcard
Close
,我們看到我們的流程圖的
們基本上可以找到所有的數(shù)據(jù)類型
在這里,我現(xiàn)在我們可以解釋剛才
位浮點型組成復(fù)數(shù)形式'
接口是藍色的,很明顯這是32
輸出有兩個波形的情況了,TimeSink輸入一個復(fù)數(shù),然后輸出它的實部和虛部。
現(xiàn)在,我們嘗試修改以下信號源的數(shù)據(jù)類型,將其改為浮點型,然后我們看到
它的接口編程橘黃色的,當我們把它和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
報錯信息顯示,數(shù)據(jù)長度不匹配。這是由于我們的數(shù)據(jù)類型不匹配的原因。
GNURadio不允許不同的數(shù)據(jù)類型之間直接連接。我們把所有的模塊都改成浮
點型的,然后再次運行,可以看到如下的波形:
3
P
z
t
現(xiàn)在我們可以看到,只有一個波形輸出了,我們可以嘗試用鼠標放大或者
縮小。
7.使用GNURadioCompanion
現(xiàn)在我們已經(jīng)能夠創(chuàng)建自己的流圖了,我們進一步的來學(xué)習一些GNU
RadioCompanion有關(guān)知識。
7.1ThrottleBlock
首先,我們來討論下ThrottleBlock,之前在我們的流圖有用到過。下圖是
添加Throttle模塊和不添加Throttle模塊的CPU的使用率對比:
CPUHistory
我們可以看到,當流圖沒有連接硬件也沒有連接Throttle的時候,CPU基
本是滿負載運行的。在一個流圖中我們只需要一個Throttle就可以了,不管它是
有幾個輸入輸出。我們可以認為Throttle起到限速的作用,設(shè)置高的速率,流圖
執(zhí)行快,設(shè)置低的速率流圖執(zhí)行慢。
當有硬件連接的時候,則不需要Throttle模塊,因為硬件本身已經(jīng)對速率有
了限制。
7.2關(guān)于采樣率
我們已經(jīng)知道設(shè)備需要設(shè)定特定的采樣率來實現(xiàn)某些特定的功能,現(xiàn)在我
們來自己創(chuàng)建一個GRC,來看看不同的采樣率之間有什么區(qū)別:
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
根據(jù)上圖配置好參數(shù):
?QTGUIChooser模塊設(shè)置3個采樣速率48000/24000/72000,ID改為
samp_rate
,所有的source模塊的SamplingRate改為samp_rate
?Variable模塊設(shè)置音頻模塊采樣率為48000,ID改為audio_rate
,所有的sink模塊的SamplingRate改為audio_rate
?信號源是兩個頻率分別為440Hz和350Hz的正弦信號,幅度為0.1
?所有sink模塊的Numberofinputs設(shè)置為2
在這里,我們可以看到?jīng)]有Throttle模塊,這是因為這里有音頻硬件Audio
sink。點擊運行,設(shè)置samplerate為48e3,就會聽到熟悉的電話的撥號音(在
線實驗平臺不支持聲卡),再看一下fft,確實有兩個分別為440Hz和350Hz的
頻段。
TutorialTwo6
SignalSamplingRate:48000
m
p
r
O
M
O
d
Frequency(kHz)
嘗試下,當改變samplingrate比audiosampling低的時候,看能否還能聽到
原撥號音。再嘗試下,當改變samplingrate比audiosampling高的時候,看能否
還能聽到原撥號音。一般情況下,都應(yīng)該聽到變調(diào)的撥號音,這是因為聲卡的
速率和我們采樣的速率不匹配。所以,任何時候,都應(yīng)該設(shè)置正確的采樣率。
因為我們的在線實驗平臺采用遠程桌面,沒有聲卡支持,感興趣的同學(xué)可以在
本機安裝Gnuradio軟件進行驗證。
8.瀑布圖
現(xiàn)在來看由QTGUIWaterfallSink模塊組成的正弦信號瀑布圖,并了解瀑
布圖的含義。
CRC應(yīng)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
尸F(xiàn)requency: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
請參考上圖設(shè)置好參數(shù),點擊運行,可以看到:
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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度醫(yī)療設(shè)備二零二五年度ISO9001質(zhì)量管理體系認證與維護合同2篇
- 證券投資環(huán)保課程設(shè)計
- 2025不銹鋼材質(zhì)戶外廣告牌制作與安裝合同范文3篇
- 香水課程設(shè)計教案
- 財務(wù)咨詢公司實習報告
- 二零二五年度出差期間意外事故免責及援助合同3篇
- 網(wǎng)絡(luò)課程設(shè)計開發(fā)實施
- 2025年度古建筑鋁合金門窗修復(fù)與保護合同3篇
- 超馳控制系統(tǒng)課程設(shè)計
- 泵站主閥板課程設(shè)計
- 磁致伸縮液位傳感器KYDM-路線設(shè)置使用
- (完整版)建筑業(yè)10項新技術(shù)(2017年最新版)
- 收割機轉(zhuǎn)讓協(xié)議
- 中學(xué)歷史教育中的德育狀況調(diào)查問卷
- 煤礦煤業(yè)掘進工作面班組安全確認工作記錄表 模板
- 建筑工程質(zhì)量管理體系文件
- 乙丙橡膠電力電纜絕緣一步法硅烷交聯(lián)工藝
- 中止施工安全監(jiān)督申請書(范例)
- 世界各國標準鋼號對照表
- 大樹移植方案
- 除塵器安裝技術(shù)交底記錄
評論
0/150
提交評論