新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > FPGA的FIR抽取濾波器設計

        FPGA的FIR抽取濾波器設計

        作者: 時間:2015-03-03 來源:網絡 收藏

          用實現抽取濾波器比較復雜,主要是因為在中缺乏實現乘法運算的有效結構,現在,中集成了硬件乘法器,使FPGA在數字信號處理方面有了長足的進步。本文介紹了一種采用Xilinx公司的XC2V1000實現抽取濾波器的設計方法。

        本文引用地址:http://www.104case.com/article/270379.htm

          具體實現

          結構設計

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

          

         

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

          控制器

          控制器是抽取濾波器的核心模塊,有兩個功能:一是接收輸入數據,二是向其它模塊發送數據和控制信號。它根據加法器、乘法器和累加器的時序特性,有規律地向加 法器發送抽頭數據,向乘法器發送系數,向累加器發送控制信號,讓加法器、乘法器和累加器在每個時鐘周期都完成指定的任務,從而實現流水線操作。控制器用 VHDL語言描述,用寄存器存放抽頭和系數。

          加法器

          加法器的輸入和輸出都是18 bit,用VHDL語言描述實現。它有兩個工作時鐘的延遲,在輸入數據準備好的情況下,第一個時鐘得出相加結果,第二個時鐘把相加結果鎖存輸出。

          乘法器

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

          累加器

          36 bit累加器用于累加乘法器的輸出,得出濾波結果。它有一個控制端口clr,當clr為高電平時,輸出前一輪累加結果,并初始化,開始新一輪累加;當clr為低電平時,進行累加運算。累加器用VHDL語言描述。

          數據截位器

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

          工作過程及功能仿真

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

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

          時鐘5:控制器向加法器發送數據x(n)和x(n-3);

          時鐘6:加法器進行x(n)+x(n-3)運算;控制器向加法器發送數據x(n-1)和x(n-2);

          時鐘7:加法器進行x(n-1)+x(n-2)運算,輸出x(n)+x(n-3)運算結果。控制器向乘法器發送系數h(0);

          時鐘8:加法器輸出x(n-1)+x(n-2)運算結果,乘法器進行h(0)[ x(n)+x(n-3)]運算,控制器向乘法器發送系數h(1);

          時鐘9:乘法器進行h(1)[ x(n-1)+x(n-2)]運算,輸出h(0)[ x(n)+x(n-3)]運算結果。控制器向累加器發送控制信號(clr為高電平);

          時鐘10:乘法器輸出h(1)[ x(n-1)+x(n-2)]運算結果。累加器初始化,開始累加操作。控制器向累加器發送控制信號(clr為低電平);

          時鐘11:累加器進行累加運算:h(0)[ x(n)+x(n-3)]+ h(1)[x(n-1)+x(n-2)]。控制器向累加器發送控制信號(clr為高電平),控制器輸出濾波數據有效信號(valid為高電平);

          時鐘12:累加器輸出h(0)[ x(n)+x(n-3)]+ h(1)[x(n-1)+x(n-2)] 累加結果,并初始化,開始新一輪累加操作。控制器輸出濾波數據無效信號(valid為低電平)。

        濾波器相關文章:濾波器原理


        fpga相關文章:fpga是什么


        濾波器相關文章:濾波器原理


        電源濾波器相關文章:電源濾波器原理


        數字濾波器相關文章:數字濾波器原理

        上一頁 1 2 下一頁

        關鍵詞: FPGA FIR

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 米脂县| 泾源县| 南充市| 进贤县| 睢宁县| 太保市| 中方县| 宁蒗| 霞浦县| 墨玉县| 河津市| 昆明市| 台江县| 麻江县| 达日县| 墨脱县| 水富县| 琼中| 沽源县| 格尔木市| 洛南县| 湘阴县| 高唐县| 汤原县| 大洼县| 隆德县| 瑞金市| 英吉沙县| 西乡县| 铜山县| 宁河县| 保靖县| 新巴尔虎右旗| 长葛市| 阜新| 绥芬河市| 金川县| 额敏县| 彰化市| 平乡县| 虎林市|