3dwoo大學簡體電腦書店
Intel FPGA數字信號處理設計——基礎版
( 簡體 字)
作者:杜勇類別:1. -> 電子工程 -> FPGA
出版社:電子工業出版社Intel FPGA數字信號處理設計——基礎版 3dWoo書號: 55707
詢問書籍請說出此書號!
有庫存
NT售價: 590
出版日:3/1/2022
頁數:336
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 字 )
ISBN:9787121431227 加入購物車加到我的最愛 (請先登入會員)
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社)
上 篇
第1章 FPGA概述 (3)
1.1 FPGA的發展趨勢 (3)
1.2 Intel FPGA的基本結構 (5)
1.2.1 可編程輸入/輸出單元 (6)
1.2.2 可配置邏輯塊 (7)
1.2.3 時鐘網絡資源 (9)
1.2.4 嵌入式塊RAM (9)
1.2.5 豐富的布線資源 (10)
1.2.6 內嵌專用硬核 (10)
1.3 FPGA的工作原理 (10)
1.4 FPGA與其他數字信號處理平臺的比較 (11)
1.4.1 ASIC、DSP、ARM的特點 (12)
1.4.2 FPGA的特點及優勢 (13)
1.5 FPGA的主要廠商 (14)
1.5.1 Xilinx公司 (14)
1.5.2 Intel公司 (15)
1.5.3 Lattice公司 (15)
1.5.4 Actel公司 (16)
1.5.5 Atmel公司 (17)
1.6 工程中如何選擇FPGA器件 (17)
1.7 小結 (18)
1.8 思考與練習 (19)
第2章 設計語言及開發環境 (21)
2.1 VHDL語言簡介 (21)
2.1.1 HDL語言的特點及優勢 (21)
2.1.2 選擇VHDL還是Verilog HDL (22)
2.2 VHDL語言基礎 (23)
2.2.1 VHDL語言簡介 (23)
2.2.2 程序結構 (24)
2.2.3 數據類型 (26)
2.2.4 數據對象 (29)
2.2.5 運算符 (29)
2.2.6 VHDL語句 (33)
2.3 QuartusⅡ開發環境 (37)
2.3.1 QuartusⅡ簡介 (37)
2.3.2 QuartusⅡ的用戶界面 (38)
2.4 ModelSim簡介 (40)
2.4.1 ModelSim的主要特點 (40)
2.4.2 ModelSim的工作界面 (41)
2.5 MATLAB簡介 (42)
2.5.1 MATLAB介紹 (42)
2.5.2 MATLAB的工作界面 (42)
2.5.3 MATLAB的特點及優勢 (43)
2.6 FPGA信號處理板CRD500 (45)
2.7 小結 (47)
2.8 思考與練習 (47)
第3章 FPGA設計流程 (51)
3.1 FPGA設計流程簡介 (51)
3.2 流水燈實例設計 (53)
3.2.1 明確項目需求 (53)
3.2.2 讀懂電路原理圖 (54)
3.2.3 形成設計方案 (56)
3.3 流水燈實例的Verilog HDL程序設計與綜合 (57)
3.3.1 建立FPGA工程 (57)
3.3.2 VHDL程序輸入 (59)
3.4 流水燈實例的功能仿真 (61)
3.4.1 生成測試激勵文件 (61)
3.4.2 采用ModelSim進行仿真 (64)
3.4.3 ModelSim的仿真應用技巧 (67)
3.5 流水燈實例的設計實現與時序仿真 (68)
3.5.1 添加約束文件 (68)
3.5.2 時序仿真 (70)
3.6 程序下載 (71)
3.6.1 sof文件下載 (71)
3.6.2 jic文件下載 (73)
3.7 小結 (75)
3.8 思考與練習 (76)

