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