GNU Radio入門之旅


2019-01-17

今天拿到了通用軟件無線電外設USRP N210,便開始着手在自己實驗室電腦Ubuntu 18.04上安裝軟件無線電軟件GNU Radio,以開發無線設備。

GNU Radio是什么?

GNU Radio 是一個通過最小程度地結合硬件(主要是 USRP),用軟件來定義無線電波發射和接收的方式,搭建無線電通信系統的開源軟件系統 。

GNU Radio 應用程序用 Python 語言來編寫,真實的信息處理過程是由 C++浮點擴展庫來實現的。因此開發者可以獲得實時高效的可復用的應用開發環境。雖然 GNU Radio 並不是主要用於仿真,但也可以不用真實硬件,而使用預先記錄或生成的數據來開發信號處理算法。

GNU Radio 提供一個信號處理模塊(blocks)的庫,並且通過建立一個流向圖(flow graph)把單個的處理模塊連接在一起形成一個無線電系統。

Python 用來構造流圖,應用程序的圖形化接口。C++用於編寫各種block。

信號處理塊的屬性包括輸入和輸出的端口數,流過它們的數據的類型。經常使用的數據流的類型是短整型(short),浮點型(float),和復數 (complex)類型。

一些處理模塊僅僅有輸出端口或者輸入端口,它們分別成為信號源(data source)和信號接收器(sink)。

GNU Radio 包含豐富的block,包括各種濾波器、FFT 變換、調制/解調模塊、信道編譯碼模塊、時頻同步模塊等等,其中一些利用了 CPU 的增強指令集(如:MMX、SSE、3D Now!)進行了優化,以提高性能。

USRP是什么?

USRP(Universal Software Radio Peripheral,通用軟件無線電外設)是 Matt Ettus 的傑作,旨在使普通計算機能像高帶寬的軟件無線電設備一樣工作。從本質上講,它充當了一個無線電通訊系統的數字基帶和中頻部分。

USRP 背后的基本設計理念是在主機 CPU 上完成所有波形相關方面的處理,比如調制和解調 。所有諸如數字上下變頻、抽樣和內插等高速通用操作都在FPGA 上完成。USRP 把你的 PC 連接到 RF 世界。

USRP 本身不含有 ROM,僅僅有一個存儲 VendorID 和 productID 和版本號信息的 EEPROM。

FPGA 是一個通用硬件,它的行為完全由配置的 bitstream 來決定,你可以把bitstream 看作是一個目標碼。這個 bitsteam 是由一個高級硬件描述語言編譯得到的,在 USRP 里面這是由 verilog 硬件描述語言來實現的。

FPGA所做的基本是執行高帶寬下的數學運算,並減少數據傳輸速率。

USRP2 針對 DSP 應用優化了的大型現場可編程門陣列( FPGA )可以在高采樣率下處理復雜波形。千兆以太網接口,使應用程序可以使用 USRP2 同時發送或接受 50 MHz 的射頻帶寬。在 USRP2 中,FPGA 出現了諸如數字上變頻器和下變頻器等高采樣率處理器。較低采樣率的操作可在主機電腦上,甚至可以在具有 32 位 RISC 微處理器和有很大用戶設計自由空間的 FPGA 上做。更大的 FPGA 使得 USRP2 可以在沒有電腦主機的情況下作為一個獨立的系統運行。 USRP2 的配置和固件被存儲在一個 SD 閃存卡里,無需特別的硬件就可以輕松編程。

USRP2 母板有四個插槽,可以插入 2 個基本接收子板和 2 個基本發送子板,或者 2 個RFX 板子。子板是用來裝載 RF 接收接口或者調諧器和射頻發射機的。有 2 個標注為 TXA 和 TXB 的插槽用於連接 2 個發送子板,相應的,有 2 個標注為RXA 和 RXB 的接收子板插槽 。每個子板插槽 可以訪問 4 個高速 AD/DA 轉換器其中的 2 個( DAC 輸出用於發送, ADC 輸入用於接收) 。

安裝 GNU Radio

Method 1:

本人ubuntu系統是18.04,采用命令行輸入

sudo apt-get gnuradio

Method 2:

對於ubuntu系統介於11.xx -- 16.xx (如16.04)的小伙伴(in fact it does not work)

