數字濾波器的MATLAB與FPGA實現(第3版)( 簡體 字) | |
作者:杜勇 | 類別:1. -> 工程繪圖與工程計算 -> Matlab 2. -> 電子工程 -> FPGA |
出版社:電子工業出版社 | 3dWoo書號: 56443 詢問書籍請說出此書號! 缺書 NT售價: 440 元 |
出版日:9/1/2024 | |
頁數:360 | |
光碟數:0 | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787121485381 | 【不接受訂購】 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
第1章 數字濾波器及FPGA概述 1
1.1 濾波器概述 1 1.1.1 濾波器簡介 1 1.1.2 數字濾波器的分類 3 1.1.3 濾波器的特征參數 4 1.2 FPGA基本知識 5 1.2.1 FPGA的基本概念及發展歷程 5 1.2.2 FPGA的結構和工作原理 7 1.2.3 IP核的概念 12 1.3 FPGA在數字信號處理中的應用 13 1.4 AMD系列器件簡介 14 1.4.1 AMD系列器件概覽 14 1.4.2 7系列FPGA芯片簡介 16 1.5 FPGA信號處理板CXD720 17 1.6 小結 19 第2章 設計語言及環境介紹 20 2.1 Verilog HDL語言簡介 20 2.1.1 HDL語言 20 2.1.2 Verilog HDL語言 21 2.1.3 本書中的Verilog HDL代碼設計原則 24 2.2 FPGA設計流程 24 2.3 Vivado軟件開發步驟 27 2.3.1 流水燈電路功能 27 2.3.2 流水燈電路設計輸入與實現 28 2.3.3 程序下載 32 2.4 MATLAB軟件簡介 33 2.5 MATLAB的常用信號處理函數 36 2.5.1 常用的信號產生函數 36 2.5.2 常用的信號分析函數 38 2.5.3 濾波器設計分析工具FDATOOL 43 2.6 MATLAB與Vivado的聯合應用 44 2.7 小結 45 第3章 FPGA實現數字信號處理基礎 46 3.1 數的表示 46 3.1.1 萊布尼茨與二進制 46 3.1.2 定點數表示法 47 3.1.3 浮點數表示法 49 3.2 FPGA中數的運算 52 3.2.1 加/減法運算 52 3.2.2 乘法運算 55 3.2.3 除法運算 56 3.2.4 有效數據位的計算 56 3.3 有限字長效應 59 3.3.1 字長效應的產生因素 59 3.3.2 A/D轉換的字長效應 60 3.3.3 數字濾波器系數的字長效應 61 3.3.4 濾波器運算中的字長效應 62 3.4 小結 63 第4章 FIR濾波器原理及Verilog HDL設計 64 4.1 FIR濾波器的理論基礎 64 4.1.1 線性時不變系統 64 4.1.2 FIR濾波器的原理 66 4.1.3 FIR濾波器的特性 67 4.1.4 FIR濾波器的結構形式 71 4.2 FIR濾波器的設計方法 74 4.2.1 窗函數法 74 4.2.2 頻率取樣法 76 4.2.3 等紋波切比雪夫逼近法 77 4.3 FIR濾波器的MATLAB設計 78 4.3.1 采用fir1函數設計 78 4.3.2 采用kaiserord函數設計 83 4.3.3 采用fir2函數設計 84 4.3.4 采用firpm函數設計 85 4.4 FIR濾波器的系數量化方法 88 4.4.1 常規的FIR濾波器系數量化原理 88 4.4.2 濾波器系數量化前后的性能對比 89 4.4.3 采用FDATOOL設計濾波器 90 4.5 并行結構FIR濾波器的Verilog HDL設計 92 4.5.1 并行結構FIR濾波器原理 92 4.5.2 并行結構FIR濾波器的Verilog HDL設計 93 4.5.3 乘法器IP核的應用 96 4.5.4 測試數據模塊設計及DDS核的應用 97 4.5.5 并行結構FIR濾波器的仿真測試 99 4.6 串行結構FIR濾波器的Verilog HDL設計 102 4.6.1 串行結構FIR濾波器原理 102 4.6.2 串行結構FIR濾波器的Verilog HDL設計 102 4.6.3 串行結構FIR濾波器的仿真測試 106 4.6.4 串行結構FIR濾波器的運算時序 107 4.7 FIR濾波器的板載測試 108 4.7.1 硬件接口電路 108 4.7.2 板載測試程序 109 4.7.3 板載測試驗證 113 4.8 小結 114 第5章 FIR濾波器IP核設計 115 5.1 FIR核設計并行結構濾波器 115 5.1.1 新建FIR核并完成參數設置 115 5.1.2 并行結構FIR核濾波器仿真 118 5.2 FIR核設計串行結構濾波器 119 5.2.1 改進的濾波器系數量化方法 119 5.2.2 MATLAB設計濾波器系數文件 120 5.2.3 串行結構FIR核濾波器設計 121 5.3 FIR核設計濾波器的板載測試 124 5.3.1 硬件接口電路及板載測試程序 124 5.3.2 板載測試驗證 125 5.4 FIR核的系數重載設計 126 5.4.1 FIR核的系數重載方法 126 5.4.2 系數可重載的FIR濾波器設計 129 5.5 系數可重載FIR濾波器的板載測試 132 5.5.1 硬件接口電路及板載測試程序 132 5.5.2 板載測試驗證 133 5.6 小結 134 第6章 IIR濾波器設計 135 6.1 IIR濾波器的理論基礎 135 6.1.1 IIR濾波器的原理及特性 135 6.1.2 IIR濾波器的結構形式 136 6.1.3 IIR濾波器與FIR濾波器的比較 138 6.2 IIR濾波器的設計方法 139 6.2.1 幾種典型的模擬濾波器 139 6.2.2 原型轉換設計方法 142 6.2.3 直接設計方法 143 6.3 IIR濾波器的MATLAB設計 144 6.3.1 采用butter函數設計 144 6.3.2 采用cheby1函數設計 144 6.3.3 采用cheby2函數設計 145 6.3.4 采用ellip函數設計 145 6.3.5 采用yulewalk函數設計 146 6.3.6 幾種設計函數的比較 147 6.3.7 采用FDATOOL設計 149 6.4 IIR濾波器的系數量化方法 150 6.4.1 量化直接型IIR濾波器系數 150 6.4.2 IIR濾波器系數的字長效應 151 6.5 直接型IIR濾波器設計 154 6.5.1 直接型IIR濾波器的實現方法 154 6.5.2 零點系數的Verilog HDL設計 156 6.5.3 極點系數的Verilog HDL設計 157 6.5.4 頂層文件的設計 159 6.5.5 直接型IIR濾波器仿真測試 161 6.5.6 直接型IIR濾波器的改進設計 163 6.6 直接型IIR濾波器板載測試 163 6.6.1 硬件接口電路及板載測試程序 163 6.6.2 板載測試驗證 164 6.7 級聯型IIR濾波器系數量化設計 166 6.7.1 將IIR濾波器轉換成級聯型結構 166 6.7.2 對級聯型IIR濾波器系數進行量化 167 6.8 級聯型IIR濾波器設計及仿真 168 6.8.1 級聯型IIR濾波器設計 168 6.8.2 級聯型IIR濾波器仿真測試 172 6.9 小結 173 第7章 多速率信號處理原理及CIC濾波器設計 174 7.1 多速率信號處理基礎知識 174 7.1.1 多速率信號處理的概念及作用 174 7.1.2 多速率信號處理的一般步驟 175 7.1.3 軟件無線電中的多速率信號處理 176 7.2 抽取與內插處理 177 7.2.1 整數倍抽取 177 7.2.2 整數倍內插 179 7.2.3 比值為有理數的抽樣頻率轉換 181 7.3 CIC濾波器原理及應用條件 181 7.3.1 多級CIC濾波器原理及仿真 181 7.3.2 單級CIC濾波器原理及仿真 182 7.3.3 CIC濾波器的應用條件分析 184 7.4 單級CIC濾波器的Verilog HDL設計及測試 185 7.4.1 單級CIC濾波器的Verilog HDL設計 185 7.4.2 單級CIC濾波器的仿真測試 186 7.5 多級CIC濾波器的Verilog HDL設計及測試 188 7.5.1 多級CIC濾波器結構分析 188 7.5.2 多級CIC濾波器設計中數據位寬的討論 189 7.5.3 多級CIC濾波器的Verilog HDL設計 190 7.5.4 多級CIC濾波器的仿真測試 193 7.6 CIC濾波器IP核的使用 195 7.6.1 CIC濾波器IP核簡介 195 7.6.2 IP核設計多級CIC抽取濾波器及仿真測試 197 7.7 CIC濾波器的板載測試 198 7.7.1 硬件接口電路及板載測試程序 198 7.7.2 板載測試驗證 199 7.8 小結 200 第8章 半帶濾波器設計 202 8.1 FIR半帶濾波器原理及MATLAB設計 202 8.1.1 半帶濾波器的原理 202 8.1.2 半帶濾波器的MATLAB設計 203 8.2 單級半帶濾波器的Verilog HDL設計及仿真 205 8.2.1 單級半帶濾波器系數的設計 205 8.2.2 半帶濾波器IP核的創建 206 8.2.3 半帶濾波器的仿真測試 208 8.3 多級半帶濾波器MATLAB設計 210 8.3.1 各級半帶濾波器的總體技術要求 210 8.3.2 允許過渡帶有混疊的設計 210 8.3.3 不允許過渡帶有混疊的設計 211 8.4 多級半帶濾波器的FPGA設計 212 8.4.1 多級半帶濾波器的性能指標設計 212 8.4.2 多級抽取系統的Verilog HDL設計 215 8.4.3 多級抽取系統的測試仿真 217 8.5 多級半帶濾波器的板載測試 219 8.5.1 硬件接口電路及板載測試程序 219 8.5.2 板載測試驗證 220 8.6 小結 221 第9章 自適應濾波器原理及Verilog HDL設計 222 9.1 自適應濾波器簡介 222 9.1.1 自適應濾波器的概念 222 9.1.2 自適應濾波器的應用 223 9.2 自適應算法的一般原理 225 9.2.1 常用誤差準則 226 9.2.2 維納-霍夫方程 227 9.3 LMS算法原理及實現結構 227 9.3.1 LMS算法的原理 227 9.3.2 LMS算法的實現結構 228 9.3.3 LMS算法的字長效應 229 9.3.4 符號LMS算法原理 230 9.4 LMS算法的MATLAB仿真 231 9.4.1 蒙特-卡羅仿真方法 231 9.4.2 LMS算法仿真模型 232 9.4.3 LMS算法仿真 232 9.5 自適應線性濾波器原理及仿真 235 9.5.1 自適應線性濾波器原理 235 9.5.2 利用線性濾波器實現通道失配校正 236 9.5.3 校正算法的MATLAB仿真 237 9.6 通道失配校正算法的Verilog HDL設計 239 9.6.1 確定運算字長及數據截位方法 239 9.6.2 計算時鐘頻率并分配各步驟所需時鐘周期 241 9.6.3 算法的Verilog HDL實現 241 9.6.4 FPGA實現后的仿真測試 245 9.6.5 關于通道失配校正算法數據范圍的討論 247 9.7 通道失配校正算法的板載測試 247 9.7.1 硬件接口電路 247 9.7.2 板載測試程序 248 9.7.3 板載測試驗證 250 9.8 小結 252 第10章 自適應天線陣及陷波器Verilog HDL設計 253 10.1 自適應天線陣的原理 253 10.2 自適應天線陣的MATLAB仿真 255 10.3 自適應天線陣的FPGA實現 260 10.3.1 自適應天線陣的Verilog HDL設計 260 10.3.2 FPGA實現后的仿真測試 264 10.4 自適應陷波器原理 267 10.5 自適應陷波器的MATLAB仿真 268 10.6 自適應陷波器的FPGA實現 270 10.6.1 自適應陷波器的Verilog HDL設計 270 10.6.2 FPGA實現后的仿真測試 273 10.7 自適應陷波器的板載測試 274 10.7.1 硬件接口電路 274 10.7.2 板載測試程序 275 10.7.3 板載測試驗證 277 10.8 小結 278 第11章 變換域濾波器Verilog HDL設計 279 11.1 變換域濾波器簡介 279 11.2 離散傅里葉變換簡介 280 11.2.1 離散傅里葉變換原理 280 11.2.2 柵欄效應與頻率分辨率選擇方法 281 11.3 快速傅里葉變換原理及仿真 283 11.3.1 FFT算法的基本思想 283 11.3.2 FFT算法的MATLAB仿真 284 11.4 頻域濾波器的原理及MATLAB仿真 285 11.4.1 抗窄帶干擾濾波器的原理 285 11.4.2 檢測門限的選取 286 11.4.3 頻域濾波器的MATLAB仿真 287 11.5 頻域濾波器FPGA實現 290 11.5.1 頻域濾波器的高效結構設計 290 11.5.2 簡易頻域濾波器原理及仿真 292 11.5.3 FFT核設置方法 295 11.5.4 頻域濾波器的頂層文件Verilog HDL設計 297 11.5.5 FFT基本接口時序仿真分析 298 11.5.6 IFFT基本接口時序仿真分析 299 11.5.7 頻域濾波模塊Verilog HDL設計 301 11.5.8 FPGA實現后的仿真測試 303 11.6 頻域濾波器的板載測試 304 11.6.1 硬件接口電路 304 11.6.2 板載測試程序 305 11.6.3 板載測試驗證 307 11.7 小結 308 第12章 DPSK解調系統Verilog HDL設計 309 12.1 數字接收機的一般原理 309 12.1.1 通用數字接收機處理平臺 309 12.1.2 基本調制/解調技術 310 12.1.3 改進的數字調制解調技術 312 12.2 DPSK調制/解調原理 313 12.2.1 DPSK調制原理及信號特征 313 12.2.2 DPSK的MATLAB仿真 315 12.2.3 DPSK解調原理 318 12.3 DPSK解調參數設計 320 12.3.1 數字下變頻器的設計 320 12.3.2 低通濾波器參數的設計 321 12.3.3 數字鑒相器的設計 323 12.3.4 環路濾波器的設計 323 12.3.5 載波同步環設計的一般步驟 325 12.4 DPSK解調電路的Verilog HDL設計 327 12.4.1 頂層模塊的Verilog HDL設計 327 12.4.2 鑒相器及環路濾波器的Verilog HDL設計 329 12.4.3 DPSK解調電路的仿真測試 331 12.5 DPSK解調電路的板載測試 333 12.5.1 硬件接口電路 333 12.5.2 板載測試程序 334 12.5.3 板載測試驗證 336 12.6 小結 337 參考文獻 338 本書以Xilinx公司的Artix-7系列FPGA器件為開發平臺,以MATLAB及Verilog HDL語言為開發工具,詳細闡述數字濾波器的FPGA實現原理、結構、方法及仿真測試過程,并通過大量工程實例分析使用FPGA實現濾波器的具體技術細節,主要包括FIR濾波器、IIR濾波器、多速率濾波器、自適應濾波器、變換域濾波器、DPSK調制解調等內容。本書思路清晰、語言流暢、分析透徹,在簡明闡述設計原理的基礎上,主要追求對工程實踐的指導性,力求使讀者在較短的時間內掌握數字濾波器的FPGA設計知識和技能。編著者精心設計了與本書配套的FPGA數字信號處理開發板,詳細講解了工程實例的板載測試步驟及方法,形成了從理論到實踐的完整學習過程,可以有效加深讀者對數字濾波器技術的理解,提高學習效率。本書的配套資源包含完整的MATLAB及Verilog HDL實例工程代碼。讀者可以關注編著者的微信公眾號“杜勇FPGA”下載程序資料及開發環境,關注B站UP主“杜勇FPGA”觀看教學視頻。
版本說明
時光飛逝,十多年時間似乎只在一瞬間,從2012年首次出版《數字濾波器的MATLAB與FPGA實現》一書至今,已過去12年了。 十余年來,本書陸續出版了多個版本,每個版本的基本情況如下。 2012年3月:出版《數字濾波器的MATLAB與FPGA實現》,采用ISE14.7/VHDL/ MATLAB環境編寫,沒有配套開發板測試內容。 2014年8月:出版《數字濾波器的MATLAB與FPGA實現(第2版)》,采用ISE14.7/VHDL/ MATLAB環境編寫,修改了第1版中的文字錯誤,增加了自適應陷波器內容,補充了配套程序文件,沒有配套開發板測試內容。 2015年3月:出版《數字濾波器的MATLAB與FPGA實現——Altera/Verilog版》,采用Quartus II 13.1/Verilog HDL/MATLAB環境編寫,沒有配套開發板測試內容。 2017年9月:出版《數字濾波器的MATLAB與FPGA實現——Xilinx/VHDL版》,采用ISE14.7/VHDL/MATLAB環境編寫,增加了配套開發板CXD301的板載測試內容。 2019年6月:出版《數字濾波器的MATLAB與FPGA實現——Altera/Verilog版(第2版)》,采用Quartus II 13.1/Verilog HDL/MATLAB環境編寫,增加了配套開發板CRD500的板載測試內容。 Xilinx公司目前的主流器件為7系列器件,主流開發工具為Vivado環境,Verilog HDL語言在國內FPGA設計領域應用廣泛,本書在《數字濾波器的MATLAB與FPGA實現(第2版)》的基礎上進行編寫,采用Vivado/Verilog/MATLAB開發環境,研發了基于Artix-7系列FPGA芯片的配套開發板CXD720,并在此平臺上進行重新編寫。此次改版主要涉及以下幾個方面。 (1)采用Vivado/Verilog/MATLAB環境進行編寫。 (2)對書中大部分實例增加了基于CXD720開發板的板載測試內容。 (3)調整了章節內容,由9章調整為12章。 (4)采用單獨章節詳細描述了FIR濾波器IP核的設計方法。 (5)簡化了各種濾波器實例的仿真測試方法,更利于學習理解。 (6)修改了原版中的文字錯誤。 為什么要寫這本書 通常來講,一名電子通信專業的技術人員,在從業之初都會遇到類似的困惑:如何將教材中的理論知識與實際中的工程設計結合起來?如何將教材中的理論知識轉換成實際的電路?絕大多數的數字通信類教材對通信原理的講解都十分透徹,但理論知識與工程實踐之間顯然需要一些可以順利通過的橋梁。一種常用的方法是通過采用MATLAB等工具進行軟件仿真來加深對理論知識的理解,但更好的方法是直接參與工程的設計與實現。 然而,剛畢業的工科院校學生極少有機會參與實際工程設計,工作中往往感到學校所學的理論知識很難與工程實踐聯系起來。數字通信類教材中多是講解通信原理性的內容,即使可以很好地解答教材后面的習題,或者說能夠熟練地推導書中的基本公式,在實際進行產品設計時,如何將這些理論知識用具體的電路或硬件平臺實現出來,仍然是擺在廣大工程師面前的一個巨大難題。尤其對于數字通信專業來講,由于涉及的理論知識比較復雜,真正進行工程設計時才發現根本無從下手。采用MATLAB、System View等軟件對通信理論進行仿真,雖然可以直觀地驗證算法的正確性,并查看仿真結果,但這類軟件的仿真畢竟只停留在算法或模型的仿真上,與真正的工程設計及實現完全是兩個不同的概念。FPGA技術很好地解決了這一問題。FPGA技術本來就是基于工程應用的技術,其仿真技術可以很好地仿真產品實際的工作情況,在計算機上通過了時序仿真的程序設計,幾乎不再需要修改就可以直接應用到工程中。這種設計、驗證、仿真的一體化方式可以極好地將理論知識與工程實踐結合起來,從而提高讀者的學習興趣。 FPGA技術因其快速的并行運算能力,以及獨特的組成結構,在電子通信領域已成為必不可少的實現平臺之一。本書的目的正是架起一座數字通信技術理論知識與工程實踐之間的橋梁,通過具體的設計實例,詳細講解從理論知識到工程實踐的方法、步驟和過程,以便讀者盡快掌握利用FPGA平臺實現數字通信技術的方法。 目前,市場上已有很多介紹Vivado、QuartusⅡ等FPGA開發環境,以及Verilog HDL等硬件編程語言的書籍。如果我們僅僅使用FPGA來實現一些數字邏輯電路,或者理論性不強的控制電路設計,那么掌握FPGA開發工具及Verilog HDL語法就可以開始工作了。數字通信技術的理論性非常強,采用FPGA平臺實現數字通信技術的前提條件是要對理論知識有深刻的理解。在深刻理解理論知識的基礎上,關鍵的問題是如何利用FPGA的特點,找到合適的算法實現結構,厘清工程實現的思路,并采用Verilog HDL等硬件編程語言進行正確的實現。因此,想要順利地讀懂本書,掌握用FPGA實現數字通信技術的知識和技能,讀者還需要對FPGA的開發環境和設計語言有一定的了解。 編著者在寫作本書的過程中,兼顧數字濾波器的理論,以及工程設計過程的完整性,重點突出FPGA設計方法、結構、實現細節,以及仿真測試方法;在講解理論知識的時候,重點從工程應用的角度進行介紹,主要介紹工程設計時必須掌握和理解的知識點,并且結合FPGA的特點進行討論,便于讀者盡快找到理論知識與工程實踐之間的結合點;在講解實例的FPGA實現時,不僅對所有實例給出了完整的Verilog HDL程序代碼,而且從思路和結構上對每段代碼均進行了詳細的分析和說明。根據編著者的理解,本書針對一些似是而非的概念,結合工程實例的仿真測試加以闡述,希望能夠為讀者提供更多有用的參考。相信讀者按照書中講解的步驟完成一個個工程實例時,會逐步感覺到理論知識與工程實踐之間完美結合的暢快。隨著讀者掌握的工程實踐技能的提高,對數字濾波器理論知識的理解必將越來越深刻,重新閱讀以前學過的濾波器原理時,就更容易在頭腦里構建起理論知識與工程實踐之間的橋梁。 本書的內容安排 第1章首先介紹了濾波器的基本概念、FPGA的基本知識,以及Xilinx公司的主要器件。該章在介紹了FPGA的發展歷程后,對FPGA的基本工作原理及內部結構進行了簡要說明。目前最大的FPGA廠家主要有Xilinx公司(2022年被AMD公司收購)及Altera公司(2015年被Intel公司收購)。兩家公司有許多性能相近的產品,但所使用的開發工具無法通用。Xilinx公司作為FPGA的發明者及FPGA行業的領導者,通過不斷應用尖端技術來長久保持其行業領袖地位。由于不同器件的結構不同,因此各有其合理的應用領域,為了提高設計性能并節約產品成本,了解器件基本特性,合理選擇最終的目標器件顯得尤為重要。該章最后對基于Artix-7系列FPGA芯片XC7A100T的配套開發板CXD720進行了簡要介紹。為便于讀者快速掌握數字濾波器FPGA設計方法,本書中的絕大多數FPGA實例均可直接在配套開發板上進行驗證。 第2章首先介紹了硬件描述語言的基本概念及優勢,并對Verilog HDL語言進行了簡要介紹;然后對本書使用到的 Vivado 軟件及 MATLAB 軟件進行了簡要介紹,重點闡述了常用MATLAB函數的使用方法。數字濾波器的FPGA設計與實現是一項將理論知識與工程實踐緊密結合的技術,要求設計者不僅要十分清楚數字濾波器及數字信號處理的基本原理,還要掌握MATLAB軟件的使用方法、Verilog HDL編程及FPGA實現技術。 數字信號在FPGA等硬件系統中實現時,由于受寄存器長度的限制,不可避免地會產生有限字長效應。工程師必須了解有限字長效應可能對數字系統帶來的影響,并在實際設計中通過仿真來確定最終的量化位數、寄存器長度等內容。第3章在詳細分析了字長效應在FPGA設計中的影響后,闡述了FPGA中常用的數的運算方法,并通過實例仿真分析說明運算過程中的有效數據位等基本概念。特別需要說明的是,從讀者反饋的信息來看,雖然大多數問題是針對其他章節的實例提出的,但問題的本質不少都與數據有限字長效應有關。因此,建議讀者詳細閱讀該章內容,并且深入理解FPGA中數的運算,以及有限字長效應對信號處理的影響。 從第4章開始,本書正式討論各種數字濾波器的FPGA實現。FIR濾波器是數字濾波器中最常見、使用最廣泛的一種。為便于讀者深入了解FIR濾波器的設計原理及方法,該章首先簡要講述了與數字濾波器設計相關的基礎理論知識,然后對常用的MATLAB函數設計方法進行了介紹,采用MATLAB軟件設計出符合要求的濾波器系數后,還應采用Verilog HDL等硬件編程語言進行設計實現。根據FPGA的結構特點,具體實現FIR濾波器時有幾種不同的設計方法,最后該章詳細闡述了幾種常用結構的設計方法。 Vivado提供了功能強大的FIR濾波器IP核,在了解FIR濾波器原理的基礎上,利用IP核可以輕松設計出性能優良的FIR濾波器。第5章詳細介紹了FIR濾波器IP核的設計方法,闡述了實現通帶內增益為1的濾波器系數量化方法,通過實例講解了系數可重載FIR濾波器的實現步驟。 第6章討論了IIR濾波器的FPGA實現。IIR濾波器因其較高的濾波效率,適合在不需要嚴格線性相位特性的系統中使用。該章在介紹IIR濾波器的基本原理時,重點對IIR濾波器與FIR濾波器進行了比較,并對常用的5種IIR濾波器設計函數進行了介紹,比較了這幾種設計函數的濾波性能。IIR濾波器的FPGA實現相對于FIR濾波器的FPGA實現來講要復雜一些,主要原因在于其反饋結構,并且目前的FPGA設計軟件并沒有提供通用的IP核。該章詳細闡述了IIR濾波器的FPGA實現過程,以及實現過程中需要注意的系數量化方法、計算輸出數據位寬、MATLAB仿真等關鍵問題。 第7章主要介紹了多速率信號處理原理及CIC濾波器設計。抽取與內插是多速率信號處理的基礎,讀者需要從原理上了解抽取與內插的具體過程,及其對信號在時域及頻域上的影響。抽取與內插操作本身十分簡單,多速率信號處理的關鍵問題是如何有效地設計濾波器。CIC濾波器結構簡單,沒有乘法器,只有加法器、積分器和寄存器,適合在高抽樣頻率條件下工作。該章詳細討論了單級及多級CIC濾波器的Verilog HDL設計過程。 半帶濾波器可以使2倍抽取的每秒乘法次數比一般線性相位的FIR濾波器減少近1/2,因此特別適合應用于轉換率為2的整數次冪的系統。多級半帶濾波器的設計關鍵在于合理確定各級濾波器的通帶及阻帶的頻率及紋波系數。第8章討論了半帶濾波器的Verilog HDL設計方法,并詳細討論了多級半帶濾波器的設計、仿真及板載測試過程。 第9章首先對自適應濾波器的概念、應用及一般原理進行了簡單介紹,而后針對應用廣泛的LMS算法原理、實現結構進行了闡述,并采用MATLAB軟件對LMS算法進行了仿真驗證。該章以LMS算法為基礎,以通道失配校正系統為具體實例,詳細闡述了通過FPGA實現自適應濾波器的步驟、方法及過程。 第10章繼續討論基于LMS算法的自適應濾波器設計,詳細討論了自適應天線陣、自適應陷波器的工作原理及Verilog HDL設計方法,給讀者提供了更多的設計參考。在討論上述不同自適應濾波器的FPGA實現過程中,該章分別對常規LMS算法、符號LMS算法進行討論。自適應濾波器相對于經典濾波器來講,在FPGA實現過程中,關鍵在于清楚掌握實現過程中各數據變量的變化范圍,并以此確定各中間變量的數據字長及小數點位置,同時需要根據各運算步驟所需的運算量,合理分配各時鐘周期內的運算量,提高系統的整體運算速度。 相對時域濾波器而言,變換域濾波器給出了一個全新的濾波器設計思路。一些在時域無法濾除的干擾信號,在變換域可十分容易地濾除。具體選擇哪種濾波器,要根據輸入信號的統計特征、濾波器實現的復雜度、運算速度等因素綜合考慮。第11章首先對變換域濾波器的基本概念、快速傅里葉變換(FFT)、Vivado提供的FFT核等內容進行了簡單介紹,這些知識都是進行變換域濾波器設計的基礎。然后重點對變換域濾波器實現抗窄帶干擾的FPGA設計與實現進行了詳細討論。采用變換域濾波技術實現窄帶干擾濾除的原理并不復雜,在FPGA設計與實現過程中,難點在于準確把握各模塊之間、各運算步驟之間,以及各信號接口之間的時序關系,并在設計中嚴格按照這些時序關系進行程序的編寫。從該章的實例中讀者可以進一步體會時序在FPGA設計中的重要性。 為了使讀者對數字通信技術的FPGA實現有更完整的認識,第12章以一個較為完整的DPSK解調系統為實例,在簡單介紹數字接收機、DPSK調制解調原理的基礎上,詳細討論了整個工程設計的全過程,尤其對解調環路中的數字濾波器設計、載波環路的參數設計、FPGA實現細節進行了詳盡的分析,并給出了具有指導意義的幾個設計原則。可以看到,在整個工程設計過程中,濾波器仍然是解調系統的重要組成部分,其性能的優劣直接影響整個系統的性能。通過詳細分析討論,并動手設計整個DPSK解調系統,相信讀者會對數字通信技術的FPGA實現方法、手段、過程有較為深刻的理解。 關于FPGA開發環境的說明 目前,世界兩大FPGA廠商Xilinx和Altera的產品占據了全球90%左右的FPGA市場份額。可以說,在一定程度上正是由于這兩家FPGA公司的相互競爭態勢,才有力地推動了FPGA技術的不斷發展。雖然HDL(硬件描述語言)的編譯及綜合可以采用第三方公司所開發的產品,如ModelSim、Synplify等,但FPGA器件的物理實現必須采用各自公司開發的軟件平臺,無法通用。Xilinx公司目前的主流開發環境是Vivado(Vivado只能開發7系列器件,7系列以前的器件只能采用ISE環境開發,讀者可參考《數字濾波器的MATLAB與FPGA實現——Xilinx/VHDL版》了解ISE的開發方法),Altera公司目前的主流開發環境是Quartus系列套件。與FPGA開發環境類似,HDL 也存在兩種難以取舍的選擇:VHDL 和Verilog HDL。 如何選擇HDL呢?其實,對于有志于從事FPGA技術開發的技術人員來講,選擇哪種HDL并不重要,因為兩種HDL具有很多相似的地方,精通一種HDL后,再學習另一種HDL也不是一件困難的事。通常來講,可以根據周圍同事、朋友、同學,或者公司的主要使用情況進行選擇,這樣在學習過程中,可以很方便地找到能夠給你指點迷津的專業人士,從而加快學習進度。由于Verilog HDL在國內應用更為廣泛,本書采用Verilog HDL進行講解,讀者可參考本書的前兩個版本了解VHDL的設計方法。 本書采用的是Xilinx公司的Vivado開發環境,采用Verilog HDL作為實現手段。由于Verilog HDL并不依賴于某家公司的FPGA產品,因此本書的Verilog HDL程序文件可以很方便地移植到Altera公司或國內各大FPGA廠商的FPGA產品上。當程序中應用了IP核資源時,由于各家公司的IP核是不能通用的,因此需要根據IP核的功能和參數,在另外一個開發環境上重新生成IP核,或者編寫Verilog HDL代碼來實現。 有人說過這樣一句話:“技術只是一個工具,關鍵在于思想。”將這句話套用過來,對于本書來講,具體的開發環境及HDL只是實現數字通信技術的工具,關鍵在于設計的思路和方法。因此,讀者完全不必過于在意開發環境的差別,相信只要掌握了本書所講述的設計思路和方法,加上讀者已經具備的FPGA開發經驗,那么采用任何一種FPGA開發環境都可以很快地設計出滿足用戶需求的產品。 如何使用本書 本書討論的是數字濾波器的MATLAB與FPGA實現。相信大部分工科院校的學生對MATLAB軟件都至少有一個基本的了解。憑借其易用性及強大的功能,MATLAB軟件已經成為數學分析、信號仿真、數字信號處理必不可少的工具。MATLAB軟件具有專門針對數字信號處理的常用函數,如濾波器函數、傅里葉分析函數等。在進行數字濾波器設計時,采用MATLAB軟件常常會起到事半功倍的效果。因此,在具體講解某個實例時,通常會采用MATLAB軟件作為仿真驗證工具。在采用MATLAB軟件對設計的電路進行原理性驗證后,才開始使用Verilog HDL完成FPGA程序設計。 本書的大部分實例都給出了基于CXD720開發板的板載測試例程,這些例程可以直接下載到CXD720開發板上進行驗證。為了更加直觀地感受FPGA完成濾波器設計的效果,本書中大多數實例均采用示波器對濾波前后的信號進行測試驗證。如果讀者沒有示波器進行波形測試,也可以采用Vivado提供的“在線邏輯分析儀”工具實時抓取CXD720開發板中的接口信號,驗證濾波器的性能。雖然學習FPGA濾波器設計知識時,開發板不是必備的,可以通過仿真工具驗證電路的功能,但還是建議大家配合CXD720開發板進行學習,以加深對濾波器設計的理解,提高設計效率。 限于篇幅,本書中部分實例的MATLAB或Verilog HDL程序代碼沒有全部列出,本書的配套程序資料上收錄了本書所有實例的源程序及工程設計資源。讀者可關注編著者的微信公眾號“杜勇FPGA”免費下載配套程序資料。程序代碼及工程文件按章節序號置于根目錄下,讀者可以將其直接復制到本地硬盤中運行。需要說明的是,在部分工程實例中,需要由MATLAB軟件產生FPGA測試所需的文本數據文件,或者由MATLAB軟件讀取外部文件進行數據分析,同時FPGA仿真的測試激勵文件需要從指定的路徑下讀取外部文件數據,或者將仿真結果輸出到指定的路徑下。文本文件的路徑均在程序中指定為絕對路徑,如fid=fopen('D:FilterVivado MultHalfBandInt_Sin.txt','w')。因此,讀者將FPGA工程文件或MATLAB程序復制到本地硬盤后,請修改程序中的絕對路徑,確保程序能在正確的路徑下讀取文件。 致謝 有人說,每個人都有他存在的使命,如果迷失他的使命,就失去了他存在的價值。不只是每個人,每件物品也都有其存在的使命。對于一本書來講,其存在的使命就是被閱讀,并給讀者帶來收獲。數字通信FPGA設計的系列圖書,如果能夠對讀者的工作及學習有所幫助,就是編著者莫大的欣慰。 編著者在寫作本書的過程中查閱了大量的資料,在此對資料的作者及提供者表示衷心的感謝。由于寫作本書,因此編著者重新閱讀了一些經典的數字通信理論書籍,再次深刻感受到了前輩們嚴謹的治學態度和細致的寫作作風。 感謝電子工業出版社的大力支持,本書的出版使得我有機會在采納廣大讀者反饋意見的基礎上,修正以前版本中的不足之處,盡力使本書變得更加完善。 FPGA技術博大精深,數字通信技術種類繁多且實現難度大。本書雖盡量詳細地討論了FPGA實現數字濾波器技術的相關內容,但仍感覺到難以詳盡敘述工程實現所有細節。相信讀者在實際工程應用中經過不斷地實踐、思考及總結,一定可以快速掌握數字濾波器技術的工程設計方法,提高應用FPGA進行工程設計的能力。 由于編著者水平有限,書中難免存在疏漏之處,敬請廣大讀者批評指正。歡迎讀者就相關技術問題與編著者進行交流,或者對本書提出改進意見及建議。建議讀者關注編著者的微信公眾號“杜勇FPGA”獲取本書配套資料和相關信息;關注B站UP主“杜勇FPGA”觀看編著者發布的FPGA數字信號處理設計相關教學視頻。如需本書配套CXD720開發板,可到淘寶米恩工作室選購。 編著者 2024年6月 |