基于FPGA的FIR低通數(shù)字濾波器_第1頁
基于FPGA的FIR低通數(shù)字濾波器_第2頁
基于FPGA的FIR低通數(shù)字濾波器_第3頁
基于FPGA的FIR低通數(shù)字濾波器_第4頁
基于FPGA的FIR低通數(shù)字濾波器_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、南京理工大學紫金學院畢業(yè)設(shè)計說明書(論文)作 者:李松森 學 號:100401228 系:電子工程與光電技術(shù)系專 業(yè):電子信息工程 題 目:基于FPGA的FIR低通數(shù)字濾波器設(shè)計 教授 蔣立平指導(dǎo)者: (姓 名) (專業(yè)技術(shù)職務(wù))評閱者: (姓 名) (專業(yè)技術(shù)職務(wù))2014 年 5 月南 京 理 工 大 學 紫 金 學 院畢業(yè)設(shè)計(論文)評語學生姓名: 李松森 班級、學號: 電信2班、100401228 題 目: 基于FPGA的FIR低通數(shù)字濾波器設(shè)計 綜合成績: 指導(dǎo)者評語:該論文根據(jù)畢業(yè)設(shè)計(論文)任務(wù)書的要求,基本按預(yù)定目標完成了設(shè)計任務(wù)。論文主要研究了FPGA技術(shù)和FIR濾波器設(shè)計,

2、對其相關(guān)理論及設(shè)計方案進行了適當?shù)仃U述及論證。論文采用EDA技術(shù),用了VHDL硬件描述語言設(shè)計了符合指標要求的低通濾波器,并用Altera公司的QuartusII平臺進行了設(shè)計實現(xiàn)。設(shè)計方案合理,數(shù)據(jù)可靠。論文結(jié)構(gòu)基本完整、論述基本正確、語句通順;圖、表、公式等基本符合論文書寫規(guī)范。論文對電路原理及設(shè)計過程的論述稍嫌簡單,可以更詳盡一些。建議對論文不規(guī)范處進行修改(如圖題等),提交答辯,建議成績評定為良好。 指導(dǎo)者(簽字): 年 月 日畢業(yè)設(shè)計(論文)評語評閱者評語: 評閱者(簽字): 年 月 日答辯委員會(小組)評語: 答辯委員會(小組)負責人(簽字): 年 月 日畢業(yè)設(shè)計說明書(論文)中文

3、摘要 本文是基于FPGA的濾波器設(shè)計,首先對FPGA進行簡要的認識。主要對其中使用的到分布式算法,進行了細致的掌握與運用。基于FPGA開發(fā),器件的結(jié)構(gòu)和特點進行初探。本文主要是基于Matlab軟件中FDAtool工具利用窗函數(shù),來設(shè)計常系數(shù)FIR低通數(shù)字濾波器。且在QUARTUSII軟件中,使用VHDL語言編寫程序,設(shè)計濾波器及驗證濾波性能所需要的掃頻電路。搭建了從掃描正弦電路到低通濾波器的基本結(jié)構(gòu)框架。將用QUARTUSII軟件設(shè)計出來的濾波器下載到試驗箱上進行波形仿真測試,以此來驗證低通濾波的正確性。關(guān)鍵詞 FPGA FIR數(shù)字濾波器 VHDL語言畢業(yè)設(shè)計說明書(論文)外文摘要Title

4、The Design Of FIR Low Pass Digital Filter Based On FPGA AbstractThis is the filter design based on FPGA. First, a brief understanding of the FPGA. Mainly distributed algorithm which used to carry out a detailed grasp and use. Study conducted FPGA-based development, structure and characteristics of t

5、he device. This article is based on the use of Matlab software FDAtool tool window function, to design constant coefficient FIR low-pass digital filter. And in QUARTUSII software, using VHDL language programming, design and verification filter filtering performance needed sweep circuit. Built from t

6、he scan to the basic structure of the framework of the sine circuit low-pass filter. Will be designed using software filters QUARTUSII downloaded to the waveform simulation test chamber, in order to verify the correctness of the low-pass filter.Keywords FPGA FIR Digital Filter VHDL Language本科畢業(yè)設(shè)計說明書

7、(論文)目 錄1 引 言12 FPGA概述2 2.1 FPGA的基本知識22.2 FPGA的結(jié)構(gòu)和工作原理32.3 FPGA的應(yīng)用33 FIR數(shù)字濾波器33.1 數(shù)字濾波器簡介43.2 FIR數(shù)字濾波器54 基于MATLAB的FIR數(shù)字濾波器的設(shè)計104.1 MATLAB軟件104.2 使用FDATool設(shè)計FIR數(shù)字濾波器105 FIR數(shù)字濾波器的VHDL實現(xiàn)155.1 設(shè)計分析與框架155.2 分頻器原理155.3 DDS原理及應(yīng)用165.4 FIR低通濾波模塊設(shè)計196. 下載實驗箱仿真結(jié)果驗證246.1 程序“寫“入操作246.2 用示波器觀察仿真結(jié)果26結(jié) 論28致 謝29參 考 文

8、 獻30第 1 頁 共 30 頁 本科畢業(yè)設(shè)計說明書(論文) 1 引 言 當代,科學技術(shù)發(fā)展迅速。在無線通信領(lǐng)域也取得了顯著地成果。其發(fā)展方向朝著數(shù)字化,綜合化。寬帶化,智慧化和個性化前進。人們往往熟悉的是模擬濾波技術(shù)。在現(xiàn)代濾波技術(shù)手段中,通過運用計算機和數(shù)字濾波技術(shù),濾波已經(jīng)有了更深層的飛躍。在大多通訊工程中,數(shù)字化濾波越來越的收到人們的青睞。FPGA技術(shù)在電子通訊領(lǐng)域方面應(yīng)用十分廣泛,具有開發(fā)周期短,投資少,可以重復(fù)修改,高度靈活及強大的并行運算能力。例如,大規(guī)??删幊踢壿嬈骷膽?yīng)用,使得數(shù)字濾波器設(shè)計與實現(xiàn)變得更加簡易,可靠。本文將基于此,運用Matlab自帶的工具,設(shè)計簡易的濾波器,

