<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于FPGA的數(shù)字正交混頻變換算法的實現(xiàn)

          基于FPGA的數(shù)字正交混頻變換算法的實現(xiàn)

          作者: 時間:2007-06-27 來源:網(wǎng)絡(luò) 收藏

          0 引 言

          傳統(tǒng)的正交下變頻是通過對模擬I、Q輸出直接數(shù)字化來實現(xiàn)的,由于I、Q兩路模擬器、模擬器本身的不一致性、不穩(wěn)定性,使I、Q通道很難達(dá)到一致,并且零漂比較大,長期穩(wěn)定性不好,不能滿足高性能電子戰(zhàn)設(shè)備的要求。為此,人們提出了對中頻信號直接,經(jīng)過混頻來實現(xiàn)正交數(shù)字下變頻的方案,這種下變頻的方法可以實現(xiàn)很高精度的正交混頻,能滿足高鏡頻的要求。采用可編程器件FPGA對該算法流程進(jìn)行實現(xiàn),能滿足在高率下的信號時實處理要求,在電子戰(zhàn)領(lǐng)域中有著重要的意義。

          1 數(shù)字正交混頻變換原理

          所謂數(shù)字正交混頻變換實際上就是先對模擬信號x(t)通過A/D采樣數(shù)寧化后形成數(shù)字化序列x(n),然后與2個正交本振序列cos(ω0n)和sin(ω0n)相乘,再通過數(shù)字濾波來實現(xiàn),如圖1所示。

          為了能夠詳細(xì)地闡述該算法的FPGA實現(xiàn)流程,本文將用一個具體的設(shè)計實例,給出2種不同的實現(xiàn)方法(不同的FPGA內(nèi)部模塊結(jié)構(gòu)),比較其優(yōu)劣,最后給出結(jié)論。該設(shè)計是對輸入信號為中頻70 MHz,帶寬20 MHz的線性調(diào)頻信號做數(shù)字正交混頻變換,本振頻率為70 MHz(即圖1中的2個本振序列分別為cos(2π70Mn)和sin(2π70Mn)),將其中頻搬移到0 MHz,分成實部(real)和虛部(imag)2路信號。然后對該2路信號做濾波,最后分別做1/8抽取輸出。結(jié)構(gòu)如圖2所示。

          根據(jù)其算法流程在MATLAB下進(jìn)行仿真(低通濾波器用切比雪夫一致逼近法進(jìn)行設(shè)計,過渡帶為10M~45M,階數(shù)為23),最后2路輸出波形如圖3所示。

          2 基于FPGA的常規(guī)實現(xiàn)方法

          首先用A/D芯片對輸入信號進(jìn)行實時采樣,將數(shù)據(jù)量化為12位有符號數(shù)(最高位為符號位)。對于imag和real兩路中的其中一個通道而言,乘本振序列模塊可用一個16×16的有符號器及一個32×16位的只讀ROM實現(xiàn)。因為時鐘頻率為200 MHz,對于序列cos(2π70Mn)和sin(2π70Mn)只需要在ROM中存20個點就可以成為一個周期,固ROM的數(shù)據(jù)深度選32,寬度選16。濾波模塊實質(zhì)是一個“乘累加”結(jié)構(gòu),23階的LPF須配置24個器和20個加法器。最后抽取只需在濾波模塊輸出后每8個點取一個點。

          根據(jù)這樣的流程在ISE下編寫代碼,并用Modelsim仿真,所得波形如圖4所示。

          圖4中共有4路輸出波形,其中上2路分別為濾波后抽取之前的實部和虛部的輸出,數(shù)據(jù)頻率為200 MHz;而下面2路分別為1/8抽取后的實部和虛部的輸出,數(shù)據(jù)頻率為200/8=25 MHz。

          對上述實現(xiàn)方法的評價:該方法完全按照算法的流程,結(jié)構(gòu)比較清晰,容易理解,也能夠最后得到理想的波形。但具有一定的弊端,主要有以下2點:(1)資源耗費太大,該種實現(xiàn)方式實部,虛部通道各需要24個乘法器和20個左右的加法器;(2)難以滿足信號實時處理要求的運算速度。對于該方法,流程中所需要的乘法器和加法器都必須工作在200 MHz時鐘下,這對于現(xiàn)有的硬件設(shè)備(如VertexⅡ)來講是難以實現(xiàn)的,故需要采用更優(yōu)化的實現(xiàn)方法,即下面所要介紹的多相濾波結(jié)構(gòu)。

          3 運用多相濾波結(jié)構(gòu)進(jìn)行設(shè)計

          對于上面所述的常規(guī)實現(xiàn)方法,之所以在合理性上存在一定弊端,歸其原因是將FPGA大量的資源和運算周期都浪費在了不必要的運算點上。因為最后要得到的是時域信號的1/8抽取,即每8個點只保留一個點。因此大可以去尋找一種辦法使得FPGA只計算需要的點即抽取后的點,直接以25 MHz的速度輸出,這樣既可以滿足運算速度的要求,又能節(jié)省資源,這樣的方法就是多相濾波的方式。

          設(shè)數(shù)字濾波器(諸如內(nèi)插,抽取器中的低通濾波器)的沖擊響應(yīng)為h(n),則其Z變換H(z)定義為:

          對求和式展開可重寫為:

          式(3)即為數(shù)字濾波器件H(z)的多相濾波結(jié)構(gòu),將其運用于抽取器,并且注意到抽取器的等效關(guān)系,則本設(shè)計FPGA內(nèi)部(其中一個通道)可用圖5所示的結(jié)構(gòu)進(jìn)行設(shè)計。

          如圖5所示,在200 MHz的時鐘頻率下,輸入的采樣數(shù)據(jù)以8點為周期依次打入8個通道,這樣每個通道中的數(shù)據(jù)周期為200/8=25 MHz。數(shù)據(jù)進(jìn)入通道后首先要乘以正交系數(shù),在本設(shè)計中正交sin和cos表各是以20個點為一個周期,必須按照一定的等效規(guī)律將20個點排到8個通道中去,考慮到5×8=40正好是2個周期,可令N=0~39,將所對應(yīng)的40個正交系數(shù)分成5組用狀態(tài)機(jī)的方式打入8個通道中去,然后做乘累加。這里仍然用長度為24的濾波器,也要按照一定的規(guī)律將24個濾波系數(shù)(3個一組,見圖5)排列到8個通道中去,原則是要保證在任何時刻8個通道的累加和要完全等效于原方法流程中濾波后的1/8抽取(可以驗證,上面的系數(shù)排列方式是滿足這一要求的)。很顯然,這樣做后每個通道的時鐘頻率都是原來頻率的1/8,并且數(shù)據(jù)是完全并行處理的。乘法器和加法器都工作在25 MHz時鐘頻率下,可以很容易實現(xiàn),且程序更加高效和科學(xué)。

          4 進(jìn)一步優(yōu)化的方法

          采用了多相濾波方式后,每個通道需要4個乘法器。一般情況下,乘法器的延遲大概是在7~10 ns。而在25 MHz時鐘頻率下,完全可以將乘法器進(jìn)行復(fù)用,即在40 ns周期內(nèi)完成4次乘法運,算包括1次乘正交系數(shù),3次乘濾波系數(shù)。這樣每個通道只需要一個乘法器就可以。于是整個設(shè)計中所需要的乘法器可以降為16個(實部、虛部各8個),加法器則需要46個(各23個)。

          5 最終仿真波形

          根據(jù)上面的多相濾波思想,并采用乘法器復(fù)用,在ISE下編寫VHDL代碼,用Modelsim仿真得到最終的波形,如圖6所示。

          用Synplify進(jìn)行綜合布線后得到的資源報告如下(選用的器件是VertexⅡxc2v1000):


          6 結(jié)束語

          本文提出的基于FPGA的數(shù)字正交混頻下變換的實現(xiàn)方法,對比了2種不同的設(shè)計方案以及相應(yīng)的FPGA內(nèi)部結(jié)構(gòu),分析了各自利弊;最后,著重介紹了其中效率較高并且較為科學(xué)的多相濾波結(jié)構(gòu)。在做實時信號處理時,該結(jié)構(gòu)能夠使資源優(yōu)化,并且滿足運算速度的要求,實現(xiàn)起來也不復(fù)雜,在實際工程中有很強(qiáng)的運用價值。



          關(guān)鍵詞: 采樣 乘法 低通 抑制

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();