sudo wget http://www.sbrac.org/files/build-gnuradio && chmod a+x ./build-gnuradio && ./build-gnuradio

 

Method3:

# install uhd(USRP Hardware Driver)
sudo
add-apt-repository ppa:ettusresearch/uhd sudo apt-get update sudo apt-get install libuhd-dev libuhd003 uhd-host

refer to thses two passages:Ubuntu16.04 安裝UHD GNU Radio教程

手把手教你搭建USRP在Linux GNU Radio下的開發環境

缺少安裝模塊 setuptools

Could NOT find MPLIB: https://github.com/gnuradio/gnuradio/issues/2105 ----sudo apt-get install libgmp-dev

Error: sh: latex: not found Problems running latex. Check your installation or look for typos in _formulas.tex and check _formulas.log! dvips: DVI file can’t be opened: _formulas.dvi: No such file or directory

https://www.ruby-forum.com/t/gnuradio-3-3-0-build-error-sh-latex-not-found/200552 : apt-get install texlive-latex-recommended

notice: https://blog.csdn.net/sinat_37870152/article/details/78067379

use http://billie66.github.io/TLCL/book/chap24.html to compile this file and download gnuradio

 tar xzf gnuradio-3.7.2.tar.gz
 md gr-build
 cd gr-build
 cmake ../gnuradio-3.7.2

 when configure:

./configure --with-boost-libdir=/usr/lib/x86_64-linux-gnu

Method 4:PyBomb

https://www.jianshu.com/p/6763c46608fd

https://www.gnuradio.org/blog/2016-06-19-pybombs-the-what-the-how-and-the-why/

將映像文件裝入板上閃存中 (僅對 USRP-N 系列)

http://www.cnblogs.com/moon1992/p/5843668.html

安裝完后查看自己GNU Radio版本

gnuradio-config-info -v
dpkg --status gnuradio

查看哪個軟件包安裝了usrp_spectrum_sense.py 這個文件 and where this file is

dpkg --search usrp_spectrum_sense.py

運行一個輸出正弦波聲音的例程

dial_tone

或者運行 圖形化信號處理的開發部件:GNU Radio Companion (GRC)

gnuradio-companion

/usr/share/gnuradio下有大量例程源碼,/usr/bin 也有大量可運行例程如uhd_fft

參考文獻

GNU Radio 入門(Version 0.99)——黃琳 等 https://xmsg.org/wordpress/wp-content/uploads/2015/11/GNU-Radio%E4%B8%AD%E6%96%87%E5%85%A5%E9%97%A8%E6%95%99%E7%A8%8B.pdf

GNURadio 中文社區—— http://gnuradio.microembedded.com/

軟件無線電中文網 —— https://www.ettuschina.com

GNU Radio安裝教程: https://www.cnblogs.com/moon1992/p/5781166.html#_label1

GNU Radio 安裝 —— http://gnuradio.microembedded.com/installinggr

如何着手 GNU Radio? —— http://gnuradio.microembedded.com/howtouse

GNU Radio建議讀物 —— http://gnuradio.microembedded.com/suggestedreading

GNU Radio Companion (GRC) —— http://gnuradio.microembedded.com/gnuradiocompanion

GNURadio mannal_zh: https://gnuradio-manual-zh.readthedocs.io/zh/latest/chapter1/index.html

GVU Radio原版主頁 —— https://wiki.gnuradio.org/index.php/What_is_GNU_Radio%3F

GNU Radio 英文論壇 —— https://www.ruby-forum.com/c/gnu-radio

GNU Radio API —— https://www.gnuradio.org/doc/doxygen/hierarchy.html, https://www.gnuradio.org/doc/sphinx/index.html

通用軟件無線電平台 USRP N210 —— http://ettus.com.cn/product/N210kit.htmlhttps://www.ettus.com/content/files/Ettus_N200-210_DS_Flyer_HR_2.pdf

USRP技術文檔整理

USRP2 手冊 —— http://files.ettus.com/manual/page_usrp2.html

Setup USRP N210 https://sites.google.com/site/byungchulweb/setup-usrp2

usrp N210 牛刀小試: http://blog.chinaunix.net/uid-8048969-id-3298307.html

GNU Radio: USRP2 and N2x0 Series  Setup Networking 配置網絡: http://www.cnblogs.com/moon1992/p/5843668.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM