本書以Intel公司的FPGA器件為開發(fā)平臺(tái),采用MATLAB及VHDL語(yǔ)言開發(fā)工具,詳細(xì)闡述了數(shù)字信號(hào)處理技術(shù)的實(shí)現(xiàn)原理、結(jié)構(gòu)、方法及仿真測(cè)試過(guò)程,并通過(guò)大量工程實(shí)例分析其在FPGA實(shí)現(xiàn)過(guò)程中的具體技術(shù)細(xì)節(jié)。其主要內(nèi)容包括FPGA技術(shù)基礎(chǔ)、常用接口設(shè)計(jì)、FPGA中數(shù)的運(yùn)算、典型IP核設(shè)計(jì)、FIR濾波器、IIR濾波器、FFT變換設(shè)計(jì)等內(nèi)容。
杜勇,四川省廣安市人,高級(jí)工程師、副教授,現(xiàn)任教于四川工商學(xué)院;1999年于湖南大學(xué)獲電子工程專業(yè)學(xué)士學(xué)位,2005年于國(guó)防科技大學(xué)獲信息與通信工程專業(yè)碩士學(xué)位;發(fā)表學(xué)術(shù)論文十余篇,出版《數(shù)字濾波器的MATLAB與FPGA實(shí)現(xiàn)》《數(shù)字通信同步技術(shù)的MATLAB與FPGA實(shí)現(xiàn)》《數(shù)字調(diào)制解調(diào)技術(shù)的MATLAB與FPGA實(shí)現(xiàn)》《鎖相環(huán)技術(shù)原理及FPGA實(shí)現(xiàn)》等圖書。
目 錄
上 篇
第1章 FPGA概述 (3)
1.1 FPGA的發(fā)展趨勢(shì) (3)
1.2 Intel FPGA的基本結(jié)構(gòu) (5)
1.2.1 可編程輸入/輸出單元 (6)
1.2.2 可配置邏輯塊 (7)
1.2.3 時(shí)鐘網(wǎng)絡(luò)資源 (9)
1.2.4 嵌入式塊RAM (9)
1.2.5 豐富的布線資源 (10)
1.2.6 內(nèi)嵌專用硬核 (10)
1.3 FPGA的工作原理 (10)
1.4 FPGA與其他數(shù)字信號(hào)處理平臺(tái)的比較 (11)
1.4.1 ASIC、DSP、ARM的特點(diǎn) (12)
1.4.2 FPGA的特點(diǎn)及優(yōu)勢(shì) (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 小結(jié) (18)
1.8 思考與練習(xí) (19)
第2章 設(shè)計(jì)語(yǔ)言及開發(fā)環(huán)境 (21)
2.1 VHDL語(yǔ)言簡(jiǎn)介 (21)
2.1.1 HDL語(yǔ)言的特點(diǎn)及優(yōu)勢(shì) (21)
2.1.2 選擇VHDL還是Verilog HDL (22)
2.2 VHDL語(yǔ)言基礎(chǔ) (23)
2.2.1 VHDL語(yǔ)言簡(jiǎn)介 (23)
2.2.2 程序結(jié)構(gòu) (24)
2.2.3 數(shù)據(jù)類型 (26)
2.2.4 數(shù)據(jù)對(duì)象 (29)
2.2.5 運(yùn)算符 (29)
2.2.6 VHDL語(yǔ)句 (33)
2.3 QuartusⅡ開發(fā)環(huán)境 (37)
2.3.1 QuartusⅡ簡(jiǎn)介 (37)
2.3.2 QuartusⅡ的用戶界面 (38)
2.4 ModelSim簡(jiǎn)介 (40)
2.4.1 ModelSim的主要特點(diǎn) (40)
2.4.2 ModelSim的工作界面 (41)
2.5 MATLAB簡(jiǎn)介 (42)
2.5.1 MATLAB介紹 (42)
2.5.2 MATLAB的工作界面 (42)
2.5.3 MATLAB的特點(diǎn)及優(yōu)勢(shì) (43)
2.6 FPGA信號(hào)處理板CRD500 (45)
2.7 小結(jié) (47)
2.8 思考與練習(xí) (47)
第3章 FPGA設(shè)計(jì)流程 (51)
3.1 FPGA設(shè)計(jì)流程簡(jiǎn)介 (51)
3.2 流水燈實(shí)例設(shè)計(jì) (53)
3.2.1 明確項(xiàng)目需求 (53)
3.2.2 讀懂電路原理圖 (54)
3.2.3 形成設(shè)計(jì)方案 (56)
3.3 流水燈實(shí)例的Verilog HDL程序設(shè)計(jì)與綜合 (57)
3.3.1 建立FPGA工程 (57)
3.3.2 VHDL程序輸入 (59)
3.4 流水燈實(shí)例的功能仿真 (61)
3.4.1 生成測(cè)試激勵(lì)文件 (61)
3.4.2 采用ModelSim進(jìn)行仿真 (64)
3.4.3 ModelSim的仿真應(yīng)用技巧 (67)
3.5 流水燈實(shí)例的設(shè)計(jì)實(shí)現(xiàn)與時(shí)序仿真 (68)
3.5.1 添加約束文件 (68)
3.5.2 時(shí)序仿真 (70)
3.6 程序下載 (71)
3.6.1 sof文件下載 (71)
3.6.2 jic文件下載 (73)
3.7 小結(jié) (75)
3.8 思考與練習(xí) (76)
第4章 常用接口程序的設(shè)計(jì) (77)
4.1 秒表電路設(shè)計(jì) (77)
4.1.1 數(shù)碼管的基本工作原理 (77)
4.1.2 秒表電路實(shí)例需求及電路原理分析 (78)
4.1.3 形成設(shè)計(jì)方案 (78)
4.1.4 頂層文件的VHDL程序設(shè)計(jì) (79)
4.1.5 數(shù)碼管顯示模塊的VHDL程序設(shè)計(jì) (81)
4.1.6 秒表計(jì)數(shù)模塊的VHDL程序設(shè)計(jì) (84)
4.1.7 按鍵消抖模塊的VHDL程序設(shè)計(jì) (88)
4.2 串口通信設(shè)計(jì) (91)
4.2.1 RS-232串口通信的概念 (91)
4.2.2 串口通信實(shí)例需求及電路原理分析 (92)
4.2.3 頂層文件的VHDL程序設(shè)計(jì) (93)
4.2.4 時(shí)鐘模塊的VHDL程序設(shè)計(jì) (95)
4.2.5 接收模塊的VHDL程序設(shè)計(jì) (96)
4.2.6 發(fā)送模塊的VHDL程序設(shè)計(jì) (99)
4.3 A/D接口和D/A接口的程序設(shè)計(jì) (100)
4.3.1 A/D轉(zhuǎn)換的工作原理 (100)
4.3.2 D/A轉(zhuǎn)換的工作原理 (101)
4.3.3 A/D接口和D/A接口的實(shí)例需求及電路原理分析 (102)
4.3.4 A/D接口和D/A接口的VHDL程序設(shè)計(jì) (102)
4.4 常用接口程序的板載測(cè)試 (104)
4.4.1 秒表電路的板載測(cè)試 (104)
4.4.2 串口通信的板載測(cè)試 (105)
4.4.3 使用Signal Tap對(duì)A/D接口和D/A接口進(jìn)行板載測(cè)試 (106)
4.5 小結(jié) (111)
4.6 思考與練習(xí) (111)
下 篇
第5章 FPGA中的數(shù)字運(yùn)算 (115)
5.1 數(shù)的表示 (115)
5.1.1 定點(diǎn)數(shù)的定義和表示 (116)
5.1.2 定點(diǎn)數(shù)的三種形式 (117)
5.1.3 浮點(diǎn)數(shù)表示 (118)
5.1.4 自定義浮點(diǎn)數(shù)的格式 (120)
5.2 FPGA中的四則運(yùn)算 (122)
5.2.1 兩個(gè)操作數(shù)的加法運(yùn)算 (122)
5.2.2 多個(gè)操作數(shù)的加法運(yùn)算 (125)
5.2.3 采用移位相加法實(shí)現(xiàn)乘法運(yùn)算 (125)
5.2.4 采用移位相加法實(shí)現(xiàn)除法運(yùn)算 (126)
5.3 有效數(shù)據(jù)位的計(jì)算 (126)
5.3.1 有效數(shù)據(jù)位的概念 (126)
5.3.2 加法運(yùn)算中的有效數(shù)據(jù)位 (127)
5.3.3 乘法運(yùn)算中的有效數(shù)據(jù)位 (128)
5.3.4 乘加運(yùn)算中的有效數(shù)據(jù)位 (129)
5.4 有限字長(zhǎng)效應(yīng) (129)
5.4.1 有限字長(zhǎng)效應(yīng)的產(chǎn)生因素 (129)
5.4.2 A/D轉(zhuǎn)換器的有限字長(zhǎng)效應(yīng) (130)
5.4.3 數(shù)字濾波器系數(shù)的有限字長(zhǎng)效應(yīng) (131)
5.4.4 濾波器運(yùn)算中的有限字長(zhǎng)效應(yīng) (133)
5.5 小結(jié) (136)
5.6 思考與練習(xí) (136)
第6章 典型IP核的應(yīng)用 (137)
6.1 IP核在FPGA中的應(yīng)用 (137)
6.1.1 IP核的一般概念 (137)
6.1.2 FPGA設(shè)計(jì)中的IP核類型 (138)
6.2 時(shí)鐘管理IP核 (140)
6.2.1 全局時(shí)鐘資源 (140)
6.2.2 利用IP核生成多路時(shí)鐘信號(hào) (141)
6.3 乘法器IP核 (145)
6.3.1 實(shí)數(shù)乘法器IP核 (145)
6.3.2 復(fù)數(shù)乘法器IP核 (148)
6.4 除法器IP核 (150)
6.4.1 FPGA中的除法運(yùn)算 (150)
6.4.2 測(cè)試除法器IP核 (151)
6.5 存儲(chǔ)器IP核 (153)
6.5.1 ROM核 (153)
6.5.2 RAM核 (157)
6.6 數(shù)控振蕩器IP核 (163)
6.6.1 數(shù)控振蕩器工作原理 (163)
6.6.2 采用DDS核設(shè)計(jì)掃頻儀 (164)
6.7 小結(jié) (168)
6.8 思考與練習(xí) (169)
第7章 FIR濾波器設(shè)計(jì) (171)
7.1 數(shù)字濾波器的理論基礎(chǔ) (171)
7.1.1 數(shù)字濾波器的概念 (171)
7.1.2 數(shù)字濾波器的分類 (172)
7.1.3 數(shù)字濾波器的特征參數(shù) (173)
7.2 FIR濾波器的原理 (174)
7.2.1 FIR濾波器的概念 (174)
7.2.2 線性相位系統(tǒng)的物理意義 (175)
7.2.3 FIR濾波器的相位特性 (176)
7.2.4 FIR濾波器的幅度特性 (178)
7.3 FIR濾波器的FPGA實(shí)現(xiàn)結(jié)構(gòu) (179)
7.3.1 FIR濾波器結(jié)構(gòu)的表示方法 (179)
7.3.2 直接型結(jié)構(gòu)的FIR濾波器 (180)
7.3.3 級(jí)聯(lián)型結(jié)構(gòu)的FIR濾波器 (181)
7.4 基于累加器的FIR濾波器設(shè)計(jì) (181)
7.4.1 基于累加器的FIR濾波器性能分析 (181)
7.4.2 基于累加器的FIR濾波器設(shè)計(jì)步驟 (184)
7.4.3 基于累加器的FIR濾波器FPGA實(shí)現(xiàn)后的功能仿真 (186)
7.5 FIR濾波器的MATLAB設(shè)計(jì) (190)
7.5.1 基于fir1()函數(shù)的FIR濾波器設(shè)計(jì) (190)
7.5.2 各種窗函數(shù)性能的比較 (193)
7.5.3 各種窗函數(shù)性能的仿真 (194)
7.5.4 基于firpm()函數(shù)的FIR濾波器設(shè)計(jì) (196)
7.5.5 基于FDATOOL的FIR濾波器設(shè)計(jì) (198)
7.6 FIR濾波器的系數(shù)量化方法 (200)
7.7 并行結(jié)構(gòu)FIR濾波器的FPGA實(shí)現(xiàn) (202)
7.7.1 并行結(jié)構(gòu)FIR濾波器的VHDL設(shè)計(jì) (202)
7.7.2 并行結(jié)構(gòu)FIR濾波器的功能仿真 (206)
7.8 串行結(jié)構(gòu)FIR濾波器的FPGA實(shí)現(xiàn) (207)
7.8.1 兩種串行結(jié)構(gòu)原理 (207)
7.8.2 全串行結(jié)構(gòu)FIR濾波器的VHDL設(shè)計(jì) (208)
7.8.3 全串行結(jié)構(gòu)FIR濾波器的功能仿真 (212)
7.9 基于FIR核的FIR濾波器設(shè)計(jì) (215)
7.9.1 FIR濾波器系數(shù)文件(COE文件)的生成 (215)
7.9.2 基于FIR核的FIR濾波器的設(shè)計(jì)步驟 (217)
7.9.3 基于FIR核的FIR濾波器的功能仿真 (219)
7.10 FIR濾波器的板載測(cè)試 (220)
7.10.1 硬件接口電路 (220)
7.10.2 板載測(cè)試程序 (221)
7.10.3 板載測(cè)試驗(yàn)證 (224)
7.11 小結(jié) (225)
7.12 思考與練習(xí) (226)
第8章 IIR濾波器設(shè)計(jì) (227)
8.1 IIR濾波器的理論基礎(chǔ) (227)
8.1.1 IIR濾波器的原理及特性 (227)
8.1.2 IIR濾波器的常用結(jié)構(gòu) (228)
8.1.3 IIR濾波器與FIR濾波器的比較 (231)
8.2 IIR濾波器的MATLAB設(shè)計(jì) (232)
8.2.1 采用butter()函數(shù)設(shè)計(jì)IIR濾波器 (232)
8.2.2 采用cheby1()函數(shù)設(shè)計(jì)IIR濾波器 (233)
8.2.3 采用cheby2()函數(shù)設(shè)計(jì)IIR濾波器 (233)
8.2.4 采用ellip()函數(shù)設(shè)計(jì)IIR濾波器 (234)
8.2.5 采用yulewalk()函數(shù)設(shè)計(jì)IIR濾波器 (234)
8.2.6 幾種IIR濾波器設(shè)計(jì)函數(shù)的比較 (235)
8.2.7 采用FDATOOL設(shè)計(jì)IIR濾波器 (237)
8.3 直接型結(jié)構(gòu)IIR濾波器的FPGA實(shí)現(xiàn) (238)
8.3.1 直接型結(jié)構(gòu)IIR濾波器的系數(shù)量化方法 (238)
8.3.2 直接型結(jié)構(gòu)IIR濾波器的有限字長(zhǎng)效應(yīng) (240)
8.3.3 直接型結(jié)構(gòu)IIR濾波器的FPGA實(shí)現(xiàn)方法 (242)
8.3.4 直接型結(jié)構(gòu)IIR濾波器的VHDL設(shè)計(jì) (243)
8.3.5 MATLAB與QuartusⅡ13.1的數(shù)據(jù)交互 (248)
8.3.6 在MATLAB中生成測(cè)試信號(hào)文件 (249)
8.3.7 測(cè)試激勵(lì)文件中的文件I/O功能 (252)
8.3.8 利用MATLAB分析輸出信號(hào)的頻譜 (255)
8.4 級(jí)聯(lián)型結(jié)構(gòu)IIR濾波器的FPGA實(shí)現(xiàn) (256)
8.4.1 濾波器系數(shù)的轉(zhuǎn)換 (256)
8.4.2 級(jí)聯(lián)型結(jié)構(gòu)IIR濾波器的系數(shù)量化 (258)
8.4.3 級(jí)聯(lián)型結(jié)構(gòu)IIR濾波器的FPGA實(shí)現(xiàn) (258)
8.4.4 級(jí)聯(lián)型結(jié)構(gòu)IIR濾波器的VHDL設(shè)計(jì) (259)
8.4.5 級(jí)聯(lián)型結(jié)構(gòu)IIR濾波器FPGA實(shí)現(xiàn)后的仿真 (262)
8.5 IIR濾波器的板載測(cè)試 (263)
8.5.1 硬件接口電路 (263)
8.5.2 板載測(cè)試程序 (264)
8.5.3 板載測(cè)試驗(yàn)證 (265)
8.6 小結(jié) (265)
8.7 思考與練習(xí) (266)
第9章 快速傅里葉變換(FFT)的設(shè)計(jì) (267)
9.1 FFT的原理 (267)
9.1.1 DFT的原理 (267)
9.1.2 DFT的運(yùn)算過(guò)程 (269)
9.1.3 DFT運(yùn)算中的幾個(gè)常見問題 (269)
9.1.4 FFT的基本思想 (271)
9.2 FFT的MATLAB仿真 (272)
9.2.1 通過(guò)FFT測(cè)量模擬信號(hào)的頻率 (272)
9.2.2 通過(guò)FFT測(cè)量模擬信號(hào)的幅度 (275)
9.2.3 頻率分辨率與分辨不同頻率的關(guān)系 (277)
9.3 FFT核的使用 (281)
9.3.1 FFT核簡(jiǎn)介 (281)
9.3.2 FFT核的接口及時(shí)序 (282)
9.4 信號(hào)識(shí)別電路的FPGA設(shè)計(jì) (283)
9.4.1 頻率疊加信號(hào)的時(shí)域分析 (283)
9.4.2 信號(hào)識(shí)別電路的設(shè)計(jì)需求及參數(shù)分析 (285)
9.4.3 信號(hào)識(shí)別電路的VHDL設(shè)計(jì) (286)
9.4.4 信號(hào)識(shí)別電路的ModelSim仿真 (291)
9.5 信號(hào)識(shí)別電路的板載測(cè)試 (296)
9.5.1 硬件接口電路 (296)
9.5.2 板載測(cè)試的方案 (297)
9.5.3 頂層文件的設(shè)計(jì) (297)
9.5.4 測(cè)試信號(hào)生成模塊的設(shè)計(jì) (300)
9.5.5 接收模塊的設(shè)計(jì) (303)
9.5.6 數(shù)據(jù)整理模塊的設(shè)計(jì) (305)
9.5.7 串口通信模塊的設(shè)計(jì) (307)
9.5.8 板載測(cè)試驗(yàn)證 (311)
9.6 小結(jié) (313)
9.7 思考與練習(xí) (314)
參考文獻(xiàn) (315)