本書內容分為基礎篇和綜合實踐篇兩部分,基礎篇細致地講解了FPGA開發過程中使用的硬件描述語言VHDL、設計軟件Quartus II 8.0、專業仿真工具 Modelsim 6.0的使用,并對設計綜合實驗平臺、常用基本器件的設計做了介紹;為了幫助讀者更好地理解和掌握相關理論知識,在綜合實踐篇中介紹了FPGA開發常用的設計方法,包括消除毛刺設計技巧、觸發器、鎖存器、時延電路、時鐘設計等典型的基礎入門實例,同時,提供了矩陣鍵盤掃描接口設計等4個綜合設計實例,以及基于Avalon總線的PWM控制器等3個面向SOPC的嵌入式項目開發實例。
本書的配套教學資源中包含了各章節的電子教案、習題參考答案,豐富的實例原圖文件和程序源代碼,以及程序執行步驟和結果分析。讀者通過舉一反三,即可輕松地將其應用于自己的工作和課題研究中。
1.本書強調從基礎/綜合/嵌入式SOPC三個層面講解基于FPGA的設計技術,是根據作者多年積累的開發經驗、實踐教學經驗,針對學生面臨的實際問題,參考了大量設計書籍和技術文獻組織編寫的。2.本書強調采用講練結合、循序漸進的方式:在實例的安排上,著重突出“應用”和“實用”的原則;在實例的講解上,既介紹了設計原理、基本步驟和流程,也穿插了一些經驗技巧和注意事項,在潛移默化的過程中提高讀者的理論知識和實踐能力3.本書是云南大學本科實踐教學能力提升項目的成果。
1985.9—2001.12 云南大學計算機科學與技術系任教、實驗師; 2002.1—2010.10在云南大學信息學院計算機科學與技術系任副教授、碩士研究生導師、系統結構實驗室主任。2010.10—至今在云南大學信息學院計算機科學與技術系任教授、碩士研究生導師、系統結構實驗室主任。
第1章 概述 2
1.1 CPLD/ FPGA簡介 2
1.1.1 CPLD/FPGA的結構與工作原理 2
1.1.2 CPLD/FPGA的發展趨勢 7
1.2 CPLD/FPGA產品概述 7
1.2.1 Lattice的CPLD器件系列 8
1.2.2 Xilinx的CPLD/FPGA器件系列 9
1.2.3 Altera的CPLD/FPGA器件系列 11
1.2.4 Altera的FPGA配置方式與配置器件 14
習題與思考題 15
第2章 VHDL語言基礎 16
2.1 硬件描述語言特點 16
2.2 VHDL程序基本結構 16
2.3 VHDL程序主要構件 17
2.3.1 庫 18 第1章 概述 2
1.1 CPLD/ FPGA簡介 2
1.1.1 CPLD/FPGA的結構與工作原理 2
1.1.2 CPLD/FPGA的發展趨勢 7
1.2 CPLD/FPGA產品概述 7
1.2.1 Lattice的CPLD器件系列 8
1.2.2 Xilinx的CPLD/FPGA器件系列 9
1.2.3 Altera的CPLD/FPGA器件系列 11
1.2.4 Altera的FPGA配置方式與配置器件 14
習題與思考題 15
第2章 VHDL語言基礎 16
2.1 硬件描述語言特點 16
2.2 VHDL程序基本結構 16
2.3 VHDL程序主要構件 17
2.3.1 庫 18
2.3.2 實體 18
2.3.3 結構體 19
2.3.4 包集合 20
2.3.5 配置 21
2.4 VHDL數據類型 23
2.4.1 標準數據類型 23
2.4.2 IEEE定義的邏輯位與矢量 24
2.4.3 用戶自定義數據類型 24
2.4.4 數據類型轉換 26
2.5 運算符 26
2.5.1 算術運算符 26
2.5.2 邏輯運算符 26
2.5.3 關系運算符 27
2.5.4 其他運算符 27
2.5.5 運算優先級 27
2.6 VHDL數據對象 28
2.6.1 常量 28
2.6.2 變量 28
2.6.3 信號 29
2.6.4 信號與變量的比較 30
2.7 VHDL基本語句 30
2.7.1 并行語句 30
2.7.2 順序語句 37
2.7.3 屬性描述語句 42
2.8 測試基準 44
2.9 其他語句和有關規定的說明 45
2.9.1 命名規則和注解的標記 45
2.9.2 ATTRIBUTE(屬性)描述與定義 46
2.9.3 GENERATE語句 53
2.10 VHDL程序的其他構件 56
2.10.1 塊 56
2.10.2 函數 58
2.10.3 過程 59
2.10.4 程序包 60
2.11 結構體的描述方法 62
習題與思考題 63
第3章 項目開發環境介紹 65
3.1 軟件平臺 65
3.1.1 系統設計軟件Quartus II 8.0 65
3.1.2 ModelSim 6.0仿真工具 66
3.1.3 Nios II IDE 8.0 軟件集成環境 67
3.2 硬件平臺 67
3.2.1 DE2平臺介紹 67
3.2.2 DE2板上資源及硬件布局 69
3.2.3 DE2原理 70
3.2.4 DE2平臺的開發環境 73
3.2.5 DE2開發板測試說明 74
習題與思考題 75
第4章 常用基本器件設計 76
4.1 寄存器設計 76
4.1.1 寄存器原理圖設計 76
4.1.2 寄存器工作原理 76
4.1.3 寄存器程序描述 77
4.1.4 寄存器仿真 78
4.2 移位運算器設計 78
4.2.1 移位運算器原理圖設計 78
4.2.2 移位運算器程序描述 79
4.2.3 移位運算器仿真 80
4.3 加減法運算器設計 81
4.3.1 加減法單元原理圖設計 81
4.3.2 加減單元編碼 81
4.3.3 多位加減法單元連接 82
4.3.4 加減法運算器原理圖設計 83
4.3.5 加減法運算器程序描述 84
4.3.6 加減法運算器仿真 87
4.4 乘法器設計 88
4.4.1 乘法陣列原理圖設計 88
4.4.2 乘法陣列編碼 89
4.4.3 有符號數乘法運算器 90
4.5 同步計數器設計 93
4.5.1 設備同步工作 93
4.5.2 程序計數器 93
4.5.3 通用計數器 95
4.6 節拍器設計 98
4.6.1 節拍器電路設計 98
4.6.2 節拍器程序描述 98
4.6.3 節拍器工作原理 101
4.7 譯碼器設計 101
4.7.1 譯碼器電路設計 101
4.7.2 譯碼器程序描述 102
4.7.3 選擇與通斷控制電路 103
4.8 標志線設計 106
4.8.1 累加器標志線設計 106
4.8.2 數據監測標志設計 107
4.9 存儲器設計 107
4.9.1 地址譯碼器電路設計 107
4.9.2 存儲單元設計 109
4.9.3 包含256個存儲單元的存儲器設計 110
習題與思考題 112
綜合實踐篇
第5章 FPGA開發常用設計方法 114
5.1 消除毛刺 114
5.2 幾種邏輯器件及信號處理方法 115
5.2.1 觸發器及鎖存器 115
5.2.2 消除及置位信號處理 117
5.3 FPGA中的同步設計 118
5.4 FPGA時延電路產生及用法 119
5.5 FPGA中的時鐘設計 121
5.5.1 全局時鐘 121
5.5.2 門控制時鐘 122
5.5.3 多級邏輯時鐘 124
5.5.4 行波時鐘 125
5.5.5 多時鐘系統 126
5.6 FPGA電路優化方法 130
習題與思考題 133
第6章 綜合數字系統實例 134
6.1 矩陣鍵盤掃描接口設計 134
6.1.1 實例內容說明 134
6.1.2 設計思路與原理 134
6.1.3 程序設計與驗證 136
6.1.4 實例總結 143
6.2 交通燈控制的設計 144
6.2.1 實例內容說明 144
6.2.2 設計思路與原理 144
6.2.3 程序設計與注釋 145
6.2.4 實例總結 152
6.3 6層電梯控制器的設計 152
6.3.1 實例內容說明 152
6.3.2 設計思路與原理 152
6.3.3 程序設計與驗證 153
6.3.4 實例總結 162
6.4 快速傅里葉變換FFT處理器的設計 162
6.4.1 FFT算法特點 162
6.4.2 旋轉因子算法 163
6.4.3 蝶形處理器 165
6.4.4 實例總結 168
習題與思考題 168
第7章 面向SOPC的FPGA設計實例 170
7.1 SOPC系統設計流程 170
7.2 基于Avalon總線的PWM控制器 171
7.2.1 實例介紹 171
7.2.2 設計思路與原理 171
7.2.3 硬件設計 174
7.2.4 軟件設計 190
7.2.5 實例總結 194
7.3 基于SOPC的SD卡音樂播放器 194
7.3.1 實例介紹 194
7.3.2 設計思路與原理 194
7.3.3 硬件設計 200
7.3.4 軟件設計 210
7.3.5 實例總結 216
7.4 基于AES算法的實時加/解密系統 216
7.4.1 實例介紹 216
7.4.2 設計思路與原理 217
7.4.3 硬件設計 223
7.4.4 軟件設計與綜合測試 255
7.4.5 實例總結 264
習題與思考題 264
附錄A 265
參考文獻 269