




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、畢業設計基于gnu radio多相濾波器的設計與實現摘要: 線電是無線通信領域提出的新的通信系統結構,主要以拓展性,結構簡單化地硬件作為通用平臺,以可替換的軟件來實現更多的通信功能。gnu radio是用軟件來定義無線電波發射和接收的方式,與硬件相結合,搭建無線電通信系統的開源軟件系統,使得無線電領域所遇到的數字調制問題變成軟件問題。本文以gnu radio為基礎,實現多相濾波器系統。對多相濾波器做了簡單的介紹,包括濾波器的組成模塊,實現原理,同時討論了多相濾波器如何實現信道化,最后介紹了濾波器的設計步驟,分析實現多相濾波器仿真結果。關鍵詞: 軟件無線電,gnu radio,多相濾波器目錄一、
2、引言31.1、軟件無線電的介紹31.2、gnu radio的產生和應用現狀41.3、本課題的主要工作4二、軟件無線電和gnu radios的原理52.1、軟件無線電系統的結構和特征52.2、gnuradio的介紹62.3、gnuradio安裝與使用72.3.1、 ubuntu的安裝72.3.2、gnu radio的安裝8三、多相濾波器理論原理及其應用103.1、多相濾波器的理論知識103.1.1、采樣定律103.1.2、多采樣濾波器113.1.3 、互換等效性143.1.4、重采樣153.2、fir濾波器的概念與結構163.3、濾波器的信道化選擇183.4、多相濾波結構的作用19四、gnura
3、dio的多相濾波器系統設計和實現204.1、gnr radio多相濾波器的基本組建204.2、基于gnu radio設計多相濾波器設計流程圖214.3、相濾波器的設計21五、實驗結果25六、總結28參考文獻29致謝30一、引言1.1、軟件無線電的介紹軟件無線電(software defined radio):是無線通信實現的新概念,即是采用現代軟件來實現控制傳統的“純硬件電路”無線通信。軟件無線電技術首先是運用在軍事上,但由于它的優點突出,很快該技術開始運用到民用的無線移動通訊行業。軟件無線電新技術的出現,打破了傳統的通信功能只能依賴硬件格局發展的單一局面,如今,通信功能以硬件無線通信設備作為
4、基本平臺,功能的實現更多地由軟件來發揮作用。軟件無線電新技術的出現,對于通訊領域來說,是繼“固定通信移動通信”“模擬通信數學通信”之后的第三次技術變革。因此,如何更好地去研發和運用軟件無線電技術,是一項艱巨的任務。和傳統的無線電系統相對比,軟件無線電體統有其自身突出的特點。傳統的無線電系統的調制方式和頻段都有對應的硬件結構,其濾波和基頻處理、上/下變頻、射頻部分都采用了模擬方式,雖然數碼無線電系統的低頻部分采用了數字電路,但是其射頻和中頻部分還是離不開模擬電路。軟件無線電系統是將d/a、a/d變換移動至中頻,盡可能接近射頻天線,并是對整個系統進行了采樣處理。而且軟件無線電是用dsp器件來替代數
5、字電路,這樣,系統的功能實現和硬件結構相對獨立,整個系統就能基于一個通用、開放的硬件平臺,利用各種軟件技術實現各種不同的通信功能,并通過軟件編程來實現對工作頻率、調制方式、系統寬帶的選擇,極大地提高了系統的靈活性。軟件無線電新概念的提出,引起了無線電領域的廣泛關注,成為了未來通訊技術的發展新方向,它不僅在電子戰、雷達等國防軍事方面得到廣泛應用,在智能化家電、數字化通信方面也有它的身影。各國都爭先恐后進行相關方面的研究,尤其美國,美國軍方已經制定了具體的發展規劃。而我國對于軟件無線電技術的研究非常重視,設立了多項重點研究項目。現在,人們對軟件無線電的研究日趨成熟,已經開始將其應用到我們生活的各個
6、方面。1.2、gnu radio的產生和應用現狀gnu radio是一套免費開源軟件的開發工具。它提供了信號處理和運行模塊來支持軟件無線電,并使用微處理器和低成本的rf(外部射頻)去實現軟件定義無線電,它廣泛應用于無線通信領域的研究。對于gnu radio,主要是采用python編程語言,而它的核心的模塊是由c+在帶浮點運算的微處理器上進行構建的,這也決定了用戶能夠快速建立一個高吞吐量、實時的無線電系統。雖然gnu radio的主要功能不是用來模擬仿真的,但是在沒有硬件情況下,使用預先生成的數據來進行信號處理研究。gnu radios的硬件平臺usrp系列產品在世界各地有著各式各樣的廣泛應用,
7、在商業生活和國防系統中都能看到它的身影。尤其是國防系統,usrp系列產品能夠以低預算,快速成型和部署先進等優點已經被發達國家的軍事和情報服務機構廣泛應用。1.3、本課題的主要工作本論文通過設計和研究gnu radio軟件,實現軟件無線電的基本方案,其主要的工作是學會使用gnu radio軟件和實現多相濾波器結構。主要內容包括了:l 學習和掌握軟件無線電的概念、工作原理和發展狀況;l 學習和掌握gnu radio的安裝和使用方法;l 學習和掌握多相濾波器的相關理論知識和設計方法;l 用gnu radio軟件為基礎,設計多相濾波器,同時提出基本實現 方案。二、軟件無線電和gnu radios的原理
8、2.1、軟件無線電系統的結構和特征構成軟件無線電系統的基本部件包括了:多頻段射頻變換器,含有a/d和d/a轉換器的芯片,電源,天線和通用處理器等,這些部件執行了無線通信功能。軟件無線電系統的硬件結構比較簡單,通過處理流程圖來了解其各個硬件。上圖為接收通道,信號由天線通過rf的前端接收,再經過模擬數字轉換器adc進行轉換,最后由代碼的作用轉化為信息。類似的,在發射通道,數字信號由代碼處理計算生成,再由dac將其轉為模擬信號,最后再從rf前端發射出去。通過流程我們也可以看出,軟件無線電結構完成的主要功能關鍵在軟件無線代碼。處理流程圖:圖2.1 軟件無線電處理流程圖1對于分析軟件無線電處理流程,我們
9、還應理解以下特點:l 數字化和編程化,在整個過程中,除了少部分以模擬方式實現,例如低噪聲放大,放大功率,濾波,其余部分都是在模數轉換后再由代碼編程計算處理實現的,例如差錯編碼、調制解調、信道均衡等。l 開放性和靈活性,軟件無線電采用了模塊化地結構,它的硬件在技術不斷發展的前提下不斷更新,軟件模塊也不斷升級,增加新功能的方法簡單,而且軟件無線電不僅能和舊體制的電臺進行兼容,也能夠和新體制的電臺進行工作,這樣能夠最大限度地保證了軟件無線電技術的生命周期。2.2、gnuradio的介紹gnu radio的編程是python腳本語言和c+兩者的混合,其中,python用于實現高級組織、圖形界面和一些對
10、運算性能要求不高的功能,c+因執行效率高,可用于信息處理模塊的編寫,例如信道編譯碼模塊,fft變換,調制器,時頻同步等等模塊,這些被稱為block。從另一方面來說:python就是選擇合適的信源,處理模塊和信宿,設置正確的參數,再把這些連接起來成為一個完整的應用程序。而所有的信源,信宿和模塊都由c+來編寫。gnu radio還有一套零拷貝循環緩存機制,能夠保證數據在這些block之間流動,也能通過python編寫能夠連接各個block的腳本,稱為graph。同時,在gnu radio進行擴展也比較容易,如果發現缺少一個特定的block,可以快速編寫創建,然后添加它。gnu radio為學習者有
11、方便調試測試的環境,提供了圖形界面版grc,這是一個圖形化工具,用于創建信號流圖,并生成流圖的源代碼,里面包含了大量的數字處理模塊資源和多種調試工具。 gnu radio的硬件平臺usrp(通用軟件無線電外設)實際上,usrp是充當了無線通信系統的中頻和數字基帶部分,讓普通的計算機能夠像高帶寬的軟件無線電設備那樣工作。usrp使得所有波形的相關處理都在主機cpu上完成,例如調制和解調,而例如抽樣、上下變頻和內插等高速通用操作則都在fpga(可編程門陣列)上完成。usrp平臺的出現,讓工程師能夠花費少量的精力去為用戶創造大量的代碼庫,并為軟硬件提供了很多實際運用,成為了軟件無線電開發的理想平臺。
12、 2.3、gnuradio安裝與使用2.3.1、 ubuntu的安裝目前gnu radio安裝gnu radio庫只支持linux操作系統,使用的是ubuntu12.10。下載鏈接: xp 和ubuntu,這樣我們就可以根據自己的需求進入想要的系統。最后,要對ubuntu12.10的源列表進行更新,步驟如下:l 進入終端,輸入sudo gedit/etc/apt/sources.list,按回車鍵。編輯源列表,將原來的內容刪除,添加你需要用到的源,復制到列表中,保存列表。代碼如下:deb lucid main universe restricted multiversedeb-src luci
13、d main universe restricted multiversedeb lucid-security universe main multiverse restricteddeb-src lucid-security universe main multiverse restricteddeb lucid-updates universe main multiverse restricteddeb lucid-proposed universe main multiverse restricteddeb-src lucid-proposed universe main multive
14、rse restricteddeb lucid-backports universe main multiverse restricteddeb-src lucid-backports universe main multiverse restricteddeb-src lucid-updates universe main multiverse restrictedl 關閉sources.list 后,在終端運行 sudo apt-get update,這樣,ubuntu就安裝好了。2.3.2、gnu radio的安裝一般gnu radio的安裝有兩個途徑包括手動自源代碼安裝或者是預購的二進
15、制包。需要注意的是,gnu radio的開發工作發展迅速,這就有可能導致各個版本的二進制預購包有可能處于過時狀態。安裝步驟:(1)安裝ubuntu12.10,運行“language support”選擇“chinese”注意不要對系統進行任何升級。(2)采用script(腳本來安裝),先建立一個文件夾,需要建立在全英文的路徑中,在終端進入該路徑,然后輸入“$ wget /files/build-gnuradio && chmod a+x./build-gnuradio && ./build-gnuradio -verbose
16、.”該命令運行下就會下載安裝器(build-gnuradio)其狀態設置為可運行狀態,這個過程是先下載并安裝所有相關單元,然后從git上下載uhd和gnu radio,運行”$ sudo make”進行安裝,在這個安裝過程中需要sudo的密碼,這個過程大部分都是自動完成的,而且大多數情況下,通過運行該腳本對gnu radio的實施自源代碼的安裝能夠滿足其要求。(3)接著輸入“$ sudo make install”接著輸入“sudo gedit /etc /profile”,然后加上回車鍵。再輸入export 配置路徑“$ export pythonpath=$pythpnpath:/usr/
17、lib/python2.7/dist-packages”,然后輸入”sudo gedit /etc/ld.so.conf ”接著執行“sudo ldconfig”最后輸入“gnuradio-config-info -v”。安裝完成后,源代碼便會位于硬盤上某處,這樣方便日后的修改。(4)在我安裝版本中缺少scipy文件包,所以需要另外安裝,先下載scipy和numpy相關安裝包,然后輸入 “sudo apt-get install libatlas-sse2-dev”和“sudo apt-get install gfortran”,再執行安裝命令,進入numpy的目錄和scipy目錄,執行“py
18、thon setup.py buildfcompiler=gnu95”和“sudo python setup.py installprefix=/usr/local”進行安裝。(5)測試gnu radio安裝是否有問題,我們可以采用“/gnuradio-3.3.0/gnuradio-examples/python/audio”下的一個例子,例如dial-tone.py。該例子能夠產生兩個sine波形然后將他們輸出聲卡,其中一個輸出到聲卡的右聲道,一個輸到左聲道。“$./dial-tone.py”。運行后,能夠聽到聲卡發出的聲音,按任意鍵程序就可以退出。(6)我們還可以在“/usr/local/
19、bin”下面找到grc,類似matlab的simulink,在終端運行grc“$./grc”,就會彈出下圖窗口。右邊有各種block,雙擊一個,就會放在左圖上,圖3.1是一個正弦波的信號源,連接一個示波器,運行,就能夠在示波器上顯示正弦波形,如圖2.3。圖2.2 grc界面 圖2.3 在grc中運行一個流圖三、多相濾波器理論原理及其應用3.1、多相濾波器的理論知識3.1.1、采樣定律通過對軟件無線電的學習,我們知道其核心思想是對天線感應的射頻模擬信號進行數字化,使其轉換成適合計算機處理的數據流,從而能夠通過算法來完成各種功能。在這一過程中面臨的主要問題是如何對模擬信號進行采樣?如何能夠從采樣后
20、的數據序列中取重新建立連續的時域信號。采樣速率是將模擬信號準確不失真地轉換成數字信號的重要指標。nyquist采樣定律中指出,帶限信號中,也就是最大頻率fmax以上沒有頻譜分布的信號,用采樣間隔為ts均勻采樣后的樣本是唯一確定的,而間隔ts滿足式(3.1)ts 12 fmax (sec) 式(3.1)多數情況下,對頻率在 0, fh 的信號來說,采樣頻率要符合:fs 2fh 式(3.2)這樣才能保證采集的信號不會有混疊而造成的失真情況。如圖所示圖3.1 原始信號2圖3.2 無混疊 2nyquist采樣理論只是討論了頻譜在(0,fh)上的信號采樣問題,但當信號頻率分布帶寬為b的有限的頻帶(fl
21、, fh)上,又該如何對待呢?這就提出了帶通采樣定理:頻率帶限信號x(t),帶寬為b,頻帶限制在(fl ,fh )內,那么采樣速率fs 滿足fh=2 式 (3.3)式中,f0 為中心頻率,k滿足fs 2(fh fl)最大正整數(0,2,3),這樣fs 進行等間隔采樣所得的信號采樣值x(nt )能準確地確定原信號x(t)。又因為中心頻率滿足:f0=b 式(3.4)我們可以發現,k的不同會導致中心頻率的不同,即使使用同一個采樣頻率,也是可以對不同的中心頻率進行采樣。這決定了帶通采樣定理的使用前提,只能夠在其中一個頻率上存在信號,不允許其他頻帶上同時也存在信號,否則會引發混疊現象。帶通采樣可以降低采
22、樣速率的理論值,使得高速采樣和處理能夠成為現實。現實中軟件無線電只有在寬的頻段下才具有較廣泛的適應性,這樣決定了軟件無線電臺無法采用nyquist采樣技術采樣,而需要采用帶通采樣。3.1.2、多采樣濾波器多采樣濾波器是指在處理采樣信號的時候,能夠提高或者降低信號采樣率的數字濾波器。其中簡單的是實現整數倍的增采樣(1:p)濾波器,也就采用內插,同時也稱為向上采樣。另一種是減采樣(q:1)濾波器,采用抽取,也稱為向下采樣。較為復雜的是將減采樣和增采樣應用在同一個信號處理過程,此時,獲得的采樣率的改變率為p/q,更為復雜的技術可以用來實現緩慢時變或者是任意比值的采樣率變化。l 整數倍抽取和向下采樣抽
23、取通常也成為向下采樣,是降低采樣率的過程,是在原始采樣序列x(n)每隔(q-1)個數據取一個,從而能夠形成一個全新的序列xq(m),也就是:xq(m)=x(mq) 式(3.5)其中,q為正整數,而形成的新序列數據長度是原來1/q。圖3.3 用f hz采樣率對原始信號采樣3圖3.4 用1/4 f hz采樣率得到新的信號3這一過程實現將采樣率降低到原來的頻率的1/4,也就是除去每4個原始信號中的3個,只保留1個。x(n) y(m)圖3.5 抽取器通過抽取,不僅可以降低輸出信號的數據頻率,而且還提高了頻域的分辨率。但是為了避免我們丟棄的樣本中有我們要研究的樣本,因此實際應用時我們需要在抽取器前面增加
24、濾波器h(n),可以使用低通數學濾波器也可以是帶通數學濾波器,這可以將信號帶寬限制到我們要研究的范圍之內。 mlow-passfilter 圖3.6 在抽取前對信號進行濾波l 整數倍內插和向上采樣整數倍內插:在兩個原始抽樣點之間插入(i-1)個零值,假設原始抽樣序列是x(n),那么內插后的序列xi(m)是:xi(m)= 式(3.6)內插過程如圖:圖3.7 采樣率f hz的原始信號3圖3.8 用零值樣本對原值信號進行擴充,增加采樣率為原來的4倍3內插后的信號頻譜因為有新的零值樣品加入而多了不在研究范圍內的高頻分量到信號中,所以,我們需要對內插后的新信號進行濾波,除去不用研究的分量,產生更適合的采
25、樣值,如圖所示:圖3.9 f hz的最終信號 采樣率為4倍3完整的內插器結構如下圖,利用內插(加入零點)不但可以提高輸出信號的頻率,同時也可以提高時域分辨率。此時,采用的濾波器為帶通濾波器,取出信號的高頻成分。 lfilter 圖3.10 內插后對信號進行濾波3.1.3 、互換等效性互換的等效性:內插器和抽取器相對濾波器的位置是可以相互調整的,也稱作“noble恒等式”圖3.11 noble 恒等式3如圖所示,先用zd多項式定義的濾波器進行濾波處理,然后進行減采樣,與先進行減采樣,再進行濾波器處理是完全等效的。事實上,我們將重采樣器與濾波器相結合,利用特性用輸出采樣率上的一個單位延遲來取代輸入
26、采樣率上d個單位延時。相同的,內插器也一樣,不同的是,抽取和濾波器之間的關系研究是分析濾波器組研究的基礎,內插和濾波器組的關系則是綜合濾波器組研究的基礎。noble等式是多相濾波器設計過程中內插器和抽取器次序交換的理論依據,通過適當的調整,能夠使濾波器得到簡化。內插和抽取因子只能為整數值,如果將內插因子為p和抽取因子為q內插器和抽取器相結合,級聯后就可以得到q:p的重采樣,如果此時p和q是互質數,那么內插器和抽取器就可以互相交換次序,否則不可以。次序的交換是十分有意義的,如果內插器和抽取器能夠交換,將抽取器移到濾波器的輸入端,這樣使整個濾波器能夠用二者中較低的處理速率來進行工作。3.1.4、重
27、采樣如果系統的采樣率是一個整數,我們就只需要通過抽取或者內插來實現,如果采樣率的比率是一個分數,我們就需要通過抽取和內插進行結合級聯,而這樣一個過程就稱為重采樣。假設重采樣因子2.5進行重采樣,那么內插因子為5,而抽取因子為2就能夠產生輸出對輸入采樣率:5/2=2.5的采樣率。重采樣因子是輸出采樣速率和輸入采樣速率的比值,也可以表示為內插因子和抽取因子之間的比例。圖3.12 重采樣3.2、fir濾波器的概念與結構根據濾波器的基本結構特點,可以將數字濾波器分為有限長脈沖響應(fir)濾波器和無限長脈沖響應(iir)濾波器。fir濾波器是指沖激響應函數h(t)是有限個值的數字濾波器,也就是滿足h(
28、n)=0,nn2及nn1 式(3.7)該式中,n1, n2為有限值,也可以說fir濾波器的沖激函數h(n)只是在有限范圍n1kn2-1內不為零,但在實際中n1=0,而n2=n,y(n)= 式(3.8)fir數字濾波器的頻率響應可以表示為:h(ejw)=-jwk 式(3.9)而所謂濾波器設計,實際上就是給定h(ejw) (或者某些特征參數)的情況下,從而求出沖激函數h(k)。iir濾波器的反饋,一般是模仿模擬濾波器的響應,他們的脈沖是遞歸型,這比fir濾波器更少的計算,但是iir濾波器穩定性比較差。然而,fir濾波器無反饋,這件使得該種濾波器有恒定的群時延,所有在頻率范圍中,濾波器完全穩定。fi
29、r濾波器能夠在保證幅度特性滿足技術要求的同時,很容易做到嚴格的線性相位特性。而且,總體來說,fir濾波器的設計技術比較成熟,方法也多,現實應用更為廣泛。設計fir濾波器的方法之一是用一個窗函數w(k)去截取理想濾波器的沖激函數hlp(k),這樣就可以得到一個可用的fir濾波器的沖激函數h(k):h(k)= hlp * w(k) 式(3.10)實際運用中,窗函數w(k)有各種形式,例如漢寧窗、矩形窗、凱撒(kaiser)窗,還有這次實驗應用的布-哈窗(布萊克曼-哈里斯窗,blackman-harris)。布-哈窗的表達式如下:wbh(k)=0.42323-0.49755cos +0.07922c
30、os(0kn-1) 式(3.11)對于布-哈窗來說,它具有較低的旁瓣電平,在對動態要求比較高的時候,一般選擇布-哈窗。采用窗函數去設計fir濾波器的優點是簡單,容易理解,根據窗函數的表達式,能夠容易求出窗函數的的n個w(k)(k=0,1,2n-1),然后用這些數據和理想的沖激函數相乘就可以得到實際的濾波器的沖激函數h(k)。一般理想的沖激函數是已經知道的,例如,這次實驗使用的低通濾波器,其理想的頻率響應為hlp(ejw)= 式(3.12)那么對應的理想濾波器的沖激響應為hlp(k)= (k =0,±1,,2,.) 式(3.13)此時,為了使hlp(k)和窗函數的取值范圍(0,n-1)
31、相一致,那么我們可以先把hlp(k)移動到處(在頻域上只是增加一個固定相移)hlp(k)= 式(3.14)最后,再和w(k)相乘就可以得到實際的濾波器系數h(k):h(k)= hlp(k-n/2)*w(k) (0 k n-1)式(3.15)此外,數字濾波器的階數n,和濾波器的歸一化過渡帶寬度成反比,過渡帶越窄,濾波器的階數也就會越大,從而實現起來難度會越大,在實際應用需要權衡兩者的關系,這樣決定了用窗函數設計的數字濾波器的特性無法達到最佳狀態。3.3、濾波器的信道化選擇所謂信道是指通過一組覆蓋整個頻段的濾波器將頻段劃分成若干個子頻段信道,每個濾波器的輸出就是一個信道輸出。如果將每個子頻段通過下
32、變頻搬移到零中頻,再通過低通濾波器(帶寬是信道帶寬),這種實現方法叫做頻率信道化的低通實現。如圖3.13。經過低通濾波后每個信道輸出再經過d=k倍的抽取后不會出現頻譜混頻。如以2ghz頻段,8信道為例,(圖3.14):其中a圖表示將2ghz頻段分成8個信道,則每個信道的帶寬是250mhz,假設把信道3移到零中頻再進行低通濾波,就能夠得到(b)的頻譜,如果再對它進行8倍的抽取,頻譜就能夠以2g/8=250mhz的周期進行周期拓展,那么就會如(c)所示,此時的頻譜剛好沒有混疊,并可以獲得低采樣率的信號。圖中每個信道的輸出數據率已經降成原來的k倍,但由于k個信道,所以對于整個模型來說,數據率并沒改變
33、,2ghz頻段分成8個信道,就是將2g數據轉成8路250mhz的數據,所以取任一路信道輸出時,就能夠實現8倍的降數據率。對于(圖3.13)結構而言,所有的濾波和頻移運算都是在抽取操作之前進行,濾波和頻移運算都是需要大量的乘法和加法運算,這樣現實中不利于信號的實時運輸,根據等效性定理,我們可以將抽取操作提前到濾波和和移頻運算前面,就能大量減輕系統的運算量,降低后續信號處理的負擔。 圖3.13 頻率信道化的低通實現4 圖3.14 頻率信道化后的抽取43.4、多相濾波結構的作用 多相濾波技術在軟件無線電的數字信道化接收機領域有著廣泛的應用,是該領域的關鍵技術核心。多相濾波結構,能夠利用多個階數較低的
34、濾波來實現階數高的濾波,每個分支濾波器處理的數據是原來速率的i/d,同時,高速濾波也能夠起到抑制鄰道干擾和鏡像干擾的作用。它的設計直接影響著數字信道化接收機的整體性能。多相濾波器獨特的優點同樣適用于電子對抗領域,例如通信電子戰跳頻信號的快速搜索或者雷達對抗中信號全概率截獲等方面。近幾年,國內外的電子戰行業中的研究所都開始將多相濾波器應用在電子戰偵察接收機得研制中,并且取得一定的研究成果。四、gnuradio的多相濾波器系統設計和實現這一章的內容比較亂而且少,要重新整理。按以下目錄重新整理和改寫:4.1 gnuradio的多相濾波器設計方案的整體思路(1)結合圖4.1,講清楚多相濾波器設計方案要
35、實現的目的是什么。圖4.1應該是個測試多相濾波器的設計方案,要敘述其測試的基本思路是什么,要得到什么結果。(2)這個測試設計方案用到了什么組件,各個組件的基本作用要大致描述;(3)詳細介紹測試文件的實現代碼和設計思路。4.2 gnuradio多相濾波器的實現方法敘述gnuradio多相濾波器的具體實現方法,可以整合原文中的4.1和4.3進行展開說明。這部分是論文的重點,要盡量詳細。4.1、gnr radio多相濾波器的基本組建多相濾波器組是一個很強大的過濾工具,可以有效地執行多速率信號處理任務,而在gnu radio中具有一組多相濾波器組中使用的各種應用模塊,下面對這幾個模塊進行簡單的敘述下面
36、介紹的模塊在4.3節的哪些地方用到?要有所體現,不然單獨羅列在這里沒什么意義。l gr-pfb-decimator-ccf :多相抽取濾波器,這一個組建可以在一個信號流當中,通過多相濾波器組進行整數倍的降采樣(抽取),第一個數是整數,指定要抽取多少,第二個輸入端是一個矢量浮點,是源型濾波器的抽頭數,第三個是指定要提取哪一個通道。使用時,我們可以在多相濾波器的通道中選擇任何一個去進行抽取操作,最后的輸出信號將是從通道中抽取后剩下的信號。需要注意的是,濾波器的抽頭數應該根據抽取之前的采樣率。l gr-pfb-interpolator-ccf:多相內插濾波器,功能與抽取器相反,信號流通過執行多相濾波
37、器組上的整數倍上采樣(內插)。系數的設置和抽取器相似。l gr-pfb-channelize-ccf:多相濾波器組的信道化,這個模塊需要復數型輸出和m個帶寬相等的信道,而每個信道所得到新的采樣率是輸入采樣率除以信道數m。需要注意的是濾波器的輸出情況,其中過采樣率等于實際輸出的采樣率除以正常輸出的采樣率,例如fs=9000hz的9個信道,正常的速率是9000/9=1000hz ,那么允許的過采樣率是9/9、9/8、9/7 9/2、9/1,其中的9/1的過采樣率下的輸出采樣速率為9000hz,正常是1000hz,而9/5是1800hz。l gr-pfb-resampler-ccf:多相濾波器的任意
38、重采樣,重采樣率可以是任意的實數r,重采樣是通過構造內插率為n的過濾器,然后再進行計算出d(抽取率):d=n/r,這樣,我們就可以根據n和d合理進行重采樣,注意n/d要接近輸入率r,過程中產生的誤差是兩個濾波器的插值點之間的量化誤差,過濾器使用數量n越大,噪聲越小,我們可以設置過濾器數量的大小來確定量化誤差,一般默認為32個濾波器。4.2、基于gnu radio設計多相濾波器設計流程圖信號源本地振蕩器波形類型:正弦波采樣率:160khz振幅:1音頻頻率:8khz信號處理信道化選擇信道數: n=5信道選擇器數目:m=10帶寬:8khz過渡帶寬:1.6hz窗函數:布-哈函數濾波器:fir低通濾波器
39、信宿矢量信宿音頻頻率:8khz每個信道器速率:16khz圖4.1 流程圖4.3、相濾波器的設計對于gnu radio來說,一個完整的應用程序包括了信源、信宿和信號處理模塊,并將它們逐個連接起來。本設計也是如此,但在進入信號源模塊之前,需要對python語言中特定程序代碼進行交代解析。1、gnu radio 程序代碼第一行基本都是#!/usr/bin/env python這一行放在腳本的開頭處并且給此文件一個可執行模式,這樣就可以直接執行python腳本文件。2、導入需要的模塊(module)l python語言中需要導入模塊(module),一個模塊包括了可執行的函數的定義和聲明,每一個模塊都
40、有自己的全局變量表,所有在模塊內定義的函數都能夠使用它。我們作為模塊的使用者,就可以利用“modname.itemname”來使用模塊的函數和全局變量。注意,這里的“itemname”可以是成員變量,也可以是成員函數。l 用“import”命令是在模塊中導入其他模塊,一般是把“import”放到模塊的前面,這樣的導入操作是很靈活的,我們可以導入一個模塊,一個package或者是模塊中的定義。例如“import packagea.moduleb”或者“from packagea impot module b”。當使用“from package import item”時,這里的“item”可以是
41、子package,也可以是package模塊,或者是其他在模塊中定義的名字,例如函數、類等。接下來對模塊的介紹l “gr”是gnuradio中重要的一個子package,這也是gnu radio軟件的核心,“流圖(flow graph)”類的類型是在gr中定義的,這對安排信號流向是很重要的。l “eng notation”模塊能夠給使用者標記帶來方便,它是按照工程慣例來賦一些常量字符或者是常量字。l “blks2”一般幾乎是空的,常用于調制,解調和一些額外的濾波代碼重采樣或者壓縮等l “math,time,sys,scipy,fftpack”都是python或者wxpython的內置模塊或者s
42、ubpackage,而不是gnu radio的一部分。最后,需要強調的是,以上導入模塊包含了可執行語句還有函數和類的定義,模塊被導入后那些可執行的語句就會立即執行。也就是說,導入這些packages和模塊后,就能夠初始化程序的很多變量,模塊和類。本設計中需要導入模塊的代碼如下:#!/usr/bin/env python from gnuradio import gr, eng_notation from gnuradio import blksfrom gnuradio.eng_option import eng_option from optparse import optionparser
43、import math, time, sys, scipy, pylab from scipy import fftpack3、程序所需要的模塊導入完畢后,開始對信號源進行設置,根據設計要求,通過本地振蕩器產生的信號源波形類型是正弦波,設定的采樣率為160khz,振幅是1.0,音頻頻率是8khz。具體步驟說明如下:(1)、頂層模塊的定義:class fmtx(gr.hier_block2)(2)、函數初始化:“ _init_”函數在任何類中都很重要,定義一個類后,例如“gr.hier_block2.”,我們可以用這個類去初始化一個實例,“_init_”可以在已知初始化階段去創建一個對象,那么類
44、初始化就會自動為新創建的類實例去引用_init_函數。 def _init_(self, lo_freq, audio_rate, if_rate):這個語句初始化了函數_init_的四個變量,一般來說,所有函數的第一個變量稱作self,它對python沒有什么意義,但是,如果函數要調用其他函數是,就需要用self參量的函數屬性,如“self.connect()”。_init_函數第一步要調用初始化函數“gr.hier_block2.”。(3)、使用“gr.sig_source_c”去產生信號源,其中前綴c表示信號源的類型是復數型,“gr.gr_sin_wave”決定了信號源波形類型為正弦波。
45、(4)、mixer = gr.multiply_cc ()定義了輸入輸出數據流的數據類型都是復數型的乘法器。4、當信號源設定結束后,就開始對信號源進行信道化處理,也就開始了流程框圖的信號處理模塊。在這個模塊,將進行信道劃分,然后將信號源均勻地劃分為若干段,然后分別移到零中頻,在通多多個低通濾波器組成的多相濾波器進行濾出。具體的實施步驟如下:(1)通過信號源的基帶和中頻頻率的情況設置信道的個數,這里設置為5個信道。信道的間隔為16khz,將頻率也分成5份,然后根據不同頻率組建一組信號,然后列出。(2)設計信道選擇器。信道選擇器(這里指過濾器)的數量為10個,信道帶寬為8khz,過渡帶寬是1.6k
46、hz,每個過濾器的采樣速率是整體的采樣速率除以過濾器的數量。需要注意以下代碼:l self._taps = gr.firdes.low_pass_2(1, self._if_rate, bw, t_bw, attenuation_db=100,window=gr.firdes.win_blackman_harris) 這是利用加窗處理方法設計一個低通濾波器,其中第一個輸入是過濾器整體增益,采樣率,帶寬和過渡帶寬這些都前面都有設置參數,而過渡帶寬和所需的阻帶寬度的歸一化寬度就是設置該濾波器組的抽頭數量,并且,抽頭越多,濾波器的衰減就更多,這里指定使用帶外衰減att。濾波器的窗函數是采用布-哈窗(
47、布萊克曼-哈里斯窗)l tpc = math.ceil(float(len(self._taps) / float(self._m) 計算我們本身信息中每個通道的抽頭數量。l self.pfb = blks2.pfb_channelizer_ccf(self._m, self._taps) 構建信道化多相濾波器(輸出輸入為復數型,抽頭數為浮點型)這可以簡化接口,并通過允許單一的輸入數據流連接這個模塊,然后,它會輸出一個數據流給每個通道。l 這self.connect(self.channel, self.pfb):連接函數(connect)是用于流圖連接模塊,在“gr.basic_flow_g
48、raph”中定義,該函數能夠接受兩個或者兩個以上的參量,如果有兩個以上的block做為connect()的參量,那么該函數將會把它們一個接一個成功地連接起來。5、最后,為多相濾波器創建一個文件信宿然后將他們連接起來。gr.vector_sink_f():是創建一個矢量信宿,數據類型是浮點型的。6、最后,需要繪制傳輸信號,繪制每個通道的輸出,需要注意的是要適當地刪除開始時的瞬間狀態和結尾的瞬間狀態,因為如果不刪除的話可能在拐彎處會出現誤差。7、程序的最結尾處if _name_ = "_main_":每一個模塊都有一個屬性“_name_”來指明當前模塊的名字,當導入一個模塊的時
49、候,就會在模塊名稱空間去創建“_name_”來存放模塊文件的名稱,如果直接運行模塊而不導入模塊時,模塊的名稱空間就是全局的,python自動將“_name_”設為"_main_",這樣if后面的代碼就會生效。五、實驗結果這個設計仿真的參數:采樣率160khz,10個信道,每一個輸出了16khz的帶寬和采樣率,抽頭數為455個,每個信道有46個抽頭。實驗結果分析:當信號源的信號數據采樣率fs,本設計的多相濾波器中的數字濾波器都是位于抽取器的后面,因此,每一個濾波器要處理的數據從源信號的數據率fs就變成了fs/d (d是信道數,這里是10),也就是說,濾波是在降速后才進行的,而且每一支路由原來的n階(455)變成現在的n/d (46)階。這樣,濾波器的運算速度就從原來的fs*n,變成了(fs*n)/d2,極大地減少濾波器的運算,特別是信道數越大,減少越明顯。信號濾波過后的帶寬變成2/d,這時可以對其進行d倍的抽取,那就可以獲得低采樣率的信號,但我們改進為先重采樣再濾波,這樣我們就會在減小帶寬之前降低采樣
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年體育休閑廣場運動項目引進與推廣研究報告
- 藥品藥店安全管理制度
- 藥品銷售異常管理制度
- 藥店醫保網絡管理制度
- 藥店消毒制度管理制度
- 萊西中學資產管理制度
- 設備臺賬資料管理制度
- 設備客戶報修管理制度
- 設備更新維護管理制度
- 設備申請購買管理制度
- 中國血脂管理指南理論知識考核試題及答案
- 教考結合·必修上冊文言知識梳理- 備考
- 血管活性藥物靜脈輸注護理
- 2024年機關事業單位工人汽車駕駛員高級技師國家題庫練習題答案
- 村級積分制管理
- Nikon尼康D3100中文說明書
- 國家開放大學2024春《1494員工勞動關系管理》期末考試真題及答案-開
- DBJ∕T 13-234-2024 不發火建筑地面應用技術標準
- 2024年新疆中考地理真題卷及答案
- 人教版初三物理總復習電學專題復習教學設計
- 項目風險記錄及跟蹤表
評論
0/150
提交評論