• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于FPGA的高速高階FIR濾波器的頻域改進(jìn)方法

    2016-04-12 00:00:00郭曉偉陳鐘榮夏利娜
    現(xiàn)代電子技術(shù) 2016年11期

    摘 要: 為了提高現(xiàn)場(chǎng)可編程門陣列(FPGA)設(shè)計(jì)的超高階有限單位沖擊響應(yīng)(FIR)濾波器對(duì)數(shù)據(jù)進(jìn)行實(shí)時(shí)處理,提出了一種改進(jìn)的頻域設(shè)計(jì)FIR濾波器方法。針對(duì)頻域處理卷積運(yùn)算時(shí),由于補(bǔ)零耗時(shí)造成數(shù)據(jù)無法實(shí)時(shí)處理這一問題進(jìn)行了改進(jìn)。首先將長序列分成固定長度的子序列,將原來利用一個(gè)(快速傅里葉變換)FFT IP處理子序列的常規(guī)方案改為利用兩個(gè)FFT IP進(jìn)行運(yùn)算,通過控制子序列輸入兩個(gè)FFT IP的時(shí)間差,便可以利用重疊相加法的原理,將子序列卷積之后的結(jié)果直接相加,便可得到卷積結(jié)果,從而達(dá)到信號(hào)實(shí)時(shí)處理的目的。實(shí)例仿真計(jì)算表明,提供的頻域?qū)崿F(xiàn)方法不僅能降低 FPGA資源消耗,還能夠消除現(xiàn)有技術(shù)中的補(bǔ)零延遲現(xiàn)象,提高了處理速度。

    關(guān)鍵詞: FIR濾波器; 快速傅里葉變換; FPGA; 頻域改進(jìn)方法

    中圖分類號(hào): TN713?34 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2016)11?0055?04

    Abstract: To implement the real?time data processing of using ultrahigh?order finite impulse response (FIR) filter designed with field?programmable gate array (FPGA), an improved method of FIR filter designed in frequency domain is put forward. The problem that the data can′t be processed in real time, caused by the zero padding time consumption, was solved for processing the convolution operation in frequency domain. A long sequence is divided into the subsequences with fixed length, and then the subsequence is processed with two FFT (fast Fourier transform) IPs instead of the conventional scheme with one FFT IP. By controlling the time difference between the two input FFT IPs, the principle of overlapping addition method can be utilized to add the results to obtain the convolution result after subsequences convolution, thus real?time processing of the signal is achieved. The instance simulation results show that the proposed frequency domain implementation method can reduce the FPGA resource consumption, eliminate the zero padding delay in the available technologies, and improve the processing speed.

    Keywords: FIR filter; fast Fourier transform; FPGA; frequency domain improvement method

    0 引 言

    在數(shù)字信號(hào)處理系統(tǒng)中,F(xiàn)IR(Finite Impulse Response)濾波器是最基本的單元,由于其具有嚴(yán)格的線性相頻特性,穩(wěn)定的系統(tǒng),F(xiàn)IR濾波器成為雷達(dá)、視頻等信號(hào)處理的主要手段[1] 。

    目前基于FPGA的FIR濾波器實(shí)現(xiàn)方案主要有三種:時(shí)域上基于乘法器結(jié)構(gòu)的FIR濾波器和基于分布式算法的FIR濾波器,頻域上基于快速傅里葉變換(Fast Fourier transform,F(xiàn)FT)的FIR濾波器。隨著模擬數(shù)字轉(zhuǎn)換器(Analog?to?digital Converter,ADC)的采樣速率不斷提高,為了實(shí)現(xiàn)信號(hào)的實(shí)時(shí)處理,對(duì)FIR濾波器的設(shè)計(jì)有著極高的要求,類似于FIR濾波器結(jié)構(gòu)的脈沖壓縮技術(shù),F(xiàn)IR濾波器在FPGA設(shè)計(jì)中不僅需要考慮高速的處理速度,還需要考慮高達(dá)千階的FIR濾波器所消耗的資源。

    對(duì)于千階甚至萬階的FIR濾波器,基于乘法器結(jié)構(gòu)的FIR濾波器和基于分布式算法的FIR濾波器來說消耗的資源也是巨大的。基于FFT算法的FIR濾波器相對(duì)于前兩種濾波器,在設(shè)計(jì)這種超高階的濾波器在資源上有著絕對(duì)的優(yōu)勢(shì),只是由于其實(shí)現(xiàn)的特點(diǎn),傳統(tǒng)的設(shè)計(jì)方案可能達(dá)不到像前兩種濾波器一樣流水線的處理速度。本文針對(duì)該不足,對(duì)傳統(tǒng)設(shè)計(jì)進(jìn)行改進(jìn)。

    本文通過XILINX virtex4 xc4vfx12 FPGA 進(jìn)行設(shè)計(jì),F(xiàn)FT計(jì)算使用的是內(nèi)置FFT IP核,其具有很高的靈活性、容易擴(kuò)展并且設(shè)計(jì)可以復(fù)用的特點(diǎn)[2]。首先介紹基于FFT法的FIR濾波器的基本原理并給出一個(gè)傳統(tǒng)的設(shè)計(jì)方案;接著,給出一個(gè)改進(jìn)的FIR濾波器的結(jié)構(gòu)與設(shè)計(jì)方案;然后,給出在FPGA中的具體實(shí)現(xiàn)方法并進(jìn)行仿真,最后,本文將仿真結(jié)果與Matlab仿真進(jìn)行比較說明這一設(shè)計(jì)的可行性,并提出缺點(diǎn)和需要改進(jìn)的地方。

    1 基于快速傅里葉變換的FIR濾波器原理[3]

    FIR濾波器的本質(zhì)就是有限長序列與無限長序列的線性卷積。頻域?qū)崿F(xiàn)FIR的方法跟時(shí)域的不同之處在于實(shí)現(xiàn)卷積的方式不同,時(shí)域上的卷積相當(dāng)于頻域相乘,即:

    如圖1所示,F(xiàn)PGA實(shí)現(xiàn)卷積與理論不同的是,需要對(duì)數(shù)據(jù)和系數(shù)分別補(bǔ)零,序列長度為長度為需要取分別補(bǔ)和個(gè)零變成兩個(gè)長度為的序列,然后分別進(jìn)行點(diǎn)的FFT運(yùn)算,運(yùn)算的值相乘再進(jìn)行IFFT運(yùn)算,便可得到卷積之后的結(jié)果。但是在一般情況下需要處理的信號(hào)很長,如果當(dāng)作是有限長序列的卷積的話,需要FFT和IFFT點(diǎn)數(shù)很大,而硬件的處理能力有限,不能對(duì)過長的數(shù)據(jù)進(jìn)行FFT。所以一般將數(shù)據(jù)進(jìn)行分段成多個(gè)長度為的有限長子序列集那么可以表示為:

    式中,這樣所求的線性卷積分成了無限個(gè)長度均為的短長度線性卷積的和。其中和之間會(huì)有一個(gè)范圍為的個(gè)樣本重疊。這就是重疊相加法在分段卷積中的應(yīng)用。

    2 常規(guī)的FFT法FIR濾波器在FPGA中的設(shè)計(jì)

    基于FPGA常規(guī)的FFT方法設(shè)計(jì)的FIR濾波器,先確定FIR濾波器的階數(shù)和需要對(duì)輸入信號(hào)分段的長度M,從而確定FFT所需要的點(diǎn)數(shù)L(一般情況下FFT的點(diǎn)數(shù)n為正整數(shù))。輸入的信號(hào)雖然為,但是與原理的不同點(diǎn)在于FFT方法處理的序列并不是連續(xù)的,即在序列分段后對(duì)每個(gè)子序列補(bǔ)零成為L長度的新的子序列進(jìn)行處理。實(shí)際處理的序列如下:

    設(shè)計(jì)中使用的FFT模塊使用產(chǎn)品自帶的FFT IP 或自己設(shè)計(jì)的FFT IP,使其在流水線模式下工作,這樣可以對(duì)序列進(jìn)行連續(xù)的FFT運(yùn)算。FFT IP核輸入信號(hào)為復(fù)信號(hào),輸入的信號(hào)可以為IQ信號(hào),也可以為實(shí)信號(hào),此時(shí)虛部為0。如圖2所示,信號(hào)Signal在一定速率下傳入FIFO,因?yàn)镕FT IP核每個(gè)時(shí)鐘只能輸入一個(gè)數(shù)據(jù),在做信號(hào)FFT時(shí),先從FIFO輸出長度為M的信號(hào),此時(shí)需要M個(gè)時(shí)鐘周期;再關(guān)閉FIFO進(jìn)行長度為N-1的補(bǔ)零,需要 N-1個(gè)時(shí)鐘。所以真正處理數(shù)據(jù)的有效速率只有輸入速率的,導(dǎo)致FFT實(shí)現(xiàn)FIR的方法不能實(shí)現(xiàn)流水線操作。實(shí)際應(yīng)用中,為了提高效率,在資源夠用的情況下,選取FFT能處理的最大點(diǎn)數(shù),即在階數(shù)M一定的情況下,使數(shù)據(jù)長度N盡可能大,從而提高有效的處理時(shí)間。但是分段卷積出來的數(shù)據(jù)需要先緩存,等待下一段卷積的數(shù)據(jù)進(jìn)行數(shù)據(jù)疊加才能獲得最后的卷積結(jié)果,從而再一次的降低處理效率。這對(duì)處理要求較高,系統(tǒng)無法做到實(shí)時(shí)處理,降低了系統(tǒng)的整體性能。

    3 改進(jìn)的FFT法FIR濾波器在FPGA中的設(shè)計(jì)

    改進(jìn)FIR濾波器設(shè)計(jì)原理在分割的長度上做了特定的選取,選取FFT點(diǎn)數(shù)的一半,并將序列分為第奇數(shù)個(gè)和第偶數(shù)個(gè)兩序列,分別用兩個(gè)FFT IP進(jìn)行FFT運(yùn)算。假設(shè)FFT的點(diǎn)數(shù)為(為正整數(shù)),F(xiàn)IR濾波器階數(shù)當(dāng)時(shí),系數(shù)后補(bǔ)零成長度。選取分割數(shù)據(jù)的長度為那么FFT的點(diǎn)數(shù)也可以表示為首先將長度為的系數(shù)補(bǔ)個(gè)零成為長度為的系數(shù)序列再將信號(hào)按固定長度進(jìn)行分段,將分段的子序列補(bǔ)長度的零成為長度的子序列。將這些子序列按順序分為奇數(shù)序列和偶數(shù)序列兩個(gè)子序列集,即:

    其中從式(11)可以看出輸出結(jié)果直接相加便為卷積的結(jié)果,結(jié)果與原理式(4)一致。對(duì)于每一個(gè)子序列來說卷積輸出的延時(shí)相同,因?yàn)閮蓚€(gè)序列輸入相差個(gè)時(shí)鐘,輸出也相差個(gè)時(shí)鐘,而卷積輸出序列的長度為兩個(gè)子序列集輸出的結(jié)果相加直接滿足重疊相加原理。通過上述原理進(jìn)行改進(jìn)之后的FPGA設(shè)計(jì)結(jié)構(gòu)圖如圖3所示。

    本設(shè)計(jì)使用的FFT IP為Xilinx FFT IP核。改進(jìn)設(shè)計(jì)中首先通過CoeforSignal信號(hào)控制輸入的Signal是系數(shù)還是信號(hào),這樣設(shè)計(jì),一是可以減少信號(hào)口;二是系數(shù)可以比信號(hào)更早的進(jìn)行FFT運(yùn)算,從而結(jié)果可以更早的存入RAM中,RAM使用寫優(yōu)先模式,信號(hào)序列FFT處理之后的結(jié)果可以直接尋址找到系數(shù)FFT結(jié)果進(jìn)行復(fù)數(shù)相乘,不需要等系數(shù)FFT完全結(jié)束再進(jìn)行尋址,從而節(jié)省時(shí)間與資源。Signal輸入為信號(hào)時(shí),第一組長度為N的數(shù)據(jù)進(jìn)入第一個(gè)FFT IP,然后數(shù)據(jù)輸入完成后再補(bǔ)個(gè)0。在第一個(gè)FFT補(bǔ)零的期間,信號(hào)進(jìn)入第二個(gè)FFT IP。同樣,第二個(gè)FFT補(bǔ)零期間,數(shù)據(jù)進(jìn)入第一個(gè)FFT,從而可以實(shí)現(xiàn)無間斷的FFT。兩段數(shù)據(jù)輸入相差的時(shí)鐘始終為個(gè)時(shí)鐘周期。具體的輸入數(shù)據(jù)時(shí)序圖如圖4所示。

    如圖4所示,輸入的信號(hào)可以不間斷輸入,分段成兩個(gè)子序列進(jìn)行前期處理,F(xiàn)FT IP選擇的是流水線模式,開始信號(hào)每置高一個(gè)周期便可處理一次L點(diǎn)的FFT。FFT一開始輸出的結(jié)果便可以尋找系數(shù)FFT的結(jié)果,對(duì)應(yīng)相乘后輸入到IFFT IP,IFFT IP輸出的結(jié)果便為分段卷積的結(jié)果,信號(hào)分段卷積完成之后的時(shí)序圖如圖5所示。

    如圖5所示,因?yàn)閿?shù)據(jù)具有相同的延時(shí),所以具有嚴(yán)格的時(shí)序。輸入的第一個(gè)分段信號(hào)與第二個(gè)分段信號(hào)分別進(jìn)入兩個(gè)FFT時(shí)相差N個(gè)時(shí)鐘周期,因?yàn)樘幚頂?shù)據(jù)為流水線操作,那么兩段信號(hào)卷積出來的有效信號(hào)也相差N個(gè)時(shí)鐘。兩個(gè)輸出信號(hào)相加就是所需的卷積結(jié)果。根據(jù)重疊相加法的原理,和之間會(huì)有一個(gè)范圍為的個(gè)樣本重疊,因?yàn)槟敲粗丿B范圍為 ,重疊長度剛好為卷積輸出長度的一半,那么前一個(gè)序列的后N個(gè)值與后一個(gè)序列的前N個(gè)值相加就為卷積出來的結(jié)果。如圖5所示,此次設(shè)計(jì)的系統(tǒng),兩個(gè)FFT分別輸出分段卷積的數(shù)據(jù),且后一個(gè)卷積與前一個(gè)卷積剛好相差N個(gè)時(shí)鐘。因?yàn)榉侄尉矸e長度為2N,前N個(gè)數(shù)據(jù)與前一個(gè)分段卷積相加,后N個(gè)數(shù)據(jù)與后一個(gè)分段卷積相加。這樣重疊相加時(shí)就不需要多余的延時(shí),便可得到卷積的結(jié)果,從而達(dá)到信號(hào)實(shí)時(shí)處理。

    這種改進(jìn)后的結(jié)構(gòu)主要是根據(jù)重疊相加法的特點(diǎn)和FFT IP的特點(diǎn)選取特定的分段長度設(shè)計(jì)出來的。相比常規(guī)的設(shè)計(jì),可以看出改進(jìn)的方法大大降低了RAM資源的使用,完全的流水線操作實(shí)現(xiàn)了實(shí)時(shí)處理,雖然多使用了一個(gè)FFT IP和IFFT IP,但是相對(duì)為了提高效率必需提高FFT點(diǎn)數(shù)的常規(guī)方法,節(jié)省了許多資源。

    4 改進(jìn)方法在FPGA中的實(shí)現(xiàn)與仿真驗(yàn)證

    為了驗(yàn)證改進(jìn)方法在實(shí)際應(yīng)用中的正確性,將設(shè)計(jì)完成的仿真得到的結(jié)果與Matlab計(jì)算得到的結(jié)果進(jìn)行對(duì)比。設(shè)計(jì)使用的是Xilinx的virtex4 xc4vfx12 FPGA開發(fā)板,硬件設(shè)計(jì)平臺(tái)為ISE 14.4,F(xiàn)PGA仿真平臺(tái)ModelSim SE 10.1c。因?yàn)殚_發(fā)板資源有限,設(shè)計(jì)的信號(hào)與系數(shù)位寬都為8位,階數(shù)最高為9位的FIR濾波器,輸入的時(shí)鐘為200 MHz,即可以對(duì)200 MS/s的數(shù)據(jù)進(jìn)行實(shí)時(shí)處理。設(shè)計(jì)的結(jié)構(gòu)如圖3所示,其中使用的FFT點(diǎn)數(shù)為16點(diǎn)。后布局布線仿真如圖6所示。

    因?yàn)殡A數(shù)較小,所以只在數(shù)值上進(jìn)行仿真比較。如圖6所示,當(dāng)data_or_coef置高時(shí),輸入的是系數(shù),當(dāng)置低時(shí),輸入的是數(shù)據(jù)。FFT IP核在進(jìn)行IFFT運(yùn)算時(shí),IFFT運(yùn)算的結(jié)果會(huì)乘以點(diǎn)數(shù)即16,所以進(jìn)行Matlab計(jì)算時(shí)會(huì)將輸出的結(jié)果乘以點(diǎn)數(shù)16與上面的時(shí)序進(jìn)行對(duì)比。Matlab運(yùn)算的結(jié)果如圖7所示。

    FPGA輸出的信號(hào)為復(fù)信號(hào),因?yàn)檩斎氲男盘?hào)為實(shí)信號(hào),那么輸出的信號(hào)也為實(shí)信號(hào),即虛部出來的數(shù)據(jù)為0,實(shí)部輸出的便為卷積結(jié)果。而仿真結(jié)果虛部有值,但是很小可以近似為0,實(shí)部結(jié)果與Matlab運(yùn)算趨勢(shì)大體一致,但是數(shù)值上卻有一定的誤差。主要原因是FPGA計(jì)算FFT和IFFT過程中,由于精度的要求進(jìn)行了數(shù)據(jù)的截位,造成了誤差。由于硬件客觀條件的限制,這種誤差是不可避免的。如圖8所示,可以看出,時(shí)鐘達(dá)到了200 MHz,所以可以認(rèn)定設(shè)計(jì)結(jié)果滿足要求。

    5 結(jié) 語

    根據(jù)以上討論可以看出,這種改進(jìn)的結(jié)構(gòu)解決了頻域上實(shí)現(xiàn)FIR濾波器速度上的問題,并且比常規(guī)的結(jié)構(gòu)更加節(jié)省資源,對(duì)于系數(shù)來說,設(shè)計(jì)的結(jié)構(gòu)不僅可以隨時(shí)改變系數(shù)值還可以改變系數(shù)的長度。但是這種方法在FPGA實(shí)現(xiàn)中輸出的數(shù)據(jù)與理論值會(huì)有誤差且無法避免,所以,基于FFT方法的FIR濾波器適用于超高階的濾波器,但對(duì)精度有嚴(yán)格要求的系統(tǒng),基于FFT的方法還需要進(jìn)一步研究。

    參考文獻(xiàn)

    [1] 鄭軍勝.動(dòng)態(tài)系數(shù)FIR濾波器的FPGA研究[D].西安:西北大學(xué),2011.

    [2] 李大習(xí).基于 FPGA的可配置FFT IP核實(shí)現(xiàn)研究[J].電子科技,2014,27(6):46?49.

    [3] 王宇峰.基于FFT的快速卷積算法的FPGA實(shí)現(xiàn)[D].哈爾濱:哈爾濱工業(yè)大學(xué),2011.

    [4] 西瑞克斯(北京)通信設(shè)備有限公司.無線通信的Matlab和FPGA實(shí)現(xiàn)[M].北京:人民郵電出版社,2009.

    [5] 彭柄睿.基于FPGA的數(shù)字正交解調(diào)與脈沖壓縮[J].信息通信,2014(1):54?55.

    [6] 祝美英,彭江英,辜潤秋,等.基于FPGA的數(shù)字濾波器設(shè)計(jì)[J].科技創(chuàng)新與應(yīng)用,2015(20):9?10.

    [7] 趙岸,顏毅華,陳林杰,等.基于FPGA的高速FIR數(shù)字濾波器設(shè)計(jì)的改進(jìn)方案[J].天文研究與技術(shù),2015(1):109?117.

    [8] SAYEGH S I. A pipeline processor for mixed?size FFTs [J]. IEEE transactions on signal processing, 1992, 40(8): 1892?1900.

    [9] 范海波.基于FPGA的高速卷積的硬件設(shè)計(jì)實(shí)現(xiàn)[J].電子科技,2010(15):72?75.

    [10] 李澤明,李錦明,楊燕姣.基于FPGA的高階FIR濾波器設(shè)計(jì)[J].科學(xué)技術(shù)與工程,2013(23):6903?6906.

    [11] 張震.基于FPGA通用型FIR濾波器的研究與設(shè)計(jì)[J].軟件,2015(6):125?128.

    [12] 徐紅,葉豐,黃朝耿.高速率低功耗FIR數(shù)字濾波器實(shí)現(xiàn)[J].電視技術(shù),2014(23):56?60.

    [13] 賈廣峰,付永慶,張旭.FPGA數(shù)字脈沖壓縮系統(tǒng)的研究與實(shí)現(xiàn)[J].應(yīng)用科技,2013(6):60?62.

    龙州县| 望城县| 寻乌县| 渝北区| 嵩明县| 萝北县| 东阳市| 洪江市| 普安县| 陇西县| 巴楚县| 拜泉县| 淮北市| 仁化县| 德清县| 泰州市| 漠河县| 凤城市| 龙胜| 固原市| 高陵县| 桂林市| 江永县| 陵川县| 布尔津县| 静海县| 六枝特区| 防城港市| 大安市| 班戈县| 平南县| 科技| 永州市| 高淳县| 永仁县| 乐清市| 富民县| 塔城市| 沂南县| 富平县| 方正县|