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

          新聞中心

          EEPW首頁 > 汽車電子 > 設(shè)計(jì)應(yīng)用 > 基于FPGA的數(shù)字濾波器的設(shè)計(jì)與實(shí)現(xiàn)

          基于FPGA的數(shù)字濾波器的設(shè)計(jì)與實(shí)現(xiàn)

          ——
          作者:中南大學(xué) 黃石理工學(xué)院 齊海兵 劉雄飛 張德恒 時(shí)間:2006-09-23 來源:現(xiàn)代電子技術(shù) 收藏

          在信息過程中,如對(duì)信號(hào)的過濾、檢測(cè)、預(yù)測(cè)等,都要使用到濾波器,是數(shù)字中使用最廣泛的一種方法,常用的有無限長(zhǎng)單位脈沖響應(yīng)(IIR)濾波器和有限長(zhǎng)單位脈沖響應(yīng)(FIR)濾波器兩種。對(duì)于應(yīng)用設(shè)計(jì)者,由于開發(fā)速度和效率的要求很高,短期內(nèi)不可能全面了解相關(guān)的優(yōu)化技術(shù),需要花費(fèi)很大的精力才能使設(shè)計(jì)出的濾波器在速度、資源利用、性能上趨于較優(yōu)。而采用調(diào)試好的IP核需要向Altera公司購買。本文采用了一種基于 Builder的設(shè)計(jì)方法,以一個(gè)低通的16階FIR濾波器的實(shí)現(xiàn)為例,通過生成的濾波器頂層模塊文件與A/D模塊文件設(shè)計(jì),在聯(lián)星科技的NC-EDA-2000C實(shí)驗(yàn)箱上驗(yàn)證了利用該方法設(shè)計(jì)的數(shù)字濾波器電路工作正確可靠,能滿足設(shè)計(jì)要求。

          1 FIR濾波器的參數(shù)設(shè)計(jì)

          1.1 設(shè)計(jì)要求

          數(shù)字濾波器實(shí)際上是一個(gè)采用有限精度算法實(shí)現(xiàn)的線性非時(shí)變離散系統(tǒng),它的設(shè)計(jì)步驟為先根據(jù)需要確定其性能指標(biāo),設(shè)計(jì)一個(gè)系統(tǒng)函數(shù)H(z)逼近所需要的技術(shù)指標(biāo),最后采用有限精度算法實(shí)現(xiàn)。本系統(tǒng)的設(shè)計(jì)指標(biāo)為:設(shè)計(jì)一個(gè)16階的低通FIR濾波器,對(duì)模擬信號(hào)的采樣頻率Fs為48KHz,要求信號(hào)的截止頻率Fc=10.8kHz,輸入序列為寬為9位(最寬位為符號(hào)位)。

          1.2 FIR濾波器的參數(shù)選取

          設(shè)計(jì)頻率選擇性數(shù)字濾波器時(shí),通常希望能有近似恒定的頻響幅度,并盡量減小通帶內(nèi)的相位失真,斜率為整數(shù)的線性相位對(duì)應(yīng)于時(shí)域中簡(jiǎn)單的延時(shí),他在頻域中可將相位失真降低到最小的程度[2],用Matlab提供的濾波器設(shè)計(jì)的專門工具箱--FDAtool仿真設(shè)計(jì)濾波器,滿足要求的FIR濾波器幅頻特性,如圖1所示。

          2 數(shù)字濾波器的 Builder設(shè)計(jì)

          2.1 Builder介紹

          DSP Builer是Altera推出的一個(gè)數(shù)字(DSP)開發(fā)工具,他在Quartus II 設(shè)計(jì)環(huán)境中集成了Mathworks的Matlab和Simulink DSP開發(fā)軟件[3]。對(duì)DSP Builder而言,包括DSP系統(tǒng)的建模,系統(tǒng)級(jí)仿真、設(shè)計(jì)模型向VHDL硬件描述語言代碼的轉(zhuǎn)換、RTL(Register Transfer Level,邏輯綜合)級(jí)功能仿真測(cè)試、編譯適配和布局布線、時(shí)序?qū)崟r(shí)仿真直至對(duì)DSP目標(biāo)器件的編程配置,整個(gè)開發(fā)流程幾乎可以在頂層的開發(fā)工具M(jìn)atlab/Simulink同一環(huán)境中完成。

          2.2 FIR 濾波器算法模型建立

          根據(jù)FIR濾波器原理,可以利用來實(shí)現(xiàn)FIR濾波電路,DSP Builder設(shè)計(jì)流程的第一步是在Matlab/Simulink中進(jìn)行設(shè)計(jì)輸入,即Matlab的Simulink環(huán)境中建立一個(gè)MDL模型文件,用圖形方式調(diào)用Altera DSP Builder和其他的Simulink庫中的圖形模塊,構(gòu)成系統(tǒng)級(jí)或算法級(jí)設(shè)計(jì)框圖(或稱Simulink建模)。

          2.3 基于DSP Builder的系統(tǒng)級(jí)仿真

          輸入信號(hào)采用頻率分別為f1=8KHz和f2=16KHz的兩個(gè)正弦信號(hào)進(jìn)行疊加,其中的仿真波形如圖2所示,從FIR濾波電路的仿真結(jié)果看出,輸入信號(hào)通過濾波器后輸出基本上變成單頻率的正弦信號(hào),至此完成了模型仿真。

          3 基于 FPGA的數(shù)字濾波器的實(shí)現(xiàn)

          3.1 運(yùn)用Modelsim進(jìn)行功能仿真

          在DSP Builder中進(jìn)行的仿真是屬于系統(tǒng)驗(yàn)證性質(zhì)的,是對(duì)MDL文件進(jìn)行的仿真,并沒有對(duì)生成的VHDL代碼進(jìn)行過仿真。事實(shí)上,生成VHDL描述是RTL級(jí)的,是針對(duì)具體的硬件結(jié)構(gòu)的,這兩者之間有可能存在軟件理解上的差異,轉(zhuǎn)換后的VHDL代碼實(shí)現(xiàn)可能與MDL模型描述的情況不完全相符,這就需要針對(duì)生成的RTL級(jí)VHDL代碼進(jìn)行功能仿真。

          我們利用Modelsim來對(duì)生成的VHDL代碼進(jìn)行功能仿真。設(shè)置輸入輸出信號(hào)均為模擬形式,出現(xiàn)如圖3所示的仿真波形,可以看到這與Simulink里的仿真結(jié)果基本一致。即可在Quartus II環(huán)境下的硬件設(shè)計(jì)[4]。

          3.2 在FPGA器件中實(shí)現(xiàn)FIR濾波器

          用FPGA實(shí)現(xiàn)的數(shù)字濾波器處理的是數(shù)字信號(hào),在實(shí)際應(yīng)用中,首先就要用A/D轉(zhuǎn)化器對(duì)模擬信號(hào)進(jìn)行采樣與量化。傳統(tǒng)的方法多數(shù)是用CPU或完成的,缺點(diǎn)是控制周期長(zhǎng),速度慢。而利用同步時(shí)序狀態(tài)機(jī)來控制A/D采樣是一種既簡(jiǎn)單可靠,又能顯著提高采樣周期的行之有效的方法。

          在Quartus II環(huán)境通過VHDL語言按要求設(shè)計(jì)該狀態(tài)機(jī)并轉(zhuǎn)換為.bsf文件;打開DSP Builder建立的Quartus II項(xiàng)目文件fir.qpf及fir.vhd并轉(zhuǎn)換為相應(yīng)的.bsf文件,由此可以得到對(duì)應(yīng)設(shè)計(jì)的模塊,如圖4所示,調(diào)用這兩個(gè)模塊建立新的頂層原理圖文件,在軟件環(huán)境里通過時(shí)序仿真,指定器件管腳、進(jìn)行編譯、最后下載到實(shí)驗(yàn)箱的EP1K10TC100-3器件中。

          4 結(jié)語

          用信號(hào)發(fā)生器產(chǎn)生所要求的兩個(gè)不同頻率的正弦信號(hào),就可以示波器上看到濾波以后的結(jié)果,需要設(shè)計(jì)不同的濾波電路時(shí),僅修改濾波器模型文件就可以實(shí)現(xiàn)??梢娫诶肍PGA進(jìn)行數(shù)字濾波器的開發(fā)時(shí),采用DSP Builder作為設(shè)計(jì)工具能快捷、可靠地設(shè)計(jì)實(shí)用濾波系統(tǒng)。



          評(píng)論


          相關(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); })();