開啟主選單

求真百科

FPGAVerilog開發實戰指南

來自 孔夫子網 的圖片

FPGAVerilog開發實戰指南》,副標題:基於Intel Cyclone IV(基礎篇,劉火良 楊森 張碩 著,出版社: 機械工業出版社。

截至2022年,機械工業出版社年出版新書近2700種,年引進和輸出版權總量近800種,產品橫跨科技出版、教育出版、大眾出版三大板塊,覆蓋機械、電工電子、汽車、建築、計算機、經管、心理[1]、生活、科普、藝術設計、文創等十多個專業領域,以及高等教育[2]職業教育、技能教育等不同教育層次。

目錄

內容簡介

本書包括32個章節,按照先易後難的順序進行講解,分為硬件說明篇、軟件安裝篇、基礎入門篇和學習強化篇四大板塊。從基礎的硬件介紹、軟件安裝到基本電路開發,手把手教學。考慮到大多數學習者為FPGA初學者,所以本書把操作中的每個步驟都儘可能詳細的介紹和描述,並附上大量的截圖以供學習者實操參考。

目錄

前言

硬件說明篇

  • 1章 初識FPGA 2

1.1 FPGA是什麼 2

1.1.1 名詞解釋 2

1.1.2 FPGA發展歷程 2

1.2 FPGA的技術優勢 7

1.3 FPGA的應用方向 9

  • 2章 硬件開發平台詳解 15

2.1 開發板簡介 15

2.2 國內外FPGA產業現狀 19

2.3 選擇Cyclone IV的理由 20

2.4 Cyclone系列FPGA芯片的命名方法 23

2.5 FPGA內部硬件結構簡介 24

2.6 FPGA內部硬件結構與代碼的關係 33

2.6.1 I/O的映射 34

2.6.2 組合邏輯映射 43

2.6.3 時序邏輯映射 45

2.6.4 指定PLL的映射位置 56

軟件安裝篇

第3章 Quartus軟件和USB-Blaster驅動安裝 66

3.1 Quartus II_13.0軟件的安裝 66

3.2 添加器件庫 72

3.3 USB-Blaster驅動器的安裝 76

第4章 ModelSim軟件安裝 80

第5章 Visio和Notepad++軟件安裝 87

5.1 Visio軟件的安裝 87

5.2 Notepad++軟件的安裝 93

第6章 實現Quartus和ModelSim、Notepad++軟件關聯 99

6.1 Quartus II_13.0和ModelSim_10.5se軟件的關聯 99

6.2 Quartus II_13.0和Notepad++軟件的關聯 101

基礎入門篇

第7章 初識Verilog HDL 106

7.1 為什麼選擇用Verilog HDL開發FPGA 106

7.1.1 Verilog HDL和VHDL的比較 106

7.1.2 Verilog HDL和C語言的比較 107

7.2 Verilog HDL語言的基礎語法 107

7.2.1 標識符 107

7.2.2 邏輯值 108

7.2.3 常量 108

7.2.4 變量 109

7.2.5 參數 109

7.2.6 賦值語句 110

7.2.7 注釋 110

7.2.8 關係運算符 111

7.2.9 歸約運算符、按位運算符和邏輯運算符 111

7.2.10 移位運算符 112

7.2.11 條件運算符 112

7.2.12 優先級 112

7.2.13 位拼接運算符 113

7.2.14 if-else與case 113

7.2.15 inout雙向端口 115

7.2.16 Verilog語言中的系統任務和系統函數 116

7.3 章末總結 123

第8章 點亮LED燈 124

8.1 正確的設計流程 124

8.2 工程文件夾的管理 124

8.3 一個完整的設計過程 126

8.3.1 功能簡介 126

8.3.2 硬件資源 126

8.3.3 新建一個Visio文件及其配置 127

8.3.4 模塊和端口信號劃分 130

8.3.5 波形設計 131

8.3.6 新建工程 133

8.3.7 RTL代碼的編寫 140

8.3.8 代碼的分析和綜合 143

8.3.9 查看RTL視圖 144

8.3.10 Testbench的原理 145

8.3.11 Testbench代碼的編寫 147

8.3.12 仿真設置 151

8.3.13 設置NativeLink 153

8.3.14 打開ModelSim觀察波形 155

8.3.15 仿真波形分析 162

8.3.16 引腳約束 162

8.3.17 全編譯 165

8.3.18 通過JTAG將網表下載到開發板 168

8.3.19 未使用引腳的默認設置 172

8.3.20 程序的固化 174

8.4 章末總結 185

第9章 簡單組合邏輯 186

9.1 理論學習 186

9.1.1 多路選擇器 186

9.1.2 譯碼器 186

9.1.3 半加器 187

9.2 實戰演練—多路選擇器 187

9.2.1 實驗目標 187

9.2.2 硬件資源 187

9.2.3 程序設計 188

9.3 實戰演練—譯碼器 198

9.3.1 實驗目標 198

9.3.2 程序設計 198

9.4 實戰演練—半加器 205

9.4.1 實驗目標 205

9.4.2 硬件資源 205

9.4.3 程序設計 206

9.5 章末總結 211

  • 10章 層次化設計 213

10.1 理論學習 213

10.2 實戰演練 215

10.2.1 實驗目標 215

10.2.2 硬件資源 215

10.2.3 程序設計 215

10.3 章末總結 225

  • 11章 避免Latch的產生 226

11.1 Latch是什麼 226

11.2 Latch的危害 226

11.3 幾種產生Latch的情況 226

11.4 章末總結 232

  • 12章 時序邏輯的開始——寄存器 234

12.1 理論學習 234

12.2 實戰演練 234

12.2.1 實驗目標 234

12.2.2 硬件資源 235

12.2.3 程序設計 236

12.3 章末總結 243

  • 13章 阻塞賦值與非阻塞賦值 245

13.1 理論學習 245

13.2 阻塞賦值 246

13.3 非阻塞賦值 248

13.4 章末總結 251

  • 14章 計數器 252

14.1 理論學習 252

14.2 實戰演練 252

14.2.1 實驗目標 252

14.2.2 硬件資源 252

14.2.3 程序設計 253

14.3 章末總結 262

  • 15章 分頻器 263

15.1 理論學習 263

15.2 實戰演練一 263

15.2.1 實驗目標 263

15.2.2 硬件資源 264

15.2.3 程序設計 264

15.3 實戰演練二 270

15.3.1 實驗目標 270

15.3.2 硬件資源 271

15.3.3 程序設計 271

15.4 章末總結 278

  • 16章 按鍵消抖模塊的設計與驗證 279

16.1 理論學習 279

16.1.1 硬件消抖 280

16.1.2 軟件消抖 281

16.2 實戰演練 281

16.2.1 實驗目標 281

16.2.2 程序設計 281

16.3 章末總結 288

  • 17章 流水燈 289

17.1 理論學習 289

17.2 實戰演練 289

17.2.1 實驗目標 289

17.2.2 硬件資源 289

17.2.3 程序設計 290

17.3 章末總結 294

  • 18章 狀態機 295

18.1 理論學習 295

18.2 實戰演練一 297

18.2.1 實驗目標 297

18.2.2 程序設計 297

18.3 實戰演練二 308

18.3.1 實驗目標 309

18.3.2 程序設計 309

18.4 章末總結 316

  • 19章 數碼管的動態顯示 318

19.1 理論學習 318

19.1.1 數碼管簡介 318

19.1.2 八段數碼管 318

19.1.3 74HC595簡介 321

19.1.4 數碼管動態顯示簡介 323

19.2 實戰演練 324

19.2.1 實驗目標 324

19.2.2 硬件資源 324

19.2.3 程序設計 325

19.3 章末總結 353

  • 20章 快速開發的法寶——IP核 354

20.1 理論學習 354

20.2 實戰演練 358

20.2.1 IP核之PLL 359

20.2.2 IP核之ROM 376

20.2.3 IP核之RAM 406

20.2.4 IP核之FIFO 439

20.3 章末總結 463

學習強化篇

  • 21章 串口RS-232 466

21.1 理論學習 466

21.1.1 串口簡介 466

21.1.2 RS-232信號線 467

21.1.3 RS-232通信協議簡介 469

21.2 實戰演練 470

21.2.1 實驗目標 470

21.2.2 硬件資源 470

21.2.3 程序設計 472

21.3 章末總結 504

  • 22章 使用SignalTap II嵌入式邏輯分析儀在線調試 506

22.1 邏輯分析儀簡介 506

22.2 SignalTap II的用法 508

  • 23章 簡易頻率計的設計與驗證 528

23.1 理論學習 528

23.2 實戰演練 529

23.2.1 實驗目標 529

23.2.2 硬件資源 529

23.2.3 程序設計 530

23.3 章末總結 544

  • 24章 簡易DDS信號發生器的設計與驗證 545

24.1 理論學習 545

24.2 實戰演練 548

24.2.1 實驗目標 548

24.2.2 硬件資源 548

24.2.3 程序設計 551

24.3 章末總結 574

  • 25章 簡易電壓表的設計與驗證 575

25.1 理論學習 575

25.2 實戰演練 576

25.2.1 實驗目標 576

25.2.2 硬件資源 577

25.2.3 程序設計 579

25.3 章末總結 591

  • 26章 VGA顯示器驅動設計與驗證 592

26.1 理論學習 592

26.1.1 VGA簡介 592

26.1.2 VGA接口及引腳定義 593

26.1.3 VGA顯示原理 595

26.1.4 VGA時序標準 596參數 598

26.2 實戰演練 600

26.2.1 實驗目標 600

26.2.2 硬件資源 600

26.2.3 程序設計 601

26.3 章末總結 623

  • 27章 HDMI顯示器驅動設計與驗證 624

27.1 理論學習 624

27.1.1 HDMI簡介 624

27.1.2 HDMI接口及引腳定義 625

27.1.3 HDMI顯示原理 628

27.2 實戰演練 631

27.2.1 實驗目標 631

27.2.2 硬件資源 631

27.2.3 程序設計 632

27.3 章末總結 655

  • 28章 TFT-LCD液晶屏驅動設計與驗證 656

28.1 理論學習 656

28.1.1 TFT-LCD簡介 656

28.1.2 RGB接口TFT-LCD時序 658

28.1.3 RGB接口TFT-LCD分辨率 660

28.2 實戰演練 660

28.2.1 實驗目標 660

28.2.2 硬件資源 661

28.2.3 程序設計 662

28.3 章末總結 683

  • 29章 FIFO求和實驗 684

29.1 理論學習 684

29.2 實戰演練 685

29.2.1 實驗目標 685

29.2.2 程序設計 685

29.3 章末總結 701

第30章 基於Sobel算法的邊緣檢測設計與實現 702

30.1 理論學習 702

30.1.1 邊緣檢測 702

30.1.2 Sobel算法簡介 702

30.2 實戰演練 703

30.2.1 Sobel算法實現 703

30.2.2 實驗目標 703

30.2.3 硬件資源 704

30.2.4 程序設計 704

30.3 章末總結 730

第31章 基於SPI協議的Flash驅動控制 731

31.1 理論學習 731

31.1.1 SPI物理層 731

31.1.2 SPI協議層 733

31.2 實戰演練 735

31.2.1 SPI-Flash全擦除實驗 736

31.2.2 SPI-Flash頁寫實驗 755

31.2.3 SPI_Flash讀數據實驗 771

31.3 章末總結 793

第32章 基於I2C協議的EEPROM驅動控制 794

32.1 理論學習 794

32.1.1 I2C物理層 794

32.1.2 I2C協議層 795

32.2 實戰演練 802

32.2.1 實驗目標 802

32.2.2 硬件資源 802

32.2.3 程序設計 803

32.3 章末總結 844

後記 845

參考文獻