大連理工大學通信系統仿真實驗EX7_第1頁
大連理工大學通信系統仿真實驗EX7_第2頁
大連理工大學通信系統仿真實驗EX7_第3頁
大連理工大學通信系統仿真實驗EX7_第4頁
大連理工大學通信系統仿真實驗EX7_第5頁
已閱讀5頁,還剩17頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、大連理工大學實驗預習報告學院(系): 信通學院 專業: 電子信息工程 班級: 電子1201班 姓 名: 陳 宇 學號: 201244201 組: _ 實驗時間: 實驗室: 創新園大廈C221 實驗臺: 指導教師簽字: 成績: 實驗七 GNU Radio實驗一、 實驗目的和要求(1)了解python語言程序。(2)了解傅里葉變換,掌握usrp觀測無線信號頻譜圖和時域圖的方法(3)了解如何生成和發送一個信號數據包,了解benchmark之間的通信機制,了解benchmark如何傳輸文件(4)了解GRC的信號處理模塊、流程圖及其使用方法,了解DPSK調制解調原理(5)了解GRC的信號處理模塊、流程圖

2、及其使用方法、了解GMSK調制解調原理二、 實驗原理和內容(1)實驗一是一個GNU Radio “Hello World”的例子。它產生兩個sine波形并且把他們輸出到聲卡,一個輸出到聲卡的左聲道,一個輸出到右聲道。 dial_tone.py 1 #!/usr/bin/env python 2 from gnuradio import gr 3 from gnuradio import audio 4 class my_top_block(gr.top_block): 5 def _init_(self): 6 gr.top_block._init_(self) 7 sample_rate =

