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