中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        EEPW首頁 > EDA/PCB > 設計應用 > 基于FPGA的IIR數(shù)字濾波器的快捷設計

        基于FPGA的IIR數(shù)字濾波器的快捷設計

        作者: 時間:2013-01-05 來源:網(wǎng)絡 收藏

        0 引言

        本文引用地址:http://www.antipu.com.cn/article/189710.htm

        在很多領域中都有著廣闊的應用。與FIR相比,可以用較低的階數(shù)獲得較高的選擇性,而且所用存儲單元少,經(jīng)濟效率高。一個N階數(shù)字濾波器的系統(tǒng)函數(shù)為:

        其線性常系數(shù)差分方程為:

        實現(xiàn)濾波的基本思想就是基于式(2)來實現(xiàn)的。如果知道了系統(tǒng)的輸入序列(濾波器的輸入),那么,只要根據(jù)所給的濾波器的指標,然后通過MATLAB仿真出系數(shù)矢量b和a,再采用遞推算法求解差分方程,就能求出輸出序列(濾波器的輸出)。

        1 濾波器的MATLAB設計

        由于本文采用巴特沃斯濾波器,故需要在工具箱中調(diào)用的兩個函數(shù)buttord和butter的調(diào)用格式為:

        其中N為濾波器階數(shù);wp和ws分別為通帶截止頻率矢量和阻帶截止頻率矢量,單位為π,一般需要模擬頻率指標對采樣頻率的一半作歸一化;Rp和As分別為通帶最大衰減和阻帶最小衰減,單位dB;wc為3 dB邊緣頻率矢量;b和a即為方程(2)中的系數(shù)矢量。

        獲得系數(shù)6和a之后,調(diào)用函數(shù)freqz(b,a,k,F(xiàn)s)即可按照下式計算k點的復頻率響應矢量H:

        然后便可繪出K點的幅頻和相頻特性曲線,以用于檢查計算出的系數(shù)是否滿足所需要的濾波器指標。

        2 編寫VHDL語言代碼注意事項

        乘加運算過程中的數(shù)據(jù)是有符號的二進制補碼,通常在Xilinx ISE集成開發(fā)環(huán)境下建立的VHDL源文件頭部都會有“use IEEE.STD_LOG-IC_UNSIGNED_ALL;”,如將其改為“use IEEE.STD_LOGIC_SIGNED.ALL;”即應該包含有符號數(shù)運算程序包,這樣就能保證代碼中的所有std_log-ic_vector型數(shù)據(jù)按照有符號二進制補碼的規(guī)則進行運算。

        由于內(nèi)部不能表示浮點數(shù),因此只能用有限精度方法來實現(xiàn)數(shù)據(jù)的運算,即用數(shù)據(jù)(包括方程(2)的輸入輸出和系數(shù))的整數(shù)部分(截去小數(shù)部分)作近似運算,且需要std_log-ic_vector數(shù)據(jù)類型來表示數(shù)據(jù)整數(shù)部分的二進制補碼形式,但這樣會產(chǎn)生截斷誤差。為了減小截斷誤差,應該將數(shù)據(jù)擴大適當?shù)谋稊?shù)(通常是2L倍,L為正整數(shù)),以使小數(shù)部分可以忽略不計。擴大的倍數(shù)越大,截斷誤差就越小,得到的數(shù)據(jù)就越精確,但是,用來表示數(shù)據(jù)整數(shù)部分的std_logic_vector型數(shù)據(jù)長度會越大,這樣就會占用越多的內(nèi)部資源,因此,適當?shù)倪x擇數(shù)據(jù)擴大倍數(shù)是個關鍵。此外,各種數(shù)據(jù)轉換為std_logic_vector型數(shù)據(jù)的長度選取至少應足以表示二進制補碼(包括符號位)。若FPGA內(nèi)部資源充足,可以通過增加std_logic_vector型數(shù)據(jù)長度來減小截斷誤差,提高運算精度。

        通常由MATLAB仿真得到的系數(shù)b都遠小于1,因此要適當選擇正整數(shù)L。運算時可給系數(shù)b和a(a的第一個系數(shù)除外)同乘以2L,之后取整得到B=round(b*2L)和A=round(a*2L)

        當前時刻輸入的x(n)有時可能太小,為減小截斷誤差,應該選擇適當?shù)恼麛?shù)M,以給x(n)乘以2M,即給表示當前時刻輸入的std_logic_vec-tor變量后補上M個‘0’。這樣,得到的當前時刻輸出y (n)就是擴大了2L+M倍的數(shù)據(jù),應該除以2L+M才是當前時刻的真實輸出。而VHDL語言不支持除法運算,故應采用截去末尾(L+M)位的方法來近似除法運算,這種做法相當于原始輸出y除以2L+M之后截去小數(shù)部分。

        在用示波器觀測時,濾波器的輸出波形可能帶有許多大幅度尖銳毛刺,從而嚴重影響了濾波器的性能。毛刺是由于組合電路的競爭而使電路輸出發(fā)生瞬時錯誤的現(xiàn)象,通常消除毛刺的方法是在具體的電路中加個鎖存器。本文采取另一優(yōu)化方法,即在源代碼中通過符號“=”把輸出信號賦給一個中間信號,再把中間信號作為輸出,這相當于將信號作一個延時再輸出。這種方法不需要知道具體的電路結構,也元需編寫其它代碼模塊,因此優(yōu)化更為簡便快捷,而且優(yōu)化效果非常好。

        3 濾波器MATLAB設計的FPGA實現(xiàn)

        下面以一個簡單的低通濾波器設計實例來說明從MATLAB設計到FPGA實現(xiàn)的整個過程。該低通濾波器的系統(tǒng)采樣頻率為40 MHz,通帶截止頻率為1 MHz,阻帶截止頻率為5 MHz,通帶內(nèi)最大衰減為3 dB,阻帶內(nèi)最小衰減為40 dB,而對相位不作要求。

        低通濾波器相關文章:低通濾波器原理


        電源濾波器相關文章:電源濾波器原理



        上一頁 1 2 3 4 下一頁

        評論


        相關推薦

        技術專區(qū)

        關閉