基于FPGA的FIR抽取濾波器設(shè)計
發(fā)布時間:2007/4/12 0:00:00 訪問次數(shù):487
摘 要:本文介紹了FIR抽取濾波器的工作原理,重點闡述了用XC2V1000實現(xiàn)FIR抽取濾波器的方法,并給出了仿真波形和設(shè)計特點。
關(guān)鍵詞:FIR抽取濾波器;流水線操作;FPGA
用FPGA實現(xiàn)抽取濾波器比較復(fù)雜,主要是因為在FPGA中缺乏實現(xiàn)乘法運算的有效結(jié)構(gòu),現(xiàn)在,F(xiàn)PGA中集成了硬件乘法器,使FPGA在數(shù)字信號處理方面有了長足的進步。本文介紹了一種采用Xilinx公司的XC2V1000實現(xiàn)FIR抽取濾波器的設(shè)計方法。
具體實現(xiàn)
結(jié)構(gòu)設(shè)計
基于抽取濾波器的工作原理,本文采用XC2V1000實現(xiàn)了一個抽取率為2、具有線性相位的3階FIR抽取濾波器,利用原理圖和VHDL共同完成源文件設(shè)計。圖1是抽取濾波器的頂層原理圖。其中,clock是工作時鐘,reset是復(fù)位信號,enable是輸入數(shù)據(jù)有效信號,data_in(17:0)是輸入數(shù)據(jù),data_out(17:0)是輸出數(shù)據(jù),valid是輸出數(shù)據(jù)有效信號。adder18是加法器模塊,mult18是乘法器模塊,acc36是累加器模塊,signal_36to18是數(shù)據(jù)截位器模塊,fir_controller是控制器模塊。控制器定時向加法器、乘法器和累加器發(fā)送數(shù)據(jù)或控制信號,實現(xiàn)流水線操作。
圖1 抽取濾波器頂層原理圖
控制器
控制器是抽取濾波器的核心模塊,有兩個功能:一是接收輸入數(shù)據(jù),二是向其它模塊發(fā)送數(shù)據(jù)和控制信號。它根據(jù)加法器、乘法器和累加器的時序特性,有規(guī)律地向加法器發(fā)送抽頭數(shù)據(jù),向乘法器發(fā)送系數(shù),向累加器發(fā)送控制信號,讓加法器、乘法器和累加器在每個時鐘周期都完成指定的任務(wù),從而實現(xiàn)流水線操作?刂破饔肰HDL語言描述,用寄存器存放抽頭和系數(shù)。
加法器
加法器的輸入和輸出都是18 bit,用VHDL語言描述實現(xiàn)。它有兩個工作時鐘的延遲,在輸入數(shù)據(jù)準(zhǔn)備好的情況下,第一個時鐘得出相加結(jié)果,第二個時鐘把相加結(jié)果鎖存輸出。
乘法器
乘法器為18 bit輸入,36 bit輸出,用庫元件MULT18X18S和36 bit鎖存器實現(xiàn)。MULT18X18S是XC2V1000自帶的18×18 bit硬件乘法器,單個時鐘就可完成乘法運算。36 bit鎖存器工作于時鐘的上升沿,用VHDL語言描述。乘法器(mult18)也有兩個工作時鐘的延時,在輸入數(shù)據(jù)準(zhǔn)備好的情況下,第一個時鐘得出相乘結(jié)果,第二個時鐘把相乘結(jié)果鎖存輸出。加法器和乘法器采用鎖存輸出的結(jié)構(gòu),雖然增加了一個工作時鐘的延遲,但有利于抽取濾波器穩(wěn)定的工作,提高可靠性。
累加器
36 bit累加器用于累加乘法器的輸出,得出濾波結(jié)果。它有一個控制端口clr,當(dāng)clr為高電平時,輸出前一輪累加結(jié)果,并初始化,開始新一輪累加;當(dāng)clr為低電平時,進行累加運算。累加器用VHDL語言描述。
數(shù)據(jù)截位器
數(shù)據(jù)截位器用VHDL語言描述,用于把累加器的36bit輸出進行取舍處理,一般截掉數(shù)據(jù)低位部分,保留數(shù)據(jù)高位。為了對抽取濾波器進行功能仿真,這里截掉數(shù)據(jù)高18bit,保留數(shù)據(jù)低18bit。
工作過程及功能仿真
下面以抽取濾波器完成一次抽取濾波的全過程為例,說明抽取濾波器的工作過程。假設(shè)時鐘1、時鐘2、時鐘3和時鐘4控制器已接收了數(shù)據(jù)x(n-3)、x(n-2)、x(n-1)和x(n),那么,
時鐘5:控制器向加法器發(fā)送數(shù)據(jù)x(n)和x(n-3);
時鐘6:加法器進行x(n)+x(n-3)運算;控制器向加法器發(fā)送數(shù)據(jù)x(n-1)和x(n-2);
時鐘7:加法器進行x(n-1)+x(n-2)運算,輸出x(n)+x(n-3)運算結(jié)果?刂破飨虺朔ㄆ靼l(fā)送系數(shù)h(0);
時鐘8:加法器輸出x(n-1)+x(n-2)運算結(jié)果,乘法器進行h(0)[ x(n)+x(n-3)]運算,控制器向乘法器發(fā)送系數(shù)h(1);
時鐘9:乘法器進行h(1)[ x(n-1)+x(n-2)]運算,輸出h(0)[ x(n)+x(n-3)]運算結(jié)果。控制器向累加器發(fā)送控制信號(clr為高電平);
時鐘10:乘法器輸出h(1)[ x(n-1)+x(n-2)]運算結(jié)果。累加器初始化,開始累加操作?刂破飨蚶奂悠靼l(fā)送控制信號(clr為低電平);
時鐘11:累加器進行累加運算:h(0)[ x(n)+x(n-3)]+ h(1)[ x(n-1)+x(n-2)]?刂破飨蚶奂悠靼l(fā)送控制信號(clr為高電平),控制器輸出濾波數(shù)據(jù)有效信號(valid為高電平);
時鐘12:累加器輸出h(0)[ x(n)+x(n-3)]+ h(1)[ x(n-1)+x(n-2)] 累加結(jié)果,并初始化,開始新一輪累加操作?刂破鬏敵鰹V波數(shù)據(jù)無效信號(valid為低電平)。
以上就是抽取濾波器完成一次抽取濾波的全過程?梢姡瑥臄(shù)據(jù)x(n)輸入到濾波結(jié)果y(n) 輸出需要8個工作時鐘。如果控制器不停地向乘法器和加法器發(fā)送抽頭、系數(shù)和控制信號,就會形成流水線操作,那么每過兩個時鐘,抽取濾波器就會輸出一個濾波結(jié)果。
兩點注意
摘 要:本文介紹了FIR抽取濾波器的工作原理,重點闡述了用XC2V1000實現(xiàn)FIR抽取濾波器的方法,并給出了仿真波形和設(shè)計特點。
關(guān)鍵詞:FIR抽取濾波器;流水線操作;FPGA
用FPGA實現(xiàn)抽取濾波器比較復(fù)雜,主要是因為在FPGA中缺乏實現(xiàn)乘法運算的有效結(jié)構(gòu),現(xiàn)在,F(xiàn)PGA中集成了硬件乘法器,使FPGA在數(shù)字信號處理方面有了長足的進步。本文介紹了一種采用Xilinx公司的XC2V1000實現(xiàn)FIR抽取濾波器的設(shè)計方法。
具體實現(xiàn)
結(jié)構(gòu)設(shè)計
基于抽取濾波器的工作原理,本文采用XC2V1000實現(xiàn)了一個抽取率為2、具有線性相位的3階FIR抽取濾波器,利用原理圖和VHDL共同完成源文件設(shè)計。圖1是抽取濾波器的頂層原理圖。其中,clock是工作時鐘,reset是復(fù)位信號,enable是輸入數(shù)據(jù)有效信號,data_in(17:0)是輸入數(shù)據(jù),data_out(17:0)是輸出數(shù)據(jù),valid是輸出數(shù)據(jù)有效信號。adder18是加法器模塊,mult18是乘法器模塊,acc36是累加器模塊,signal_36to18是數(shù)據(jù)截位器模塊,fir_controller是控制器模塊?刂破鞫〞r向加法器、乘法器和累加器發(fā)送數(shù)據(jù)或控制信號,實現(xiàn)流水線操作。
圖1 抽取濾波器頂層原理圖
控制器
控制器是抽取濾波器的核心模塊,有兩個功能:一是接收輸入數(shù)據(jù),二是向其它模塊發(fā)送數(shù)據(jù)和控制信號。它根據(jù)加法器、乘法器和累加器的時序特性,有規(guī)律地向加法器發(fā)送抽頭數(shù)據(jù),向乘法器發(fā)送系數(shù),向累加器發(fā)送控制信號,讓加法器、乘法器和累加器在每個時鐘周期都完成指定的任務(wù),從而實現(xiàn)流水線操作。控制器用VHDL語言描述,用寄存器存放抽頭和系數(shù)。
加法器
加法器的輸入和輸出都是18 bit,用VHDL語言描述實現(xiàn)。它有兩個工作時鐘的延遲,在輸入數(shù)據(jù)準(zhǔn)備好的情況下,第一個時鐘得出相加結(jié)果,第二個時鐘把相加結(jié)果鎖存輸出。
乘法器
乘法器為18 bit輸入,36 bit輸出,用庫元件MULT18X18S和36 bit鎖存器實現(xiàn)。MULT18X18S是XC2V1000自帶的18×18 bit硬件乘法器,單個時鐘就可完成乘法運算。36 bit鎖存器工作于時鐘的上升沿,用VHDL語言描述。乘法器(mult18)也有兩個工作時鐘的延時,在輸入數(shù)據(jù)準(zhǔn)備好的情況下,第一個時鐘得出相乘結(jié)果,第二個時鐘把相乘結(jié)果鎖存輸出。加法器和乘法器采用鎖存輸出的結(jié)構(gòu),雖然增加了一個工作時鐘的延遲,但有利于抽取濾波器穩(wěn)定的工作,提高可靠性。
累加器
36 bit累加器用于累加乘法器的輸出,得出濾波結(jié)果。它有一個控制端口clr,當(dāng)clr為高電平時,輸出前一輪累加結(jié)果,并初始化,開始新一輪累加;當(dāng)clr為低電平時,進行累加運算。累加器用VHDL語言描述。
數(shù)據(jù)截位器
數(shù)據(jù)截位器用VHDL語言描述,用于把累加器的36bit輸出進行取舍處理,一般截掉數(shù)據(jù)低位部分,保留數(shù)據(jù)高位。為了對抽取濾波器進行功能仿真,這里截掉數(shù)據(jù)高18bit,保留數(shù)據(jù)低18bit。
工作過程及功能仿真
下面以抽取濾波器完成一次抽取濾波的全過程為例,說明抽取濾波器的工作過程。假設(shè)時鐘1、時鐘2、時鐘3和時鐘4控制器已接收了數(shù)據(jù)x(n-3)、x(n-2)、x(n-1)和x(n),那么,
時鐘5:控制器向加法器發(fā)送數(shù)據(jù)x(n)和x(n-3);
時鐘6:加法器進行x(n)+x(n-3)運算;控制器向加法器發(fā)送數(shù)據(jù)x(n-1)和x(n-2);
時鐘7:加法器進行x(n-1)+x(n-2)運算,輸出x(n)+x(n-3)運算結(jié)果。控制器向乘法器發(fā)送系數(shù)h(0);
時鐘8:加法器輸出x(n-1)+x(n-2)運算結(jié)果,乘法器進行h(0)[ x(n)+x(n-3)]運算,控制器向乘法器發(fā)送系數(shù)h(1);
時鐘9:乘法器進行h(1)[ x(n-1)+x(n-2)]運算,輸出h(0)[ x(n)+x(n-3)]運算結(jié)果?刂破飨蚶奂悠靼l(fā)送控制信號(clr為高電平);
時鐘10:乘法器輸出h(1)[ x(n-1)+x(n-2)]運算結(jié)果。累加器初始化,開始累加操作。控制器向累加器發(fā)送控制信號(clr為低電平);
時鐘11:累加器進行累加運算:h(0)[ x(n)+x(n-3)]+ h(1)[ x(n-1)+x(n-2)]?刂破飨蚶奂悠靼l(fā)送控制信號(clr為高電平),控制器輸出濾波數(shù)據(jù)有效信號(valid為高電平);
時鐘12:累加器輸出h(0)[ x(n)+x(n-3)]+ h(1)[ x(n-1)+x(n-2)] 累加結(jié)果,并初始化,開始新一輪累加操作?刂破鬏敵鰹V波數(shù)據(jù)無效信號(valid為低電平)。
以上就是抽取濾波器完成一次抽取濾波的全過程?梢姡瑥臄(shù)據(jù)x(n)輸入到濾波結(jié)果y(n) 輸出需要8個工作時鐘。如果控制器不停地向乘法器和加法器發(fā)送抽頭、系數(shù)和控制信號,就會形成流水線操作,那么每過兩個時鐘,抽取濾波器就會輸出一個濾波結(jié)果。
兩點注意
熱門點擊
- OrCAD/PSpice9偏壓點和直流掃描分
- 16位Σ-ΔA/D轉(zhuǎn)換器AD7705與微控制
- 有限帶寬信號的采樣和混疊分析
- 一種增大放大器增益的方法
- LTC6910系列數(shù)字控制可編程增益放大器原
- 可編程多路A/D轉(zhuǎn)換芯片THS1206的原理
- 四通道四象限模擬乘法器MLT04
- 使用Verilog實現(xiàn)基于FPGA的SDRA
- 基于FCHIP2指紋芯片的應(yīng)用方案
- PCB線路板抄板方法及步驟
推薦技術(shù)資料
- 泰克新發(fā)布的DSA830
- 泰克新發(fā)布的DSA8300在一臺儀器中同時實現(xiàn)時域和頻域分析,DS... [詳細(xì)]
- CV/CC InnoSwitch3-AQ 開
- URF1DxxM-60WR3系
- 1-6W URA24xxN-x
- 閉環(huán)磁通門信號調(diào)節(jié)芯片NSDRV401
- SK-RiSC-SOM-H27X-V1.1應(yīng)
- RISC技術(shù)8位微控制器參數(shù)設(shè)
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究