《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 用CPLD實現(xiàn)FIR數(shù)字濾波器的設計
用CPLD實現(xiàn)FIR數(shù)字濾波器的設計
摘要: 本文介紹了應用Altera 公司的FLEX10K系列CPLD快速完成卷積的方法實現(xiàn)有限沖激響應(FIR)濾波器的設計。采用可編程的帶有只讀平臺的嵌入陣列塊(EAB)在配置期間可執(zhí)行邏輯功能并建立一個大的查找表(LUT),在這個查找表里用查找的結果執(zhí)行組合邏輯函數(shù),而不用計算它們。顯然,用這種組合邏輯函數(shù)執(zhí)行比通常在邏輯里應用算法執(zhí)行要快,而且專用EAB容易應用,并且快速提供可能預測的延遲。
Abstract:
Key words :

當前,無論在軍事還是民用方面,對于數(shù)字信號處理的實時性、快速性的要求越來越高??删幊踢壿嬈骷≒LD)由于在速度和集成度的飛速提高,越來越多的電子系統(tǒng)采用可編程邏輯器件來實現(xiàn)數(shù)字濾波。

Altera公司的FLEX10K是工業(yè)界第一個嵌入式的PLD,具有高密度、低成本、低功率等優(yōu)點。器件的主要結構特點是除主要的邏輯陣列塊(LAB)之外,首次采用了嵌入陣列塊(EAB)。每個陣列塊包含8個邏輯單元(LE)和一個局部互連。一個LE又由四輸入查找表(LUT)、一個可編程寄存器和專用的載運和級聯(lián)功能的信號通道所組成。

在FLEX10K器件中,把每一組邏輯單元(8個LE)組成一個邏輯陣列塊(LAB),所有的邏輯陣列塊(LAB)排成行和列。在一行里還包含一個單一的EAB。多個LAB和多個EAB采用快速通道互相連接。

嵌入式陣列塊(EAB)是FLEX10K系列器件在結構設計上的一個重要部件。它是一個輸入端口和輸出端口都帶有寄存器的一種靈活的RAM塊,嵌入陣列塊(EAB)組成的規(guī)模和靈活性對比較多的內存是適宜的。功能包括乘法器、向量的標準和誤差矯正電路等。在應用中,這些功能又能夠聯(lián)合完成數(shù)字濾波器和微控制器的功能。

采用可編程的帶有只讀平臺的嵌入陣列塊(EAB)在配置期間可執(zhí)行邏輯功能并建立一個大的查找表(LUT),在這個查找表里用查找的結果執(zhí)行組合邏輯函數(shù),而不用計算它們。顯然,用這種組合邏輯函數(shù)執(zhí)行比通常在邏輯里應用算法執(zhí)行要快,而且專用EAB容易應用,并且快速提供可能預測的延遲。

本文介紹了應用Altera 公司的FLEX10K系列CPLD快速完成卷積的方法實現(xiàn)有限沖激響應(FIR)濾波器的設計。

查表法實現(xiàn)卷積運算方法

有限沖激響應(FIR)濾波器的基本結構如是一個分節(jié)的延時線,把每一節(jié)的輸出加權累加,得到濾波器的輸出。數(shù)學上表示為:

結構如圖1所示。它由用一條均勻間隔抽頭的延遲線上對抽頭信號進行加權求和構成。

根據上式,可以看出FIR數(shù)字濾波器涉及到大量的卷積運算,使用常規(guī)硬件實現(xiàn)時會占用大量的資源。通過充分利用FLEX10K系列芯片所具有的查表結構,將卷積運算轉化為查表移位求和來實現(xiàn)。例如:對于式

y = [ x(1) h(1) ]+[ x(2) h(2) ]+[ x(3) h(3) ] + [ x(4) h(4) ] (1)

假設x和h 都是無符號整型二進制數(shù),寬度兩位,取值兩位如下:

h(1)= 01,h(2)= 11 ,h (3)= 10, h(4)= 11

x(1)= 11,x(2)= 00, x (3)= 10, x(4)= 01

從圖2可以看到式(1)運算的實現(xiàn)。中間數(shù)據p1(n)中的4個數(shù)據實際上是乘數(shù)x(n)的最低位比特與h(n)相乘的結果,并且該值不是0就是h(n)。進一步考慮,中間數(shù)據p1和p2的值,既“100”和“011”是由不同的h(n)之和構成,而對h(n)的選擇是由乘數(shù)x(n)的相同位的比特決定的。例如上圖x(n)的最低位為1001,則p1的值為h(1) + h(4);其高位為1010,則p1的值為 h (1) + h(3)。因此利用Altera公司FLEX器件中的查找表(LUT)結構,預先將h(n)的各種組合存入查找表,則上例中的原需4次乘法 和3次加法的卷積運算轉化為1次加法。圖3顯示了用查找表實現(xiàn)該例的結構。



用查表法實現(xiàn)卷積運算時,有并行和串行兩種結構。圖3中為并行結構,其中兩個LUT是完全相同的。在并行結構中,LUT的數(shù)量根據x(n)的數(shù)據寬度決定。一位對應一個LUT,這樣速度達到最大,在FLEX10K的結構中提供了兩條專用數(shù)據通道,即進位鏈和級聯(lián)鏈,通過級聯(lián)鏈相鄰的LUT可以用來并行計算函數(shù)的各個部分。

利用FLEX10K芯片實現(xiàn)FIR數(shù)字濾波器

FELEX10K系列芯片具有查找表結構,利用其實現(xiàn)采用全局并行的FIR數(shù)字濾波器,也即將輸入x(n) 經過不同的延遲后同時進行處理。

FIR數(shù)字濾波器的層次結構圖如圖4所示:

控制器模塊(contr)的作用是產生控制信號對延遲、并串轉換、抽頭系數(shù)、移位相加模塊進行控制,以使它們按一定的形式組合在一起實現(xiàn)濾波器功能??刂破髂K在接收到A/D轉換結束信號后,依次產生移位寄存器使能信號、并行到串行轉換的裝入信號、移位相加的裝入信號、加減控制信號和濾波結果輸出信號等各種控制信號,使上述各個模塊按照一定的時序進行操作,從而完成濾波功能。時延環(huán)節(jié)模塊(shift-reg)的作用為使A/D轉換后的數(shù)據通過不同的觸發(fā)器,進而產生不同的延遲。并/串轉換模塊(p-s-ff)的作用是將通過時延模塊產生的不同延遲分別同時轉換為查找表的串行地址,提供給抽頭系數(shù)模塊。抽頭系數(shù)模塊(sub-rom)將抽頭系數(shù)的各種組合固化在ROM中。它的地址輸入端接收并/串轉換模塊的串行輸出,然后查表得到卷積的中間數(shù)據.。移位相加模塊通過將中間數(shù)據移位相加而實現(xiàn)兩個數(shù)相乘的功能。

此內容為AET網站原創(chuàng),未經授權禁止轉載。