王和明,路文龍,張啟亮
(空軍工程大學(xué)導(dǎo)彈學(xué)院,陜西 三原 713800)
目前實(shí)現(xiàn) FIR(Finite Impulse Response,有限長(zhǎng)單位沖激響應(yīng))濾波器的器件主要有三種:專用芯片、DSP(Digital Signal Processor)和 FPGA (Field Programmable Gate Array)。專用芯片實(shí)現(xiàn)的濾波器存在功能單一的缺點(diǎn);使用DSP實(shí)現(xiàn)濾波器由于程序順序執(zhí)行,難以實(shí)現(xiàn)高速、高階的濾波器[1];FPGA能夠并行執(zhí)行邏輯運(yùn)算,并且可通過(guò)增加邏輯單元的方式使運(yùn)算速度不受階數(shù)增加的影響,在設(shè)計(jì)高速、高階的濾波器時(shí)受到越來(lái)越多技術(shù)開發(fā)人員的關(guān)注。
通過(guò)FPGA實(shí)現(xiàn)FIR濾波器時(shí),使用DSP運(yùn)算結(jié)構(gòu)只是在利用FPGA的乘法器資源來(lái)?yè)Q取濾波器速度的提升,這對(duì)實(shí)現(xiàn)高階濾波器非常不利。DA算法 (Distributed Arithmetic,分布式算法)采用不同于通用DSP的乘累加結(jié)構(gòu),使得濾波器運(yùn)算速度不隨著階數(shù)的增加而降低,同時(shí)降低了進(jìn)行濾波運(yùn)算所需的資源[2]。本文在對(duì)DA算法分析研究的基礎(chǔ)上,設(shè)計(jì)了基于分布式算法的有限長(zhǎng)單位沖激響應(yīng)濾波器。
DA算法作為一項(xiàng)重要的FPGA技術(shù),廣泛地用于計(jì)算相關(guān)、DFT以及濾波器等乘累加(Sum of Products,SOP)問(wèn)題中[3]。如式(1)所示,N -1表示對(duì)數(shù)據(jù)的總延遲時(shí)鐘數(shù)。
式(1)中,h(n)為 N 階濾波器的第n 個(gè)系數(shù),x(n)為第n個(gè)抽頭對(duì)應(yīng)的數(shù)據(jù)。設(shè)x(n)是位寬為M比特的二 進(jìn) 制 數(shù),以 二 進(jìn) 制 補(bǔ) 碼 形 式 表 示:xM-1(n)xM-2(n)…x1(n)x0(n),其 中 xM-1(n)為 符 號(hào) 位,x0(n)為最低位,則x(n)可表示為:
將式(2)表示的x(n)代入式(1)并整理,得
圖1 DA算法實(shí)現(xiàn)原理Fig.1 Principle of distributed arithmetic
采用DA算法進(jìn)行濾波器設(shè)計(jì)主要消耗FPGA的存儲(chǔ)器資源,且隨著濾波器階數(shù)的增加存儲(chǔ)器的容量成指數(shù)增長(zhǎng)[4],顯然FPGA將越來(lái)越難以實(shí)現(xiàn)。如果將高階濾波器拆分為多個(gè)階數(shù)較少濾波器的級(jí)聯(lián),可有效減少FPGA的查找表的資源占用。對(duì)于通過(guò)L個(gè)K階濾波器級(jí)聯(lián)實(shí)現(xiàn)的N階濾波器,設(shè)濾波器的位寬為M,則減少的查找表資源為(2N-L·2K)×M。
另一方面,DA算法通過(guò)將數(shù)據(jù)流的串行運(yùn)算變?yōu)閿?shù)據(jù)位的串行計(jì)算,在需要較高精度時(shí),位寬一般很長(zhǎng),仍然會(huì)導(dǎo)致濾波器工作速度的大幅下降。這可以通過(guò)增加DA算法的并行度來(lái)解決。圖2為采用全并行的方式實(shí)現(xiàn)DA算法,將濾波器所有抽頭對(duì)應(yīng)的數(shù)據(jù)位同時(shí)作為查找表的輸入地址,將輸出結(jié)果進(jìn)行移位相加,同時(shí)加入流水線寄存器,理論上可實(shí)現(xiàn)一個(gè)時(shí)鐘輸出結(jié)果。這只是實(shí)現(xiàn)DA算法時(shí)追求計(jì)算速度的一種極端情況,實(shí)際設(shè)計(jì)需根據(jù)對(duì)速度的具體要求增加DA算法的并行度以提高運(yùn)算速度。這也體現(xiàn)了程序設(shè)計(jì)中的資源與速度互換原則。
圖2 全并行DA算法實(shí)現(xiàn)原理Fig.2 Principle of distributed arithmetic in parallel
FIR濾波器不含反饋環(huán)節(jié)具有穩(wěn)定性,且能夠保證線性相位關(guān)系,因而應(yīng)用十分廣泛。濾波器實(shí)現(xiàn)結(jié)構(gòu)如圖3所示。
圖3 FIR濾波器實(shí)現(xiàn)結(jié)構(gòu)Fig.3 FIR filter structure
在通過(guò)查找表實(shí)現(xiàn)濾波器系數(shù)與輸入數(shù)據(jù)的乘法運(yùn)算之前,先將具有相同濾波器系數(shù)的數(shù)據(jù)相加,然后乘以濾波器系數(shù)。此處利用了濾波器系數(shù)的對(duì)稱性,增加一個(gè)數(shù)據(jù)位以及N/2個(gè)加法器,卻減少N/2個(gè)乘法器。濾波器結(jié)構(gòu)中的乘累加結(jié)構(gòu)采用分布式算法實(shí)現(xiàn)。
文中采用改進(jìn)的分布式算法,以有效降低實(shí)現(xiàn)FIR濾波器占用的資源。首先將分布式算法中存儲(chǔ)系數(shù)所有乘積結(jié)果的只讀存儲(chǔ)器變換為隨機(jī)存儲(chǔ)器并配以系數(shù)加載電路,實(shí)現(xiàn)濾波器的通用性;然后通過(guò)乒乓操作方式解決系數(shù)加載引起的實(shí)時(shí)性問(wèn)題,以便在實(shí)時(shí)系統(tǒng)中應(yīng)用。
FIR濾波器系數(shù)決定其實(shí)現(xiàn)的濾波特性,因此通過(guò)對(duì)同一個(gè)濾波器結(jié)構(gòu)加載不同的濾波器系數(shù)即可實(shí)現(xiàn)濾波功能的改變[5]。如圖4所示,將DA算法實(shí)現(xiàn)濾波器乘法中的ROM變換為RAM,同時(shí)開放RAM的寫數(shù)據(jù)端與寫地址端給數(shù)據(jù)加載電路,可實(shí)現(xiàn)濾波器系數(shù)的加載,進(jìn)而實(shí)現(xiàn)通用濾波器。
圖4 通用FIR濾波器實(shí)現(xiàn)原理Fig.4 Principle of universal FIR filter
從圖4中可以看到,系數(shù)加載控制電路中需要配置存儲(chǔ)器用以存儲(chǔ)濾波器系數(shù),而存儲(chǔ)器容量的大小直接影響濾波器能夠?qū)崿F(xiàn)多少種濾波特性。如果仍然按照DA算法需要的所有二進(jìn)制結(jié)果進(jìn)行存儲(chǔ),將會(huì)占用大量的存儲(chǔ)資源。此處通過(guò)加入乘法器與計(jì)數(shù)器,令計(jì)數(shù)器的輸出只同時(shí)作為乘法器的輸入值和RAM的地址,在對(duì)存儲(chǔ)的濾波器系數(shù)與數(shù)據(jù)的所有乘積結(jié)果計(jì)算出來(lái)的同時(shí)存入相應(yīng)地址的RAM中,從而實(shí)現(xiàn)對(duì)DA算法中RAM數(shù)據(jù)的加載,這樣可以在實(shí)現(xiàn)通用濾波器的同時(shí)極大地降低對(duì)存儲(chǔ)器的需求。如果需要提高數(shù)據(jù)加載的速度,可以通過(guò)增加乘法器的數(shù)量來(lái)實(shí)現(xiàn)。
對(duì)于上述通用濾波器,雖然可以通過(guò)增加系數(shù)加載控制電路的并行度來(lái)提高系數(shù)加載的速度,但是在系數(shù)加載的過(guò)程中仍然不能進(jìn)行數(shù)據(jù)處理。對(duì)于N階濾波器,每次加載系數(shù)需要向查找表中存入2N個(gè)計(jì)算結(jié)果,將上述數(shù)據(jù)存入一個(gè)查找表至少需要2N個(gè)時(shí)鐘。濾波器階數(shù)越高,改變?yōu)V波特性時(shí)需要等待的時(shí)間越長(zhǎng),極大地限制了通用濾波器在實(shí)時(shí)系統(tǒng)中的應(yīng)用。參考對(duì)數(shù)據(jù)采樣處理時(shí)使用的方法,在這里可以使用乒乓操作[6]以提高濾波器的實(shí)時(shí)性。乒乓操作是一個(gè)常用于數(shù)據(jù)流控制的處理技巧,通過(guò)兩個(gè)數(shù)據(jù)緩沖區(qū)將數(shù)據(jù)輸入緩沖區(qū)與從緩沖區(qū)輸出數(shù)據(jù)兩個(gè)操作分開,在輸入選擇器和輸出選擇器相互配合下將經(jīng)過(guò)緩沖后的數(shù)據(jù)連續(xù)不斷地送入數(shù)據(jù)處理單元。
如圖5所示,同時(shí)采用兩個(gè)通用濾波器,通過(guò)選擇器對(duì)輸出的濾波器結(jié)果進(jìn)行切換輸出。由于兩個(gè)通用濾波器在任何時(shí)刻都會(huì)有一個(gè)濾波器工作,因而可以對(duì)數(shù)據(jù)進(jìn)行實(shí)時(shí)處理,濾波器功能切換只需要一個(gè)時(shí)鐘即可完成;同時(shí)每次都只有一個(gè)濾波器進(jìn)行數(shù)據(jù)加載,因而使兩個(gè)通用濾波器共用一個(gè)系數(shù)加載控制電路,這樣可以減少一個(gè)系數(shù)加載控制電路占用的邏輯資源。
圖5 實(shí)時(shí)FIR濾波器實(shí)現(xiàn)原理Fig.5 Principle of real-time FIR filter
選用DSP Development Kit作為實(shí)驗(yàn)平臺(tái),其中FPGA芯片型號(hào)為EP2C70F672C6;使用嵌入在Matlab中的DSP builder軟件搭建電路模型,采用硬件回環(huán)測(cè)試方法進(jìn)行實(shí)驗(yàn)驗(yàn)證。首先進(jìn)行電路模型仿真,然后對(duì)模型編譯實(shí)現(xiàn)電路,在JTAG模式下通過(guò)USBblaster將程序下載到FPGA芯片中,仿真源信號(hào)由Matlab提供,測(cè)試結(jié)果再通過(guò)USBblaster傳回到Matlab中進(jìn)行顯示。硬件回環(huán)測(cè)試方法可很好地利用Matlab眾多的仿真源以及友好的顯示界面。
存儲(chǔ)器中存儲(chǔ)多組濾波器系數(shù),位寬為8位,分別實(shí)現(xiàn)64階的低通、高通、帶通以及帶阻濾波器,由控制電路通過(guò)依次加載4組系數(shù)來(lái)實(shí)現(xiàn)上述4種功能。當(dāng)濾波器的RAM中加載入不同的系數(shù)時(shí),濾波器選通的頻帶也隨之發(fā)生變化。Matlab提供的仿真信號(hào)為線性調(diào)頻信號(hào),頻率變化范圍為0~20 MHz,重復(fù)周期為5μs。
如圖6所示,(a)、(b)上半部分為周期性變化的線性調(diào)頻信號(hào),頻率調(diào)制規(guī)律為三角波調(diào)制;(a)、(b)下半部分為通用實(shí)時(shí)濾波器的輸出結(jié)果。從圖6(a)中可以看到,濾波器開始為低通濾波器,將線性調(diào)頻信號(hào)的低頻部分輸出;然后轉(zhuǎn)變?yōu)閹V波器,輸出頻率更高的信號(hào)。由于調(diào)頻信號(hào)為三角波調(diào)制,帶通濾波器輸出結(jié)果具有對(duì)稱性。圖6(b)顯示的結(jié)果表明濾波器從高通濾波器變?yōu)閹V波器,然后再轉(zhuǎn)變?yōu)榈屯V波器;在轉(zhuǎn)變?yōu)榈屯V波器時(shí),輸出結(jié)果快速轉(zhuǎn)變,不存在時(shí)間差。相比于傳統(tǒng)DA算法實(shí)現(xiàn)的FIR濾波器,文中設(shè)計(jì)的通用濾波器不需要為每一種濾波器特性重復(fù)耗費(fèi)存儲(chǔ)乘積結(jié)果的查找表,極大地節(jié)省了實(shí)現(xiàn)濾波器的資源;隨著濾波器系數(shù)的增加,這種效果將更加明顯。
圖6 硬件回環(huán)測(cè)試結(jié)果Fig.6 Results of test with hardware in loop
本文在對(duì)DA算法研究的基礎(chǔ)上,設(shè)計(jì)了基于分布式算法的有限長(zhǎng)單位沖激響應(yīng)濾波器。文中提出將實(shí)現(xiàn)算法中的ROM變換為RAM,通過(guò)加載不同的濾波器系數(shù)實(shí)現(xiàn)通用濾波器的設(shè)計(jì);并采用乒乓操作的方法,解決了濾波器由于加載系數(shù)需要時(shí)間而造成的難以實(shí)時(shí)工作問(wèn)題。硬件回環(huán)測(cè)試結(jié)果表明:濾波器能以較少邏輯資源實(shí)現(xiàn)多種濾波器特性及對(duì)數(shù)據(jù)處理的無(wú)縫交接,滿足系統(tǒng)的實(shí)時(shí)性要求。
[1]戴敬,王超.基于FPGA多級(jí)分布式算法的FIR數(shù)字濾波器的設(shè)計(jì)[J].沈陽(yáng)建筑大學(xué)學(xué)報(bào)(自然科學(xué)版),2010,26(1):196-200.DAI Jing,WANG Chao.The design of multi-channels distributed arithmetic algorithm FIR ailter based on FPGA[J].Journal of Shenyang Jianzhu University,2010,26(1):196-200.
[2]FREENY S L.Special purpose hardware for digital filtering[J].Proc IEEE,1975,4(6):633-648.
[3]Meyer Baese U.Digital Signal Processing with Field Programmable Gate Arrays[M].Third Edition.US:Springer,2007.
[4]陳亦歐,李廣軍.采用分布式算法的高速FIR濾波器ASIC設(shè)計(jì)[J].微電子學(xué),2007,37(1):144-146.CHEN Yiou,LI Guangjun.Design of a high speed FIR filter ASIC using distributed arithmetic[J].Microelectronics,2007,37(1):144-146.
[5]高西全,丁玉美.數(shù)字信號(hào)處理[M].第二版.北京:電子工業(yè)出版社,2010.
[6]吳繼華,王誠(chéng).Altera FPGA/CPLD設(shè)計(jì)[M].高級(jí)篇.北京:人民郵電出版社,2005.