3、 32000 8 ampl = 0.1 9 src0 = gr.sig_source_f (sample_rate, gr.GR_SIN_WAVE, 350, ampl) 10 src1 = gr.sig_source_f (sample_rate, gr.GR_SIN_WAVE, 440, ampl) 11 dst = audio.sink (sample_rate, "") 12 self.connect (src0, (dst, 0) 13 self.connect (src1, (dst, 1) 14 if _name_ = '_main_': 15

4、 try: 16 my_top_block().run() 17 except KeyboardInterrupt: 18 pass 第一行告訴我們這是一個Python文件,他利用Python編譯器執行。在第2行和第3行,import命令導入GNU Radio模塊的gr和audio模塊。gr模塊用來運行一個GNU Radio應用。Audio模塊加載一個音頻設備塊,來從聲卡里輸入和輸出音頻和控制音頻設備。第4行開始定義my_top_block類,從gr.top_block (a subclass of gr)中派生。這是一個流程圖的容器。第4行到第13行是類my_top_block定義。第5行定

5、義了類my_top_block的構造函數_init_。該構造函數在第6行通過調用父類構造函數實例化。在第七行設置變量sample_rate,該變量控制信號采樣率。第8行設置幅度ampl變量。dial_tone包括三個模塊(如下圖)和兩個接口。 第9行定義了一個信號源src0,產生一個350Hz、32K采樣率、幅度為0.1的正弦波。第10行定義了一個信號源src1,產生一個440Hz、32K采樣率、幅度為0.1的正弦波。gr.sig_source_f的后綴f表示信號源輸出信號時浮點值。第11行定義了目的dst為audio sink可以用來發送/接收音頻信號到聲卡并且控制聲卡。第12行和第13行連

6、接模塊。第15行和第17行的try和except的意思是如果用戶按下Ctrl+C則停止運行程序。第14行表明如果該代碼是python編譯器執行的唯一模塊則執行my_top_block。 下面的兩個表示方法是一樣的: fg.connect(src1, 0), (dst, 1) fg.connect (src1, (dst, 1) 一旦流向圖被建立了,我們調用start生成一個或者多個線程去運行它,按下任意鍵程序控制權就會返回給調用者。(2)本實驗應用到GNURadio_SRCgnuradio-3.2.2gr-utilssrcpython目錄底下的usrp_fft.py。本程序的功能是實時給出空間

7、無線信號的頻譜占用情況。相當于一個頻譜儀。(3)本實驗用到/GNURadio_SRC/gnuradio-3.2.2/gnuradio-examples/python/digital底下的benchmark_tx.py和benchmark_rx.py,前者用來發送,后者用來接收。benchmark_tx.py生成數據包和幀結構如下圖所示,幀的大小可以由用戶設定。PC中運行的GNU Radio軟件生成數據包和幀,通過USB傳輸給USRP。發送端每發送5個包就等待1秒再發送下5個包。下圖是發送端可選項。(4)在本實驗和下一個實驗中,將通過軟件無線電平臺實現這兩種技術的數據傳輸。DPSK調制原理:(5

8、)在CPFSK中,如果頻偏指數h如果取1/2,那么此種CPFSK則成為MSK(最小頻移鍵控),它是一種優良的調制方式,MSK在各種頻移鍵控中占用帶寬最小。但是由于無線通信對信號功率譜特性要求很高,特別是限制帶外輻射低到-60到-80DB,在碼元轉換時刻以±相位突跳的MSK信號仍需進一步優化,GMSK(高斯最小頻移鍵控)是其優化技術的一種。基本技術是在基帶碼流入VCO之前,先以與調制高斯濾波器進行處理使基帶方波的棱角加以圓滑。三、實驗步驟(1)撥號音的產生1打開一個Terminal,輸入cd /GNURadio_SRC/gnuradio-3.2.2/gnuradio-examples/

9、python/audio。進入到dial_tone.py所在路徑。2輸入ls,顯示當前路徑所含文件。3輸入gedit dial_tone.py。打開dial_tone.py文件。4鍵入sudo ./dial_tone.py運行dial_tone.py。通過耳機(或音響)聽PC聲卡所發出的聲音。5、Ctrl+C停止運行dial_tone.py。更改dial_tone.py中ampl的大小以及頻率大小,保存后重新進行第4步操作,感受聲音變化。(2)快速傅里葉變換FFT1連接好USRP2打開一個Terminal,輸入sudo usrp_fft.py h,將會得到幫助菜單。-h表示顯示幫助菜單-w表示

10、選擇USRP,一般默認值-R選擇USRP子板,一般默認值-A選擇天線,一般默認值-d表示decimation rate,默認值16。相當于設置一個抽取濾波器寬度。USRP的ADC以64MSPS的復采樣率采進64MHz帶寬的信號,經過抽取濾波器后,帶寬變為原來的1/decim,數據速率變為原來的1/decim。-f設置采樣信號的中心頻率,在顯示屏上的中間位置。默認2.5GHz,如果使用RFX2400子板,則只能設置2.3G到2.9G之間。-waterfall表示以瀑布圖形式顯示-S表示查看時域圖,也可以用sudo usrp_oscope.py方式得到。-fft-size表示fft點數,默認102

11、4點。3輸入sudo usrp_fft.py,得到頻譜顯示窗口(3)Simplex數據傳輸1、打開一個Terminal,輸入cd/GNURadio_SRC/gnuradio-3.2.2/gnuradio-examples/python/digital。進入到benchmark_tx.py和benchmark_rx.py所在路徑。2、在接收機端,鍵入sudo ./benchmark_rx.py f 2.4G r 200k即建立一個載頻為2.4GHz、傳輸速率為200kbit/s的接收通道3、在發射機端,鍵入sudo ./benchmark_tx.py f 2.4G r 200k,發射機開始發送A

12、SCII碼接收端偵聽發送來得數據包并顯示每個包的接收信息。檢測每個包的錯誤。在顯示的信息中,True或者False表示數據的CRC校驗是否正確。pktno表示數據包編號,n_rcvd表示接收到數據包個數,n_right表示接收到的正確的數據包個數。4、接下來應用benchmark傳送文件,將benchmark_tx.py和benchmark_rx.py修改成如APPIDEX 1和APPIDEX 2中所示代碼。5、先啟動接收端。再先啟動發送端,如圖s3-7所示。在載頻2.4G,傳輸速率為200k的通道上傳輸READ ME文件。數據包大小為10。如果接收端誤包率較大,可以通過以下方式改善:1)減小

13、包大小2)注釋掉發送端的send_pkt(eof=True)3)修改一下每個包發送的間隔(在while中加上time.sleep(*)),4)把發一個包后的sleeptime改小點6、通過-tx-amplitude=NUM命令可以設置發送功率,默認NUM為12000,大概5-6mw,usrp最大發射功率為50mw,即NUM=32700;(4)基于USRP的DPSK系統1DPSK(差分相移鍵控)是為了解決普通PSK相位模糊問題提出來的。基于GRC的DPSK信號產生的流程圖如圖s6-1所示。其中Pecket Encoder模塊的作用是對抽樣數據進行包編碼。通過GNU Radio平臺可以實現DBPS