第4章 常用接口程序的設計 (77)
4.1 秒表電路設計 (77)
4.1.1 數碼管的基本工作原理 (77)
4.1.2 秒表電路實例需求及電路原理分析 (78)
4.1.3 形成設計方案 (78)
4.1.4 頂層文件的VHDL程序設計 (79)
4.1.5 數碼管顯示模塊的VHDL程序設計 (81)
4.1.6 秒表計數模塊的VHDL程序設計 (84)
4.1.7 按鍵消抖模塊的VHDL程序設計 (88)
4.2 串口通信設計 (91)
4.2.1 RS-232串口通信的概念 (91)
4.2.2 串口通信實例需求及電路原理分析 (92)
4.2.3 頂層文件的VHDL程序設計 (93)
4.2.4 時鐘模塊的VHDL程序設計 (95)
4.2.5 接收模塊的VHDL程序設計 (96)
4.2.6 發送模塊的VHDL程序設計 (99)
4.3 A/D接口和D/A接口的程序設計 (100)
4.3.1 A/D轉換的工作原理 (100)
4.3.2 D/A轉換的工作原理 (101)
4.3.3 A/D接口和D/A接口的實例需求及電路原理分析 (102)
4.3.4 A/D接口和D/A接口的VHDL程序設計 (102)
4.4 常用接口程序的板載測試 (104)
4.4.1 秒表電路的板載測試 (104)
4.4.2 串口通信的板載測試 (105)
4.4.3 使用Signal Tap對A/D接口和D/A接口進行板載測試 (106)
4.5 小結 (111)
4.6 思考與練習 (111)
下 篇
第5章 FPGA中的數字運算 (115)
5.1 數的表示 (115)
5.1.1 定點數的定義和表示 (116)
5.1.2 定點數的三種形式 (117)
5.1.3 浮點數表示 (118)
5.1.4 自定義浮點數的格式 (120)
5.2 FPGA中的四則運算 (122)
5.2.1 兩個操作數的加法運算 (122)
5.2.2 多個操作數的加法運算 (125)
5.2.3 采用移位相加法實現乘法運算 (125)
5.2.4 采用移位相加法實現除法運算 (126)
5.3 有效數據位的計算 (126)
5.3.1 有效數據位的概念 (126)
5.3.2 加法運算中的有效數據位 (127)
5.3.3 乘法運算中的有效數據位 (128)
5.3.4 乘加運算中的有效數據位 (129)
5.4 有限字長效應 (129)
5.4.1 有限字長效應的產生因素 (129)
5.4.2 A/D轉換器的有限字長效應 (130)
5.4.3 數字濾波器系數的有限字長效應 (131)
5.4.4 濾波器運算中的有限字長效應 (133)
5.5 小結 (136)
5.6 思考與練習 (136)
第6章 典型IP核的應用 (137)
6.1 IP核在FPGA中的應用 (137)
6.1.1 IP核的一般概念 (137)
6.1.2 FPGA設計中的IP核類型 (138)
6.2 時鐘管理IP核 (140)
6.2.1 全局時鐘資源 (140)
6.2.2 利用IP核生成多路時鐘信號 (141)
6.3 乘法器IP核 (145)
6.3.1 實數乘法器IP核 (145)
6.3.2 復數乘法器IP核 (148)
6.4 除法器IP核 (150)
6.4.1 FPGA中的除法運算 (150)
6.4.2 測試除法器IP核 (151)
6.5 存儲器IP核 (153)
6.5.1 ROM核 (153)
6.5.2 RAM核 (157)
6.6 數控振蕩器IP核 (163)
6.6.1 數控振蕩器工作原理 (163)
6.6.2 采用DDS核設計掃頻儀 (164)
6.7 小結 (168)
6.8 思考與練習 (169)
第7章 FIR濾波器設計 (171)
7.1 數字濾波器的理論基礎 (171)
7.1.1 數字濾波器的概念 (171)
7.1.2 數字濾波器的分類 (172)
7.1.3 數字濾波器的特征參數 (173)
7.2 FIR濾波器的原理 (174)
7.2.1 FIR濾波器的概念 (174)
7.2.2 線性相位系統的物理意義 (175)
7.2.3 FIR濾波器的相位特性 (176)
7.2.4 FIR濾波器的幅度特性 (178)
7.3 FIR濾波器的FPGA實現結構 (179)
7.3.1 FIR濾波器結構的表示方法 (179)
7.3.2 直接型結構的FIR濾波器 (180)
7.3.3 級聯型結構的FIR濾波器 (181)
7.4 基于累加器的FIR濾波器設計 (181)
7.4.1 基于累加器的FIR濾波器性能分析 (181)
7.4.2 基于累加器的FIR濾波器設計步驟 (184)
7.4.3 基于累加器的FIR濾波器FPGA實現后的功能仿真 (186)
7.5 FIR濾波器的MATLAB設計 (190)
7.5.1 基于fir1()函數的FIR濾波器設計 (190)
7.5.2 各種窗函數性能的比較 (193)
7.5.3 各種窗函數性能的仿真 (194)
7.5.4 基于firpm()函數的FIR濾波器設計 (196)
7.5.5 基于FDATOOL的FIR濾波器設計 (198)
7.6 FIR濾波器的系數量化方法 (200)
7.7 并行結構FIR濾波器的FPGA實現 (202)
7.7.1 并行結構FIR濾波器的VHDL設計 (202)
7.7.2 并行結構FIR濾波器的功能仿真 (206)
7.8 串行結構FIR濾波器的FPGA實現 (207)
7.8.1 兩種串行結構原理 (207)
7.8.2 全串行結構FIR濾波器的VHDL設計 (208)
7.8.3 全串行結構FIR濾波器的功能仿真 (212)
7.9 基于FIR核的FIR濾波器設計 (215)
7.9.1 FIR濾波器系數文件(COE文件)的生成 (215)
7.9.2 基于FIR核的FIR濾波器的設計步驟 (217)
7.9.3 基于FIR核的FIR濾波器的功能仿真 (219)
7.10 FIR濾波器的板載測試 (220)
7.10.1 硬件接口電路 (220)
7.10.2 板載測試程序 (221)
7.10.3 板載測試驗證 (224)
7.11 小結 (225)
7.12 思考與練習 (226)
第8章 IIR濾波器設計 (227)
8.1 IIR濾波器的理論基礎 (227)
8.1.1 IIR濾波器的原理及特性 (227)
8.1.2 IIR濾波器的常用結構 (228)
8.1.3 IIR濾波器與FIR濾波器的比較 (231)
8.2 IIR濾波器的MATLAB設計 (232)
8.2.1 采用butter()函數設計IIR濾波器 (232)
8.2.2 采用cheby1()函數設計IIR濾波器 (233)
8.2.3 采用cheby2()函數設計IIR濾波器 (233)
8.2.4 采用ellip()函數設計IIR濾波器 (234)
8.2.5 采用yulewalk()函數設計IIR濾波器 (234)
8.2.6 幾種IIR濾波器設計函數的比較 (235)
8.2.7 采用FDATOOL設計IIR濾波器 (237)
8.3 直接型結構IIR濾波器的FPGA實現 (238)
8.3.1 直接型結構IIR濾波器的系數量化方法 (238)
8.3.2 直接型結構IIR濾波器的有限字長效應 (240)
8.3.3 直接型結構IIR濾波器的FPGA實現方法 (242)
8.3.4 直接型結構IIR濾波器的VHDL設計 (243)
8.3.5 MATLAB與QuartusⅡ13.1的數據交互 (248)
8.3.6 在MATLAB中生成測試信號文件 (249)
8.3.7 測試激勵文件中的文件I/O功能 (252)
8.3.8 利用MATLAB分析輸出信號的頻譜 (255)
8.4 級聯型結構IIR濾波器的FPGA實現 (256)
8.4.1 濾波器系數的轉換 (256)
8.4.2 級聯型結構IIR濾波器的系數量化 (258)
8.4.3 級聯型結構IIR濾波器的FPGA實現 (258)
8.4.4 級聯型結構IIR濾波器的VHDL設計 (259)
8.4.5 級聯型結構IIR濾波器FPGA實現后的仿真 (262)
8.5 IIR濾波器的板載測試 (263)
8.5.1 硬件接口電路 (263)
8.5.2 板載測試程序 (264)
8.5.3 板載測試驗證 (265)
8.6 小結 (265)
8.7 思考與練習 (266)
第9章 快速傅里葉變換(FFT)的設計 (267)
9.1 FFT的原理 (267)
9.1.1 DFT的原理 (267)
9.1.2 DFT的運算過程 (269)
9.1.3 DFT運算中的幾個常見問題 (269)
9.1.4 FFT的基本思想 (271)
9.2 FFT的MATLAB仿真 (272)
9.2.1 通過FFT測量模擬信號的頻率 (272)
9.2.2 通過FFT測量模擬信號的幅度 (275)
9.2.3 頻率分辨率與分辨不同頻率的關系 (277)
9.3 FFT核的使用 (281)
9.3.1 FFT核簡介 (281)
9.3.2 FFT核的接口及時序 (282)
9.4 信號識別電路的FPGA設計 (283)
9.4.1 頻率疊加信號的時域分析 (283)
9.4.2 信號識別電路的設計需求及參數分析 (285)
9.4.3 信號識別電路的VHDL設計 (286)
9.4.4 信號識別電路的ModelSim仿真 (291)
9.5 信號識別電路的板載測試 (296)
9.5.1 硬件接口電路 (296)
9.5.2 板載測試的方案 (297)
9.5.3 頂層文件的設計 (297)
9.5.4 測試信號生成模塊的設計 (300)
9.5.5 接收模塊的設計 (303)
9.5.6 數據整理模塊的設計 (305)
9.5.7 串口通信模塊的設計 (307)
9.5.8 板載測試驗證 (311)
9.6 小結 (313)
9.7 思考與練習 (314)
參考文獻 (315)
本書以Intel公司的FPGA器件為開發平臺,采用MATLAB及VHDL語言開發工具,詳細闡述了數字信號處理技術的實現原理、結構、方法及仿真測試過程,并通過大量工程實例分析其在FPGA實現過程中的具體技術細節。其主要內容包括FPGA技術基礎、常用接口設計、FPGA中數的運算、典型IP核設計、FIR濾波器、IIR濾波器、FFT變換設計等內容。
為什么要寫這本書
彈指一揮間,匆匆近十年。從2011年我開始編寫《數字濾波器的MATLAB與FPGA實現》(“數字通信技術的FPGA實現系列”圖書的第一冊),至今已有十余年!
在這十余年間,我先后完成《數字濾波器的MATLAB與FPGA實現》《數字通信同步技術的MATLAB與FPGA實現》《數字調制解調技術的MATLAB與FPGA實現》三本圖書的編寫。這三本圖書都是基于Xilinx公司的FPGA和VHDL(簡稱Xilinx/VHDL版)編寫的,后來又都基于Altera公司的FPGA和Verilog HDL(簡稱Altera/Verilog版)進行了改寫。
“數字通信技術的FPGA實現系列”圖書出版后,得到了廣大讀者的支持與厚愛,為了與讀者進行更加有效的交流,我在CSDN開設了個人博客,并開設了個人微信公眾號“杜勇FPGA”,用于發布與圖書相關的信息,同時與讀者就書中的技術問題進行探討。在編寫“數字通信技術的FPGA實現系列”圖書時,我是從工程應用的角度來闡述數字信號處理、數字通信技術的MATLAB與FPGA實現的,主要面向高年級本科生、研究生,以及工程技術人員,對初學者,尤其是自學者來說,圖書內容有一定的難度。不少讀者感覺該系列圖書的起點較高,內容比較專業和復雜,需要有較好的理論基礎和FPGA設計基礎,因此希望我編寫基于FPGA的數字信號處理設計的入門圖書,以便初學者和自學者學習,使其在掌握數字信號處理FPGA實現的基礎知識之后,再深入學習多速率濾波、自適應濾波、通信同步、數字調制解調等知識,就會容易得多。
為此,經過一年多的準備,我于2020年完成了《Xilinx FPGA數字信號處理設計—基礎版》,因事務繁多,又經過一年才得以完成《Intel FPGA數字信號處理設計—基礎版》。本書書名中原打算使用“Altera FPGA”,考慮到Altera公司已被Intel公司收購,且在其官方網站上也早已更名為“Intel FPGA”,因此將書名定為“Intel FPGA數字信號處理設計—基礎版”。同時,為了便于讀者對書中的實例進行板載測試,本書與“數字通信技術的FPGA實現系列”圖書(Altera/Verilog版)中的實例一樣,都采用CRD500進行板載測試。
本書的內容安排
本書內容共9章,分為上、下兩篇。上篇為第1~4章,包括FPGA概述、設計語言及開發環境、FPGA設計流程、常用接口程序的設計等內容。通過上篇的學習,讀者可以初步建立FPGA設計的概念和基本方法,了解數字信號處理FPGA設計的常用知識。下篇為第5~9章,包括FPGA中的數字運算、典型IP核的應用、FIR濾波器設計、IIR濾波器設計、快速傅里葉變換(FFT)的設計等內容。數字信號處理設計的基石是濾波器設計和頻譜分析,掌握數字信號處理的原理是完成FPGA設計的基礎。本書在編寫過程中對數字信號處理的原理進行了大幅簡化,著重從概念和基本運算規則入手,以簡單的實例逐步講解數字信號處理FPGA設計的原理、方法、步驟及仿真測試過程。通過下篇的學習,讀者可以掌握數字信號處理FPGA設計的核心基礎知識,從而為學習數字信號處理的綜合設計打下堅實的基礎。
第1章主要介紹FPGA技術的基本概念及特點。常用的數字信號處理平臺有FPGA、ARM、DSP、ASIC等,每個平臺都有各自的特點,只有詳細了解FPGA的結構特點,才能明白FPGA在數字信號處理中的獨特優勢;只有通過對比,才能對各平臺有更精準的把握和理解。
第2章主要介紹VHDL及Quartus Ⅱ。工欲善其事,必先利其器。只有全面了解FPGA設計環境,熟悉要利用的工具,加上獨特的思想,才能實現完美的FPGA設計。
第3章通過一個完整的流水燈FPGA設計實例,詳細地講解設計準備、設計輸入、設計綜合、功能仿真、設計實現、布局布線后仿真和程序下載等一系列既復雜又充滿挑戰和樂趣的FPGA設計流程。
第4章詳細討論常用接口程序的設計。FPGA產品不是一個“孤島”,是要與外界實現無縫對接的。接口是與外界對接的窗口,只有掌握了串口、A/D接口、D/A接口等,才有機會展示設計的美妙之處。
第5章討論FPGA中的數字運算。數字運算主要包括加、減、乘、除等運算。FPGA只能對二進制數進行運算,雖然在日常生活中我們習慣用十進制數進行運算,但運算的本質和規律是相同的。只有徹底掌握FPGA中的有符號數、小數、數據位擴展等設計方法,才能實現復雜的數字信號處理算法。
第6章主要介紹典型IP(Intellectual Property)核的應用。IP核,就是知識產權核,是指功能完備、性能優良、使用簡單的功能模塊。我們所要做的主要工作是理解IP核的用法,在設計中直接使用IP核。
第7章詳細討論有限脈沖響應(Finite Impulse Response,FIR)濾波器設計。濾波器設計和頻譜分析是數字信號處理中最基礎的專業設計。所謂專業,是因它們涉及信號處理的專業知識;所謂基礎,是指它們的應用非常廣泛。FIR濾波器由于具有結構簡單、有嚴格的線性相位特性等優勢,已成為信號處理中的必備電路之一。
第8章詳細討論無限脈沖響應(Infinite Impulse Response,IIR)濾波器設計。“無限”兩個字聽起來有點高深,其實IIR濾波器與FIR濾波器的結構沒有太大的差別。雖然IIR濾波器的應用沒有FIR濾波器廣泛,但有其自身的特點,具有FIR濾波器無法比擬的優勢。IIR濾波器具有反饋結構,使得其中的數字運算更具有挑戰性,也更有趣味性。只有掌握了FIR濾波器和IIR濾波器的設計,才能對經典濾波器的設計有比較全面的了解。
第9章討論快速傅里葉變換(FFT)的設計。頻譜分析和濾波器設計是數字信號處理的兩大基石。離散傅里葉變換(Discrete Fourier Transform,DFT)的理論很早就非常成熟了,后期出現的快速傅里葉變換(Fast Fourier Transform,FFT)算法才使得DFT理論在工程中得以應用。雖然FFT算法及其FPGA實現的結構相當復雜,但幸運的是可以使用現成的IP核,設計者在理解信號頻譜分析原理的基礎上,調用FFT核即可完成FFT的FPGA實現。
關于FPGA開發工具的說明
眾所周知,目前Xilinx公司和Intel公司的FPGA產品占據全球90%以上的FPGA市場。可以說,在一定程度上正是由于兩家公司的競爭,才有力地推動了FPGA技術的不斷發展。雖然硬件描述語言(HDL)的編譯及綜合環境可以采用第三方公司開發的產品,如ModelSim、Synplify等,但FPGA的物理實現必須采用相應公司開發的軟件平臺,無法通用。例如,Xilinx公司的FPGA使用Vivado和ISE系列開發工具,Intel公司的FPGA使用Quartus系列開發工具。與FPGA的開發工具類似,HDL也存在兩個難以取舍的選擇:VHDL和Verilog HDL。
學習FPGA開發技術的難點之一在于開發工具的使用,無論Xilinx公司還是Intel公司,為了適應不斷更新的開發需求,主要是適應不斷推出的新型FPGA,其開發工具的版本更新速度都很快。Intel FPGA公司目前最新的開發工具版本為Quartus Prime v21.2。開發工具的更新除對開發環境本身進行完善外,還需要不斷提高對新上市FPGA器件的支持能力。Quartus Ⅱ13.1是Intel公司最后一個同時支持32位及64位操作系統的FPGA開發環境,且運行穩定,界面友好,深受廣大FPGA工程師的青睞。同時,考慮到更好地兼顧“數字通信技術的FPGA實現系列”圖書(Altera/Verilog版)的參考程序,使得開發平臺保持一致,便于讀者學習,本書所有實例均采用QuartusⅡ13.1進行編寫。
應當如何選擇HDL呢?其實,對于有志于從事FPGA開發的技術人員,選擇哪種HDL并不重要,因為兩種HDL具有很多相似之處,精通一種HDL后再學習另一種HDL也不是一件困難的事。通常可以根據周圍同事、朋友、同學或公司的使用情況來選擇HDL,這樣在學習過程中,就可以很方便地找到能夠給你指點迷津的專業人士,從而加快學習進度。
本書采用Intel公司的FPGA作為開發平臺,采用QuartusⅡ13.1作為開發工具,采用VHDL作為實現語言,使用ModelSim進行仿真測試。由于VHDL并不依賴于具體的FPGA器件,因此本書中的VHDL程序可以很方便地移植到Xilinx公司的FPGA上。如果VHDL程序中使用了IP核,那么由于兩家公司的IP核不能通用,因此需要根據IP核的參數,在另一個平臺上重新生成IP核,或者重新編寫VHDL程序。
為了給讀者更多的參考,本書還采用Verilog HDL語言對所有FPGA程序進行了編寫,讀者可在我的微信公眾號“杜勇FPGA”中免費下載。
有人曾經說過,技術只是一個工具,關鍵在于思想。將這句話套用過來,對于本書來講,具體的開發平臺和HDL只是技術實現的工具,關鍵在于設計的思路和方法。讀者完全沒有必要過于在意開發平臺的差別,只要掌握了設計思路和方法,加上已經具備的FPGA開發經驗,采用任何一種FPGA都可以很快地設計出滿足用戶需求的產品。
本書的目標
數字信號處理FPGA設計知識的學習難度較大,讀者不僅需要具備較扎實的理論知識,還要具備一定的FPGA設計經驗。本書的目的正是架起理論知識與工程實踐之間的橋梁,通過具體的實例,詳細講解工程實現的方法、步驟和過程,使讀者盡快掌握采用FPGA平臺實現數字信號處理技術的基本方法,以提高學習效率,為后續學習數字信號處理、數字通信技術的FPGA設計等綜合設計打下堅實的基礎。
電子通信行業的技術人員在從業之初通常都會遇到類似的困惑:如何將教材中的理論知識與工程實踐結合起來呢?如何將教材中的理論轉換成實際的工程項目呢?絕大多數電子信息類教材對原理的講解都十分透徹,但理論知識與工程實踐之間顯然需要一座可以順利通過的橋梁。一個常用的方法是通過MATLAB等工具進行軟件仿真來加深讀者對理論知識的理解,但更好的方法是直接參與工程的設計與實現。
然而,工科院校的學生極少有機會參與實際的工程設計與實現,因此在工作中往往會感到所學的理論知識很難與實際的工程實踐聯系起來。教材講解的大多是原理性內容,讀者即使可以很好地解答教材中的思考題與練習題,或者能夠熟練地推導教材中的公式,在進行工程設計與實現時,如何將這些理論知識和公式用具體的電路或硬件平臺實現,也是一個巨大難關。尤其是數字信號處理專業領域,由于涉及的理論知識比較復雜,在真正進行工程設計與實現時會發現無從下手。采用MATLAB、ModelSim等軟件進行仿真,雖然可以直觀地驗證算法的正確性,并查看仿真結果,但畢竟只停留在算法或模型的仿真上,與真正的工程設計與實現是完全不同的兩個概念。FPGA很好地解決了這一問題。FPGA本來就是基于工程應用的平臺,其仿真技術可以很好地仿真實際的工作情況,尤其是時序仿真技術,在計算機上通過了時序仿真的程序,幾乎不需要修改就可以直接應用到工程實踐中。這種設計、驗證、仿真的一體化方式可以極好地將理論知識與工程實踐結合起來,從而提高讀者學習的興趣。
目前,市場上已有很多介紹ISE、Vivado、Quartus等FPGA開發工具,以及VHDL、Verilog HDL等的圖書。如果僅使用FPGA來實現一些數字邏輯電路或理論性不強的控制電路,那么掌握FPGA開發工具及VHDL的語法就可以開始工作了。數字信號處理的理論性要強得多,采用FPGA實現數字信號技術的前提條件是對理論知識有深刻的理解,關鍵是在理解理論知識的基礎上,結合FPGA的特點,找到合適的算法實現結構,厘清工程實現的思路,并采用VHDL進行正確的實現。
本書在編寫過程中,兼顧了數字信號處理的理論知識,以及工程設計的完整性,重點突出了FPGA設計的方法、結構、實現細節,以及仿真測試方法。在講解理論知識時,重點突出工程實踐,主要介紹工程實踐中必須掌握和理解的內容,并且結合FPGA的特點進行討論,以便讀者能盡快找到理論知識與工程實踐的結合點。在講解實例的FPGA實現時,為絕大多數實例提供了完整的VHDL程序代碼,并對代碼的思路和結構進行了詳細的分析和說明。根據我的工作經驗,本書對一些似是而非的概念,結合實例的仿真測試加以闡述,希望能為讀者提供更多有用的參考。相信讀者按照書中講解的步驟完成一個個實例后,會逐步體會理論知識與工程實踐的完美結合。讀者隨著掌握的工程實踐技能的提高,對數字信號處理理論知識的理解也必將越來越深刻。
如何使用本書
在學習數字信號處理FPGA設計之前,讀者需要具備一定的FPGA設計知識和數字信號處理的理論知識。為了便于讀者快速掌握FPGA設計知識,本書上篇對VHDL、Quartus Ⅱ13.1等內容進行了精心編排,并通過一個完整的流水燈設計實例詳細介紹了FPGA的設計流程,以便為讀者學習下篇打下基礎。
與普通的邏輯電路不同,數字信號處理的專業性較強,掌握理論知識是完成FPGA設計的前提。MATLAB是完成數字信號處理FPGA設計的不可或缺的工具,MATLAB的易用性和強大的功能,使其在工程設計中得到了廣泛的應用。為了準確理解數字信號處理的相關理論知識,本書中的部分實例采用MATLAB完成理論仿真,并對代碼進行了注釋和說明,讀者即使完全沒有MATLAB的編程基礎,也可以很容易地理解MATLAB程序的設計思路。
完整的數字信號處理FPGA設計過程是:首先采用MATLAB對需要設計的工程進行仿真,一方面可以仿真算法過程及結果,另一方面可以生成FPGA仿真所需的測試數據;然后在Quartus Ⅱ13.1中編寫VHDL程序,對實例進行設計實現;接著編寫測試激勵文件,采用ModelSim軟件對VHDL程序進行仿真,查看ModelSim仿真波形,驗證程序功能的正確性;最后完成FPGA程序綜合及布線,將程序下載到開發板上,以驗證FPGA設計的正確性。
驗證工程實例程序是否正確的最直觀的方法是:用示波器測試開發板(如CRD500)的A/D接口和D/A接口中的信號,觀察信號處理前后波形的變化是否滿足要求。例如,在驗證低通FIR濾波器時,用示波器通道2測試低通FIR濾波器前端信號的波形,用示波器通道1測試低通FIR濾波器處理后信號的波形,對比分析濾波前后信號的波形就可以驗證低通FIR濾波器功能是否正常。
如果沒有示波器驗證,而ModelSim仿真正確,但這畢竟不是真實的電路工作波形,那么應如何驗證FPGA設計的正確性呢?Quartus Ⅱ13.1提供了功能強大的在線邏輯分析軟件工具Signal Tap。將FPGA程序下載到開發板之后,使用Signal Tap可以實時讀取FPGA內部的信號,以及指定引腳的信號波形。也就是說,采用Signal Tap觀察到的波形是實際的工作波形,而不是仿真波形。因此,讀者可以采用Signal Tap來驗證FPGA設計的實際工作情況。本書第4章在介紹A/D接口和D/A接口的設計時,詳細討論了Signal Tap的使用方法和步驟,讀者掌握之后,就可以在板載測試程序中使用SignalTap對實際工作波形進行在線測試了。
致謝
有人說,每個人都有他存在的使命,如果迷失了使命,就失去了存在的價值。不只是每個人,每件物品也都有其存在的使命。對于一本圖書來講,其存在的使命就是被閱讀,并給讀者帶來收獲。如果本書能對讀者的工作和學習有所幫助,我將感到莫大的欣慰。
在本書的編寫過程中,我查閱了大量的資料,在此對相關作者及提供者表示衷心的感謝。
時間過得很快,在編寫本書時,我的大女兒剛剛進入高中學習,而當本書與讀者見面時,她已經開啟了高中關鍵階段的學習和生活;小女兒已經學會了簡單的語言,每天都在以她獨特的語言和行為與這個世界進行友好的交流。祝愿她們快樂成長!
FPGA技術博大精深,數字信號處理技術理論難度較大,雖然本書盡可能詳細地討論了數字信號處理FPGA設計的相關內容,但我仍感覺難以詳盡敘述工程實現中的所有細節。相信讀者在實際工程中經過不斷的實踐、思考及總結,一定可以快速掌握數字信號處理FPGA設計的方法,提高使用FPGA進行工程設計的能力。
由于本人水平有限,書中難免會存在不足和疏漏之處,敬請廣大讀者批評指正。歡迎讀者就相關技術問題與我進行交流,或者對本書提出改進意見及建議。建議讀者關注我的微信公眾號“杜勇FPGA”,以獲得與本書相關的資料和信息。

杜 勇
2022年2月
pagetop