日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

PLUTO SDR入门系列之九:强大的开源软件“gnu radio”

發布時間:2023/12/14 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PLUTO SDR入门系列之九:强大的开源软件“gnu radio” 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

由于上文介紹的軟件包“PothosSDR”已經包含了這款軟件(需要python2.7支持),因此不建議單獨安裝。

該軟件包通過SoapySDR接口實現了對IIO接口的封裝,最新版已經內置了gnu radio 3.7。

GNU Radio是一個完全開源的軟件無線電結構平臺,它可以用來設計和仿真,也可以用來連接真實的無線電系統。GNU Radio是一個高度模塊化,采用流圖類形式的軟件架構平臺,它本身提供了許多模塊庫,使用者可以很快速的使用這些模塊來建立關于信號處理的流程。

????首先設備接收到的是模擬信號,電腦不能識別和處理,我們必須轉化成數字信號。經過ADC轉化成數字信號后,我們的電腦就能識別,可以對數據進行處理,比如數字濾波,調制解調,信號識別等。

模塊化流程化的數字信號處理

  為了對數字信號進行處理,我們必須首先考慮信號處理的步驟(濾波、調制解調、分析、檢測),然后我們調用相關的模塊,用流程圖的方式連接起來就組成了一個無線通信系統。最簡單的一個實例如下:

?

  當一個應用被創建時,一個完整的模塊化的流程圖就建立起來了。這個在GNU Radio就叫流程圖。下面是一個多個模塊組成的流程圖:

?

GNU Radio是一個利用這些信號處理模塊創建流程圖的軟件架構平臺,這些組成了GNU Radio各種應用。

  作為一個GNU Radio的使用者,你可以使用這些GNU Radio提供的信號處理模塊,也可以把它們嵌入到你自己的更加復雜的信號處理流程圖中,而不用關心這些數據如何在這些模塊之間流動,一旦你的程序連接好,它們會自動進行。

GNU Radio包括了大量的常用模塊,這里列出了一些僅供參考:

信號產生模塊:

Constant Source

Noise Source

Signal Source

...

調制解調模塊:

AM Demod

Continuous Phase Modulation

PSK Mod / Demod

...

儀器模塊:

Constellation Sink

Frequency Sink

Time Sink

...

信道模塊:

Channel Model

Fading Model

Dynamic Channel Model

...

濾波器模塊:

Band Pass / Reject Filter

Low / High Pass Filter

IIR Filter

...

信號分析模塊

FFT

Log Power FFT

