LecFIRDigitalFilters實(shí)時(shí)信號(hào)處理系統(tǒng)_第1頁(yè)
LecFIRDigitalFilters實(shí)時(shí)信號(hào)處理系統(tǒng)_第2頁(yè)
LecFIRDigitalFilters實(shí)時(shí)信號(hào)處理系統(tǒng)_第3頁(yè)
LecFIRDigitalFilters實(shí)時(shí)信號(hào)處理系統(tǒng)_第4頁(yè)
LecFIRDigitalFilters實(shí)時(shí)信號(hào)處理系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩93頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

LecFIRDigitalFilters實(shí)時(shí)信號(hào)處理系統(tǒng)演示文稿目前一頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)LecFIRDigitalFilters實(shí)時(shí)信號(hào)處理系統(tǒng)目前二頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)第3章FIR數(shù)字濾波器目前三頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)講授內(nèi)容安排1.數(shù)字濾波器和FIR理論轉(zhuǎn)置結(jié)構(gòu)FIR濾波器FIR濾波器的對(duì)稱性線性相位FIR濾波器2.FIR濾波器設(shè)計(jì)直接窗函數(shù)設(shè)計(jì)法等紋波設(shè)計(jì)法3.常系數(shù)FIR濾波器設(shè)計(jì)直接FIR設(shè)計(jì)轉(zhuǎn)置結(jié)構(gòu)FIR濾波器用分布式算法設(shè)計(jì)FIR濾波器IP核FIR濾波器設(shè)計(jì)基于DA和基于RAG的FIR濾波器比較目前四頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)I.數(shù)字濾波器和FIR理論目前五頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)數(shù)字濾波器(1)線性時(shí)不變?yōu)V波器(LinearTime-Invariant,LTI)有限脈沖響應(yīng)濾波器(FiniteImpulseResponse,FIR)采樣數(shù)量有限,濾波器在每個(gè)采樣時(shí)刻進(jìn)行有限次卷積無(wú)限脈沖響應(yīng)濾波器(InfiniteImpulseResponse,IIR)濾波器在每個(gè)采樣時(shí)刻進(jìn)行無(wú)限次卷積目前六頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)數(shù)字濾波器(2)模擬濾波器利用微分方程和Laplace變換進(jìn)行建模與分析利用RLC元件和運(yùn)算放大器實(shí)現(xiàn)可以用作IIR濾波器設(shè)計(jì)的原型數(shù)字濾波器是數(shù)字信號(hào)處理的主要組成部分正在逐漸替代模擬濾波器IIR濾波器以模擬濾波器為原型進(jìn)行設(shè)計(jì),F(xiàn)IR濾波器直接用數(shù)字方法進(jìn)行設(shè)計(jì)目前七頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)FIR濾波器理論(1)對(duì)于輸入時(shí)間序列x[n],常系數(shù)L階FIR濾波器的輸出y[n]為

為濾波器的系數(shù),對(duì)應(yīng)FIR濾波器的脈沖響應(yīng)。用Z域表示F(z)是FIR濾波器的傳遞函數(shù)目前八頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)直接形式FIR濾波器結(jié)構(gòu)目前九頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)關(guān)鍵路徑:TA

:加法器的延遲,TM

:乘法器的延遲關(guān)鍵路徑延遲:1TM+(M-1)TA

面積:M-1個(gè)寄存器,M個(gè)乘法器,M-1個(gè)加法器遲滯:遲滯為x(0)和y(0),x(1)和y(1),……之間的時(shí)鐘周期數(shù)。0時(shí)鐘周期遲滯。運(yùn)算復(fù)雜度:M次乘法/采樣數(shù)+M-1次加法/采樣數(shù)x(n)Z-1Z-1Z-1h0h1h2hM-1y(n)目前十頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)FIR濾波器理論(2)FIR濾波器僅有零點(diǎn)存在,系統(tǒng)穩(wěn)定多項(xiàng)式F(z)的根確定零點(diǎn)CIC濾波器(CascadeIntegratorComb

Filter,級(jí)聯(lián)積分梳狀濾波器

)具有遞歸性,但遞歸部分產(chǎn)生的極點(diǎn)被非遞歸部分抵消,只有零點(diǎn)。非遞歸實(shí)現(xiàn)濾波器均為FIR濾波器,但遞歸實(shí)現(xiàn)濾波器可以是FIR濾波器,也可以是IIR濾波器。目前十一頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)轉(zhuǎn)置結(jié)構(gòu)FIR濾波器轉(zhuǎn)置結(jié)構(gòu)FIR濾波器是FIR濾波器的常見(jiàn)實(shí)現(xiàn)方式,結(jié)構(gòu)上具有如下優(yōu)點(diǎn):不需要給輸入x[n]提供額外的移位寄存器;不需要為了獲得高流量而在乘積的加法器樹(shù)中加入流水線不改變系統(tǒng)功能構(gòu)造方法——利用信號(hào)流圖反轉(zhuǎn),是直接形式FIR濾波器的一種變形:將輸入和輸出互換;顛倒信號(hào)流的方向;用分支(fork)替換加法器,反之亦然。目前十二頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)轉(zhuǎn)置結(jié)構(gòu)FIR濾波器結(jié)構(gòu)目前十三頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)x(n)Z-1Z-1Z-1hM-1hM-2hM-3h0y(n)采用信號(hào)流圖反轉(zhuǎn)來(lái)縮短關(guān)鍵路徑長(zhǎng)度

轉(zhuǎn)置結(jié)構(gòu)關(guān)鍵路徑延遲:1TM+1TA

面積:M-1個(gè)寄存器,M個(gè)乘法器,M-1個(gè)加法器遲滯:0時(shí)鐘周期遲滯運(yùn)算復(fù)雜度:M次乘法/采樣數(shù)+M-1次加法/采樣數(shù)缺點(diǎn):寄存器的大小取決于量化機(jī)制x(n)的扇出太多目前十四頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)FIR濾波器VHDL設(shè)計(jì)(1)舉例3.1:可編程FIR濾波器考慮線性卷積和 數(shù)據(jù)(或系數(shù))的位寬為Bx,濾波器長(zhǎng)度為L(zhǎng),對(duì)無(wú)符號(hào)SOP運(yùn)算提供log2L個(gè)保護(hù)位,對(duì)有符號(hào)SOP運(yùn)算提供(log2L)?1個(gè)保護(hù)位。

例如,有符號(hào)數(shù)據(jù)(或系數(shù))的位寬為9,L=4,則加法器的位寬為9+9+log24?1=19.目前十五頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)FIR濾波器VHDL設(shè)計(jì)(2)-ThisisagenericFIRfiltergenerator--ItusesW1bitdata/coefficientsbitsLIBRARYlpm;--UsingpredefinedpackagesUSElpm.lpm_components.ALL;LIBRARYieee;USEieee.std_logic_1164.ALL;USEieee.std_logic_arith.ALL;USEieee.std_logic_unsigned.ALL;ENTITYfir_genIS------>InterfaceGENERIC(W1:INTEGER:=9;--InputbitwidthW2:INTEGER:=18;--Multiplierbitwidth2*W1W3:INTEGER:=19;--Adderwidth=W2+log2(L)-1W4:INTEGER:=11;--OutputbitwidthL:INTEGER:=4;--FilterlengthMpipe:INTEGER:=3--Pipelinestepsofmultiplier);目前十六頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)FIR濾波器VHDL設(shè)計(jì)(3)PORT(clk:INSTD_LOGIC;Load_x:INSTD_LOGIC;x_in:INSTD_LOGIC_VECTOR(W1-1DOWNTO0);c_in:INSTD_LOGIC_VECTOR(W1-1DOWNTO0);y_out:OUTSTD_LOGIC_VECTOR(W4-1DOWNTO0));ENDfir_gen;ARCHITECTUREflexOFfir_genISSUBTYPEN1BITISSTD_LOGIC_VECTOR(W1-1DOWNTO0);SUBTYPEN2BITISSTD_LOGIC_VECTOR(W2-1DOWNTO0);SUBTYPEN3BITISSTD_LOGIC_VECTOR(W3-1DOWNTO0);TYPEARRAY_N1BITISARRAY(0TOL-1)OFN1BIT;TYPEARRAY_N2BITISARRAY(0TOL-1)OFN2BIT;TYPEARRAY_N3BITISARRAY(0TOL-1)OFN3BIT;SIGNALx:N1BIT;SIGNALy:N3BIT;SIGNALc:ARRAY_N1BIT;--CoefficientarraySIGNALp:ARRAY_N2BIT;--ProductarraySIGNALa:ARRAY_N3BIT;--Adderarray目前十七頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)FIR濾波器VHDL設(shè)計(jì)(4)BEGINLoad:PROCESS------>LoaddataorcoefficientBEGINWAITUNTILclk='1';IF(Load_x='0')THENc(L-1)<=c_in;--StorecoefficientinregisterFORIINL-2DOWNTO0LOOP--Coefficientsshiftonec(I)<=c(I+1);ENDLOOP;ELSEx<=x_in;--GetonedatasampleatatimeENDIF;ENDPROCESSLoad;SOP:PROCESS(clk)------>Computesum-of-productsBEGINIFclk'eventand(clk='1')THENFORIIN0TOL-2LOOP--Computethetransposeda(I)<=(p(I)(W2-1)&p(I))+a(I+1);--filteraddsENDLOOP;a(L-1)<=p(L-1)(W2-1)&p(L-1);--FirstTAPhasENDIF;--onlyaregistery<=a(0);ENDPROCESSSOP;目前十八頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)FIR濾波器VHDL設(shè)計(jì)(5)--InstantiateLpipelinedmultiplierMulGen:FORIIN0TOL-1GENERATEMuls:lpm_mult--Multiplyp(i)=c(i)*x;GENERICMAP(LPM_WIDTHA=>W1,LPM_WIDTHB=>W1,LPM_PIPELINE=>Mpipe,LPM_REPRESENTATION=>"SIGNED",LPM_WIDTHP=>W2,LPM_WIDTHS=>W2)PORTMAP(clock=>clk,dataa=>x,datab=>c(I),result=>p(I));ENDGENERATE;y_out<=y(W3-1DOWNTOW3-W4);ENDflex;目前十九頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)FIR濾波器VHDL設(shè)計(jì)(6)設(shè)計(jì)使用了184個(gè)LE和4個(gè)嵌入式乘法器,運(yùn)行速度為329.06Hz.仿真實(shí)例:長(zhǎng)度為4的DaubechiesDB4濾波器將系數(shù)量化為9位(含1個(gè)符號(hào)位),得到目前二十頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)FIR濾波器的對(duì)稱性(1)利用對(duì)稱性可以簡(jiǎn)化濾波器結(jié)構(gòu)FIR濾波器沖激響應(yīng)的中心點(diǎn)可作為對(duì)稱的中心點(diǎn)。為方便起見(jiàn),將這個(gè)點(diǎn)定義為第0個(gè)采樣時(shí)刻。這樣的的濾波器具有因果性。對(duì)于奇數(shù)階FIR濾波器,其因果數(shù)學(xué)模型為:目前二十一頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)FIR濾波器的對(duì)稱性(2)FIR濾波器的頻率響應(yīng)可通過(guò)計(jì)算單位圓上的傳遞函數(shù)得到,令,有:被稱為是濾波器的幅頻響應(yīng),被稱為相位響應(yīng),并滿足數(shù)字濾波器通常采用相位和幅度來(lái)表示特性,而不常用z域傳遞函數(shù)或復(fù)域變換。目前二十二頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)線性相位FIR濾波器(1)在諸如通信和圖像處理等應(yīng)用系統(tǒng)中,能夠在一定頻率范圍內(nèi)保持相位的完整性是所期望的一項(xiàng)重要的性能指標(biāo)。在設(shè)計(jì)濾波器時(shí),必須要確立線性相位對(duì)頻率的關(guān)系。組延遲(GroupDelay)—用來(lái)衡量系統(tǒng)的相位線性的標(biāo)準(zhǔn)理想的線性相位濾波器在一定頻率范圍內(nèi)的組延遲恒為常數(shù)。若濾波器為對(duì)稱或反對(duì)稱,則可實(shí)現(xiàn)線性相位,并可以采用因果結(jié)構(gòu)實(shí)現(xiàn),并利用對(duì)稱性來(lái)簡(jiǎn)化系統(tǒng)結(jié)構(gòu)。目前二十三頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)線性相位FIR濾波器(2)只有當(dāng)頻率響應(yīng)F(ω)是純實(shí)或純虛函數(shù)時(shí),即濾波器脈沖響應(yīng)保持偶對(duì)稱或奇對(duì)稱時(shí),組延遲為常數(shù),即例如,一個(gè)奇數(shù)階偶對(duì)稱的FIR濾波器的頻率響應(yīng)為:目前二十四頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)另外一種表示:f(n)=±f(L-1-n),

L為奇、偶皆可。線性相位結(jié)構(gòu)能夠減小電路面積舉例:L為偶數(shù)關(guān)鍵路徑延遲:1TM+(L/2)TA

面積:L-1寄存器L/2乘法器L-1加法器目前二十五頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)線性相位FIR濾波器(3) 脈沖響應(yīng)(濾波器系數(shù))為偶對(duì)稱,F(xiàn)IR濾波器可以根據(jù)對(duì)稱性去掉不必要的乘法器,將乘法器的數(shù)量減少到直接形式的一半,加法器數(shù)量保持為L(zhǎng)?1不變。目前二十六頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)線性相位FIR濾波器(4)線性相位FIR濾波器的4種相位目前二十七頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)流水線FIR濾波器舉例:粗粒度流水線FIR濾波器流水線只能在信號(hào)流圖的前饋割集插入x(n)Z-1Z-1Z-1h0h1h2hM-1Z-1Z-1目前二十八頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)細(xì)粒度流水線細(xì)粒度流水線可用來(lái)縮短轉(zhuǎn)置結(jié)構(gòu)FIR濾波器的關(guān)鍵路徑。x(n)Z-1Z-1Z-1hM-1hM-2hM-3h0y(n)Z-1在此插入寄存器目前二十九頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)并行FIR濾波器提高吞吐量,不改變關(guān)鍵路徑長(zhǎng)度用途之一:解決輸入/輸出瓶頸問(wèn)題h0h1h2x(3n+2)x(3n+1)x(3n)y(3n+2)h2h0h1y(3n+1)h1h2h0y(3n)Z-1Z-1目前三十頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)II.FIR濾波器設(shè)計(jì)目前三十一頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)FIR濾波器設(shè)計(jì)(1)FIR數(shù)字濾波器設(shè)計(jì)步驟:需求分析,確定性能指標(biāo);建立算法模型,用MatlabSignalProcessingToolbox工具包建立系統(tǒng)級(jí)或算法級(jí)模型;等紋波FIR濾波器設(shè)計(jì);窗函數(shù)FIR濾波器設(shè)計(jì);(最小二乘法FIR濾波器設(shè)計(jì))(IIR濾波器設(shè)計(jì)(Butterworth,ChebyshevI和II,橢圓))模型仿真,取得模型參數(shù);根據(jù)Matlab算法模型構(gòu)建電路(或程序);電路(或程序)驗(yàn)證。目前三十二頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)FIR濾波器設(shè)計(jì)(2)若濾波器的理想頻率響應(yīng)特性為,則FIR濾波器的設(shè)計(jì)問(wèn)題在于:

尋找傳遞函數(shù),使

逼近;若要求FIR濾波器具有線性相位特性,則脈沖響應(yīng)必須滿足對(duì)稱條件。線性相位FIR濾波器常用設(shè)計(jì)方法窗函數(shù)法?頻率采樣法等紋波法?目前三十三頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)直接窗函數(shù)設(shè)計(jì)法(1)直接FIR濾波器根據(jù)DFT(離散傅立葉變換,DiscreteFourierTransform)在時(shí)域和頻域之間的映射關(guān)系,用DFT計(jì)算出與目標(biāo)濾波器頻率響應(yīng)相近似的濾波器系數(shù)。實(shí)際信號(hào)的頻譜具有埃爾米特共軛性(Hermitianconjugate),即實(shí)部頻譜為偶對(duì)稱,虛部頻譜為奇對(duì)稱。若綜合出的濾波器僅有實(shí)系數(shù),則目標(biāo)DFT頻譜必須是埃爾米特共軛性的,即。目前三十四頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)直接窗函數(shù)設(shè)計(jì)法(2)要得到一個(gè)因果的有限長(zhǎng)的濾波器,最直接的方法是截?cái)啵从靡粋€(gè)窗函數(shù)對(duì)進(jìn)行加窗處理:選擇窗函數(shù)的形狀和長(zhǎng)度是窗函數(shù)法的關(guān)鍵!不同窗函數(shù)的區(qū)別在于阻尼振蕩和過(guò)渡頻帶寬度擴(kuò)展之間折衷能力不同。目前三十五頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)直接窗函數(shù)設(shè)計(jì)法(3)矩形窗的卷積過(guò)程目前三十六頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)直接窗函數(shù)設(shè)計(jì)法(4)矩形窗對(duì)理想頻率響應(yīng)產(chǎn)生兩個(gè)影響:使理想頻率特性不連續(xù)點(diǎn)ω=ωe處,形成了一個(gè)過(guò)渡頻帶,寬度等于矩形窗的頻率響應(yīng)WR(ω)的主瓣寬度△ω=4π/N。在截至頻率ωc的兩邊ω=ωc

±2π/N處(即過(guò)渡帶的兩邊),F(xiàn)(ω)出現(xiàn)最大峰值,肩峰的兩側(cè)出現(xiàn)起伏振蕩,振蕩幅度取決于旁瓣的相對(duì)幅度,振蕩快慢取決于WR(ω)波動(dòng)的快慢。目前三十七頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)直接窗函數(shù)設(shè)計(jì)法(5)當(dāng)窗口長(zhǎng)度N增加,在主瓣附近窗的頻率響應(yīng)為隨著x變大,曲線波動(dòng)的頻率加快,主瓣和旁瓣幅度都變大,但相對(duì)比例保持不變。這個(gè)比例由sinx/x決定,即由矩形窗函數(shù)的形狀決定。當(dāng)長(zhǎng)度N增加時(shí),只會(huì)減小過(guò)渡帶寬4π/N,而不會(huì)改變肩峰的相對(duì)值。因而,當(dāng)長(zhǎng)度N增加時(shí),只會(huì)減小過(guò)渡帶寬4π/N

,而不會(huì)改變肩峰的相對(duì)值。目前三十八頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)直接窗函數(shù)設(shè)計(jì)法(6)長(zhǎng)度分別為16和128的FIR濾波器的脈沖響應(yīng)和通頻帶對(duì)比與理想濾波器的最大差別出現(xiàn)在過(guò)渡頻帶的邊緣,產(chǎn)生吉布斯阻尼振蕩現(xiàn)象。這是由直接逆DFT運(yùn)算隱含產(chǎn)生的。提高濾波器的長(zhǎng)度并不能消除阻尼振蕩,可以通過(guò)加“窗”消除。目前三十九頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)直接窗函數(shù)設(shè)計(jì)法(7)吉布斯(Gibbs)效應(yīng)在矩形窗情況下,最大相對(duì)肩峰值為8.95%,N增加時(shí),4π/N減小,起伏振蕩變密,但最大肩峰則總是8.95%。由于窗譜肩峰的存在,影響到F(ω)通帶的平坦和阻帶的衰減,使阻帶最小衰減只有21dB左右,因此在實(shí)際中矩形窗很少采用。為了消除吉布斯效應(yīng),取得較好頻率特性,一般采用其他類(lèi)型的窗函數(shù),對(duì)進(jìn)行加窗處理。目前四十頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)直接窗函數(shù)設(shè)計(jì)法(8)常用窗函數(shù)矩形窗三角(Bartlett)窗Hanning窗Hamming窗Blackman窗Kaiser窗目前四十一頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)直接窗函數(shù)設(shè)計(jì)法(9)等效Kaiserβ參數(shù)通過(guò)調(diào)節(jié)β參數(shù)來(lái)調(diào)整濾波器的阻尼振蕩。

其中A=20log10εr,既是止帶抑制又是通帶紋波的dB值。Kaiser窗函數(shù)長(zhǎng)度的估算公式,誤差為±

2個(gè)抽頭。目前四十二頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)等紋波設(shè)計(jì)法(1)如何減少濾波器傳遞函數(shù)與期望傳遞函數(shù)之間的偏差(紋波誤差)?紋波是除了通帶頻率、止帶頻率和增益之外的一項(xiàng)重要指標(biāo)。采用等紋波算法(極小-極大算法)最小化濾波器與理想傳遞函數(shù)之間的最大紋波誤差。常用的等紋波算法:低通濾波器設(shè)計(jì)Matlab函數(shù):firpm(L,F,A,W)Hilbert濾波器對(duì)通帶內(nèi)所有頻率都產(chǎn)生90度相移的單位幅值濾波器Matlab函數(shù):firpm(L,F,A,’hilbert’)微分濾波器頻率幅值和ω呈正比線性增加Matlab函數(shù):firpm(L,F,A,’differentiator’)目前四十三頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)將指定的頻帶記為A(包括通帶和阻帶),P-M等波紋最佳逼近的設(shè)計(jì)的準(zhǔn)則是,選擇FIR濾波器的單位脈沖響應(yīng)f(n)使得在A內(nèi)誤差函數(shù)的最大絕對(duì)值最小。等紋波設(shè)計(jì)法(2)用Park-McClellan迭代方法設(shè)計(jì)等紋波濾波器設(shè)希望設(shè)計(jì)的濾波器幅度響應(yīng)為,實(shí)際逼近的幅度響應(yīng)為,加權(quán)誤差為,則:將該最小值記為,則有:

目前四十四頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)等紋波設(shè)計(jì)法(3)Park-McClellan迭代方法基于交替定理交替定理(AlternationTheorem) 設(shè)P(ω)為cos(nω)的線性組合,即 則P(ω)在A上有唯一的最佳逼近函數(shù)的充要條件是加權(quán)誤差函數(shù)在A內(nèi)至少存在r+1個(gè)極值頻率點(diǎn)ωi, 且則存在符合公差設(shè)計(jì)方案的唯一的Chebyshev多項(xiàng)式,且該多項(xiàng)式具有最小長(zhǎng)度。目前四十五頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)等紋波設(shè)計(jì)法(4)公差設(shè)計(jì)方案舉例低通濾波器的長(zhǎng)度(多項(xiàng)式的長(zhǎng)度)為:目前四十六頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)窗口法與等紋波法比較目前四十七頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)III.常系數(shù)FIR濾波器設(shè)計(jì)目前四十八頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)直接FIR濾波器設(shè)計(jì)(1)構(gòu)造方式:用HDL對(duì)算法(電路)過(guò)程行為建模不同的綜合工具可能給出的結(jié)果不同的電路結(jié)構(gòu)元件實(shí)例化(ComponentInstantiation)電路網(wǎng)絡(luò)結(jié)構(gòu)完全由設(shè)計(jì)者掌握濾波器系數(shù)編碼—正CSD編碼方式用正CSD編碼的系數(shù)具有較少的非零項(xiàng)在計(jì)算SOP時(shí)再考慮系數(shù)的符號(hào)浮點(diǎn)系數(shù)到定點(diǎn)系數(shù)的轉(zhuǎn)換建立在浮點(diǎn)系數(shù)的定點(diǎn)FIR濾波器的實(shí)現(xiàn),需要通過(guò)仿真或代數(shù)分析進(jìn)行驗(yàn)證,以確保設(shè)計(jì)規(guī)范的一致性。目前四十九頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)直接FIR濾波器設(shè)計(jì)(2)系統(tǒng)動(dòng)態(tài)溢出保護(hù)最壞情況下L階FIR濾波器的動(dòng)態(tài)范圍增長(zhǎng)位數(shù)G為:總位寬=輸入位寬+動(dòng)態(tài)增長(zhǎng)位數(shù)G舉例:

FIR濾波器脈沖響應(yīng)為f[k]={-1.0,3.75,3.75,-1.0}

則濾波器內(nèi)部數(shù)據(jù)寄存器位數(shù)至少要比輸入多4位才能保證不溢出;

目前五十頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)直接FIR濾波器設(shè)計(jì)舉例(1)4抽頭直接FIR濾波器系數(shù)為f[k]={-1.0,3.75,3.75,-1.0}3.7510=21+20+2?1+2?2=11.112目前五十一頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)直接FIR濾波器設(shè)計(jì)舉例(2)PACKAGEeight_bit_intIS--UserdefinedtypesSUBTYPEBYTEISINTEGERRANGE-128TO127;TYPEARRAY_BYTEISARRAY(0TO3)OFBYTE;ENDeight_bit_int;LIBRARYwork;USEwork.eight_bit_int.ALL;LIBRARYieee;USEieee.std_logic_1164.ALL;USEieee.std_logic_arith.ALL;ENTITYfir_srgIS------>InterfacePORT(clk:INSTD_LOGIC;x:INBYTE;y:OUTBYTE);ENDfir_srg;ARCHITECTUREflexOFfir_srgISSIGNALtap:ARRAY_BYTE;--Tappeddelaylineofbytes目前五十二頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)直接FIR濾波器設(shè)計(jì)舉例(3)BEGINp1:PROCESS------>BehavioralStyleBEGINWAITUNTILclk='1';--Computeoutputywiththefiltercoefficientsweight.--Thecoefficientsare[-13.753.75-1].--DivisionforAlteraVHDLisonlyallowedfor--powers-of-twovalues!y<=2*tap(1)+tap(1)+tap(1)/2+tap(1)/4+2*tap(2)+tap(2)+tap(2)/2+tap(2)/4-tap(3)-tap(0);FORIIN3DOWNTO1LOOPtap(I)<=tap(I-1);--Tappeddelayline:shiftoneENDLOOP;tap(0)<=x;--Inputinregister0ENDPROCESS;ENDflex;目前五十三頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)直接FIR濾波器設(shè)計(jì)舉例(4)仿真結(jié)果目前五十四頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)直接FIR濾波器設(shè)計(jì)改進(jìn)通過(guò)流水線提高乘法器速度輸出加法器應(yīng)該安排在流水線平衡樹(shù)中如果系數(shù)可以用2的冪次方編碼,流水線乘法器可以和加法器合并。如果加法器的輸入不是2的冪次方形式,則需要加入額外的流水線寄存器。采用優(yōu)化CSD編碼實(shí)現(xiàn)濾波器系數(shù)對(duì)于線性相位濾波器,利用系數(shù)對(duì)稱特性簡(jiǎn)化濾波器結(jié)構(gòu)目前五十五頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)直接FIR濾波器設(shè)計(jì)改進(jìn)舉例(1)濾波器系數(shù)采用CSD編碼3.7510=22?2?2=10.0(?1)2線性相位濾波器結(jié)構(gòu)(利用脈沖響應(yīng)對(duì)稱特性)目前五十六頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)直接FIR濾波器設(shè)計(jì)改進(jìn)舉例(2)利用對(duì)稱性和CSD編碼可實(shí)現(xiàn)最簡(jiǎn)結(jié)構(gòu)設(shè)計(jì)(不使用加法器樹(shù))利用對(duì)稱性、CSD編碼和加法器樹(shù)可實(shí)現(xiàn)速度最快設(shè)計(jì)目前五十七頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)直接形式流水線FIR濾波器在某些情況下,某一系數(shù)要比其它系數(shù)加入更多級(jí)流水線延遲,這種延遲用f[n]z-d建模目前五十八頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)轉(zhuǎn)置結(jié)構(gòu)FIR濾波器(1)轉(zhuǎn)置結(jié)構(gòu)FIR對(duì)比直接FIR的優(yōu)勢(shì):利用簡(jiǎn)化加法器圖(RAG,ReducedAdderGraph)算法實(shí)現(xiàn)重復(fù)系數(shù)的多次使用簡(jiǎn)化濾波器結(jié)構(gòu)(減少LE的數(shù)量),提高速度使用進(jìn)位存儲(chǔ)加法器實(shí)現(xiàn)流水線加法器利用流水線加法器能提高速度,代價(jià)是增加加法器和寄存器的數(shù)量目前五十九頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)轉(zhuǎn)置結(jié)構(gòu)FIR濾波器(2)轉(zhuǎn)置結(jié)構(gòu)FIR濾波器結(jié)構(gòu)目前六十頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)濾波器系數(shù)實(shí)現(xiàn)有時(shí)實(shí)現(xiàn)常系數(shù)的因子的加法器成本比直接實(shí)現(xiàn)系數(shù)的CSD編碼更低。對(duì)于轉(zhuǎn)置結(jié)構(gòu)FIR濾波器,系數(shù)具有公共因子的可能性比較高。舉例:對(duì)于系數(shù)9和11,首先可以用8+1=9構(gòu)建系數(shù)9,然后用9+2=11構(gòu)建系數(shù)11(代替8+1+2=11)。這樣在結(jié)構(gòu)上就減少了1個(gè)加法器。尋找最優(yōu)的RAG圖是NP-Hard問(wèn)題,只能采用啟發(fā)式算法求解。目前六十一頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)RAG算法(1)目前六十二頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)RAG算法(2)目前六十三頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)RAG算法舉例(1)F6半頻帶濾波器的RAG設(shè)F6半頻帶濾波器的系數(shù)為f[0]=34610,f[1]=20810, f[2]=010,f[3]=-4410,f[4]=910。 采用CSD編碼實(shí)現(xiàn),所用的加法器數(shù)量為9目前六十四頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)MAG表目前六十五頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)RAG算法舉例(2)采用RAG算法化簡(jiǎn):對(duì)余下的系數(shù),從具有最低加法器成本和最小值開(kāi)始使用啟發(fā)式策略:目前六十六頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)RAG算法舉例(3)最終得到的簡(jiǎn)化加法器圖,加法器數(shù)量由9減少到5,加法器路徑延遲從4減少到3目前六十七頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)流水線RAGFIR濾波器(1)基于RAG算法實(shí)現(xiàn)的轉(zhuǎn)置結(jié)構(gòu)FIR濾波器的存在的問(wèn)題由實(shí)現(xiàn)RAG加法器帶來(lái)的邏輯延遲降低了電路的運(yùn)行速度(即使是較小的電路也會(huì)出現(xiàn))。解決方案:在加法器的輸出端加入一個(gè)寄存器實(shí)現(xiàn)流水線結(jié)構(gòu)。利用每個(gè)LE中嵌入的寄存器,不需要額外的邏輯資源。2的冪次方系數(shù)乘法的實(shí)現(xiàn)所需的移位寄存器不包括在內(nèi)。性能提升目前六十八頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)流水線RAGFIR濾波器(2)對(duì)于全流水線設(shè)計(jì)需要在每個(gè)加法器的輸入路徑上施加同樣的延遲。目前六十九頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)流水線RAGFIR濾波器(3)在實(shí)現(xiàn)流水線RAG后,要關(guān)注FIR濾波器系數(shù)的不同延遲。兩種選擇:對(duì)所有的系數(shù)輸出加以延遲,使得所有系數(shù)的延遲相同,而不需要改變輸出抽頭延遲線的結(jié)構(gòu)。采用流水線重定時(shí)技術(shù),根據(jù)流水線的級(jí)數(shù)在抽頭延遲線上保持乘法器輸出時(shí)序一致。目前七十頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)采用DA算法實(shí)現(xiàn)FIR濾波器(1)與傳統(tǒng)SOP結(jié)構(gòu)相比,DA算法在一步中計(jì)算所有系數(shù)的特定b位的SOP,主要電路元件為L(zhǎng)UT和帶有移位的累加器。考慮3系數(shù)的FIR濾波器,系數(shù)為c[0]=2,c[1]=3,c[2]=1,實(shí)現(xiàn)f(c[n],xb[n])的LUT為:目前七十一頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)采用DA算法實(shí)現(xiàn)FIR濾波器(2)目前七十二頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)DA-FIRVHDL設(shè)計(jì)(1)LIBRARY