9、并使用VHDL語言在QUARTUS II軟件中進行硬件描述,達到設(shè)計與仿真數(shù)字濾波的目的。在實現(xiàn)所設(shè)計數(shù)字濾波的過程中,將給我們帶來更為內(nèi)在,細致的認識。利用工具實驗箱,示波器可以很直觀的觀察到所設(shè)計內(nèi)容,指標是否達到。因此對嵌入FPGA開發(fā)板實驗箱的使用,示波器要熟練使用。第 28 頁 共 30 頁 本科畢業(yè)設(shè)計說明書(論文) 2 FPGA概述2.1 FPGA的基本知識 對FPGA基本概念的理解,應(yīng)用領(lǐng)域和方法的了解有助于更好的去基于此實現(xiàn)自己的器件功能。2.1.1 基本概念隨著數(shù)字集成電路的發(fā)展,越來越多的模擬電路逐漸被數(shù)字電路電取代,同時數(shù)字電路本身的更新?lián)Q代,加速了數(shù)字化的發(fā)展步伐。為

10、了滿足開發(fā)者的要求,出現(xiàn)了可程序設(shè)計邏輯器件,其中FPGA(現(xiàn)場可程序設(shè)計邏輯門陣列)的應(yīng)用十分廣泛。硬件部分的設(shè)計可以交由軟件程序設(shè)計來完成,極大的降低了開發(fā)成本和消耗的資源。2.1.2 發(fā)展歷程早期的可編寫程序設(shè)計邏輯器件在20世紀70年代初出現(xiàn)的,到了中期出現(xiàn)了結(jié)構(gòu)上稍復(fù)雜的可程序設(shè)計芯片,即可程序設(shè)計器件,它能夠完成各種數(shù)字邏輯功能。在20世紀80年代初期,Altera和Xilinx兩家公司推出了類似PAL結(jié)構(gòu)的擴展型CPLD和與標準門陣列類似的FPGA彌補了這一缺陷。能夠形成體系化的結(jié)構(gòu),不失其原有的靈活特性,且完成了高集成度,適用范圍寬的攻堅。20世紀90年代末以來,在數(shù)字技術(shù)不斷

11、推陳出新的大潮流中,F(xiàn)PGA與ASIC與、DSP及CPU技術(shù)的不斷融合,F(xiàn)PGA成功的突破了僅軟件層面提供技術(shù)的尷尬境地。發(fā)展出硬件應(yīng)用嵌入式開發(fā)。新興技術(shù)的發(fā)展,為人們曾經(jīng)夢想的實現(xiàn)軟硬件完美結(jié)合,靈活與速度的大幅提升,提供了堅實的開放型的平臺,這也使得原有的FPGA概念突破了傳統(tǒng)設(shè)計理念,來到了現(xiàn)代發(fā)展的更高的應(yīng)用水平。如現(xiàn)在流行的系統(tǒng)級芯片SOC及片上可程序設(shè)計系統(tǒng)SOPC設(shè)計技術(shù),由此可見,應(yīng)用領(lǐng)域到達了系統(tǒng)級。2.2 FPGA的結(jié)構(gòu)和工作原理了解其結(jié)構(gòu)和工作原理,有助于更好的去實現(xiàn)硬件仿真實驗,驗證實驗的正確性。2.2.1 FPGA的結(jié)構(gòu)FPGA 已經(jīng)遠遠超出了先前版本的基本性能,并

12、且整合了如 RAM、時鐘管理和 DSP 這些常用功能的硬(ASIC 型)塊。FPGA芯片內(nèi)部結(jié)構(gòu)示意圖如下:DCMIOBIOBIOBIOBBRAMIOBCLBCLBCLBIOBIOBIOBBRAMIOBIOBCLBCLBCLBIOBIOBIOBIOBIOBIOBDCM圖2-2-1 FPGA芯片內(nèi)部結(jié)構(gòu)示意圖其基本組件有:可配置邏輯塊、互聯(lián)、SelectIO (IOB)、內(nèi)存及完整的時鐘管理。2.2.2 FPGA的工作原理FPGA的程序設(shè)計實際上是改變CLB和IOB的觸發(fā)器狀態(tài),能夠?qū)Τ绦蚍磸?fù)擦除。因可以重復(fù)編寫程序,所以其不是用固定的與非門來實現(xiàn)組合邏輯功能,采用的是一種可以反復(fù)配置的結(jié)構(gòu)。F

13、PGA芯片在加電時將EPROM中的數(shù)據(jù)讀入片內(nèi)RAM中,此步驟完成,F(xiàn)PGA就進入工作狀態(tài)。去電后,F(xiàn)PGA里加電時的數(shù)據(jù)就消失了,因此FPGA能夠?qū)崿F(xiàn)反復(fù)使用。2.3 FPGA的應(yīng)用 由于其自身的可程序設(shè)計特性, FPGA 成為了眾多不同的市場的理想選擇。如Xilinx 作為業(yè)界領(lǐng)先公司提供了包含 FPGA 器件、高級軟件和可配置即用型 IP 核等在內(nèi)的全套解決方案。FPGA以其強大的軟硬件功能實現(xiàn)平臺,為數(shù)字濾波器技術(shù)的推進發(fā)展提供了巨大的支持。3 FIR數(shù)字濾波器數(shù)字濾波器較之模擬濾波,數(shù)字濾波器以其信號傳輸穩(wěn)定,占用資源少,可以實時更正修改,在現(xiàn)代通訊領(lǐng)域是不可或缺的一部分。3.1 數(shù)

