新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > FPGA的FIR抽取濾波器設(shè)計(jì)

FPGA的FIR抽取濾波器設(shè)計(jì)

作者: 時(shí)間:2015-03-03 來(lái)源:網(wǎng)絡(luò) 收藏

  用實(shí)現(xiàn)抽取濾波器比較復(fù)雜,主要是因?yàn)樵?a class="contentlabel" href="http://www.butianyuan.cn/news/listbylabel/label/FPGA">FPGA中缺乏實(shí)現(xiàn)乘法運(yùn)算的有效結(jié)構(gòu),現(xiàn)在,中集成了硬件乘法器,使FPGA在數(shù)字信號(hào)處理方面有了長(zhǎng)足的進(jìn)步。本文介紹了一種采用Xilinx公司的XC2V1000實(shí)現(xiàn)抽取濾波器的設(shè)計(jì)方法。

本文引用地址:http://www.butianyuan.cn/article/270379.htm

  具體實(shí)現(xiàn)

  結(jié)構(gòu)設(shè)計(jì)

  基于抽取濾波器的工作原理,本文采用XC2V1000實(shí)現(xiàn)了一個(gè)抽取率為2、具有線性相位的3階抽取濾波器,利用原理圖和VHDL共同完成源文件設(shè) 計(jì)。圖1是抽取濾波器的頂層原理圖。其中,clock是工作時(shí)鐘,reset是復(fù)位信號(hào),enable是輸入數(shù)據(jù)有效信號(hào),data_in(17:0)是 輸入數(shù)據(jù),data_out(17:0)是輸出數(shù)據(jù),valid是輸出數(shù)據(jù)有效信號(hào)。adder18是加法器模塊,mult18是乘法器模塊,acc36 是累加器模塊,signal_36to18是數(shù)據(jù)截位器模塊,fir_controller是控制器模塊??刂破鞫〞r(shí)向加法器、乘法器和累加器發(fā)送數(shù)據(jù)或 控制信號(hào),實(shí)現(xiàn)流水線操作。

  

 

  圖1 抽取濾波器頂層原理圖

  控制器

  控制器是抽取濾波器的核心模塊,有兩個(gè)功能:一是接收輸入數(shù)據(jù),二是向其它模塊發(fā)送數(shù)據(jù)和控制信號(hào)。它根據(jù)加法器、乘法器和累加器的時(shí)序特性,有規(guī)律地向加 法器發(fā)送抽頭數(shù)據(jù),向乘法器發(fā)送系數(shù),向累加器發(fā)送控制信號(hào),讓加法器、乘法器和累加器在每個(gè)時(shí)鐘周期都完成指定的任務(wù),從而實(shí)現(xiàn)流水線操作??刂破饔?VHDL語(yǔ)言描述,用寄存器存放抽頭和系數(shù)。

  加法器

  加法器的輸入和輸出都是18 bit,用VHDL語(yǔ)言描述實(shí)現(xiàn)。它有兩個(gè)工作時(shí)鐘的延遲,在輸入數(shù)據(jù)準(zhǔn)備好的情況下,第一個(gè)時(shí)鐘得出相加結(jié)果,第二個(gè)時(shí)鐘把相加結(jié)果鎖存輸出。

  乘法器

  乘法器為18 bit輸入,36bit輸出,用庫(kù)元件MULT18X18S和36 bit鎖存器實(shí)現(xiàn)。MULT18X18S是XC2V1000自帶的18×18bit硬件乘法器,單個(gè)時(shí)鐘就可完成乘法運(yùn)算。36 bit鎖存器工作于時(shí)鐘的上升沿,用VHDL語(yǔ)言描述。乘法器(mult18)也有兩個(gè)工作時(shí)鐘的延時(shí),在輸入數(shù)據(jù)準(zhǔn)備好的情況下,第一個(gè)時(shí)鐘得出相乘結(jié) 果,第二個(gè)時(shí)鐘把相乘結(jié)果鎖存輸出。加法器和乘法器采用鎖存輸出的結(jié)構(gòu),雖然增加了一個(gè)工作時(shí)鐘的延遲,但有利于抽取濾波器穩(wěn)定的工作,提高可靠性。

  累加器

  36 bit累加器用于累加乘法器的輸出,得出濾波結(jié)果。它有一個(gè)控制端口clr,當(dāng)clr為高電平時(shí),輸出前一輪累加結(jié)果,并初始化,開(kāi)始新一輪累加;當(dāng)clr為低電平時(shí),進(jìn)行累加運(yùn)算。累加器用VHDL語(yǔ)言描述。

  數(shù)據(jù)截位器

  數(shù)據(jù)截位器用VHDL語(yǔ)言描述,用于把累加器的36bit輸出進(jìn)行取舍處理,一般截掉數(shù)據(jù)低位部分,保留數(shù)據(jù)高位。為了對(duì)抽取濾波器進(jìn)行功能仿真,這里截掉數(shù)據(jù)高18bit,保留數(shù)據(jù)低18bit。

  工作過(guò)程及功能仿真

  下面以抽取濾波器完成一次抽取濾波的全過(guò)程為例,說(shuō)明抽取濾波器的工作過(guò)程。

  假設(shè)時(shí)鐘1、時(shí)鐘2、時(shí)鐘3和時(shí)鐘4控制器已接收了數(shù)據(jù)x(n-3)、x(n-2)、x(n-1)和x(n),那么:

  時(shí)鐘5:控制器向加法器發(fā)送數(shù)據(jù)x(n)和x(n-3);

  時(shí)鐘6:加法器進(jìn)行x(n)+x(n-3)運(yùn)算;控制器向加法器發(fā)送數(shù)據(jù)x(n-1)和x(n-2);

  時(shí)鐘7:加法器進(jìn)行x(n-1)+x(n-2)運(yùn)算,輸出x(n)+x(n-3)運(yùn)算結(jié)果??刂破飨虺朔ㄆ靼l(fā)送系數(shù)h(0);

  時(shí)鐘8:加法器輸出x(n-1)+x(n-2)運(yùn)算結(jié)果,乘法器進(jìn)行h(0)[ x(n)+x(n-3)]運(yùn)算,控制器向乘法器發(fā)送系數(shù)h(1);

  時(shí)鐘9:乘法器進(jìn)行h(1)[ x(n-1)+x(n-2)]運(yùn)算,輸出h(0)[ x(n)+x(n-3)]運(yùn)算結(jié)果??刂破飨蚶奂悠靼l(fā)送控制信號(hào)(clr為高電平);

  時(shí)鐘10:乘法器輸出h(1)[ x(n-1)+x(n-2)]運(yùn)算結(jié)果。累加器初始化,開(kāi)始累加操作??刂破飨蚶奂悠靼l(fā)送控制信號(hào)(clr為低電平);

  時(shí)鐘11:累加器進(jìn)行累加運(yùn)算:h(0)[ x(n)+x(n-3)]+ h(1)[x(n-1)+x(n-2)]??刂破飨蚶奂悠靼l(fā)送控制信號(hào)(clr為高電平),控制器輸出濾波數(shù)據(jù)有效信號(hào)(valid為高電平);

  時(shí)鐘12:累加器輸出h(0)[ x(n)+x(n-3)]+ h(1)[x(n-1)+x(n-2)] 累加結(jié)果,并初始化,開(kāi)始新一輪累加操作??刂破鬏敵鰹V波數(shù)據(jù)無(wú)效信號(hào)(valid為低電平)。

濾波器相關(guān)文章:濾波器原理


fpga相關(guān)文章:fpga是什么


濾波器相關(guān)文章:濾波器原理


電源濾波器相關(guān)文章:電源濾波器原理


數(shù)字濾波器相關(guān)文章:數(shù)字濾波器原理

上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: FPGA FIR

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