《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于FPGA的FIR抽取濾波器設(shè)計(jì)
基于FPGA的FIR抽取濾波器設(shè)計(jì)
摘要: 用FPGA實(shí)現(xiàn)抽取濾波器比較復(fù)雜,主要是因?yàn)樵贔PGA中缺乏實(shí)現(xiàn)乘法運(yùn)算的有效結(jié)構(gòu),現(xiàn)在,F(xiàn)PGA中集成了硬件乘法器,使FPGA在數(shù)字信號(hào)處理方面有了長(zhǎng)足的進(jìn)步。本文介紹了一種采用Xilinx公司的XC2V1000實(shí)現(xiàn)FIR抽取濾波器的設(shè)計(jì)方法。
關(guān)鍵詞: FPGA FIR 抽取濾波器 XC2V1000
Abstract:
Key words :

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

      具體實(shí)現(xiàn)結(jié)構(gòu)設(shè)計(jì)基于抽取濾波器的工作原理,本文采用XC2V1000實(shí)現(xiàn)了一個(gè)抽取率為2、具有線性相位的3階FIR抽取濾波器,利用原理圖和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是控制器模塊。控制器定時(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輸入,36 bit輸出,用庫(kù)元件MULT18X18S和36 bit鎖存器實(shí)現(xiàn)。MULT18X18S是XC2V1000自帶的18×18 bit硬件乘法器,單個(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é)果,并初始化,開始新一輪累加;當(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é)果。控制器向乘法器發(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é)果。控制器向累加器發(fā)送控制信號(hào)(clr為高電平);
      時(shí)鐘10:乘法器輸出h(1)[ x(n-1)+x(n-2)]運(yùn)算結(jié)果。累加器初始化,開始累加操作。控制器向累加器發(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)]。控制器向累加器發(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é)果,并初始化,開始新一輪累加操作。控制器輸出濾波數(shù)據(jù)無(wú)效信號(hào)(valid為低電平)。

 

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

      兩點(diǎn)注意事項(xiàng)

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

      (2)為了實(shí)現(xiàn)抽取濾波器的多級(jí)串聯(lián)結(jié)構(gòu),應(yīng)統(tǒng)一輸入數(shù)據(jù)有效信號(hào)enable和輸出數(shù)據(jù)有效信號(hào)valid的時(shí)序要求。本設(shè)計(jì)規(guī)定控制器在累加器輸出濾波結(jié)果后的下一個(gè)時(shí)鐘送出濾波結(jié)果有效信號(hào),時(shí)寬為一個(gè)工作時(shí)鐘周期。

      設(shè)計(jì)特點(diǎn)

      采用此設(shè)計(jì)結(jié)構(gòu)實(shí)現(xiàn)抽取濾波器有以下三個(gè)特點(diǎn):

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

      (2)可以實(shí)現(xiàn)抽取濾波器多級(jí)結(jié)構(gòu)。針對(duì)抽取濾波器的輸出特性,可以采取相同的設(shè)計(jì)方法,再設(shè)計(jì)一級(jí)抽取濾波器,對(duì)前一級(jí)輸出的數(shù)據(jù)再次抽取濾波,從而實(shí)現(xiàn)多級(jí)抽取濾波器結(jié)構(gòu)。

      (3)設(shè)計(jì)靈活,擴(kuò)展性強(qiáng)。用寄存器存放抽頭和系數(shù)適用于濾波器階數(shù)較少的情況,如果需要用上百階的抽取濾波,最好用XC2V1000片內(nèi)RAM存放抽頭和系數(shù),這時(shí)只要稍微改動(dòng)控制器的邏輯設(shè)計(jì)即可實(shí)現(xiàn)。在此基礎(chǔ)上,還可實(shí)現(xiàn)可編程抽取濾波器。

      結(jié)語(yǔ)

      本文以實(shí)現(xiàn)抽取率為2、具有線性相位的3階FIR抽取濾波器為例,介紹了一種用Xilinx公司的XC2V1000實(shí)現(xiàn)FIR抽取濾波器的設(shè)計(jì)方法。用該方法設(shè)計(jì)出的抽取濾波器靈活性強(qiáng),資源利用率高,能廣泛應(yīng)用于數(shù)字接收領(lǐng)域。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
主站蜘蛛池模板: 亚洲欧美另类精品久久久| 精品久久久久久国产91| 美女脱精光给男生摸| 秦老头大战秦丽娟无删节| 毛片永久新网址首页| 日韩在线第一区| 樱花视频入口在线观看| 日本三级韩国三级欧美三级| 日本免费a级毛一片| 国农村精品国产自线拍| 四虎影院在线播放视频| 亚洲妇女水蜜桃av网网站| 中日韩中文字幕| 香蕉视频污在线观看| 精品国产v无码大片在线观看| 欧美a级在线观看| 女教师合集乱500篇小说| 国产成人免费片在线视频观看| 伊人久久久大香线蕉综合直播| 久久精品人人爽人人爽快| 99在线精品视频在线观看| 色偷偷AV老熟女| 欧美日本视频在线观看| 少妇性俱乐部纵欲狂欢少妇| 国产原创精品视频| 亚洲国产美女精品久久久久| 一本大道香蕉在线高清视频| 黄色污污视频下载| 欧美综合国产精品日韩一| 成人3d动漫网址在线观看| 国产日韩中文字幕| 亚洲电影免费观看| ww在线观视频免费观看w| 草莓视频在线免费观看下载| 最近中文字幕mv2018免费看| 国语对白avxxxooo| 伊人久久波多野结衣中文字幕| 亚洲精品中文字幕无乱码麻豆| 久久久久国色av免费看| 欧美老少配xxxxx| 欧美日韩中文字幕在线观看|