基于FDATool的FIR濾波器設(shè)計(jì)方法(一)
FIR濾波器根據(jù)輸入數(shù)據(jù)速率的不同可分為串行結(jié)構(gòu)、半并行結(jié)構(gòu)和全并行結(jié)構(gòu)。串行結(jié)構(gòu)的FIR濾波器是將并行數(shù)據(jù)串行輸入,所需的DSP資源較少,但是數(shù)據(jù)吞吐率較低;而全并行結(jié)構(gòu)的FIR濾波器數(shù)據(jù)是并行輸入,濾波系數(shù)的個數(shù)就決定了所需DSP資源的個數(shù),資源耗用較多,但是吞吐率可以做到很大。在大多數(shù)應(yīng)用中,如無線數(shù)字中頻處理,所需數(shù)據(jù)吞吐率一般都較高,因此采用的是全并行結(jié)構(gòu)的FIR濾波器。
本文引用地址:http://www.ex-cimer.com/article/249651.htm全并行FIR濾波器根據(jù)實(shí)現(xiàn)結(jié)構(gòu)不同可分為:直接型(Transverse)、轉(zhuǎn)置型(Transpose)和脈動型(Systolic),這一節(jié)主要講解直接型FIR濾波器設(shè)計(jì)。
(一)直接型
直接型FIR濾波器在上一節(jié)中也有介紹,如圖1所示,數(shù)據(jù)x(n)移入并寄存,如果有11個抽頭,因此直接型FIR濾波器需要11個乘加模塊。
圖1
FPGA實(shí)現(xiàn)時(shí),直接采用上圖中結(jié)構(gòu),不對中間數(shù)據(jù)寄存,則關(guān)鍵路徑是x(n)h(0)+x(n-1)h(1)…x(n-N+1)h(N-1),以階數(shù)10的FIR濾波器為例,如下為抽頭系數(shù):
coe_0 = -1241
coe_1 = -650
coe_2 = 1300
coe_3 = 4739
coe_4 = 8126
coe_5 = 9544
coe_6 = 8126
coe_7 = 4739
coe_8 = 1300
coe_9 = -650
coe_10 = -1241
數(shù)據(jù)輸入時(shí)打了一拍,輸出時(shí)打了一拍。綜合后結(jié)果如下:
Number of Slice Registers: 2
Number of Slice LUTs: 19
Number of DSP48E1s: 11
關(guān)鍵路徑中數(shù)據(jù)路徑延時(shí)報(bào)告如圖2所示,數(shù)據(jù)路徑延時(shí)包括乘法器延時(shí)Tdspcko PCOUT AREG MULT (3.001ns)+ 10個級聯(lián)加法器延時(shí)Tdspdo PCIN PCOUT(1.219),數(shù)據(jù)路徑延時(shí)總共15.017ns,因此fmax最大不過66.273MHz。可以發(fā)現(xiàn)綜合器自動將乘法器和加法器在 DSP48E1中實(shí)現(xiàn)。
圖2
加法樹實(shí)現(xiàn):
直接型FIR濾波器的一般實(shí)現(xiàn)方法關(guān)鍵路徑中有較多級的加法器,所有加法器延時(shí)累加后導(dǎo)致關(guān)鍵路徑延時(shí)較大,對整個FIR濾波器的性能造成了很大影響。為了解決加法器延時(shí)累加的問題,可采用加法樹結(jié)構(gòu),如圖3所示為采用了加法數(shù)的直接型FIR濾波器結(jié)構(gòu),這種層次化的樹型結(jié)構(gòu),使加法器邏輯由級聯(lián)結(jié)構(gòu)轉(zhuǎn)化成并行結(jié)構(gòu),這樣整個路徑的延時(shí)減小。
圖3
流水線實(shí)現(xiàn):
雖然直接型FIR濾波器采用加法樹結(jié)構(gòu)后優(yōu)化了關(guān)鍵路徑,但是時(shí)序還是不夠理想,因?yàn)殛P(guān)鍵路徑上至少有一個乘法器和一個加法器的延時(shí),如果想竟可能的優(yōu)化時(shí)序,可以分隔乘法器和加法器邏輯,中間加一級寄存器,即采用流水線實(shí)現(xiàn)。
那如何有效地分割邏輯呢?可以在圖3中加法樹結(jié)構(gòu)的基礎(chǔ)上分割,在原先的關(guān)鍵路徑上,乘法器延時(shí)3.001ns,加法器延時(shí)1.219ns,因此可以將邏輯分割成如下**:
第1級:乘法器
第2級:2級加法器
第3級:3個數(shù)累加即2級加法器
如圖4所示為流水線實(shí)現(xiàn)的FIR濾波器,邏輯分割后的關(guān)鍵路徑是乘法器那一級,理論分析得到的延時(shí)只有3.001ns,如果時(shí)鐘約束到250MHz可滿足時(shí)序要求。
圖4
實(shí)際得到綜合結(jié)果如下:
Number of Slice Registers: 105
Number of Slice LUTs: 124
Number of DSP48E1s: 11
Minimum period: 3.037ns{1} (Maximum frequency: 329.272MHz)
fmax能達(dá)到329.272MHz,延時(shí)基本與預(yù)期的差不多,F(xiàn)IR濾波器能達(dá)到這樣的性能基本能滿足大多數(shù)應(yīng)用了。
線性相位FIR濾波器:
FIR濾波器有一特征:線性相位,直接表現(xiàn)在抽頭系數(shù)上,抽頭系數(shù)為偶對稱或者奇對稱,在這節(jié)實(shí)例中,系數(shù)是偶對稱的,即 h(0)=h(10),h(1)=h(9),h(2)=h(8),h(3)=h(7),h(4)=h(6),直接型FIR結(jié)構(gòu)優(yōu)化后如圖5所示,輸入數(shù)據(jù)在與系數(shù)相乘之前,因系數(shù)對稱,可以先將相同系數(shù)對應(yīng)的數(shù)據(jù)進(jìn)行預(yù)加操作,然后再與系數(shù)相乘,如此做法的好處是是乘法器資源減少了近一半,此例中DSP資源由原先需要11個到現(xiàn)在只需6個。而且,在Xilinx FPGA中的DSP48E1資源專門為線性相位FIR濾波器應(yīng)用提供了預(yù)加pre-adder結(jié)構(gòu),即預(yù)加和乘法都可以在1個DSP48E1中完成,這樣大大縮短了數(shù)據(jù)路徑的延時(shí),有利于時(shí)序收斂。
圖5
實(shí)際得到綜合結(jié)果如下:
Number of Slice Registers: 184
Number of Slice LUTs: 173
Number of DSP48E1s: 6
Minimum period: 2.854ns{1} (Maximum frequency: 350.385MHz)
fmax能達(dá)到350.385MHz,由于采用了加法樹結(jié)構(gòu),避免了加法器級聯(lián)延時(shí),并且分了3級流水線實(shí)現(xiàn)。關(guān)鍵路徑數(shù)據(jù)延時(shí)報(bào)告如圖6所示,路徑是從 DSP48E1輸出端到dout_d,但是光從代碼中看DSP48E1端到dout_d中間應(yīng)該還有一級加法器的寄存,原來這個加法器采用了 DSP48E1中的累加器實(shí)現(xiàn)了。
圖6
濾波器相關(guān)文章:濾波器原理
濾波器相關(guān)文章:濾波器原理
電源濾波器相關(guān)文章:電源濾波器原理
高通濾波器相關(guān)文章:高通濾波器原理 數(shù)字濾波器相關(guān)文章:數(shù)字濾波器原理
評論