基于FPGA分布式算法的濾波器設(shè)計(jì)
0 引言
傳統(tǒng)數(shù)字濾波器硬件的實(shí)現(xiàn)主要采用專用集成電路(ASIC)和數(shù)字信號處理器(DSP)來實(shí)現(xiàn)。FPGA內(nèi)部的功能塊中采用了SRAM的查找表(lo-ok up table,LUT)結(jié)構(gòu),這種結(jié)構(gòu)特別適用于并行處理結(jié)構(gòu),相對于傳統(tǒng)方法來說,其并行度和擴(kuò)展性都很好,它逐漸成為構(gòu)造可編程高性能算法結(jié)構(gòu)的新選擇。
分布式算法是一種適合FPGA設(shè)計(jì)的乘加運(yùn)算,由于FPGA中硬件乘法器資源有限,直接應(yīng)運(yùn)乘法會消耗大量的資源。本文利用了豐富的存儲器資源進(jìn)行查找表運(yùn)算,設(shè)計(jì)了一種基于分布式算法低通FIR濾波器;利用線性相位FIR濾波器的對稱性減小了硬件規(guī)模;利用分割查找表的方法減小了存儲空間;采用并行分布式算法結(jié)構(gòu)和流水線技術(shù)提高了濾波器的速度,在FPGA上實(shí)現(xiàn)了該濾波器。
1 分布式的濾波器算法
FIR濾波器突出的特點(diǎn)是單位取樣響應(yīng)h(n)僅有有限個(gè)非零值。對于一個(gè)N階的FIR濾波器形式如下:
在許多數(shù)字信號處理應(yīng)用領(lǐng)域中,在技術(shù)上是不需要通用的乘法算法的。對于本系統(tǒng)可以通過Matlab中的fdatool工具根據(jù)設(shè)計(jì)要求設(shè)計(jì)出濾波器的系統(tǒng)函數(shù)h(n),那么乘積項(xiàng)h(k)×x(n-k)就變成了2個(gè)常數(shù)的乘法。無符號數(shù)的分布式算法和有符號數(shù)的分布式算法是分布式算法在FIR濾波器中的2種典型算法。
1.1 無符號數(shù)的分布式算法設(shè)計(jì)
由于FPGA為并行處理結(jié)構(gòu),所以假設(shè)x(n-k)數(shù)據(jù)寬度為L b,則由式(1)可表示為:
由式(1)、式(2)可以得到:
假設(shè):
則式(1)可以表示為:
1.2 有符號數(shù)的分布式算法設(shè)計(jì)
對于有符號數(shù)的補(bǔ)碼表示為:
則由式(5),式(1)可得:
評論