ieee;--UsingpredefinedpackagesUSE

ieee.std_logic_1164.ALL;USE

ieee.std_logic_arith.ALL;PACKAGEda_packageIS

--Userdefinedcomponent

COMPONENTcase3

PORT(table_in:IN

STD_LOGIC_VECTOR(2DOWNTO0);table_out:OUT

INTEGER

RANGE0TO6);

END

COMPONENT;ENDda_package;LIBRARY

work;USE

work.da_package.ALL;LIBRARY

ieee;--UsingpredefinedpackagesUSE

ieee.std_logic_1164.ALL;USE

ieee.std_logic_arith.ALL;ENTITYdafsmIS

------>Interface

PORT(clk:IN

STD_LOGIC;x_in0,x_in1,x_in2:

IN

STD_LOGIC_VECTOR(2DOWNTO0);y:OUT

INTEGER

RANGE0TO63);ENDdafsm;目前七十三頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)DA-FIRVHDL設(shè)計(jì)(2)ARCHITECTUREflexOFdafsmIS

TYPESTATE_TYPEIS(s0,s1);

SIGNALstate:STATE_TYPE;

SIGNALx0,x1,x2,table_in:STD_LOGIC_VECTOR(2DOWNTO0);

SIGNALtable_out:INTEGER

RANGE0TO7;BEGINtable_in(0)<=x0(0);table_in(1)<=x1(0);table_in(2)<=x2(0);

PROCESS

------>DAinbehavioralstyle

VARIABLEp:INTEGER

RANGE0TO63;--temp.register

VARIABLEcount:INTEGER

RANGE0TO3;--countsshifts

BEGIN

WAIT

UNTILclk='1';

CASEstateIS

WHENs0=>--Initializationstepstate<=s1;count:=0;p:=0;x0<=x_in0;x1<=x_in1;x2<=x_in2;目前七十四頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)DA-FIRVHDL設(shè)計(jì)(3)WHENs1=>--Processingstep

IFcount=3THEN

--Issumofproductdone?y<=p;--Outputofresulttoyandstate<=s0;--startnextsumofproduct

ELSEp:=p/2+table_out*4;x0(0)<=x0(1);x0(1)<=x0(2);x1(0)<=x1(1);x1(1)<=x1(2);x2(0)<=x2(1);x2(1)<=x2(2);count:=count+1;state<=s1;

END

IF;

END

CASE;

END

PROCESS;LC_Table0:case3

PORT

MAP(table_in=>table_in,table_out=>table_out);ENDflex;目前七十五頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)DA-FIRVHDL設(shè)計(jì)(4)系數(shù){2,3,1}的DA算法LUT實(shí)現(xiàn)LIBRARY

ieee;USE

ieee.std_logic_1164.ALL;USE

ieee.std_logic_arith.ALL;ENTITYcase3IS

PORT(table_in:IN

STD_LOGIC_VECTOR(2DOWNTO0);table_out:OUT

INTEGER

RANGE0TO6);ENDcase3;ARCHITECTURELCsOFcase3ISBEGIN--ThisistheDACASEtablefor--the3coefficients:2,3,1--automaticallygeneratedwithdagen.exe--DONOTEDIT!

目前七十六頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)DA-FIRVHDL設(shè)計(jì)(5)PROCESS(table_in)

BEGIN

CASEtable_inIS

WHEN"000"=>table_out<=0;

