本書結(jié)合行業(yè)企業(yè)的應(yīng)用實(shí)踐來(lái)介紹FPGA技術(shù)應(yīng)用與開(kāi)發(fā)方法。全書分三大部分,按著知識(shí)遞進(jìn)、難度遞進(jìn)的原則,以項(xiàng)目的形式來(lái)組織內(nèi)容。第一部分介紹FPGA應(yīng)用開(kāi)發(fā)基礎(chǔ)知識(shí);第二部分介紹實(shí)際應(yīng)用項(xiàng)目中常用的接口,包括LED燈、數(shù)碼管、按鍵、液晶、串口等;第三部分通過(guò)一些綜合項(xiàng)目來(lái)介紹設(shè)計(jì)方法與技巧,包括多功能計(jì)算器、數(shù)字跑表、反應(yīng)測(cè)量?jī)x、頻率計(jì)、求*大公因數(shù)、音樂(lè)播放器、多功能數(shù)字鐘、簡(jiǎn)易CPU、貪吃蛇游戲等。
賀敬凱 博士,高級(jí)工程師,畢業(yè)于華南理工大學(xué)控制理論與控制工程技術(shù)專業(yè),曾在中興通訊股份有限公司微電子技術(shù)研究所從事芯片設(shè)計(jì)與開(kāi)發(fā)工作4年,現(xiàn)在深圳信息職業(yè)技術(shù)學(xué)院從事電子類專業(yè)課程的教學(xué)與研究工作,有多項(xiàng)教研成果
第1章 硬件平臺(tái)及集成開(kāi)發(fā)環(huán)境 (1)
任務(wù)1 鍵控LED燈亮滅 (1)
1.1 FPGA工作原理及開(kāi)發(fā)平臺(tái) (1)
1.1.1 FPGA工作原理 (1)
1.1.2 開(kāi)發(fā)平臺(tái)與常用接口 (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)
知識(shí)小結(jié) (16)
習(xí)題1 (16)
第2章 HDL語(yǔ)言基礎(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語(yǔ)言的數(shù)據(jù)類型和運(yùn)算符 (20)
2.2.1 標(biāo)識(shí)符 (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語(yǔ)言的描述語(yǔ)句 (31)
2.3.1 結(jié)構(gòu)描述形式 (31)
2.3.2 數(shù)據(jù)流描述形式 (32)
2.3.3 行為描述形式 (33)
2.4 可綜合與不可綜合語(yǔ)法結(jié)構(gòu) (35)
2.5 Verilog代碼書寫規(guī)范 (36)
知識(shí)小結(jié) (38)
習(xí)題2 (38)
第3章 ModelSim仿真 (40)
任務(wù)5 十六進(jìn)制計(jì)數(shù)器的設(shè)計(jì)及仿真 (40)
3.1 ModelSim軟件的使用 (41)
3.2 延時(shí) (46)
3.3 常用塊語(yǔ)句 (49)
3.3.1 initial塊語(yǔ)句 (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 時(shí)間度量系統(tǒng)任務(wù)$time和$realtime (58)
知識(shí)小結(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)
知識(shí)小結(jié) (81)
習(xí)題4 (82)
第5章 FPGA常用接口應(yīng)用設(shè)計(jì) (84)
任務(wù)10 數(shù)碼管顯示動(dòng)態(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ù)碼管滾動(dòng)顯示信息 (94)
任務(wù)11 鍵控?cái)?shù)碼管顯示信息 (97)
5.2 按鍵應(yīng)用設(shè)計(jì) (98)
5.2.1 按鍵狀態(tài)檢測(cè) (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:滾動(dòng)顯示信息 (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上顯示移動(dòng)方塊 (136)
PS2和VGA混合應(yīng)用示例:PS2鍵盤控制VGA顯示 (137)
知識(shí)小結(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 序列檢測(cè)器設(shè)計(jì) (145)
6.2 序列檢測(cè)器 (146)
6.2.1 脈沖產(chǎn)生電路設(shè)計(jì) (146)
6.2.2 序列檢測(cè)器設(shè)計(jì)實(shí)現(xiàn) (147)
6.2.3 拓展練習(xí) (150)
任務(wù)17 反應(yīng)測(cè)量?jī)x設(shè)計(jì) (150)
6.3 反應(yīng)測(cè)量?jī)x (151)
6.3.1 反應(yīng)測(cè)量?jī)x設(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)
知識(shí)小結(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使用說(shuō)明 (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符號(hào) (184)
7.2.4 頂層原理圖設(shè)計(jì) (186)
7.3 MC8051軟核的軟件代碼及下載 (191)
7.3.1 MC8051軟件代碼 (191)
7.3.2 MC8051軟件的下載方法 (195)
知識(shí)小結(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硬件開(kāi)發(fā)流程 (199)
8.1.2 Nios II軟件開(kāi)發(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)用的軟件代碼開(kāi)發(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)
知識(shí)小結(jié) (232)
習(xí)題8 (232)