14、字濾波器簡介 3.1.1 數(shù)字濾波器的定義數(shù)字濾波器在數(shù)字信號處理中屬于預(yù)處理的部分,因而起著基礎(chǔ)性的作用,在現(xiàn)代通訊應(yīng)用領(lǐng)域中,也需要數(shù)字濾波器去完成信號傳輸后期的過濾、篩選等。數(shù)字濾波器包括IIR和FIR數(shù)字濾波器。FIR簡稱有限沖激回應(yīng)。在信號處理中,有限沖激響應(yīng)(FIR)濾波器是一個有限持續(xù)時間的脈沖響應(yīng) (或響應(yīng)于任何有限長度的輸入),因為在有限時間內(nèi)它最終會穩(wěn)定到零。這是相對于無限脈沖響應(yīng) (IIR)濾波器,其可具有內(nèi)部回饋并且可以繼續(xù)無限期地響應(yīng)(通常是衰減)。即N次FIR濾波器的離散時間單位脈沖輸入,從第一個非零元素通過到最后一個非零元素,然后再穩(wěn)定到零持續(xù)有N+1次的采樣的回

15、應(yīng)。FIR濾波器可以是離散時間或連續(xù)時間 ,和數(shù)字或模擬 。本文將著重分析的是數(shù)字濾波方面。定義:對于一個因果離散時間的N階FIR濾波器,輸出序列中的每個值是最新的輸入值的加權(quán)和: (31)該式所對應(yīng)的濾波器結(jié)構(gòu)就是直接型結(jié)構(gòu)。N為濾波器的階數(shù),是在第m個時刻的脈沖回應(yīng)的值。因為該結(jié)構(gòu)式直接型的,所以也是FIR濾波器的系數(shù)。如果是直接型FIR濾波器則也是濾波器的系數(shù),為第個單位時間的采樣輸入,為第n個單位時間的采樣輸入對應(yīng)的輸出。直接型FIR數(shù)字濾波器的濾波運算包括三種運算方式:輸入采樣序列的延時;常系數(shù)乘法;乘積項求和。濾波器的階數(shù)越高,濾波效果越好,但同時電路越復(fù)雜。3.1.2 數(shù)字濾波器

16、的結(jié)構(gòu)數(shù)字濾波器在信號無失真?zhèn)鬏?、?shù)據(jù)通信、圖像傳輸與處理、語音信號處理等領(lǐng)域應(yīng)用廣泛。一個簡單的數(shù)字濾波系統(tǒng)如圖3-1-2所示。H(z)A/D x(t) x(n) y(n)圖3-1-2 簡單化的數(shù)字濾波器系統(tǒng)圖中是用模擬信號表示的一串序列,經(jīng)過A/D轉(zhuǎn)換后,得到離散化的數(shù)字信號序列。注意該序列是有模擬信號轉(zhuǎn)化而來,其后的信號輸出順序還是與輸入信號的序列保持一致,再通過數(shù)字濾波系統(tǒng)的系統(tǒng)函數(shù),就得到了進過濾波后的數(shù)字信號。為該數(shù)字濾波系統(tǒng)的單位脈沖響應(yīng)的Z變換,即:(3-2) 若為無限長序列,則得到的是IIR數(shù)字濾波器,又稱遞歸濾波器(所謂遞歸,就是指信號的輸出對系統(tǒng)是有回饋作用)。反之,若為

17、有限長序列,則是FIR濾波器,也稱為非遞歸濾波器。線性相位FIR濾波器的系統(tǒng)函數(shù)可表示為:(3-3)其中N為h(n)的長度,即濾波器的長度。濾波器的階數(shù)為N-1。3.2 FIR數(shù)字濾波器3.2.1 FIR數(shù)字濾波器的特性FIR濾波器與IIR濾波器相比較之,其優(yōu)點有:· 不需要回饋。這意味著,任何舍入誤差不被相加迭代。在每個計算周期發(fā)生相同的相對誤差。這也使得實現(xiàn)更為簡單。· 本質(zhì)上是穩(wěn)定的。因以不大于倍的最大值出現(xiàn)在輸入,而輸出是輸入值的有限的倍數(shù)有限數(shù)量的總和,也就是卷積的過程。· 系數(shù)序列對稱,即線性相位。此特點可以使得相位敏感。當然,F(xiàn)IR濾波器也存在一定的

18、缺點。如在通用處理器中,較之IIR濾波器,在同等的技術(shù)指標要求下,其計算資源的占用是相當多的。尤其是當需要低頻率(相對于采樣率)截止時。然而,許多數(shù)字信號處理器提供專門的硬件功能,使FIR濾波器可以與同等高效的IIR濾波器相媲美。3.2.2 FIR數(shù)字濾波器的基本結(jié)構(gòu)實現(xiàn)FIR濾波器可以有多種算法,取決于FIR濾波器的基本結(jié)構(gòu)可以是多種多樣的,其基本的結(jié)構(gòu)有四種:直接型、級聯(lián)型、頻率采樣型和快速卷積型四種基本形式。我們接下來將分別介紹這些基本結(jié)構(gòu):A.直接型結(jié)構(gòu)根據(jù)式(3-3)能夠得到FIR數(shù)字濾波器的直接型結(jié)構(gòu),如圖(3-1)所示,可以很直觀的發(fā)現(xiàn):對于此直接型結(jié)構(gòu),假如N階的FIR濾波器,