WHEN"001"=>table_out<=2;

WHEN"010"=>table_out<=3;

WHEN"011"=>table_out<=5;

WHEN"100"=>table_out<=1;

WHEN"101"=>table_out<=3;

WHEN"110"=>table_out<=4;

WHEN"111"=>table_out<=6;

WHEN

OTHERS=>table_out<=0;

END

CASE;

END

PROCESS;ENDLCs;目前七十七頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)基于邏輯單元的DA-FIR實(shí)現(xiàn)低階FIR濾波器實(shí)現(xiàn)采用小規(guī)模LUT(FIR階數(shù)L≤4)

,用邏輯單元實(shí)現(xiàn)LUT高階FIR濾波器實(shí)現(xiàn)像構(gòu)造低階FIR一樣直接用邏輯單元實(shí)現(xiàn)大規(guī)模LUT會(huì)造成邏輯單元資源緊張,例如2b×b規(guī)模LUT利用FIR濾波器線性相位特性,可以將低階FIR的輸出相加構(gòu)成高階FIR的輸出響應(yīng)LUT實(shí)現(xiàn)方式:利用FPGA內(nèi)部存儲(chǔ)模塊,如M4K,實(shí)現(xiàn)LUT。優(yōu)點(diǎn):運(yùn)算速度恒定,節(jié)省布線資源;問(wèn)題:M4K數(shù)量較少,應(yīng)該節(jié)約使用! 利用小規(guī)模LUT(4輸入)和多路選擇器構(gòu)成總線結(jié)構(gòu)實(shí)現(xiàn)較大規(guī)模LUT將較大規(guī)模LUT劃分成若干小規(guī)模LUT實(shí)現(xiàn)目前七十八頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)基于邏輯單元的DA-FIR不同實(shí)現(xiàn)方式比較目前七十九頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)5輸入DA表(1)LIBRARY

ieee;USE

ieee.std_logic_1164.ALL;USE

ieee.std_logic_arith.ALL;ENTITYcase5pIS

PORT(clk:IN

STD_LOGIC;table_in:IN

STD_LOGIC_VECTOR(4DOWNTO0);table_out:OUT

INTEGER

RANGE0TO25);ENDcase5p;ARCHITECTURELEsOFcase5pIS

SIGNALlsbs:STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALmsbs0:STD_LOGIC_VECTOR(1DOWNTO0);

SIGNALtable0out00,table0out01:INTEGER

RANGE0TO25;BEGIN--ThesearethedistributedarithmeticCASEtablesfor--the5coefficients:1,3,5,7,9--automaticallygeneratedwithdagen.exe--DONOTEDIT!目前八十頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)5輸入DA表(2)

PROCESS

BEGIN

WAIT

UNTILclk='1';lsbs(0)<=table_in(0);lsbs(1)<=table_in(1);lsbs(2)<=table_in(2);lsbs(3)<=table_in(3);msbs0(0)<=table_in(4);msbs0(1)<=msbs0(0);

END

PROCESS;

PROCESS

--ThisisthefinalDAMPXstage.

BEGIN

--Automaticallygeneratedwithdagen.exe

WAIT

UNTILclk='1';

CASEmsbs0(1)IS

WHEN'0'=>table_out<=table0out00;

WHEN'1'=>table_out<=table0out01;

WHEN

OTHERS=>table_out<=0;

END

CASE;

END

PROCESS;

目前八十一頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)5輸入DA表(3)

PROCESS

--ThisistheDACASEtable00outof1.

BEGIN

--Automaticallygeneratedwithdagen.exe

WAIT

UNTILclk='1';

CASElsbsIS

WHEN"0000"=>table0out00<=0;

WHEN"0001"=>table0out00<=1;

WHEN"0010"=>table0out00<=3;

WHEN"0011"=>table0out00<=4;

WHEN"0100"=>table0out00<=5;

WHEN"0101"=>table0out00<=6;

WHEN"0110"=>table0out00<=8;

WHEN"0111"=>table0out00<=9;

WHEN"1000"=>table0out00<=7;

WHEN"1001"=>table0out00<=8;

WHEN"1010"=>table0out00<=10;

WHEN"1011"=>table0out00<=11;

WHEN"1100"=>table0out00<=12;

WHEN"1101"=>table0out00<=13;

WHEN"1110"=>table0out00<=15;

WHEN"1111"=>table0out00<=16;

WHEN

OTHERS=>table0out00<=0;

END

CASE;

END

PROCESS;目前八十二頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)5輸入DA表(4)PROCESS

--ThisistheDACASEtable01outof1.

BEGIN

--Automaticallygeneratedwithdagen.exe

WAIT

UNTILclk='1';

CASElsbsIS

WHEN"0000"=>table0out01<=9;

WHEN"0001"=>table0out01<=10;

WHEN"0010"=>table0out01<=12;

WHEN"0011"=>table0out01<=13;

WHEN"0100"=>table0out01<=14;

WHEN"0101"=>table0out01<=15;

WHEN"0110"=>table0out01<=17;

WHEN"0111"=>table0out01<=18;

WHEN"1000"=>table0out01<=16;

WHEN"1001"=>table0out01<=17;

WHEN"1010"=>table0out01<=19;

WHEN"1011"=>table0out01<=20;

WHEN"1100"=>table0out01<=21;

WHEN"1101"=>table0out01<=22;

WHEN"1110"=>table0out01<=24;

WHEN"1111"=>table0out01<=25;

WHEN

OTHERS=>table0out01<=0;

END

CASE;

END

PROCESS;ENDLCs;目前八十三頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)采用嵌入式陣列模塊(M4K)實(shí)現(xiàn)DAFIR濾波器(1)LIBRARYlpm;USElpm.lpm_components.ALL;LIBRARY

ieee;--UsingpredefinedpackagesUSE

ieee.std_logic_1164.ALL;USE

ieee.std_logic_arith.ALL;USE

ieee.std_logic_unsigned.ALL;--Containsconversion

--VECTOR->INTEGERENTITYdaromIS

------>Interface

