SDR技術(shù)原理深入解析
一 軟件無(wú)線電(SDR)概念
軟件無(wú)線電,即Software Defined Radio,SDR。通俗來(lái)講,SDR就是基于通用的硬件平臺(tái)上用軟件來(lái)實(shí)現(xiàn)各種通信模塊。
概念中有兩個(gè)關(guān)鍵詞,“通用硬件平臺(tái)”和“軟件”。“通用硬件平臺(tái)”就是說(shuō)我們能基于這個(gè)硬件平臺(tái)實(shí)現(xiàn)各種各樣的通信功能,而不是說(shuō)一個(gè)硬件平臺(tái)只能實(shí)現(xiàn)一種通信功能。“軟件”來(lái)實(shí)現(xiàn)通信模塊是相對(duì)于傳統(tǒng)的無(wú)線電技術(shù)來(lái)講的,傳統(tǒng)的無(wú)線電通信模塊都是用硬件電路來(lái)設(shè)計(jì),一個(gè)通信電路只能完成一種通信功能,開(kāi)發(fā)周期長(zhǎng),開(kāi)發(fā)成本高,而且一旦設(shè)計(jì)好后功能就無(wú)法改變。軟件化可以加快通信模塊的開(kāi)發(fā)速度,降低開(kāi)發(fā)成本,便于調(diào)試和維護(hù)。
我們可以用圖1來(lái)簡(jiǎn)單看看軟件無(wú)線電基站與傳統(tǒng)的無(wú)線電基站的區(qū)別。圖片左邊的是傳統(tǒng)的大基站,圖片右邊的是基于軟件無(wú)線電的小型化基站。傳統(tǒng)的商用基站體積較大,需要設(shè)計(jì)很多專(zhuān)用的硬件電路;而SDR基站體積較小,大部分通信功能由軟件實(shí)現(xiàn)。
圖1 商用基站與SDR基站
SDR技術(shù)被譽(yù)為通信領(lǐng)域的第三次革命。第一次革命是1G通信系統(tǒng),由有線通信到無(wú)線通信的革命;第二次革命是2G通信系統(tǒng),由模擬通信到數(shù)字通信的革命。SDR是未來(lái)通信系統(tǒng)的發(fā)展趨勢(shì)。
二 SDR系統(tǒng)分類(lèi)
比較通用的SDR系統(tǒng)分類(lèi)是以SDR的硬件平臺(tái)來(lái)分類(lèi)。SDR系統(tǒng)分為三類(lèi):基于FPGA的SDR系統(tǒng),基于DSP的是SDR系統(tǒng)和基于GPP的SDR系統(tǒng)。
2.1 FPGA-BasedSDR系統(tǒng)
基于FPGA平臺(tái)開(kāi)發(fā)的SDR系統(tǒng),實(shí)時(shí)處理能力強(qiáng),但是開(kāi)發(fā)難度大,開(kāi)發(fā)成本也高。這里強(qiáng)調(diào)一下在SDR系統(tǒng)中對(duì)實(shí)時(shí)處理能力要求很高,我們以LTE系統(tǒng)為例,LTE系統(tǒng)的子幀長(zhǎng)1ms,也就是說(shuō)我們的SDR系統(tǒng)必須在1ms內(nèi)把這一子幀的數(shù)據(jù)全部處理完并發(fā)送出去,不能有任何時(shí)延。通信系統(tǒng)帶寬越大,吞吐率越高,對(duì)系統(tǒng)的實(shí)時(shí)性要求就越高。
2.2 DSP-BasedSDR系統(tǒng)
基于DSP平臺(tái)開(kāi)發(fā)的SDR系統(tǒng),實(shí)時(shí)性比FPGA略差,而且同樣的開(kāi)發(fā)難度大,開(kāi)發(fā)成本也高。
2.3 GPP-BasedSDR系統(tǒng)
GPP即General Purpose Processor,通用處理器。我們可以簡(jiǎn)單的把GPP理解為電腦,即我們使用的臺(tái)式機(jī)、筆記本等。基于GPP能高效地開(kāi)發(fā)各種通信模塊、通信系統(tǒng),因?yàn)槲覀兛梢院芊奖愕幕诟鞣N高級(jí)編程語(yǔ)言、各種鏈接庫(kù)來(lái)實(shí)現(xiàn)各種通信功能,如編碼、調(diào)制等。而且,基于GPP的SDR系統(tǒng)開(kāi)發(fā)相比其他兩種具有較低的開(kāi)發(fā)門(mén)檻,較低的開(kāi)發(fā)成本,開(kāi)發(fā)周期也較短、便于調(diào)試等。GPP-Based SDR系統(tǒng)是目前最為通用的一種SDR系統(tǒng)實(shí)現(xiàn)形式。
GPP-based SDR系統(tǒng)通常包含兩部分,一部分是GPP,另一部分是外設(shè)。下一個(gè)章節(jié)我們將介紹SDR外設(shè)的種類(lèi)。
三 SDR系統(tǒng)外設(shè)
如圖2所示,SDR基站/UE都各自包含一個(gè)GPP和一個(gè)外設(shè)。GPP即我們平常所用的臺(tái)式機(jī)或筆記本電腦。SDR的外設(shè)有很多種類(lèi),如USRP,bladeRF,HackRF,以及低端的RTLSDR等。下面我們分別介紹各種外設(shè)的相關(guān)信息。
圖2 SDR通信系統(tǒng)
3.1 USRP
USRP是Ettus公司的產(chǎn)品,目前主要有B系列,E系列,N系列和X系列等,基本上系列字母越靠后價(jià)格越貴。由于USRP型號(hào)太多,我們以B系列為例來(lái)介紹USRP。 B系列主打小型化,目前有USRP B200/B210、USRP mini系列等,其中mini系列更是只有一張名片大小。而且B系列都采用USB3.0接口與GPP通信,直接采用USB供電,使用非常便捷。USRP B系列的產(chǎn)品大部分單價(jià)都在7000-8000塊之間,但是如果加上稅錢(qián)、運(yùn)費(fèi)等,差不多就得10000塊了。USRP相關(guān)產(chǎn)品的介紹請(qǐng)鏈接官網(wǎng)https://www.ettus.com/product
圖3 USRP設(shè)備
3.2 BladeRF
BladeRF主要有三種型號(hào),BladeRF X40,BladeRF X115, BladeRF X115 Thermal。BladeRF X40 是低配版,就是我們手機(jī)里面的青春版,大概約$420,即3000塊左右;BladeRF X115是高配版,F(xiàn)PGA比BladeRF X40好,價(jià)格約$650,即4500塊左右;而B(niǎo)ladeRF X115 Thermal則是頂配版,可以耐受極端環(huán)境,價(jià)格約$1500,即10000塊左右。BladeRF的詳細(xì)信息請(qǐng)查閱官網(wǎng)http://www.nuand.com/
圖4 BladeRF設(shè)備
3.3 HackRF
HackRF,顧名思義是黑客版的SDR外設(shè),它主打性?xún)r(jià)比高,價(jià)格便宜。HackRF主要有兩種版本,HackRF blue和HackRF one,其中HackRF blue是低配版,HackRF是高配版。注意的是HackRF只能支持半雙工。HackRF詳細(xì)的信息請(qǐng)查閱官網(wǎng)http://greatscottgadgets.com/hackrf/
圖5 HackRF設(shè)備
在國(guó)外網(wǎng)站上找到一篇介紹上述SDR外設(shè)的區(qū)別的博客,http://www.taylorkillian.com/2013/08/sdr-showdown-hackrf-vs-bladerf-vs-usrp.html
有空我給大家翻譯翻譯。現(xiàn)在先給大家預(yù)覽一下里面的一個(gè)表格。
3.4
RTLSDR
如果說(shuō)上述設(shè)備對(duì)學(xué)生黨來(lái)說(shuō)都太貴了,畢竟動(dòng)不動(dòng)就好幾千塊錢(qián),那么不得不隆重介紹下入門(mén)級(jí)的SDR外設(shè),RTLSDR。淘寶一搜RTLSDR就能出來(lái)一大堆,而且都只需要幾十塊錢(qián),博主目前就買(mǎi)了一個(gè),正在研究怎么使用。便宜就意味著性能的低,RTLSDR本來(lái)是用來(lái)接收電視信號(hào)的,所以也稱(chēng)為電視棒。RTLSDR只能接收信號(hào),不能發(fā)射信號(hào),而且只有2.8M/s的采樣速率,根據(jù)奈奎斯特采樣定律換算一下理論上最大支持的帶寬只有1.4M。但這仍然是一款非常適合用來(lái)入門(mén)的SDR外設(shè)。RTLSDR具體使用方法參見(jiàn)http://sdr.osmocom.org/trac/wiki/rtl-sdr和http://www.rtl-sdr.com/。
圖6 RTLSDR設(shè)備
四 SDR系統(tǒng)原理
下面正式開(kāi)始講解SDR的系統(tǒng)原理。在上面的介紹中我們知道GPP-Based SDR系統(tǒng)一般都是包含一個(gè)GPP和一個(gè)外設(shè)。我們以一臺(tái)筆記本電腦連接一個(gè)USRP B200為例來(lái)給大家講解SDR系統(tǒng)內(nèi)部的實(shí)現(xiàn)原理。
4.1 發(fā)射機(jī)
首先我們來(lái)看發(fā)射端的系統(tǒng)原理圖,即圖7。圖的左邊是一臺(tái)筆記本的示意圖,右邊的一個(gè)USRP B200的發(fā)射示意圖。
首先看筆記本結(jié)構(gòu)最上面的SDR程序。這個(gè)程序就是我們用軟件來(lái)實(shí)現(xiàn)的通信模塊,在筆記本上我們可以用各種高級(jí)編程語(yǔ)言來(lái)編寫(xiě)各種通信模塊,例如Turbo編碼模塊,OFDM模塊等。鑒于SDR系統(tǒng)對(duì)實(shí)時(shí)性要求較高,所以我們一般使用C或C++語(yǔ)言來(lái)編寫(xiě)SDR程序。SDR程序里面包含了通信系統(tǒng)完整的協(xié)議棧,如果我們寫(xiě)的是LTE系統(tǒng),則包PHY、MAC、RLC、PDCP、RRC、NAS甚至MME等;而如果我們的是WiFi系統(tǒng),則包含PHY、MAC、LLC等。SDR程序的主要功能是處理系統(tǒng)的基帶數(shù)據(jù)。
接下來(lái)UHD是USRP設(shè)備的驅(qū)動(dòng)模塊,不同的外設(shè)使用的驅(qū)動(dòng)也不一樣,因?yàn)槲覀兪且訳SRPB200為例,所以驅(qū)動(dòng)模塊是UHD。UHD驅(qū)動(dòng)的安裝方式可以參見(jiàn)http://blog.csdn.net/jxwxg/article/details/53002311使用C或者C++調(diào)用UHD的庫(kù)函數(shù)可以參見(jiàn)http://blog.csdn.net/jxwxg/article/details/53142911。
接下來(lái)是系統(tǒng)的各種系統(tǒng)庫(kù)和系統(tǒng)調(diào)用的接口以及內(nèi)核。強(qiáng)調(diào)一點(diǎn),大部分SDR程序都是基于Linux來(lái)開(kāi)發(fā)的,很少基于Windows開(kāi)發(fā)。因?yàn)長(zhǎng)inux系統(tǒng)開(kāi)源,而且實(shí)時(shí)性較好。這一塊主要涉及操作系統(tǒng)方面的知識(shí),我們不在這里深入討論。
USRP B200與GPP的接口是USB3.0。外設(shè)接口的選擇也很重要,接口的傳輸速率必須快,不能成為整個(gè)系統(tǒng)的瓶頸。USRP早期的產(chǎn)品的都是用的USB2.0接口,因?yàn)楫?dāng)時(shí)通信系統(tǒng)的吞吐量較小,所以不會(huì)限制使用?,F(xiàn)在大部分外設(shè)都是用USB3.0或者以太網(wǎng)網(wǎng)口作為外設(shè)接口。USB3.0的接口速度可以達(dá)到500MBps,基本能滿(mǎn)足大部分通信系統(tǒng)的需求。
接著筆記本電腦通過(guò)USB3.0把數(shù)據(jù)傳輸給USRP B200。USRP最底下的兩個(gè)模塊是發(fā)送控制模塊和數(shù)字上變頻模塊(DUC)。這兩個(gè)模塊是用FPGA里面實(shí)現(xiàn)的,用FPGA實(shí)現(xiàn)的好處是處理速度快。發(fā)送控制模塊好理解就是用來(lái)控制整個(gè)USRP的發(fā)送行為,例如什么時(shí)候發(fā)送等。DUC模塊是為了把電腦產(chǎn)生的基帶數(shù)據(jù)上變頻到中頻。之后數(shù)字信號(hào)經(jīng)過(guò)USRP的DAC之后轉(zhuǎn)化為模擬域的數(shù)據(jù),數(shù)模轉(zhuǎn)化之后需要過(guò)一個(gè)低通濾波器使信號(hào)變的更加平滑。最后中頻模擬域數(shù)據(jù)在與晶振產(chǎn)生的信號(hào)相乘把我們的中頻信號(hào)調(diào)制到制定的射頻頻點(diǎn)上。
最后射頻信號(hào)再經(jīng)過(guò)功率放大器把信號(hào)發(fā)射出去。信號(hào)放大器里面也有很多知識(shí)可以學(xué)習(xí)。例如信號(hào)放大器分為A類(lèi),B類(lèi)和C類(lèi)等,具體每一類(lèi)的特征本文就不具體解釋了。我們可以通過(guò)UHD提供的庫(kù)函數(shù)來(lái)修改發(fā)射信號(hào)的發(fā)射增益,即tx_gain。tx_gain這個(gè)參數(shù)對(duì)信號(hào)的影響還是挺大的,tx_gain設(shè)置的太小導(dǎo)致信號(hào)功率太小,而如果設(shè)置的過(guò)大可能會(huì)導(dǎo)致系統(tǒng)的低噪上升,也有可能會(huì)影響其他通信系統(tǒng)的正常工作。
圖7 SDR發(fā)射機(jī)原理圖
4.2 接收機(jī)
可能有人會(huì)問(wèn)為什么要經(jīng)過(guò)兩次變頻。我們以SDR接收機(jī)給大家講解。如圖8所示是SDR接收機(jī)的原理圖。同樣的,左邊是筆記本的示意圖,與發(fā)射機(jī)的一樣;右邊是USRP的接收示意圖,USRP接收示意圖與發(fā)射示意圖稍有不同。
首先接收部分的放大器變成了低噪放,顧名思義,低噪放就是低噪聲的放大器,本質(zhì)上還是個(gè)放大器。因?yàn)榻邮盏男盘?hào)里面包含了信道的噪聲,接收機(jī)不能把噪聲放的過(guò)大。
信號(hào)經(jīng)過(guò)低噪放后與USRP晶振產(chǎn)生的信號(hào)相乘把信號(hào)下變頻到中頻,同樣地再經(jīng)過(guò)一個(gè)低通濾波器把信號(hào)變得平滑。
之后中頻信號(hào)經(jīng)過(guò)ADC把模擬域的信號(hào)轉(zhuǎn)到數(shù)據(jù)域。ADC是USRP里面很重要的一個(gè)部件。ADC主要由兩個(gè)參數(shù),采樣精度和采樣率。采樣精度表示采樣后的信號(hào)用多少bit來(lái)表示,例如USRP B200的ADC精度為12 bits,即采樣后的每一個(gè)數(shù)據(jù)用12bits來(lái)表示。采樣率就是系統(tǒng)的采樣速率,USRP B200的采樣速率為61.44MS/s。這也就是為什么大部分SDRLTE系統(tǒng)都采用USRP B系列作為外設(shè)的原因,61.44MS/s的采樣率剛好是LTE系統(tǒng)最大采樣速率30.72M的兩倍。
同樣的信號(hào)經(jīng)過(guò)ADC之后,數(shù)字信號(hào)被送入FPGA模塊處理。FPGA里面包含兩個(gè)模塊,數(shù)字下變頻和接收控制。接收控制用來(lái)控制整個(gè)USRP系統(tǒng)的接收流程,例如什么時(shí)候開(kāi)始接受等。數(shù)字下變頻即DDC,用于把信號(hào)從中頻下變頻到基帶。
圖8 SDR接收機(jī)原理圖
為什么要經(jīng)過(guò)兩次下變頻呢?如圖9所示,第一次變頻是在模擬域通過(guò)晶振產(chǎn)生的信號(hào)與射頻信號(hào)相乘把信號(hào)下變頻到中頻,這一次變頻主要是為了后面做AD采樣。我們知道采樣需要滿(mǎn)足奈奎斯特采樣定律,采樣的頻率必須大于信號(hào)的最高頻率的2倍,而射頻信號(hào)的載波頻率已經(jīng)能都達(dá)到2.6GHz,甚至5GHz,根本無(wú)法做出載波頻率兩倍的采樣速率的ADC。所以系統(tǒng)先把信號(hào)下變頻到中頻,然后再利用ADC對(duì)信號(hào)進(jìn)行模數(shù)轉(zhuǎn)化。因?yàn)閁SRP ADC的采樣率為61.44MS/s,所以我們可以推出USRP對(duì)應(yīng)的中頻頻率應(yīng)該低于30.72MHz。
接著中頻的數(shù)字信號(hào)被DDC下變頻到基帶。有人可能會(huì)問(wèn)為什么不直接把信號(hào)一次變頻到基帶呢,這樣的接收機(jī)叫做零中頻接收機(jī)。如果載波頻率高了,零中頻的接收機(jī)設(shè)計(jì)會(huì)非常復(fù)雜,所以零中頻接收機(jī)一般用于載波頻率較低的系統(tǒng)里面。
圖9 下變頻原理示意圖
數(shù)字信號(hào)經(jīng)過(guò)USB3.0接口傳輸?shù)焦P記本電腦上后,電腦再把數(shù)據(jù)傳輸給SDR程序處理。物理層處理完后再把數(shù)據(jù)交給上層。這樣SDR接收機(jī)的信號(hào)接收過(guò)程便完成了。
SDR發(fā)射機(jī)/接收機(jī)里面的每一個(gè)模塊都對(duì)應(yīng)一大片知識(shí),知識(shí)的海洋是無(wú)窮的,這里的介紹只能起一個(gè)拋磚引玉的作用。如果大家想深入學(xué)習(xí)的話,還得要多查閱資料。
五 SDR LTE系統(tǒng)
上一章節(jié)從SDR發(fā)射機(jī)和接收機(jī)的角度分別介紹SDR系統(tǒng)的原理。下面我們以SDR LTE系統(tǒng)為例給大家介紹一個(gè)SDR系統(tǒng)的例子,有助于大家理解實(shí)際項(xiàng)目的中SDR通信系統(tǒng)。
目前國(guó)際上已經(jīng)有好幾個(gè)開(kāi)源的SDR LTE系統(tǒng),如OpenAirInterface,srsLTE,OpenLTE等,詳情可以查看http://blog.csdn.net/jxwxg/article/details/53026659。開(kāi)源的SDR LTE系統(tǒng)非常適合用來(lái)學(xué)習(xí)SDR和LTE的原理和知識(shí)。
下面以圖10來(lái)介紹SDR LTE系統(tǒng)的工作流程。
首先LTE的上層有數(shù)據(jù)需要物理層發(fā)送,比如我們要發(fā)送一個(gè)經(jīng)典的字符串”Hello World”,上層把數(shù)據(jù)編碼成Bit流自后交給物理層。上層可能采用的ASCII編碼,把Hello World編碼成對(duì)應(yīng)的Bit流。即物理層收到的是一連串的100110等。
Bit流傳到物理層后開(kāi)始進(jìn)行編碼,LTE采用的是1/3 碼率的Turbo編碼,再經(jīng)過(guò)加擾,加擾可以理解為將Bit流隨機(jī)化,避免出現(xiàn)一大串連續(xù)的0或者1。此外,在發(fā)送端用小區(qū)專(zhuān)用擾碼序列進(jìn)行加擾,接收端再進(jìn)行解擾,只有本小區(qū)內(nèi)的UE才能根據(jù)本小區(qū)的ID形成的小區(qū)專(zhuān)用擾碼序列對(duì)接收到得本小區(qū)內(nèi)的信息進(jìn)行解擾,這樣可以在一定程度上減小臨小區(qū)間的干擾。
接著B(niǎo)it流經(jīng)過(guò)調(diào)制模塊后被調(diào)制成復(fù)數(shù)。LTE里面采用的是QPSK,16QAM和64QAM等調(diào)制方式,出來(lái)的數(shù)據(jù)形式如0.707+0.707j。然后對(duì)復(fù)數(shù)序列進(jìn)行資源映射,把復(fù)數(shù)映射到LTE的時(shí)頻資源上,最后再對(duì)這些信號(hào)進(jìn)行OFDM把信號(hào)轉(zhuǎn)換到時(shí)域。此時(shí),SDR程序的工作便完成了,生成了LTE系統(tǒng)的基帶數(shù)據(jù)。
緊接著,GPP把基帶數(shù)據(jù)通過(guò)USB3.0接口把數(shù)據(jù)傳輸給USRP,由USRP經(jīng)過(guò)上一章講述的流程把基帶信號(hào)上變頻到射頻并發(fā)送出去。
圖10 SDR LTE系統(tǒng)原理
LTE接收機(jī)的過(guò)程基本與發(fā)射機(jī)相反。USRP把接收到的射頻信號(hào)下變頻到基帶后通過(guò)USB3.0接口傳輸給SDR程序。SDR程序把接收到的一連串復(fù)數(shù)先做OFDM解調(diào),接著信道估計(jì)/均衡。此時(shí)的數(shù)據(jù)仍然是復(fù)數(shù)形式的。經(jīng)過(guò)軟解調(diào)之后數(shù)據(jù)變成Bit流,最后再進(jìn)行解擾,解碼恢復(fù)出 “Hello World” 的ASCII碼,傳輸給UE的上層后,UE識(shí)別出有人給它發(fā)送了一串信息,即“Hello World”。
至此,通信的過(guò)程完成。