Goertzel {{collapse(Resamplers)

...

  使用這些模塊,許多標準的任務,如同步,測量和可視化,可以通過只連接適當的模塊到您的信號處理流程圖就可以實現。此外,你可以自己寫信號處理模塊,把現有的塊與一些提供新的智能功能,連同一些邏輯實現。或您可以開發自己的模塊,對輸入數據和輸出數據進行控制。因此,GNU Radio是一個信號處理塊和開發者互動的發展框架。它有一個廣泛的標準庫的塊,并且有很多系統可供開發人員參考。

下文提供了一些基本的入門知識-GNU RADIO入門培訓.pdf。

https://download.csdn.net/download/zhangxq0521/12252860

下面以一個實例講解如何使用gnu-radio驅動PlutoSDR進行無線通信。需要注意的是,PlutoSDR支持的采樣率與其他設備不同,包括以下采樣率:

1, 2, 3, 4, 6, 7, 8, 9, 10 MSps

https://download.csdn.net/download/zhangxq0521/12252867

更多的實例,請打開下面的zip文件。

https://download.csdn.net/download/zhangxq0521/12252906

1. 安裝python2.7,并確認以下注冊表項已經建立。

2.打開PothosSDR附帶的“GNURadio Companion”。

?

3. 點擊該圖標后,會跳出一個提示窗口,請點擊“是(Y)”并耐心等待。在此期間,程序會安裝python2.7版本的本程序依賴的Python模塊,如GTK/QT/Wxwidget等。

?

4. 安裝完成后,進入主界面并導入實例文件“cyclic-sine_verified.grc”。然后“Generate->“Execute”,就會跳出PyQT繪制的窗口。

這個例子使用了兩個PlutoSDR的硬件模塊:”FMComms2/3/4 Source”和“FMComms2/3/4 Sink”。前者用于信號接收(從Rx端口或者內部的發射端直接耦合),而后者則用于信號發射(從Tx端口輸出或者直接被耦合到Rx端口)。顯然,本例中由于同時使用兩個模塊,實際上Tx端口和Rx端口在內部耦合在了一起。因此可以認為完整的信號鏈應該是:Signal_Source->FMComm_Sink->FMComm_Source->QT_GUI_Sink

這個例子中大部分的參數都很好理解(具體含義請到這個網址瀏覽:

https://wiki.analog.com/resources/tools-software/linux-software/gnuradio),除了以下幾個:

1. 變量“uri”,也就是PlutoSDR的“Context URI”。按照官方介紹,可以填寫為”ip:192.168.2.1”或者”usb:XX:YY:ZZ”。其中USB方式的ID可以執行上文提到的”iio_info -s”命令獲得。

??需要注意的是,由于每次重新插拔后,USB設備標識會發生變化,必須手動在程序中更新。否則,就會出現如下所示的錯誤。

2.采樣率只支持以下幾個數值

1, 2, 3, 4, 6, 7, 8, 9, 10 MSps

3. 收發器模塊FMCOMM支持3個差分輸入(下圖中標記為”A/B/C balanced”)或者6個單端輸入(A/B/C_N/P)。

但是,由于PlutoSDR的物理層目前工作與”AD9364”模式,因此只能支持單發單收。對于差分接收機來說,就只有“A_BALANCED”;相對而言,差分發射機只有“A”一個端口。詳細信息請閱讀下面的命令行輸出。

?

D:\PothosSDR\bin>SoapySDRUtil --probe="driver=plutosdr,hostname=192.168.2.1"

######################################################

## ????Soapy SDR -- the SDR abstraction library ????##

######################################################

?

Probe device driver=plutosdr,hostname=192.168.2.1

?

----------------------------------------------------

-- Device identification

----------------------------------------------------

??driver=PlutoSDR

??hardware=ADALM-PLUTO

??ad9361-phy,model=ad9364

??ad9361-phy,xo_correction=40000000

??backend_version=0.18 (git tag: v0.18 ?)

??fw_version=v0.31

??hw_model=Analog Devices PlutoSDR Rev.B (Z7010-AD9364)

??hw_model_variant=0

??hw_serial=104473541196000dfbff03007c5d1faede

??library_version=0.18 (git tag: 4e22517)

??local,kernel=4.14.0-42540-g387d584

??usb,idProduct=b673

??usb,idVendor=0456

??usb,product=PlutoSDR (ADALM-PLUTO)

??usb,release=2.0

??usb,serial=104473541196000dfbff03007c5d1faede

??usb,vendor=Analog Devices Inc.

?

----------------------------------------------------

-- Peripheral summary

----------------------------------------------------

??Channels: 1 Rx, 1 Tx

??Timestamps: NO

??Sensors: xadc_temp0, xadc_voltage0, xadc_voltage1, xadc_voltage2, xadc_voltage3, xadc_voltage4, xadc_voltage5, xadc_voltage6, xadc_voltage7, xadc_voltage8, adm1177_current0, adm1177_voltage0, ad9361-phy_temp0, ad9361-phy_voltage2

?????* xadc_temp0: 36.173987 C

?????* xadc_voltage0 (vccint): 1.014404 V

?????* xadc_voltage1 (vccaux): 1.807617 V

?????* xadc_voltage2 (vccbram): 1.012207 V

?????* xadc_voltage3 (vccpint): 1.009277 V

?????* xadc_voltage4 (vccpaux): 1.806885 V

?????* xadc_voltage5 (vccoddr): 1.351318 V

?????* xadc_voltage6 (vrefp): 1.246582 V

?????* xadc_voltage7 (vrefn): -0.002930 V

?????* xadc_voltage8: 0.907227 V

?????* adm1177_current0: 0.406565 A

?????* adm1177_voltage0: 4.998523 V

?????* ad9361-phy_temp0: 19.298000 C

?????* ad9361-phy_voltage2: 0.452686 V

?

----------------------------------------------------

-- RX Channel 0

----------------------------------------------------

??Full-duplex: YES

??Supports AGC: YES

??Stream formats: CS8, CS12, CS16, CF32

??Native format: CS16 [full-scale=2048]

??Antennas: A_BALANCED

??Corrections: DC removal

??Full gain range: [0, 73] dB

????PGA gain range: [0, 73] dB

??Full freq range: [70, 6000] MHz

????RF freq range: [70, 6000] MHz

??Sample rates: 0.065105, 1, 2, 3, 4, 6, 7, 8, 9, 10 MSps

??Filter bandwidths: 0.2, 1, 2, 3, 4, 6, 7, 8, 9, 10 MHz

?

----------------------------------------------------

-- TX Channel 0

----------------------------------------------------

??Full-duplex: YES

??Supports AGC: NO

??Stream formats: CS8, CS12, CS16, CF32

??Native format: CS16 [full-scale=32768]

??Antennas: A

??Corrections: DC removal

??Full gain range: [0, 89] dB

????PGA gain range: [0, 89] dB

??Full freq range: [70, 6000] MHz

????RF freq range: [70, 6000] MHz

??Sample rates: 0.065105, 1, 2, 3, 4, 6, 7, 8, 9, 10 MSps

??Filter bandwidths: 0.2, 1, 2, 3, 4, 6, 7, 8, 9, 10 MHz

除了這兩個控件之外,ADI還提供了其他兩個更加簡潔的模塊。

具體如何使用,本文不再贅述,請參考以下三個經過驗證的腳本(FM發送及接收)自行學習。

https://download.csdn.net/download/zhangxq0521/12252924

另外,如果想要進階學習Python腳本方式的開發,請參考下文。

https://download.csdn.net/download/pspice/9575587

總結

以上是生活随笔為你收集整理的PLUTO SDR入门系列之九:强大的开源软件“gnu radio”的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。