14、K、DQPSK、D8PSK。其流程圖都是一樣的,只需改變調制模塊中的調制方式參數即可(如圖s6-2)。圖s6-1 DPSK信號調制流程圖2在接收機端調用usrp_fft.py和usrp_oscope.py,觀測DPSK調制產生的射頻信號的時域圖、頻譜圖、以及星座圖等。3DPSK解調及驗證DPSK的GRC解調流程圖如下:該流程圖中以USRP作為信號源,以接收空間中的無線調制信號。設計解調流程圖應該注意的是其參數如samp_rate、Samples/Symbol、Type等都要與調制流程圖中的參數設置對應,并且要符合個參數具體要求。此外最值得注意的是USRP Source的Decimation要設

15、置為調制流程圖中USRP Sink 的Interpolation的一半。否則不能正確解調出信號源數據。DPSK調制流程圖如圖s6-1,解調流程圖如圖s6-3,接下來分別以500Hz的正弦信號、0 0 1的向量以及文件作為信源,通過比較解調數據與信源是否一致來驗證整個調制解調過程的正確性。(5)GMSK1基于GRC的GMSK信號產生的流程圖如圖s7-1所示。由另外一臺USRP設備接收到的GMSK信號時域圖和頻譜圖如圖s7-2和圖s7-3所示。可以看出我們得到了期望中的GMSK調制信號。2GMSK解調及驗證GMSK的GRC解調流程圖如下:該流程圖中同樣以USRP作為信號源,以接收空間中的無線調制信

16、號。設計解調流程圖應該注意的參數設置與DPSK相同。否則不能正確解調出信號源數據。4接下來分別以1KHz的正弦信號以及文件作為信源,通過比較解調數據與信源是否一致來驗證整個調制解調過程的正確性。四、實驗數據記錄表格大連理工大學實驗報告學院(系): 信通學院 專業: 電子信息工程 班級: 電子1201班 姓 名: 陳宇 學號: 201244201 組: _ 實驗時間: 實驗室: 創新園大廈C221 實驗臺: 指導教師簽字: 成績: 實驗七 GNU Radio實驗一、 實驗目的和要求(1)了解python語言程序。(2)了解傅里葉變換,掌握usrp觀測無線信號頻譜圖和時域圖的方法(3) 了解如何生

17、成和發送一個信號數據包,了解benchmark之間的通信機制,了解benchmark如何傳輸文件(4)了解GRC的信號處理模塊、流程圖及其使用方法,了解DPSK調制解調原理(5)了解GRC的信號處理模塊、流程圖及其使用方法、了解GMSK調制解調原理二、 實驗原理和內容(1)實驗一是一個GNU Radio “Hello World”的例子。它產生兩個sine波形并且把他們輸出到聲卡,一個輸出到聲卡的左聲道,一個輸出到右聲道。 dial_tone.py 1 #!/usr/bin/env python 2 from gnuradio import gr 3 from gnuradio import

