《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于FPGA的FIR抽取濾波器設計
基于FPGA的FIR抽取濾波器設計
摘要: 用FPGA實現抽取濾波器比較復雜,主要是因為在FPGA中缺乏實現乘法運算的有效結構,現在,FPGA中集成了硬件乘法器,使FPGA在數字信號處理方面有了長足的進步。本文介紹了一種采用Xilinx公司的XC2V1000實現FIR抽取濾波器的設計方法。
Abstract:
Key words :

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

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

抽取濾波器頂層原理圖

 

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

      控制器

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

    加法器

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

      乘法器

      乘法器為18 bit輸入,36 bit輸出,用庫元件MULT18X18S和36 bit鎖存器實現。MULT18X18S是XC2V1000自帶的18×18 bit硬件乘法器,單個時鐘就可完成乘法運算。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)]運算結果??刂破飨蚶奂悠靼l送控制信號(clr為高電平);
      時鐘10:乘法器輸出h(1)[ x(n-1)+x(n-2)]運算結果。累加器初始化,開始累加操作??刂破飨蚶奂悠靼l送控制信號(clr為低電平);
      時鐘11:累加器進行累加運算:h(0)[ x(n)+x(n-3)]+ h(1)[ x(n-1)+x(n-2)]??刂破飨蚶奂悠靼l送控制信號(clr為高電平),控制器輸出濾波數據有效信號(valid為高電平);
      時鐘12:累加器輸出h(0)[ x(n)+x(n-3)]+ h(1)[ x(n-1)+x(n-2)] 累加結果,并初始化,開始新一輪累加操作。控制器輸出濾波數據無效信號(valid為低電平)。

 

      以上就是抽取濾波器完成一次抽取濾波的全過程。可見,從數據x(n)輸入到濾波結果y(n) 輸出需要8個工作時鐘。如果控制器不停地向乘法器和加法器發送抽頭、系數和控制信號,就會形成流水線操作,那么每過兩個時鐘,抽取濾波器就會輸出一個濾波結果。

      兩點注意事項

      (1)兩個n位二進制數相加,其和至少需要n+1位二進制數才能正確表示。本設計中的加法器輸入/輸出都是18bit,為了防止加法器溢出,應確保18bit輸入數據x(n)的最高兩位相同(都是符號位)。

      (2)為了實現抽取濾波器的多級串聯結構,應統一輸入數據有效信號enable和輸出數據有效信號valid的時序要求。本設計規定控制器在累加器輸出濾波結果后的下一個時鐘送出濾波結果有效信號,時寬為一個工作時鐘周期。

      設計特點

      采用此設計結構實現抽取濾波器有以下三個特點:

      (1)節省片內資源,提高資源使用效率。由于利用IP核生成的濾波器往往不能針對實際情況合理的利用片內資源,造成資源浪費。本設計采用了流水線結構,所有功能模塊都滿負荷工作,沒有空閑等待時鐘,從而節省了片內資源,提高了資源利用率。

      (2)可以實現抽取濾波器多級結構。針對抽取濾波器的輸出特性,可以采取相同的設計方法,再設計一級抽取濾波器,對前一級輸出的數據再次抽取濾波,從而實現多級抽取濾波器結構。

      (3)設計靈活,擴展性強。用寄存器存放抽頭和系數適用于濾波器階數較少的情況,如果需要用上百階的抽取濾波,最好用XC2V1000片內RAM存放抽頭和系數,這時只要稍微改動控制器的邏輯設計即可實現。在此基礎上,還可實現可編程抽取濾波器。

      結語

      本文以實現抽取率為2、具有線性相位的3階FIR抽取濾波器為例,介紹了一種用Xilinx公司的XC2V1000實現FIR抽取濾波器的設計方法。用該方法設計出的抽取濾波器靈活性強,資源利用率高,能廣泛應用于數字接收領域。

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 国产精品成人观看视频网站 | 国产日韩欧美亚洲 | 中文在线com| 久久看视频 | 午夜在线亚洲 | 在线观看亚洲天堂 | 国产剧情一区二区 | 成年人免费在线视频网站 | 久久久精品久久久久三级 | 欧美另类videosbestsex高清 | 欧美一区二区日韩一区二区 | 禁止18周岁进入免费网站观看 | 99国产视频 | 欧美α一级毛片 | 国产a高清 | 欧美aaaaa一级毛片在线 | 女人张开腿让男人插 | 国产成人精品高清免费 | 网友自拍第一页 | 久久午夜鲁丝片午夜精品 | 亚洲日韩精品欧美一区二区一 | 欧美hdvideosex4k | jizz国产精品免费麻豆 | 色偷偷亚洲男人天堂 | 手机国产日韩高清免费看片 | 国产精品一区高清在线观看 | 久久久久亚洲视频 | 欧美日韩亚洲一区二区三区在线观看 | 日本高清视频免费在线观看 | 99久久伊人一区二区yy5o99 | 搞黄网站在线观看 | 国产精品九九久久一区hh | 亚洲综合视频网 | 在线免费观看日本视频 | 91精品最新国内在线播放 | 国产日韩精品欧美一区 | 亚洲国产欧美另类 | 国产在线精品一区二区夜色 | 四色6677最新永久网站 | 亚洲国产成人久久综合野外 | 亚洲国产成人久久综合碰 |