內容簡介
本書由淺入深、由表及里,從
FPGA技術的探索到資源的發現與利用,從硬體版圖規劃與設計到邏輯電路驗證與實現,從模組化功能的研究與積累到系統集成的綜合與Timingquest時序最佳化,系統、全面地介紹Altera FPGA的開發流程。本書的所有例程均經過千錘百鍊,相關FPGA設計的資源均由筆者多年整理歸納,希望讀者能夠妥善利用。
圖書目錄
目 錄
第1章 淺談FPGA技術、優勢、學習途徑 (1)
1.1 FPGA的誕生、發展 (1)
1.1.1 FPGA的誕生 (1)
1.1.2 FPGA的發展與未來 (4)
1.1.3 博弈,在入門之前 (7)
1.2 Altera FPGA介紹及發展、套用 (8)
1.2.2 Altera產品介紹 (9)
1.2.3 Altera FPGA的開發平台 (15)
1.2.4 Altera FPGA的動態與套用 (17)
1.2.5 Altera FPGA的套用 (20)
1.2.6 對比ARM與DSP,認清FPGA (23)
1.3 善用網路資源,不斷總結自我 (26)
第2章 Quartus II 13.0套件的下載及安裝 (29)
2.1 寫在前面的話 (29)
2.2 Quartus II 13.0軟體下載 (30)
2.3 Quartus II 13.0組件安裝 (32)
2.4 Quartus II 13.0 Device安裝 (36)
2.5 USB Blaster下載器驅動程式的安裝 (39)
第3章 Verilog HDL語法簡介 (43)
3.1 What is Verilog HDL? (43)
3.2 設計層次 (44)
3.3 設計流程 (44)
3.4 基本語法介紹 (46)
3.4.1 模組module (46)
3.4.2 注釋 (47)
3.4.3 大小寫 (47)
3.4.4 參數聲明parameter (48)
3.4.5 預處理指令 (48)
3.4.6 常量 (49)
3.4.7 變數 (50)
3.4.8 運算符 (51)
3.5 Verilog HDL建模 (54)
3.5.1 結構建模 (54)
3.5.2 數據流建模 (56)
3.5.3 行為建模 (57)
3.5.4 關於狀態機 (66)
第4章 MAX II CPLD/Cyclone II/IV FPGA設 PCB Layout設計 (76)
4.1 淺談PCB Layout (76)
4.2 MAX II CPLD核心電路設計 (77)
4.2.1 MAX II CPLD背景及簡介 (77)
4.2.2 EPM240T100C5N設計需求研究及分析 (79)
4.2.3 EPM240T100C5N核心板原理圖設計 (83)
4.2.4 EPM240T100C5N核心板布局布線 (87)
4.3 Cyclone II FPGA核心電路設計 (88)
4.3.1 Cyclone II FPGA背景及簡介 (88)
4.3.2 Cyclone II數據手冊解讀與EP2C8Q208C8N的設計研究 (89)
4.3.3 EP2C8Q208C8N核心板原理圖設計 (101)
4.3.4 FPGA核心板Layout注意事項 (110)
4.4 Cyclone IV FPGA核心電路設計 (113)
4.4.1 Cyclone IV FPGA簡介 (113)
4.4.2 Cyclone IV FPGA數據手冊分析與EP4CE6E22C8N的設計研究 (115)
4.4.3 Cyclone IV FPGA核心電路設計 (121)
4.5 FPGA/CPLD電路焊接、調試經驗總結 (124)
4.6 本書配套FPGA開發平台硬體介紹 (128)
4.6.1 VIP_Board 3.0硬體資源介紹 (128)
4.6.2 VIP_Board 3.0相關外設實物介紹 (130)
第5章 Verilog HDL設計與Testbench 檔案架構 (134)
5.1 Verilog HDL設計 (134)
5.1.1 Verilog HDL與VHDL的對比 (134)
5.1.2 Verilog HDL的發展 (135)
5.1.3 Verilog HDL代碼設計風格 (136)
5.2 Testbench檔案架構 (141)
5.2.1 Testbench的介紹 (141)
5.2.2 Testbench代碼設計風格 (142)
5.3 Quartus II工程目錄資料夾的定製 (145)
第6章 4位計數器的設計與仿真驗證 (147)
6.1 寫在前面的話 (147)
6.2 FPGA/CPLD開發流程 (147)
6.3 基於Quartus II 13.0的4位計數器設計流程 (149)
6.3.1 Quartus II 工程的創建 (149)
6.3.2 4位計數器的邏輯電路設計 (152)
6.3.3 Quartus II編譯流程與工程設定分析 (155)
6.4 基於Modelsim-Altera 10.1d的4位計數器仿真驗證流程 (166)
6.4.1 關於FPGA設計的各種仿真概念分析 (167)
6.4.2 Modelsim版本的簡要介紹 (168)
6.4.3 Modelsim工程的創建 (168)
6.4.4 Testbench激勵檔案的編寫 (171)
6.4.5 Modelsim波形的仿真與分析 (174)
6.5 設計思路的驗證與總結 (182)
第7章 LED驅動電路設計 (183)
7.1 LED驅動電路設計方案1—入門 (183)
7.1.1 LED驅動電路設計方案 (183)
7.1.2 8位LED的自加顯示實驗 (185)
7.2 LED驅動電路設計方案2—升級 (196)
7.2.1 LED電路設計方案 (196)
7.2.2 74HC595驅動分析與實現 (198)
7.3 8位LED跑馬燈顯示實驗 (208)
7.4 LED特效呼吸燈的設計 (215)
7.4.1 PWM協定的基本介紹 (215)
7.4.2 LED呼吸燈的設計 (216)
第8章 獨立按鍵與
矩陣鍵盤的FPGA驅動電路實現 (227)
8.1 按鍵及其工作模式介紹 (227)
8.1.1 按鍵抖動原理分析 (228)
8.1.2 硬體消抖動 (228)
8.1.3 軟體消抖動 (230)
8.2 獨立按鍵的FPGA驅動電路設計 (230)
8.2.1 獨立按鍵電路設計 (230)
8.2.2 FSM狀態機的Verilog HDL介紹 (231)
8.2.3 FPGA按鍵驅動設計方案1 (234)
8.2.4 FPGA按鍵驅動設計方案2 (248)
8.3
矩陣鍵盤的FPGA驅動電路設計 (252)
8.3.1 工作原理及電路設計 (252)
8.3.2 FPGA矩陣鍵盤驅動設計 (255)
第9章 “Hello World”的LCD1602顯示驅動實現 (267)
9.1 LCD1602介紹及硬體設計 (267)
9.1.1 LCD1602字元液晶介紹 (267)
9.1.2 LCD1602硬體電路設計 (268)
9.1.3 LCD1602的時序及初始化分析 (271)
9.2 LCD1602的FPGA驅動電路實現 (275)
9.2.1 LCD1602的C語言實現方案 (276)
9.2.2 LCD1602的Verilog HDL實現方案 (277)
第10章 最佳化設計FPGA全局時鐘管理模組 (290)
10.1 異步復位,同步釋放機制 (290)
10.1.1 組合電路中的競爭-冒險 (291)
10.1.2 時序電路中的競爭-冒險 (292)
10.2 無PLL的全局時鐘管理模組設計 (296)
10.3 Quartus II IP核介紹及PLL的定製 (305)
10.3.1 Quartus II IP核的介紹 (305)
10.3.2 PLL IP核的定製與分析 (311)
10.4 帶PLL的全局時鐘管理模組設計 (319)
第11章 基於FPGA與MCU通信的SPI協定設計 (325)
11.1 SPI匯流排協定介紹及硬體的設計 (325)
11.1.1 SPI匯流排協定介紹 (325)
11.1.2 STM8的硬體電路設計 (327)
11.1.3 SPI匯流排協定時序分析 (329)
11.2 SPI匯流排協定的通信實現 (330)
11.2.1 STM8的SPI匯流排收發設計 (330)
11.2.2 邊沿檢測電路的FPGA實現 (332)
11.2.3 SPI通信的數據
接收模組設計 (334)
11.2.4 SPI通信的數據傳送模組設計 (343)
第12章 基於FPGA與PC通信的UART串口設計 (351)
12.1 追根溯源透析串口通信 (351)
12.1.1 串口通信簡介 (351)
12.1.2 串口波特率 (354)
12.1.3 串口協定分析 (354)
12.2 串口電路的設計 (355)
12.2.1 TTL轉RS-232電路的設計 (355)
12.2.2 USB→UART轉換電路設計 (356)
12.2.3 UART電路的調試 (357)
12.3 細說真正的任意分頻 (358)
12.3.1 分頻電路的重要性 (358)
12.3.2 任意頻率發生器原理 (358)
12.3.3 任意頻率發生器的驗證 (360)
12.4 串口通信的硬體實現 (364)
12.4.1 uart_receiver接收模組的設計 (364)
12.4.2 uart_transfer傳送模組的設計 (372)
12.4.3 PC2FPGA UART聯調測試 (376)
第13章 基於FPGA的VGA驅動顯示設計 (383)
13.1
VGA接口、時序及驅動電路設計 (383)
13.1.1 VGA接口介紹 (383)
13.1.2 VGA時序分析 (385)
13.1.3 RGB三原色模型 (388)
13.1.4 VGA驅動電路設計 (391)
13.2 VGA驅動的FPGA實現 (396)
13.2.1 VGA驅動時序電路的設計 (396)
13.2.2 任意解析度的VGA顯示控制器設計 (408)
13.3 “Hello World”的VGA顯示驅動實現 (411)
13.3.1 “Hello World”字模的提取 (411)
13.3.2 C2Mif軟體的介紹與Mif檔案的生成 (414)
13.3.3 VGA字元顯示的FPGA實現 (418)
13.4 彩色圖像的VGA顯示驅動實現 (422)
13.4.1 彩色圖像顯示的理論分析 (422)
13.4.2 彩色圖像的數據提取 (423)
13.4.3 VGA彩色圖像顯示的FPGA實現 (424)
第14章 基於SDRAM的VGA顯示控制器的設計與實現 (427)
14.1 跨時鐘域數據互動 (427)
14.2 SDRAM的介紹及其控制器的移植與最佳化 (431)
14.2.1 SDRAM的特性及時序驅動介紹 (431)
14.2.2 SDRAM的硬體驅動電路設計 (435)
14.2.3 SDRAM控制器的移植與最佳化 (437)
14.2.4 Sdram_Control_2Port的封裝與協定制定 (454)
14.3 基於SDRAM的VGA顯示控制器的實現 (459)
第15章 基於OV7725的攝像頭視頻圖像採集系統 (471)
15.1 系統框架設計思路分析 (472)
15.1.1 系統框架分析 (472)
15.1.2 算法的實現流程 (473)
15.2 OV7725攝像頭介紹與視頻採集實現 (476)
15.2.2 OV7725的特性介紹及驅動電路設計 (478)
15.2.3 OV7725 SCCB接口及暫存器介紹 (483)
15.2.4 OV7725感光陣列與視頻時序分析 (492)
15.2.5 OV7725暫存器I2C初始化設計 (495)
15.2.6 OV7725的視頻採集模組設計 (510)
15.3 OV7725視頻圖像顯示的實現 (527)
15.4 本章小結 (537)
第16章 TimeQuest的分析與實踐 (539)
16.1 寫在前面的話 (539)
16.2 保持裕量和建立裕量的深刻理解 (539)
16.3 時鐘約束—內對內模型 (542)
16.3.1 內對內模型公式分析 (542)
16.3.2 約束時鐘及PLL (543)
16.4 output引腳約束—內對外模型 (553)
16.4.1 內對外模型公式分析 (553)
16.4.2 output引腳約束 (554)
16.5 input引腳約束—外對內模型 (556)
16.6 階段性小總結 (557)
16.7 約束異常 (557)
16.7.1 Set Multicycle Path (557)
16.7.2 Set False Path (562)
16.8 決戰SDRAM時序約束 (562)
16.9 Altium Designer查看走線報表 (573)
第17章 基於FPGA的系統設計 (575)
17.1 FPGA晶片選型 (575)
17.2 FPGA的與眾不同—PCB布局在設計原理圖之前 (582)
17.3 存儲器的選型 (583)
17.4 FPGA外圍器件的選擇與設計 (584)
17.4.1 電阻 (585)
17.4.2 電容 (585)
17.4.3 磁珠 (588)
17.4.4 保險絲 (590)
17.5 基於核心板的系統設計 (592)
17.6 基於低功耗系統的電源選型 (593)
17.7.1 結構布局 (598)
17.7.2 電路板的多層設計 (598)
17.7.3 過孔設計要點 (599)
17.7.4 防止串擾的布線原則 (600)
17.7.5 差分線布線原則 (600)
17.7.6 開關電源PCB設計要點 (601)
17.8 本章小結 (602)
第18章 基於高速相機的嵌入式視覺處理系統設計 (603)
18.1 視覺處理系統概述 (603)
18.2 嵌入式視覺處理系統結構設計 (604)
18.3 晶片選型 (606)
18.4 基於Camera Link工業相機接口的硬體設計 (608)
18.5 基於Camera Link接口的FPGA程式設計要點 (612)
18.6 基於
VGA接口的圖像的實時縮小與算法結構 (613)
18.7 FPGA與DSP的協同工作模式 (616)
18.8 桌球操作的進階—零延時數據傳輸 (616)
18.9 系統調試 (617)
18.10 本章小結 (618)
縮略語對照表 (619)
符號對照表 (625)