18、audio 4 class my_top_block(gr.top_block): 5 def _init_(self): 6 gr.top_block._init_(self) 7 sample_rate = 32000 8 ampl = 0.1 9 src0 = gr.sig_source_f (sample_rate, gr.GR_SIN_WAVE, 350, ampl) 10 src1 = gr.sig_source_f (sample_rate, gr.GR_SIN_WAVE, 440, ampl) 11 dst = audio.sink (sample_rate, "&q

19、uot;) 12 self.connect (src0, (dst, 0) 13 self.connect (src1, (dst, 1) 14 if _name_ = '_main_': 15 try: 16 my_top_block().run() 17 except KeyboardInterrupt: 18 pass 第一行告訴我們這是一個Python文件,他利用Python編譯器執行。在第2行和第3行,import命令導入GNU Radio模塊的gr和audio模塊。gr模塊用來運行一個GNU Radio應用。Audio模塊加載一個音頻設備塊,來從聲卡里輸入和輸出音頻

20、和控制音頻設備。第4行開始定義my_top_block類,從gr.top_block (a subclass of gr)中派生。這是一個流程圖的容器。第4行到第13行是類my_top_block定義。第5行定義了類my_top_block的構造函數_init_。該構造函數在第6行通過調用父類構造函數實例化。在第七行設置變量sample_rate,該變量控制信號采樣率。第8行設置幅度ampl變量。dial_tone包括三個模塊(如下圖)和兩個接口。 第9行定義了一個信號源src0,產生一個350Hz、32K采樣率、幅度為0.1的正弦波。第10行定義了一個信號源src1,產生一個440Hz、32

21、K采樣率、幅度為0.1的正弦波。gr.sig_source_f的后綴f表示信號源輸出信號時浮點值。第11行定義了目的dst為audio sink可以用來發送/接收音頻信號到聲卡并且控制聲卡。第12行和第13行連接模塊。第15行和第17行的try和except的意思是如果用戶按下Ctrl+C則停止運行程序。第14行表明如果該代碼是python編譯器執行的唯一模塊則執行my_top_block。 下面的兩個表示方法是一樣的: fg.connect(src1, 0), (dst, 1) fg.connect (src1, (dst, 1) 一旦流向圖被建立了,我們調用start生成一個或者多個線程去

22、運行它,按下任意鍵程序控制權就會返回給調用者。(2)本實驗應用到GNURadio_SRCgnuradio-3.2.2gr-utilssrcpython目錄底下的usrp_fft.py。本程序的功能是實時給出空間無線信號的頻譜占用情況。相當于一個頻譜儀。(3)本實驗用到/GNURadio_SRC/gnuradio-3.2.2/gnuradio-examples/python/digital底下的benchmark_tx.py和benchmark_rx.py,前者用來發送,后者用來接收。benchmark_tx.py生成數據包和幀結構如下圖所示,幀的大小可以由用戶設定。PC中運行的GNU Radi

23、o軟件生成數據包和幀,通過USB傳輸給USRP。發送端每發送5個包就等待1秒再發送下5個包。下圖是發送端可選項。(4)在本實驗和下一個實驗中,將通過軟件無線電平臺實現這兩種技術的數據傳輸。DPSK調制原理:(5)在CPFSK中,如果頻偏指數h如果取1/2,那么此種CPFSK則成為MSK(最小頻移鍵控),它是一種優良的調制方式,MSK在各種頻移鍵控中占用帶寬最小。但是由于無線通信對信號功率譜特性要求很高,特別是限制帶外輻射低到-60到-80DB,在碼元轉換時刻以±相位突跳的MSK信號仍需進一步優化,GMSK(高斯最小頻移鍵控)是其優化技術的一種。基本技術是在基帶碼流入VCO之前,先以與

24、調制高斯濾波器進行處理使基帶方波的棱角加以圓滑。三、主要儀器設備計算機、USRP四、實驗步驟與操作方法(1)撥號音的產生1打開一個Terminal,輸入cd /GNURadio_SRC/gnuradio-3.2.2/gnuradio-examples/python/audio。進入到dial_tone.py所在路徑。2輸入ls,顯示當前路徑所含文件。3輸入gedit dial_tone.py。打開dial_tone.py文件。4鍵入sudo ./dial_tone.py運行dial_tone.py。通過耳機(或音響)聽PC聲卡所發出的聲音。5、Ctrl+C停止運行dial_tone.py。更改

25、dial_tone.py中ampl的大小以及頻率大小,保存后重新進行第4步操作,感受聲音變化。(2)快速傅里葉變換FFT1連接好USRP2打開一個Terminal,輸入sudo usrp_fft.py h,將會得到幫助菜單。-h表示顯示幫助菜單-w表示選擇USRP,一般默認值-R選擇USRP子板,一般默認值-A選擇天線,一般默認值-d表示decimation rate,默認值16。相當于設置一個抽取濾波器寬度。USRP的ADC以64MSPS的復采樣率采進64MHz帶寬的信號,經過抽取濾波器后,帶寬變為原來的1/decim,數據速率變為原來的1/decim。-f設置采樣信號的中心頻率,在顯示屏上

26、的中間位置。默認2.5GHz,如果使用RFX2400子板,則只能設置2.3G到2.9G之間。-waterfall表示以瀑布圖形式顯示-S表示查看時域圖,也可以用sudo usrp_oscope.py方式得到。-fft-size表示fft點數,默認1024點。3輸入sudo usrp_fft.py,得到頻譜顯示窗口(3)Simplex數據傳輸1、打開一個Terminal,輸入cd/GNURadio_SRC/gnuradio-3.2.2/gnuradio-examples/python/digital。進入到benchmark_tx.py和benchmark_rx.py所在路徑。2、在接收機端,鍵

27、入sudo ./benchmark_rx.py f 2.4G r 200k即建立一個載頻為2.4GHz、傳輸速率為200kbit/s的接收通道3、在發射機端,鍵入sudo ./benchmark_tx.py f 2.4G r 200k,發射機開始發送ASCII碼接收端偵聽發送來得數據包并顯示每個包的接收信息。檢測每個包的錯誤。在顯示的信息中,True或者False表示數據的CRC校驗是否正確。pktno表示數據包編號,n_rcvd表示接收到數據包個數,n_right表示接收到的正確的數據包個數。4、接下來應用benchmark傳送文件,將benchmark_tx.py和benchmark_rx

28、.py修改成如APPIDEX 1和APPIDEX 2中所示代碼。5、先啟動接收端。再先啟動發送端,如圖s3-7所示。在載頻2.4G,傳輸速率為200k的通道上傳輸READ ME文件。數據包大小為10。如果接收端誤包率較大,可以通過以下方式改善:1)減小包大小2)注釋掉發送端的send_pkt(eof=True)3)修改一下每個包發送的間隔(在while中加上time.sleep(*)),4)把發一個包后的sleeptime改小點6、通過-tx-amplitude=NUM命令可以設置發送功率,默認NUM為12000,大概5-6mw,usrp最大發射功率為50mw,即NUM=32700;(4)基于

