本書結合行業(yè)企業(yè)的應用實踐來介紹FPGA技術應用與開發(fā)方法。全書分三大部分,按著知識遞進、難度遞進的原則,以項目的形式來組織內(nèi)容。第一部分介紹FPGA應用開發(fā)基礎知識;第二部分介紹實際應用項目中常用的接口,包括LED燈、數(shù)碼管、按鍵、液晶、串口等;第三部分通過一些綜合項目來介紹設計方法與技巧,包括多功能計算器、數(shù)字跑表、反應測量儀、頻率計、求*大公因數(shù)、音樂播放器、多功能數(shù)字鐘、簡易CPU、貪吃蛇游戲等。
賀敬凱 博士,高級工程師,畢業(yè)于華南理工大學控制理論與控制工程技術專業(yè),曾在中興通訊股份有限公司微電子技術研究所從事芯片設計與開發(fā)工作4年,現(xiàn)在深圳信息職業(yè)技術學院從事電子類專業(yè)課程的教學與研究工作,有多項教研成果
第1章 硬件平臺及集成開發(fā)環(huán)境 (1)
任務1 鍵控LED燈亮滅 (1)
1.1 FPGA工作原理及開發(fā)平臺 (1)
1.1.1 FPGA工作原理 (1)
1.1.2 開發(fā)平臺與常用接口 (3)
1.2 基于Quartus II的數(shù)字設計流程 (7)
1.2.1 創(chuàng)建源文件 (8)
1.2.2 創(chuàng)建工程 (8)
1.2.3 編譯設置 (10)
1.2.4 引腳鎖定和編程下載 (14)
知識小結 (16)
習題1 (16)
第2章 HDL語言基礎 (18)
任務2 二選一多路選擇器設計 (18)
2.1 Verilog HDL基本程序結構 (18)
任務3 設計3位移位寄存器 (19)
2.2 Verilog HDL語言的數(shù)據(jù)類型和運算符 (20)
2.2.1 標識符 (20)
2.2.2 數(shù)據(jù)類型 (20)
2.2.3 常量 (22)
2.2.4 運算符和表達式 (23)
任務4 設計1位全加器 (31)
2.3 Verilog HDL語言的描述語句 (31)
2.3.1 結構描述形式 (31)
2.3.2 數(shù)據(jù)流描述形式 (32)
2.3.3 行為描述形式 (33)
2.4 可綜合與不可綜合語法結構 (35)
2.5 Verilog代碼書寫規(guī)范 (36)
知識小結 (38)
習題2 (38)
第3章 ModelSim仿真 (40)
任務5 十六進制計數(shù)器的設計及仿真 (40)
3.1 ModelSim軟件的使用 (41)
3.2 延時 (46)
3.3 常用塊語句 (49)
3.3.1 initial塊語句 (49)
3.3.2 順序塊begin…end (51)
3.3.3 并行塊fork…join (52)
3.3.4 嵌套塊 (53)
3.4 常用系統(tǒng)函數(shù)和任務 (54)
3.4.1 輸出系統(tǒng)任務$display、$write和$strobe (54)
3.4.2 監(jiān)控系統(tǒng)任務$monitor (57)
3.4.3 時間度量系統(tǒng)任務$time和$realtime (58)
知識小結 (59)
習題3 (59)
第4章 FPGA基礎應用設計 (61)
任務6 控制LED燈閃爍 (61)
4.1 控制LED燈閃爍 (61)
4.2 使用TCL Script (63)
任務7 分頻器設計 (66)
4.3 分頻器 (66)
4.3.1 偶數(shù)分頻 (66)
4.3.2 2n分頻 (67)
任務8 使用狀態(tài)機實現(xiàn)LED流水燈設計 (69)
4.4 狀態(tài)機建模 (69)
4.4.1 狀態(tài)機 (69)
4.4.2 狀態(tài)機建模實現(xiàn)LED流水燈 (72)
任務9 使用層次建模實現(xiàn)LED流水燈設計 (75)
4.5 層次建模 (75)
4.5.1 層次建模實現(xiàn)LED流水燈 (75)
4.5.2 層次建模端口連接規(guī)則 (77)
4.5.3 使用RTL Viewer (79)
4.5.4 使用Chip Planner (79)
知識小結 (81)
習題4 (82)
第5章 FPGA常用接口應用設計 (84)
任務10 數(shù)碼管顯示動態(tài)信息 (84)
5.1 數(shù)碼管應用設計 (85)
5.1.1 單數(shù)碼管顯示原理 (85)
5.1.2 多數(shù)碼管顯示原理 (88)
5.1.3 數(shù)碼管顯示IP核 (88)
數(shù)碼管應用示例1:秒計數(shù)器設計 (92)
數(shù)碼管應用示例2:數(shù)碼管滾動顯示信息 (94)
任務11 鍵控數(shù)碼管顯示信息 (97)
5.2 按鍵應用設計 (98)
5.2.1 按鍵狀態(tài)檢測 (98)
5.2.2 按鍵消抖基本原理 (99)
按鍵應用示例1:按鍵計數(shù)并顯示 (102)
按鍵應用示例2:鍵控數(shù)碼管在不同信息間的切換 (105)
任務12 控制液晶顯示信息 (107)
5.3 液晶應用設計 (107)
5.3.1 液晶顯示原理 (107)
5.3.2 液晶顯示IP核 (114)
液晶應用示例1:顯示計數(shù)信息 (118)
液晶應用示例2:滾動顯示信息 (119)
任務13 顯示標準鍵盤通碼 (121)
5.4 PS2接口應用設計 (121)
5.4.1 PS2接口協(xié)議 (121)
5.4.2 PS2鍵盤掃描碼 (123)
5.4.3 PS2鍵盤IP核 (124)
PS2鍵盤應用示例:顯示按鍵通碼 (126)
任務14 控制VGA顯示彩條和方塊 (128)
5.5 VGA接口應用設計 (129)
5.5.1 VGA顯示原理 (129)
5.5.2 VGA顯示IP核 (132)
VGA應用示例1:在VGA上顯示條紋 (135)
VGA應用示例2:在VGA上顯示移動方塊 (136)
PS2和VGA混合應用示例:PS2鍵盤控制VGA顯示 (137)
知識小結 (140)
習題5 (140)
第6章 FPGA綜合應用設計 (142)
任務15 呼吸燈設計 (142)
6.1 呼吸燈 (143)
6.1.1 呼吸燈原理 (143)
6.1.2 呼吸燈設計實現(xiàn) (144)
6.1.3 拓展練習 (145)
任務16 序列檢測器設計 (145)
6.2 序列檢測器 (146)
6.2.1 脈沖產(chǎn)生電路設計 (146)
6.2.2 序列檢測器設計實現(xiàn) (147)
6.2.3 拓展練習 (150)
任務17 反應測量儀設計 (150)
6.3 反應測量儀 (151)
6.3.1 反應測量儀設計實現(xiàn) (151)
6.3.2 拓展練習 (154)
任務18 數(shù)字跑表設計 (154)
6.4 數(shù)字跑表 (155)
6.4.1 數(shù)字跑表設計實現(xiàn) (155)
6.4.2 拓展練習 (161)
任務19 多功能數(shù)字鐘設計 (161)
6.5 多功能數(shù)字鐘 (162)
6.5.1 多功能數(shù)字鐘設計實現(xiàn) (162)
6.5.2 拓展練習 (163)
任務20 貪吃蛇游戲設計 (164)
6.6 貪吃蛇游戲 (164)
6.6.1 貪吃蛇游戲架構設計 (164)
6.6.2 貪吃蛇游戲設計實現(xiàn) (166)
6.6.3 拓展練習 (168)
知識小結 (168)
習題6 (169)
第7章 基于MC8051處理器核的應用設計 (171)
任務21 基于MC8051處理器的數(shù)字鐘設計 (171)
7.1 MC8051軟核的基本結構 (172)
7.1.1 MC8051層次結構 (172)
7.1.2 MC8051硬件配置 (174)
7.1.3 MC8051使用說明 (176)
7.2 MC8051軟核在Quartus II中的應用 (176)
7.2.1 新建原理圖文件和Quartus II工程 (177)
7.2.2 生成ROM/RAM模塊 (179)
7.2.3 生成MC8051符號 (184)
7.2.4 頂層原理圖設計 (186)
7.3 MC8051軟核的軟件代碼及下載 (191)
7.3.1 MC8051軟件代碼 (191)
7.3.2 MC8051軟件的下載方法 (195)
知識小結 (195)
習題7 (195)
第8章 基于Nios II處理器核的應用設計 (196)
任務22 基于Nios II處理器的鍵控流水燈設計 (196)
8.1 基于Nios II系統(tǒng)的設計流程 (197)
8.1.1 Nios II硬件開發(fā)流程 (199)
8.1.2 Nios II軟件開發(fā)流程 (209)
8.2 基于Nios II處理器的PIO核的應用 (212)
8.2.1 PIO核的功能 (212)
8.2.2 PIO核應用的硬件環(huán)境搭建 (216)
8.2.3 PIO核應用的軟件代碼開發(fā) (223)
任務23 基于?C/OS-II的雙task執(zhí)行 (226)
8.3 在Nios II上運行?C/OS-II操作系統(tǒng) (226)
8.3.1 Nios II硬件環(huán)境的搭建 (227)
8.3.2 Nios II軟件設計 (229)
知識小結 (232)
習題8 (232)