PORT(clk:IN

STD_LOGIC;x_in0,x_in1,x_in2:IN

STD_LOGIC_VECTOR(2DOWNTO0);y:OUT

INTEGER

RANGE0TO63);ENDdarom;ARCHITECTUREflexOFdaromIS

TYPESTATE_TYPEIS(s0,s1);

SIGNALstate:STATE_TYPE;

SIGNALx0,x1,x2,table_in,mem:STD_LOGIC_VECTOR(2DOWNTO0);

SIGNALtable_out:INTEGER

RANGE0TO7;目前八十四頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)采用M4K實(shí)現(xiàn)DAFIR濾波器(2)BEGINtable_in(0)<=x0(0);table_in(1)<=x1(0);table_in(2)<=x2(0);

PROCESS

------>DAinbehavioralstyle

VARIABLEp:INTEGER

RANGE0TO63;--Temp.register

VARIABLEcount:INTEGER

RANGE0TO3;

BEGIN

--Countstheshifts

WAIT

UNTILclk='1';

CASEstateIS

WHENs0=>--Initializationstepstate<=s1;count:=0;p:=0;x0<=x_in0;x1<=x_in1;x2<=x_in2;

目前八十五頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)采用M4K實(shí)現(xiàn)DAFIR濾波器(3)WHENs1=>--Processingstep

IFcount=3THEN

--Issumofproductdone?y<=p;--Outputofresulttoyandstate<=s0;--startnextsumofproduct

ELSEp:=p/2+table_out*4;x0(0)<=x0(1);x0(1)<=x0(2);x1(0)<=x1(1);x1(1)<=x1(2);x2(0)<=x2(1);x2(1)<=x2(2);count:=count+1;state<=s1;

END

IF;

END

CASE;

END

PROCESS;

目前八十六頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)采用M4K實(shí)現(xiàn)DAFIR濾波器(4)rom_1:lpm_rom

GENERIC

MAP(LPM_WIDTH=>3,LPM_WIDTHAD=>3,LPM_OUTDATA=>"UNREGISTERED",LPM_ADDRESS_CONTROL=>"UNREGISTERED",LPM_FILE=>"darom3.mif")

PORT

MAP(address=>table_in,q=>mem);table_out<=CONV_INTEGER(mem);ENDflex;目前八十七頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)有符號(hào)DAFIR濾波器設(shè)計(jì)(1)LIBRARY

ieee;--UsingpredefinedpackagesUSE

ieee.std_logic_1164.ALL;USE

ieee.std_logic_arith.ALL;PACKAGEda_packageIS

--UserdefinedcomponentsCOMPONENTcase3s

PORT(table_in:IN

STD_LOGIC_VECTOR(2DOWNTO0);table_out:OUT

INTEGER

RANGE-2TO4);END

COMPONENT;ENDda_package;LIBRARY

work;USE

work.da_package.ALL;LIBRARY

ieee;--UsingpredefinedpackagesUSE

ieee.std_logic_1164.ALL;USE

ieee.std_logic_arith.ALL;ENTITYdasignIS

------>Interface

PORT(clk:IN

STD_LOGIC;x_in0,x_in1,x_in2:IN

STD_LOGIC_VECTOR(3DOWNTO0);y:OUT

INTEGER

RANGE-64TO63);ENDdasign;目前八十八頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)有符號(hào)DAFIR濾波器設(shè)計(jì)(2)ARCHITECTUREflexOFdasignIS

TYPESTATE_TYPEIS(s0,s1);

SIGNALstate:STATE_TYPE;

SIGNALtable_in:STD_LOGIC_VECTOR(2DOWNTO0);

SIGNALx0,x1,x2:STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALtable_out:INTEGER

RANGE-2TO4;BEGINtable_in(0)<=x0(0);table_in(1)<=x1(0);table_in(2)<=x2(0);

PROCESS

------>DAinbehavioralstyle

VARIABLEp:INTEGER

RANGE-64TO63;--Temporaryreg.

VARIABLEcount:INTEGER

RANGE0TO4;--Countsthe

BEGIN

--shifts

WAIT

UNTILclk='1';

CASEstateIS

WHENs0=>--Initializationstepstate<=s1;count:=0;p:=0;x0<=x_in0;x1<=x_in1;x2<=x_in2;目前八十九頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)有符號(hào)DAFIR濾波器設(shè)計(jì)(3)WHENs1=>--Processingstep

IFcount=4THEN

--Issumofproductdone?y<=p;--Outputofresulttoyandstate<=s0;--startnextsumofproduct

ELSE

IFcount=3THEN

--Subtractforlastp:=p/2-table_out*8;--accumulatorstep

ELSEp:=p/2+table_out*8;--Accumulationfor

END

IF;--allothersteps

FORkIN0TO2LOOP

--Shiftbitsx0(k)<=x0(k+1);x1(k)<=x1(k+1);x2(k)<=x2(k+1);

END

LOOP;count:=count+1;state<=s1;

END

IF;

END

CASE;

END

PROCESS;LC_Table0:case3s

PORT

MAP(table_in=>table_in,table_out=>table_out);ENDflex;目前九十頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)有符號(hào)DAFIR濾波器設(shè)計(jì)(4)LE表LIBRARY

ieee;USE

ieee.std_logic_1164.ALL;USE

ieee.std_logic_arith.ALL;ENTITYcase3sIS

PORT(table_in:IN

STD_LOGIC_VECTOR(2DOWNTO0);table_out:OUT

INTEGER

RANGE-2TO4);ENDcase3s;ARCHITECTURELEsOFcase3sISBEGIN--ThisistheDACASEtablefor--the3coefficients:-2,3,1--automaticallygeneratedwithdagen.exe--DONOTEDIT!

目前九十一頁(yè)\總數(shù)九十八頁(yè)\編于十四點(diǎn)有符號(hào)DAFIR濾波器設(shè)計(jì)(5)PROCESS(table_in)

BEGIN

CASEtable_inIS

WHEN"000"=>table_out<=0;

WHEN"001"=>table_out<=-2;

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論