29、USRP的DPSK系統1 DPSK(差分相移鍵控)是為了解決普通PSK相位模糊問題提出來的。基于GRC的DPSK信號產生的流程圖如圖s6-1所示。其中Pecket Encoder模塊的作用是對抽樣數據進行包編碼。通過GNU Radio平臺可以實現DBPSK、DQPSK、D8PSK。其流程圖都是一樣的,只需改變調制模塊中的調制方式參數即可(如圖s6-2)。2在接收機端調用usrp_fft.py和usrp_oscope.py,觀測DPSK調制產生的射頻信號的時域圖、頻譜圖、以及星座圖等。3DPSK解調及驗證DPSK的GRC解調流程圖如下:該流程圖中以USRP作為信號源,以接收空間中的無線調制信號。

30、設計解調流程圖應該注意的是其參數如samp_rate、Samples/Symbol、Type等都要與調制流程圖中的參數設置對應,并且要符合個參數具體要求。此外最值得注意的是USRP Source的Decimation要設置為調制流程圖中USRP Sink 的Interpolation的一半。否則不能正確解調出信號源數據。DPSK調制流程圖如圖s6-1,解調流程圖如圖s6-3,接下來分別以500Hz的正弦信號、0 0 1的向量以及文件作為信源,通過比較解調數據與信源是否一致來驗證整個調制解調過程的正確性。(5)GMSK1基于GRC的GMSK信號產生的流程圖如圖s7-1所示。由另外一臺USRP設備接收到的GMSK信號時域圖和頻譜圖如圖s7-2和圖s7-3所示。可以看出我們得到了期望中的GMSK調制信號。2GMSK解調及驗證GMSK的GRC解調流程圖如下:該流程圖中同樣以USRP作為信號源,以接收空間中的無線調制

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論