學(xué)習(xí)開(kāi)源軟件無(wú)線電(GNU?Radio)需要有一定電腦基礎(chǔ)和深入的通信與信號(hào)處理知識(shí),本文列舉了一些有用的資源,包括教程、網(wǎng)頁(yè)鏈接和一些在線教程。本教程的目的是幫助GNU?Radio愛(ài)好者們?yōu)檫@個(gè)令人興奮的工具做一些準(zhǔn)備。?
目錄
1、對(duì)GNU Radio有一個(gè)清楚的認(rèn)識(shí)
2、為GNU Radio編寫程序
3、數(shù)字信號(hào)處理(DSP)
4、通信系統(tǒng)
5、準(zhǔn)備好了嗎?
相信你已經(jīng)發(fā)現(xiàn)gnuradio中的樂(lè)趣,并且已經(jīng)開(kāi)始急切的想要使用它了。?不幸的是,除了無(wú)窮的樂(lè)趣外,這其中也包含許多挑戰(zhàn)。?依據(jù)你使用gnuradio的目的,你需要廣泛的知識(shí),包括(無(wú)線)通信系統(tǒng)、數(shù)字信號(hào)處理、基本的硬件和電路設(shè)計(jì)、面向?qū)ο蟮?a target="_blank">編程等等。不管怎樣,你的興趣和激情都能讓那些東西學(xué)起來(lái)容易得多。本文列舉了一些有用的文章和資源,它們或許在你投入gnuradio之前是很重要的。這里也有一些gnuradio?社區(qū)推薦的文章,在這里你也能發(fā)現(xiàn)一些有用的信息。?記住,在你開(kāi)始學(xué)習(xí)gnuradio之前,那些基礎(chǔ)并不是你必須要掌握的,但在接下來(lái)的教程中你很可能會(huì)去回顧這些知識(shí)。
1、對(duì)gnuradio有一個(gè)清楚的認(rèn)識(shí)
如果你還沒(méi)有一個(gè)比較清楚地認(rèn)識(shí),請(qǐng)讀Eric?Blossom的Exploring?GNU?Radio,這是一個(gè)對(duì)于軟件無(wú)線電的一個(gè)簡(jiǎn)短介紹。Eric是整個(gè)gnuradio工程的創(chuàng)建人。請(qǐng)確保你對(duì)ADC怎么工作以及為什么需要射頻前端有一定的理解,回顧一下在信號(hào)與系統(tǒng)課程中學(xué)習(xí)的抽樣定理,然后閱讀一下這兩篇文章: “The?Universal?Software?Radio?Peripheral” 和 “What?Goes?in?the?FPGA”。這篇文章提供了兩個(gè)例子:撥號(hào)輸出和FM接收機(jī)。你應(yīng)該做到至少理解其中的一個(gè)。不能理解FM接收機(jī)?不用擔(dān)心,看第二篇文章,Eric?Blossom的?Listen?to?FM?Radio?in?Software,?Step?by?Step。并非要把每行代碼都讀懂,但你需要清楚信號(hào)是怎么從空氣中傳到聲卡的。
尋找任何與gnuradio相關(guān)問(wèn)題的答案都應(yīng)該從?GNU?Radio?Wiki開(kāi)始,?Gnuradio協(xié)會(huì)在提供援助方面也表現(xiàn)的相當(dāng)慷慨,它通過(guò)mailing?list提供幫助。
However,?before?posting?a?question?that?is?stumping?you,?do?an?exhaustive?search?of?the?list's?archive?to?make?sure?that?it?has?not?already?been?addressed.?然而,在你發(fā)表困擾你的問(wèn)題之前,最好先仔細(xì)在郵件列表里搜索一番,確保你的問(wèn)題沒(méi)有被處理過(guò),閱讀一下發(fā)送郵件的參考以確保提供有用的信息,這對(duì)于別人解答你的問(wèn)題也會(huì)有幫助。Gnuradio是軟件定義無(wú)線電的支柱,射頻前端是另外的東西。典型的,Ettus?Research的USRP正是出于此目的。
? ?Ettus?Research?-?USRP的制造商。在這里您可以訂購(gòu)USRP及配件。
? ?USRP?-?Frequently?Asked?Questions?-?概述USRP和常見(jiàn)問(wèn)題列表。
你不必?fù)碛蠻SRP(或任何射頻前端)使用GNU?Radio,但實(shí)際的實(shí)驗(yàn)需要一個(gè)前端。
2、為gnuradio編寫程序
要充分利用gnuradio,你應(yīng)該會(huì)自己編寫代碼。在“Exploring?GNU?Radio'”中,你知道里gnuradio的軟件結(jié)構(gòu)包含兩層:所有的信號(hào)處理模塊是用C++編寫的,python用來(lái)創(chuàng)建網(wǎng)絡(luò)或流圖并且負(fù)責(zé)把信號(hào)處理模塊粘到一起。在這種方案中,python相當(dāng)于一種較高層的語(yǔ)言。Gnuradio已經(jīng)提供了許多有用的經(jīng)常使用的模塊,所以很多情況下,你不需要用到C++。使用python在應(yīng)用層開(kāi)發(fā)是高效的,接下來(lái)的教程python在gnuradio應(yīng)用中的使用。然而,要完成更復(fù)雜的任務(wù)你必須要使用C++來(lái)建立自己的模塊,這種情況下,Eric?Blossom的How?to?write?a?block?正是你所需要的,在后續(xù)的教程中我們會(huì)將這些內(nèi)容。
你可能想要知道gnuradio中實(shí)現(xiàn)了哪些模塊,不幸的是,不幸的是,GNUradio很多地方還沒(méi)有很好的文檔記錄,但你仍然使用Doxygen生成有兩個(gè)非常有用的資源。安裝gnuradio-core和usrp模塊之后,您可以找到兩個(gè)html包位于
/usr/local/share/doc/gnuradio-core-x.xcvs/html/index.html
/usr/local/share/doc/usrp-x.xcvs/html/index.html
我已經(jīng)在我的瀏覽器中添加了書簽。雖然他們不夠清晰,他們可以提供你很多信息。GNUradio?Doxygen生成的文檔也可以在線here。如果你還沒(méi)有機(jī)會(huì)使用Python,請(qǐng)學(xué)習(xí)Python在線教程。這里有一些最重要的部分:
? ?Section?2:?Using?the?Python?Interpreter
?? Section?3:?An?Informal?Introduction?to?Python
? ?Section?6:?Modules
? ?Section?7:?Input?and?Output
?? Section?9:?Classes
評(píng)論
查看更多