19、輸出每產(chǎn)生一個經(jīng)過FIR濾波的數(shù)據(jù),要經(jīng)過N次的乘法運算,N-1個延時單位,及N-1次的加法運算。基于FPGA若用此方案進行開發(fā),乘法運算要比加減法等運算消耗更多的資源,顯然這樣的算法是不經(jīng)濟,靈活的。x(n) z-1 z-1 z-1 z-1h(M)h(1)h(0)y(n) 圖3-1 直接型結(jié)構(gòu)實現(xiàn)方程的另一種結(jié)構(gòu)(成為轉(zhuǎn)置結(jié)構(gòu)),其形式為:1111s(n)h(N-1)h(N-3)h(N-2)h(N-1)y(n)+ z-1 z-1 z-1 z-1圖3-2 轉(zhuǎn)置結(jié)構(gòu) 當N為偶數(shù)時,單位取樣為偶對稱的情況。即線性相位濾波器: (3-4) 這種對稱性,可使得乘法器數(shù)量減半。因為可以得到N/2對相同的

20、系數(shù)。若N為奇數(shù)時,乘法器的個數(shù)為(N+1)/2 。 圖3-3 具有對稱系數(shù)的直接型FIR濾波器結(jié)構(gòu)B.級聯(lián)型結(jié)構(gòu)由FIR的系統(tǒng)函數(shù)H(z),我們知道其沒有極點,只有零點。我們可以將FIR濾波器的系統(tǒng)函數(shù)H(z)分解成實系數(shù)二階因子的乘積形式,即(3-5) 該式中,Nc=N/2是N/2的最大整數(shù),其結(jié)構(gòu)的信號流圖如圖3-4所示,根據(jù)式(3-5)及圖3-4可知,對于N階的FIR濾波器,采用級聯(lián)形式的結(jié)構(gòu),大概需要3N/2個乘法單元。占用的計算資源更多,因此在FPGA上實現(xiàn)時一般不也采用這種結(jié)構(gòu)。z-1x(n) b01 b02 b0Nc y(n)z-1z-1b1Ncb12b11 b2Ncb22b2

21、1z-1z-1z-1圖3-4 線性相位FIR濾波器的級聯(lián)型結(jié)構(gòu)其最大特點是可以分別調(diào)整每個閉環(huán)結(jié)構(gòu)的零點值,當需要精確控制濾波器的零點位置時,往往采用這種結(jié)構(gòu)。3.2.4 FIR數(shù)字濾波器的設(shè)計方法FIR數(shù)字濾波器的設(shè)計方法主要有三種:時窗函數(shù)法、頻率采樣法和等波紋設(shè)計法。這里本文只詳細介紹第一種方法,還有較之其他兩種,對其優(yōu)缺點進行拓展了解。窗函數(shù)法:顧名思義就是在原信號上加上一種“窗”,來約束輸入信號的傳導(dǎo),使得濾出的輸出信號穩(wěn)定,且是達到指標要求的。一個理想低通濾波器的幅頻特性如圖3-5所示。的表達式為:(3-6)對進行離散時間傅里葉逆變換,得(3-7)由公式3-7我們可以看到必然是無限

22、長的,無因果系統(tǒng)。在設(shè)計FIR濾波器時,利用加“窗”這一設(shè)計思想,使得單位取樣沖激響應(yīng)hn是有限長的,且有因果特性。我們可以用有限長的去逼近無限長的,同時滿足因果特性。 最簡單的辦法是直接截短,使得hn和之間的關(guān)系為:(3-8) 此步驟就相當于無限長的取樣響應(yīng)與有限長的窗函數(shù)的乘積,表達式為:(3-9) 常見的時窗函數(shù)有矩形窗、漢寧窗、漢明窗、布萊克曼窗、凱塞窗等。通過改變窗的形狀來改善濾波器的幅頻特性。窗函數(shù)的選擇原則是l 具有較低的旁瓣幅度,尤其是第一旁瓣幅度;l 旁瓣幅度下降速率要大,以利于增加阻帶衰減;l 主瓣的寬度要窄。以獲得較陡的過渡帶。下表3-2給出了五種常用的窗函數(shù):表3-2

23、五種窗函數(shù)參數(shù)表窗函數(shù)主瓣寬度/rad旁瓣水平/db過渡帶寬度/rad阻帶最小衰減/db矩形窗-1321漢寧窗-3144漢明窗-4153布萊克曼窗-5774凱塞窗(=7.865)-5780頻率采樣法:窗函數(shù)是從時域出發(fā)來設(shè)計濾波器。我們可以用另外一種思路去設(shè)計,即可以從頻率的角度著手,通過頻譜的有限個采樣值來近似準確的恢復(fù)原序列,根據(jù)頻域采樣定理,對給定的理想頻率響應(yīng)進行等間隔采樣。(3-10)這里被認作待設(shè)計FIR濾波器的頻率采樣值,再由進行IDFT(離散傅里葉變換的逆變換)即得到了有限長序列h(n),即(3-11)將等式兩邊進行Z變換及頻率響應(yīng),即(3-12) (3-13) 式中,為內(nèi)插函

