FPGA的FIR抽取濾波器設計

發(fā)布時(shí)間:2015-11-9 14:23    發(fā)布者:designapp
關(guān)鍵詞: FPGA , FIR
  用FPGA實(shí)現抽取濾波器比較復雜,主要是因為在FPGA中缺乏實(shí)現乘法運算的有效結構,現在,FPGA中集成了硬件乘法器,使FPGA在數字信號處理方面有了長(cháng)足的進(jìn)步。本文介紹了一種采用Xilinx公司的XC2V1000實(shí)現FIR抽取濾波器的設計方法。
  具體實(shí)現
  結構設計
  基于抽取濾波器的工作原理,本文采用XC2V1000實(shí)現了一個(gè)抽取率為2、具有線(xiàn)性相位的3階FIR抽取濾波器,利用原理圖和VHDL共同完成源文件設 計。圖1是抽取濾波器的頂層原理圖。其中,clock是工作時(shí)鐘,reset是復位信號,enable是輸入數據有效信號,data_in(17:0)是 輸入數據,data_out(17:0)是輸出數據,valid是輸出數據有效信號。adder18是加法器模塊,mult18是乘法器模塊,acc36 是累加器模塊,signal_36to18是數據截位器模塊,fir_controller是控制器模塊?刂破鞫〞r(shí)向加法器、乘法器和累加器發(fā)送數據或 控制信號,實(shí)現流水線(xiàn)操作。
  


  圖1 抽取濾波器頂層原理圖
  控制器
  控制器是抽取濾波器的核心模塊,有兩個(gè)功能:一是接收輸入數據,二是向其它模塊發(fā)送數據和控制信號。它根據加法器、乘法器和累加器的時(shí)序特性,有規律地向加 法器發(fā)送抽頭數據,向乘法器發(fā)送系數,向累加器發(fā)送控制信號,讓加法器、乘法器和累加器在每個(gè)時(shí)鐘周期都完成指定的任務(wù),從而實(shí)現流水線(xiàn)操作?刂破饔 VHDL語(yǔ)言描述,用寄存器存放抽頭和系數。
  加法器
  加法器的輸入和輸出都是18 bit,用VHDL語(yǔ)言描述實(shí)現。它有兩個(gè)工作時(shí)鐘的延遲,在輸入數據準備好的情況下,第一個(gè)時(shí)鐘得出相加結果,第二個(gè)時(shí)鐘把相加結果鎖存輸出。
  乘法器
  乘法器為18 bit輸入,36bit輸出,用庫元件MULT18X18S和36 bit鎖存器實(shí)現。MULT18X18S是XC2V1000自帶的18×18bit硬件乘法器,單個(gè)時(shí)鐘就可完成乘法運算。36 bit鎖存器工作于時(shí)鐘的上升沿,用VHDL語(yǔ)言描述。乘法器(mult18)也有兩個(gè)工作時(shí)鐘的延時(shí),在輸入數據準備好的情況下,第一個(gè)時(shí)鐘得出相乘結 果,第二個(gè)時(shí)鐘把相乘結果鎖存輸出。加法器和乘法器采用鎖存輸出的結構,雖然增加了一個(gè)工作時(shí)鐘的延遲,但有利于抽取濾波器穩定的工作,提高可靠性。
  累加器
  36 bit累加器用于累加乘法器的輸出,得出濾波結果。它有一個(gè)控制端口clr,當clr為高電平時(shí),輸出前一輪累加結果,并初始化,開(kāi)始新一輪累加;當clr為低電平時(shí),進(jìn)行累加運算。累加器用VHDL語(yǔ)言描述。
  數據截位器
  數據截位器用VHDL語(yǔ)言描述,用于把累加器的36bit輸出進(jìn)行取舍處理,一般截掉數據低位部分,保留數據高位。為了對抽取濾波器進(jìn)行功能仿真,這里截掉數據高18bit,保留數據低18bit。
  工作過(guò)程及功能仿真
  下面以抽取濾波器完成一次抽取濾波的全過(guò)程為例,說(shuō)明抽取濾波器的工作過(guò)程。
  假設時(shí)鐘1、時(shí)鐘2、時(shí)鐘3和時(shí)鐘4控制器已接收了數據x(n-3)、x(n-2)、x(n-1)和x(n),那么:
  時(shí)鐘5:控制器向加法器發(fā)送數據x(n)和x(n-3);
  時(shí)鐘6:加法器進(jìn)行x(n)+x(n-3)運算;控制器向加法器發(fā)送數據x(n-1)和x(n-2);
  時(shí)鐘7:加法器進(jìn)行x(n-1)+x(n-2)運算,輸出x(n)+x(n-3)運算結果?刂破飨虺朔ㄆ靼l(fā)送系數h(0);
  時(shí)鐘8:加法器輸出x(n-1)+x(n-2)運算結果,乘法器進(jìn)行h(0)[ x(n)+x(n-3)]運算,控制器向乘法器發(fā)送系數h(1);
  時(shí)鐘9:乘法器進(jìn)行h(1)[ x(n-1)+x(n-2)]運算,輸出h(0)[ x(n)+x(n-3)]運算結果?刂破飨蚶奂悠靼l(fā)送控制信號(clr為高電平);
  時(shí)鐘10:乘法器輸出h(1)[ x(n-1)+x(n-2)]運算結果。累加器初始化,開(kāi)始累加操作?刂破飨蚶奂悠靼l(fā)送控制信號(clr為低電平);
  時(shí)鐘11:累加器進(jìn)行累加運算:h(0)[ x(n)+x(n-3)]+ h(1)[x(n-1)+x(n-2)]?刂破飨蚶奂悠靼l(fā)送控制信號(clr為高電平),控制器輸出濾波數據有效信號(valid為高電平);
  時(shí)鐘12:累加器輸出h(0)[ x(n)+x(n-3)]+ h(1)[x(n-1)+x(n-2)] 累加結果,并初始化,開(kāi)始新一輪累加操作?刂破鬏敵鰹V波數據無(wú)效信號(valid為低電平)。
                               
                  以上就是抽取濾波器完成一次抽取濾波的全過(guò)程?梢(jiàn),從數據x(n)輸入到濾波結果y(n) 輸出需要8個(gè)工作時(shí)鐘。如果控制器不停地向乘法器和加法器發(fā)送抽頭、系數和控制信號,就會(huì )形成流水線(xiàn)操作,那么每過(guò)兩個(gè)時(shí)鐘,抽取濾波器就會(huì )輸出一個(gè)濾波結果。
  兩點(diǎn)注意事項
  (1)兩個(gè)n位二進(jìn)制數相加,其和至少需要n+1位二進(jìn)制數才能正確表示。本設計中的加法器輸入/輸出都是18bit,為了防止加法器溢出,應確保18bit輸入數據x(n)的最高兩位相同(都是符號位)。
  (2)為了實(shí)現抽取濾波器的多級串聯(lián)結構,應統一輸入數據有效信號enable和輸出數據有效信號valid的時(shí)序要求。本設計規定控制器在累加器輸出濾波結果后的下一個(gè)時(shí)鐘送出濾波結果有效信號,時(shí)寬為一個(gè)工作時(shí)鐘周期。
  設計特點(diǎn)
  采用此設計結構實(shí)現抽取濾波器有以下三個(gè)特點(diǎn):
  (1)節省片內資源,提高資源使用效率。由于利用IP核生成的濾波器往往不能針對實(shí)際情況合理的利用片內資源,造成資源浪費。本設計采用了流水線(xiàn)結構,所有功能模塊都滿(mǎn)負荷工作,沒(méi)有空閑等待時(shí)鐘,從而節省了片內資源,提高了資源利用率。
  (2)可以實(shí)現抽取濾波器多級結構。針對抽取濾波器的輸出特性,可以采取相同的設計方法,再設計一級抽取濾波器,對前一級輸出的數據再次抽取濾波,從而實(shí)現多級抽取濾波器結構。
  (3)設計靈活,擴展性強。用寄存器存放抽頭和系數適用于濾波器階數較少的情況,如果需要用上百階的抽取濾波,最好用XC2V1000片內RAM存放抽頭和系數,這時(shí)只要稍微改動(dòng)控制器的邏輯設計即可實(shí)現。在此基礎上,還可實(shí)現可編程抽取濾波器。
  結語(yǔ)
  本文以實(shí)現抽取率為2、具有線(xiàn)性相位的3階FIR抽取濾波器為例,介紹了一種用Xilinx公司的XC2V1000實(shí)現FIR抽取濾波器的設計方法。用該方法設計出的抽取濾波器靈活性強,資源利用率高,能廣泛應用于數字接收領(lǐng)域。
                               
               
本文地址:http://selenalain.com/thread-155695-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页