24、數(shù),即(3-14)由上面的分析來看,頻率取樣法是比較簡單的,但因內(nèi)插函數(shù)(3-15),不僅要求每個取樣點上頻域響應(yīng)要與理想情況下的頻響保持一致,在非取樣點出的響應(yīng)由各取樣點內(nèi)插得到。頻率設(shè)計法的基本設(shè)計流程可以表示為:確定 H(z)=ZT(h(n)抽樣N點DFT變換h(n)=IDFT(Hd(n)圖3-6 頻率設(shè)計法流程等波紋最佳逼近法等波紋最佳逼近法是基于指標允許的最大誤差。最大誤差縮減到最小化(指標要求之下)能使得幅度誤差在整個逼近理想頻段的過程中均勻分布。即所設(shè)計的FIR數(shù)字濾波器的幅度特性在通帶和阻帶范圍內(nèi)是等波紋的,可以分別調(diào)整通帶和阻帶的波紋幅度。若在濾波器階數(shù)確定的情況下,使得加權(quán)

25、的幅度波紋誤差達到最小。 定義加權(quán)幅度誤差函數(shù)為 (3-15)該式中為幅度誤差加權(quán)函數(shù),用來控制不同頻帶的幅度逼近誤差。一般情況下,在逼近精度高的頻帶,取值大,而在逼近誤差精度低的頻帶,取值小,以使得等波紋。在設(shè)計時,是由所給指標中要求的通帶最大衰減和阻帶最小衰減來取定的函數(shù)。對于FIR數(shù)字低通濾波器,常取: (3-16)式中,和分別指濾波器設(shè)計指標中的通帶和阻帶的振蕩波紋幅度。注意:k為正的系數(shù)。這里只簡單介紹這種濾波方法,對于如何實現(xiàn)就不再詳細討論了。三種設(shè)計方法的比較:以上介紹的這三種設(shè)計濾波器的方法各有它們的優(yōu)勢所在,從實現(xiàn)難易角度來看,時窗函數(shù)和頻率采樣是較優(yōu)的選擇,但同時所能實現(xiàn)的

26、精度就沒有等波紋那么好了。由上面介紹我們可以想到等波紋指定了邊界頻率和,能夠做到分別控制。但較之前兩種組成復(fù)雜,所設(shè)計的濾波器的階數(shù)相比要少。4 基于MATLAB的FIR數(shù)字濾波器的設(shè)計4.1 MATLAB軟件MATLAB是由MATRIX和LABORATORY兩個英文單詞的前三個字母組合而成,意為矩陣實驗室。它有著強大的數(shù)值分析、符號運算、信號處理和圖形顯示的功能,能夠滿足絕大部分的計算要求。MATLAB程序語言語法結(jié)構(gòu)和C語言相似,簡單易用,可移植性好,易于開發(fā)。MATLAB內(nèi)嵌了許多科學研究和工程應(yīng)用領(lǐng)域的工具箱(Tool box),諸如優(yōu)化算法、神經(jīng)網(wǎng)絡(luò)、信號處理、圖像處理、嵌入式系統(tǒng)開

27、發(fā)、DSP與通訊、電力系統(tǒng)仿真等,使用戶可以直接使用工具箱進行學習、應(yīng)用和研究而不需要自己編寫代碼。4.2 使用FDATool設(shè)計FIR數(shù)字濾波器利用Matlab提供的濾波器設(shè)計工具獲得濾波器的各種設(shè)計參數(shù)。本文設(shè)計的是一個16階的FIR低通濾波器,濾波器指標參數(shù)如下: 低通濾波器。 采樣頻率Fs為80kHz,濾波器Fc為10kHz。輸入序列位寬為10位(最高位為符號位) 窗函數(shù)采用Kaiser窗。在此利用Matlab來完成FIR濾波器系數(shù)的確定,詳細步驟如下:1.打開Matlab的FDATool。FDATool(Filter Design & Analysis Tool ),可以完成

28、多種濾波器的設(shè)計,分析和性能評估。首先打開matlab,然后在command window界面輸入命令fdatool,會自動彈出fdatool窗口。或者采取如下圖的打開方式 圖4-1 FDATOOL設(shè)計濾波器打開操作2.選擇 Design Filter。FDATool左下側(cè)排列一組工具按鈕,功能分別是: 濾波器轉(zhuǎn)換(TransForm Filer) 設(shè)置量化參數(shù)(Set Quantization Parameters) 實現(xiàn)模型(Realize Model) 導(dǎo)入濾波器(Import Filter) 設(shè)計濾波器(Design Filter)圖4-2 FDATOOL 操作界面我們首先選擇設(shè)計濾波

29、器,再選擇濾波器類型(Filter Type)為低(Lowpass)通;設(shè)計方法(Design Method)為FIR,采用窗口法(Window);濾波器階數(shù)(Filter Order)定制為15;窗口類型為Kaiser,Beta為默認0.5;Fs為80kHz,Fc為10kHz。注意:在濾波器階數(shù)選擇時,再此設(shè)置的是15階,而不是16階。這是由于在前面設(shè)計的16階FIR濾波器的常數(shù)系數(shù)項h(0)=0,延遲的單位共有15。 單擊Design Filter按鈕,直接型FIR低通數(shù)字濾波器Matlab就設(shè)計完成了。FDATool窗口中的菜單命令A(yù)nalysis,可以查看到對該設(shè)計的濾波器的各項指標的

30、分析。選擇Analysis下的Magnitude Response命令,可以看到濾波器的幅頻響應(yīng)圖,其中x軸為頻率,y軸為幅度值(單位為dB)。 圖4-3 FIR濾波器的幅頻響應(yīng)從圖中我們可以看出當頻率達到所設(shè)置的截至頻率10kz時,在理想情況下幅度衰減-3db,在設(shè)計中得到驗證。選擇Analysis 點擊Phase Response命令是相頻響應(yīng)分析。圖4-4所示為濾波器的相頻響應(yīng) 圖4-4 FIR濾波器的相頻響應(yīng)可以看到設(shè)計的FIR濾波器在通帶內(nèi)相位響應(yīng)為線性的,即該濾波器具有線性相位。 通過Analysis中的Magnitude & Phase Response命令比較幅頻與相頻

31、圖4-5 幅頻響應(yīng)與相頻響應(yīng)比較由于濾波器是有限沖激響應(yīng),所以在零極圖中沒有極點的存在。也就是極點只存在原點處,如圖:圖4-6 零極點分布圖3.選擇Analysis 中的Filter Coefficients命令來得到濾波器的系數(shù),圖4-7列出了FDATool計算的15階直接I型FIR濾波器部分系數(shù)。圖4-7 FIR濾波器系數(shù)生成現(xiàn)在我們得到的是浮點數(shù),要將浮點數(shù)進行整數(shù)化。首先選擇FDAtool窗口左下側(cè)的Turn quantization命令,進行量化參數(shù)設(shè)置,在Fiter arithmetic中選擇Fixed point來修正成自己想要的小數(shù)位數(shù),這里我們只需要在Coefficient當

32、中修正一下濾波器系數(shù)的小數(shù)長度,本文選擇的是11。其修正之后的結(jié)果如圖:圖4-8 濾波器系數(shù)修正4.然后我們將修正之后的系數(shù)導(dǎo)出,其具體做法:選擇FDATOOL菜單當中的File,調(diào)用Export命令,彈出Export對話框,這里我們只需將Numerator名字命名,其他保持默認狀態(tài),可以是初始化,但多次用到時,應(yīng)命名時注意區(qū)分,再點擊OK圖4-9 FIR濾波器系數(shù)導(dǎo)出對話框5.上面的修正濾波器系數(shù)步驟中,我們采取的是保留小數(shù)后面11位的有效“字”,接下來就用乘以2的N次方,來進行取整,當然這里N是11,因為之前進行過系數(shù)修正,所以得到的都是整數(shù)。在command window中利用語句:就可

33、以得到我們需要做的乘法單元數(shù)值。也可以使用語句:round(Num*(211))得到定點型的系數(shù)。如下操作之后的系數(shù)生成:Num*211ans =-31 -88 -106 -54 70 239 401 499 499 401 239 70 -54 -106 -88 -31在得到這些系數(shù)之后,接下來利用VHDL語言在QUARTUS中編寫乘法器原語句,并可以生成一個個獨立的單元模塊。為下面用QUARTUS軟件實現(xiàn)設(shè)計低通數(shù)字濾波器奠定了基礎(chǔ)。5 FIR數(shù)字濾波器的VHDL實現(xiàn)5.1 設(shè)計分析與框架在利用matlab生成系數(shù)時,注意到我們采用的是凱撒窗,其中指標有 為80khz,截至頻率 為10kh

34、z。而試驗箱的系統(tǒng)時鐘為48mhz,所以這里要用到分頻器進行分頻。正弦波產(chǎn)生使用DDS。最后在連接濾波器。利用兩路輸出,DDS信號輸出,還有濾波器輸出,兩者之間進行比較,觀察濾波器的特性。5.2 分頻器原理針對本文的分頻來說,系統(tǒng)時鐘為48MHz,現(xiàn)在想得到是80KHz的時鐘來提供給濾波器,當48MHz系統(tǒng)時鐘走完600個周期時,這時濾波器的時鐘也恰巧完成了一個時鐘周期,那么就可以做運算48000/80=600,用計數(shù)的方法來講,即系統(tǒng)時鐘完成計數(shù)600時,完成的是濾波器時鐘的一個周期。需要注意的時,在計數(shù)到299輸出到濾波器的時鐘此時需要進行翻轉(zhuǎn)。利用VHDL語言進行編寫的核心程序如下:if

35、(CLK48MHz'event and CLK48MHz='1')thenif(div1=299)thendiv1:=0;CLK1<=not CLK1;elsediv1:=div1+1;end if;據(jù)技術(shù)指標要求,要產(chǎn)生一個正弦掃頻電路,接到濾波器的輸入段,以此來驗證濾波器的低通特性。在掃頻電路的輸入端同樣的我們要接入80KHz的時鐘。因為本文掃頻電路是利用的直接DDS(數(shù)字頻率合成),值得注意的是這里的時鐘是DDS中查找表取地址的頻率,也是DDS輸出的正弦信號接入到濾波器的頻率,則濾波器進行接收時,時鐘要保持一致。但這個時鐘頻率不能作為頻率變化的快慢,應(yīng)當放慢

36、接入到示波器中掃頻正弦波的變化,那么從分頻器當中由此還要引出一個分頻的時鐘。這里本文制作的是15Hz,來控制頻率控制字變化的快慢,變化的時間間隔為1/15=0.067s,經(jīng)驗證示波器上是可以很清晰的看到變化過程。整體的分頻塊如圖所示:圖5-1分頻塊圖5.3 DDS原理及應(yīng)用DDS即直接數(shù)字頻率合成技術(shù),簡單來說就是用數(shù)字化的方法查找表來實現(xiàn)頻率合成。其基本的原理框圖為:相位調(diào)節(jié)電路相位累加器波形存儲器D/A轉(zhuǎn)換器頻率控制字、相位控制字、頻率顯示電路頻率預(yù)置與調(diào)節(jié)電路 圖5-2 DDS基本原理框圖其中頻率預(yù)置電路是指定初始頻率值,這個頻率控制字加到相位累加器中,就可以實現(xiàn)相位的移位,在該頻率控制

37、字的基礎(chǔ)之上不斷對該頻率控制字進行相位累加,做移位“動作”,相位累加的輸出作為查找表的相位取樣地址,經(jīng)過查找表查找其對應(yīng)的幅度值,在波形存儲器中,存儲的是當前的幅度值,然后等到下一個時鐘,將該幅度值經(jīng)過D/A轉(zhuǎn)換,最終轉(zhuǎn)換成模擬波形進行輸出。需要注意的是相位不能一直累加下去,因為查找表當中的點數(shù),即表示一個周期的離散的點的位數(shù)在定義查找表時已經(jīng)設(shè)定好的,其相位地址也是固定的,超出地址范圍,輸出是不可預(yù)估的,那么就需要將相位相位累加器中表征相位取樣地址的數(shù)據(jù)類型定義為Buffer類型,即當達到所表示最大位數(shù)的最大值后,完成一次周期采樣。之后就會出現(xiàn)溢出,緊接著相位累加器中的初始值歸零。繼續(xù)進行相

38、位累加移位。ROM模塊:查找表模塊的生成,查找表模塊需要自己去制作一個ROM表,ROM表的制作方法有多種,可以采取C語言來生成,其核心程序如下:for(i=0;i<4096;i+)s=sin(atan(1)*8*i/4096);printf("%d:%x;n",i,(int)(s)*1023);上述程序編譯后,生成一個可執(zhí)行文件rogen.exe,在DOS命令下執(zhí)行:rogen>sine.mif生成sine.mif文件,再加上*.mif文件的頭部說明即可,格式如下: DEPTH=256; WIDTH=10; ADDRESS_RADIX=DEC; DATA_RAD

39、IX=HEX; CONTENT BEGIN END也可以用EXCEL來制作表,公式方法一樣,在QUARTUSII菜單里選擇新建文件,文件類型選擇Memory下的initialization,數(shù)據(jù)序列是有的,只需將數(shù)據(jù)序列對應(yīng)的數(shù)值進行復(fù)制即可。mif文件生成之后,在block窗口下雙擊,依次打開megafunctions,storage,選中l(wèi)pm_rom。點擊OK,將所設(shè)置的參數(shù)填進去。如下圖,生成的ROM模塊:圖5-3 ROM模塊注意這里制作的是一個周期4096個點,輸出位數(shù)為10位。將弧度制擴展成4096個點,計算每一個值對應(yīng)的sin函數(shù)值,print語句的作用就是輸出值在-1到1之間的

40、數(shù)用10位的二進制來表示。這里用的是有符號數(shù)。因為在后面設(shè)計濾波器當中,采用的是有符號數(shù)。取地址模塊:地址模塊作用是在時鐘作用下,不斷的給ROM表送相位取樣地址。圖5-4 地址模塊其部分程序如下:BEGINPROCESS(clk)BEGINIFclk'EVENT ANDclk = '1' THENaddr <= addr + step;ENDIF;END PROCESS;步長變化模塊:這里面step是步長,就是下面將要的介紹的步長變化模塊:實現(xiàn)掃頻實際上就是讓步長發(fā)生變化,即“掃”的點數(shù)在變,DDS的輸出頻率就在變化。圖5-5步長變化模塊其部分程序如下:PROCE

41、SS (clk)BEGINIF clk'EVENT AND clk = '1' AND en = '1' THEN/en為使能端step <= step + 1;IF step = "10000000000" THENstep <= "00000001000"END IF;ENDIF;END PROCESS;這里面提到的兩個二進制數(shù),指的是步長從8到1024。即步長在這個范圍內(nèi)改變,是DDS輸出頻率可以在0.15KHz到20KHz進行變化。具體的計算過程如下:設(shè)DDS輸出頻率為f,采樣頻率為80KHz,

42、采樣周期為t。則:/求時間周期/DDS輸出頻率將DDS做成一個單元模塊,那么分頻與DDS模塊進行綜合的電路圖如下所示:圖5-6 正弦掃頻輸出模塊我們創(chuàng)建一個仿真波形文件,來觀察掃頻輸出模塊波形的輸出情況,具體步驟是:點擊新建文件,選擇新建Vector Waveform File(矢量波形文件),注意之前要將正弦掃頻的Block文件設(shè)置成頂層文件,然后再編繹下。輸入,輸出端口的引出還有定義這里就不再贅述方法了。下面進行的是功能仿真,我們選擇菜單命令中processing下的simulator tool彈出的對話菜單中選擇Funcation仿真形式。其結(jié)果如下:圖5-7 正弦掃頻仿真波形由圖中所示

43、我們可以直觀的發(fā)現(xiàn),頻率控制字的變化導(dǎo)致DDS的輸出頻率在改變,即變大。需注意的是DDS中的去地址時鐘周期應(yīng)遠小于頻率變化的時鐘周期的,因為我們要給保持一定“步長”的正弦波頻率一定的輸出時間。這樣看到的頻率變化是一個漸進的過程。5.4 FIR低通濾波模塊設(shè)計據(jù)上面對FIR低通濾波器原理的介紹,我們將采用的是常系數(shù)FIR低通濾波器的設(shè)計,所設(shè)計的濾波器結(jié)構(gòu)主要是基于濾波器實現(xiàn)濾波重要的點,即完成濾波系數(shù)與信號序列的卷積過程。常系數(shù)差分方程為:。其基本結(jié)構(gòu)框圖如下:圖5-7 FIR濾波器基本結(jié)構(gòu)框圖從基本結(jié)構(gòu)中可以看出,我們用到了15個寄存器,8個乘法器,還有二級,三級加減法器。接下來將對每一個單

44、獨模塊進行介紹寄存器模塊:由差分方程我們可以知道,寄存器這里的作用是實現(xiàn)信號的延遲。16階濾波器則需要延遲15次,初始的信號與最后一個寄存器所乘系數(shù)是一致的。單元模塊如下圖:圖5-8寄存器部分代碼如下:PROCESS (rst,clk) BEGIN IF(rst='1')THEN q<=(OTHERS=>'0'); ELSIF(clk'EVENT AND clk='1')THEN q<=d; END IF; END PROCESS;加法器模塊:在基本結(jié)構(gòu)圖中,我們用到了一級,二級,三級加減法器。一級加法器的作用是實現(xiàn)濾波

45、器系數(shù)一致的信號幅值相加的運算。在做加法器的時候,應(yīng)當注意溢出的情況,即加法器的輸出位數(shù)應(yīng)當比加數(shù)當中位數(shù)最多的要高一位。以加法器add202122為例,兩個輸入一個是20位,一個是21位,若用它們能夠表示的最大位數(shù)進行相加那么,輸出位數(shù)的最高位考慮到低位的進位,應(yīng)當是22位的輸出。第二級的加減法器,是實現(xiàn)相鄰乘法器輸出值進行相加減。這里用到了減法器,其作用是完成乘以負系數(shù)的運算操作。從第一級逐次向下,完成求和運算。加,減法器的單元模塊如下: 圖5-9 加法器 圖5-10 減法器部分加法器add202122代碼如下:PROCESS(clk) BEGIN IF(clk'EVENT AND

46、 clk='1')THEN s<=(a(19)&a(19)&a)+(b(20)&b); END IF; END PROCESS;減法器利用的是同樣的方法,這里不在詳細贅述。乘法器模塊:在前面Matlab,我們生成了濾波器系數(shù),在這里就需要把他們做成乘法器單元,因為這里是線性相位濾波器,N位偶數(shù),所以乘法器單元只需要8個。具體到乘法器單元設(shè)計時,本文利用的是CSD編碼辦法。這里接下來簡要介紹下這種編碼辦法:SD編碼與CSD編碼:SD編碼為在乘法和加法電路中降低復(fù)雜性,一種有效的方法是用有符號數(shù)字(Signed Digit Numbers, SD)來表

47、示二進制數(shù)。有符號數(shù)字量表示法與傳統(tǒng)二進制有所不同,它具有三種值(也就是說數(shù)字的值域是0,1,-1,其中-1經(jīng)常寫成 1)。如有符號數(shù)11111可以改寫成100000。這樣在做乘法運算可以有效的降低其計算的復(fù)雜性。對于經(jīng)典的CSD代碼是從最低有效位開始,用1001 取代所有大于等于2的1序列。簡易之,從最低位有效位開始,從左往右看二進制數(shù)當中位為1的位不相鄰,這是尋找CSD編碼的有效方法,最終是要實現(xiàn)的是,另其表示的二進制數(shù)拆分成若干個加數(shù)運算的加,減法器個數(shù)最少。例應(yīng)用5位二進制數(shù)和CSD代碼對10進制數(shù)15進行編碼:我們可以觀察到:盡管第一次011到101的代換沒有降低復(fù)雜程度,但是生成了

48、一個長度為3的選擇,復(fù)雜程度從3個加法降低到了2個減法。 以系數(shù)70為例,單元模塊如下:圖5-9 乘法器模塊其部分代碼如下:A1:PROCESS(Din,s1,s2,s3) BEGIN s1<=Din&"000000" s2<=Din&"00" s3<=Din&'0' IF (Din(10)='0') THEN s4<=('0'&s1(16 downto 0)+("00000"&s2(12 DOWNTO 0)+("

49、000000"&s3(11 DOWNTO 0); ELSE s4<=('1'&s1(16 downto 0)+("11111"&s2(12 DOWNTO 0)+("111111"&s3(11 DOWNTO 0); END IF; END PROCESS; A2: PROCESS(clk,s4) BEGIN IF clk'EVENT AND clk='1' THEN Dout<=s4; END IF; END PROCESS;這里面乘法器本身是正的,有些濾波系數(shù)是

50、負值,在下面的二級減法器中,減去系數(shù)為負的值就實現(xiàn)了乘以負系數(shù)。本文采用的輸入信號是有符號位的,所以在做加減的時候要考慮到符號位正負的問題。信號幅值為正時,高位補零,信號幅值為負時,高位應(yīng)補1。乘70的仿真結(jié)果如下:圖5-10 乘70仿真結(jié)果經(jīng)驗證仿真是正確的??紤]到在做乘法運算的時候,輸出位數(shù)很大,我們保留輸出信號的高10位作為最后的輸出。整體的基本結(jié)構(gòu)框架圖如下圖所示:圖5-11 掃頻FIR低通數(shù)字濾波基本結(jié)構(gòu)框圖其綜合仿真的的結(jié)果為:圖5-12 綜合仿真波形圖注意這里本文使用的時鐘并不是48MHz,由于有分頻的存在,需要大量的計數(shù)運算還有,在QUARTUS中直接用12.5µs(

51、對應(yīng)采樣頻率80KHz)的時鐘周期替代前面分頻的結(jié)果,掃描時鐘(指的是控制頻率變化的時鐘用30µs做)。還有一點值得注意的是兩路輸出都是有符號數(shù),在觀察結(jié)果時應(yīng)選擇對應(yīng)的數(shù)據(jù)類型。我們從理論計算上出發(fā)來看一下:DDS輸出頻率,程序頻率控制字K即步長從8到1024.當頻率升到10KHz時,我們有step=512,步長的增值為1。步長step增加512時所需時間為:即15.36ms,由圖示在時,通過低通濾波器的輸出波形幅值明顯降低。則驗證所設(shè)計的FIR低通濾波器基本符合設(shè)計要求。當然利用示波器來觀察實驗結(jié)果更具有說服力,下面將會介紹。6. 下載實驗箱仿真結(jié)果驗證上面的調(diào)試沒有出現(xiàn)問題后,接下來就要將設(shè)計好的FIR低通濾波器下載到試驗箱上面,進行仿真驗證。6.1 程序“寫“入操作上面我們在使用QUARTUS建立工程時,應(yīng)特別注意的是我們要選定我們之后要進行仿真實驗的一致的實驗箱型號,不一致,就會導(dǎo)致實驗箱上輸出的結(jié)果是混亂的。拿配置管腳來說,每個型號的配置管腳是不同的,這是值得引起注意的。下載操作步驟如下:1 選擇QUARTUS菜單命令中的assignments下的pins命令,會彈出配置管腳的對話框。本文使用的實驗箱器件是Family:Cyc

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論