目 錄
第1章 FPGA系統(tǒng)設計基礎 1
1.1 FPGA技術的發(fā)展歷史和動向 1
1.1.1 FPGA技術的發(fā)展歷史 1
1.1.2 FPGA技術的發(fā)展動向 2
1.2 FPGA的典型應用領域 3
1.2.1 數據采集和接口邏輯領域 3
1.2.2 高性能數字信號處理領域 4
1.2.3 其他應用領域 4
1.3 FPGA的工藝結構 4
1.4 典型的Xilinx FPGA芯片 5
1.5 FPGA芯片的應用 7
1.6 工程項目中FPGA芯片的選擇策略和原則 8
1.6.1 盡量選擇成熟的產品系列 8
1.6.2 盡量選擇兼容性好的封裝 8
1.6.3 盡量選擇一個公司的產品 9
1.7 FPGA的設計流程 9
1.8 思考與練習 11
第2章 ISE與ModelSim的安裝 12
2.1 ISE的安裝 12
2.2 ModelSim SE的安裝與啟動 18
2.3 ISE聯合ModelSim設置 22
2.4 思考與練習 29
第3章 ISE操作基礎 30
3.1 ISE的基本使用方法 30
3.1.1 新建工程 30
3.1.2 新建HDL文件 32
3.1.3 添加HDL文件 33
3.1.4 新建原理圖設計 33
3.1.5 在原理圖中調用模塊 34
3.1.6 編輯原理圖 35
3.1.7 用Constraints Editor設置約束 38
3.1.8 使用XST進行綜合 39
3.1.9 設計實現 42
3.1.10 生成下載文件 44
3.1.11 下載FPGA 45
3.2 仿真驗證 47
3.2.1 在ISE中仿真驗證 47
3.2.2 在ISE中調用ModelSim 51
3.3 CORE Generator的使用方法 56
3.3.1 新建CORE Generator工程 56
3.3.2 新建IP 59
3.3.3 修改已有IP的參數 61
3.3.4 在設計中例化IP 61
3.3.5 選擇不同版本的IP 62
3.4 流水燈實例 63
3.4.1 硬件介紹 63
3.4.2 創(chuàng)建工程 63
3.4.3 編寫Verilog代碼 65
3.4.4 UCF管腳約束 68
3.4.5 編譯工程 70
3.4.6 ISE仿真 70
3.4.7 ModelSim仿真驗證 75
3.5 思考與練習 80
第4章 Verilog HDL語言概述 81
4.1 Verilog HDL語言簡介 81
4.1.1 硬件描述語言 81
4.1.2 Verilog HDL語言的歷史 82
4.1.3 Verilog HDL語言的能力 82
4.1.4 Verilog HDL和VHDL語言的異同 83
4.1.5 Verilog HDL和C語言的異同 83
4.2 Verilog HDL語言的描述層次 84
4.2.1 Verilog HDL語言描述能力綜述 84
4.2.2 系統(tǒng)級和算法級建模 84
4.2.3 RTL級建模 85
4.2.4 門級和開關級建模 85
4.3 基于Verilog HDL語言的FPGA開發(fā)流程 85
4.4 Verilog HDL語言的可綜合與仿真特性 87
4.4.1 Verilog HDL語句的可綜合性 88
4.4.2 Verilog HDL語句的仿真特性說明 88
4.5 Verilog HDL程序開發(fā)的知識 89
4.5.1 數字的表示形式 89
4.5.2 常用術語解釋 91
4.5.3 Verilog HDL程序的優(yōu)劣判斷指標 92
4.6 Verilog HDL程序設計模式 93
4.6.1 自頂向下的設計模式 93
4.6.2 層次與模塊化模式 94
4.6.3 IP核的重用 94
4.7 思考與練習 98
第5章 Verilog HDL程序結構 99
5.1 程序模塊 99
5.1.1 Verilog HDL模塊的概念 99
5.1.2 模塊的基本結構 99
5.1.3 端口聲明 101
5.2 Verilog HDL的層次化設計 101
5.2.1 Verilog HDL層次化設計的表現形式 101
5.2.2 模塊例化 102
5.2.3 參數映射 106
5.2.4 在ISE中通過圖形化方式實現層次化設計 108
5.3 Verilog HDL語言的描述形式 111
5.3.1 結構描述形式 111
5.3.2 行為描述形式 116
5.3.3 混合設計模式 119
5.4 思考與練習 120
第6章 Verilog HDL語言的基本要素 121
6.1 標志符與注釋 121
6.1.1 標志符 121
6.1.2 注釋 122
6.2 數字與邏輯數值 122
6.2.1 邏輯數值 122
6.2.2 常量 122
6.2.3 參數 124
6.3 數據類型 124
6.3.1 線網類型 124
6.3.2 寄存器類型 128
6.4 運算符和表達式 132
6.4.1 賦值運算符 132
6.4.2 算術運算符 134
6.4.3 邏輯運算符 136
6.4.4 關系運算符 137
6.4.5 條件運算符 138
6.4.6 位運算符 140
6.4.7 拼接運算符 141
6.4.8 移位運算符 141
6.4.9 一元約簡運算符 142
6.5 思考與練習 143
第7章 面向綜合的行為描述語句 144
7.1 觸發(fā)事件控制 144
7.1.1 信號電平事件語句 144
7.1.2 信號跳變沿事件語句 145
7.2 條件語句 146
7.2.1 if語句 146
7.2.2 case語句 147
7.2.3 條件語句的深入理解 150
7.3 循環(huán)語句 152
7.3.1 repeat語句 152
7.3.2 while語句 153
7.3.3 for語句 154
7.3.4 循環(huán)語句的深入理解 156
7.4 任務與函數 157
7.4.1 task語句 157
7.4.2 function語句 159
7.4.3 深入理解任務和函數 160
7.5 思考與練習 161
第8章 可綜合狀態(tài)機開發(fā) 163
8.1 狀態(tài)機的基本概念 163
8.1.1 狀態(tài)機的工作原理及分類 163
8.1.2 狀態(tài)機描述方式 164
8.1.3 狀態(tài)機設計思想 166
8.2 可綜合狀態(tài)機設計原則 166
8.2.1 狀態(tài)機開發(fā)流程 167
8.2.2 狀態(tài)編碼原則 167
8.2.3 狀態(tài)機的容錯處理 168
8.2.4 常用的設計準則 169
8.3 狀態(tài)機的Verilog HDL實現 170
8.3.1 狀態(tài)機實現綜述 170
8.3.2 Moore狀態(tài)機開發(fā)實例 173
8.3.3 Mealy狀態(tài)機開發(fā)實例 175
8.4 思考與練習 177
第9章 面向驗證和仿真的行為描述語句 178
9.1 驗證與仿真概述 178
9.1.1 代碼驗證與仿真概述 179
9.1.2 測試平臺 179
9.1.3 驗證測試方法論 181
9.1.4 Testbench結構說明 185
9.2 仿真程序執(zhí)行原理 186
9.2.1 Verilog HDL語義簡介 187
9.2.2 Verilog HDL仿真原理 187
9.3 延時控制語句 189
9.3.1 延時控制的語法說明 189
9.3.2 延時控制應用實例 189
9.4 常用的行為仿真描述語句 192
9.4.1 循環(huán)語句 192
9.4.2 force和release語句 194
9.4.3 wait語句 195
9.4.4 事件控制語句 196
9.4.5 task和function語句 197
9.4.6 串行激勵與并行激勵語句 198
9.5 用戶自定義元件 199
9.5.1 UDP的定義與調用 199
9.5.2 UDP應用實例 200
9.6 仿真激勵的產生 202
9.6.1 變量初始化 202
9.6.2 時鐘信號的產生 205
9.6.3 復位信號的產生 207
9.6.4 數據信號的產生 208
9.6.5 典型測試平臺模塊編寫實例 209
9.6.6 關于仿真效率的說明 210
9.7 思考與練習 210
第10章 系統(tǒng)任務和編譯預處理語句 212
10.1 系統(tǒng)任務語句 212
10.1.1 輸出顯示任務 212
10.1.2 文件輸入/輸出任務 218
10.1.3 時間標度任務 222
10.1.4 仿真控制任務 224
10.1.5 仿真時間函數 224
10.1.6 數字類型變換函數 226
10.1.7 概率分布函數 226
10.2 編譯預處理語句 228
10.2.1 宏定義`define語句 228
10.2.2 條件編譯`if語句 230
10.2.3 文件包含`include語句 231
10.2.4 時間尺度`timescale語句 233
10.2.5 其他語句 234
10.3 思考與練習 235
第11章 Verilog HDL語言基礎 236
11.1 8-3編碼器 236
11.2 3-8譯碼器 237
11.3 數據選擇器 238
11.4 多位數值比較器 240
11.5 全加器 241
11.6 D觸發(fā)器 242
11.7 寄存器 243
11.8 雙向移位寄存器 244
11.9 四位二進制加減法計數器 245
11.10 順序脈沖發(fā)生器 247
11.11 序列信號發(fā)生器 248
11.12 思考與練習 249
第12章 擴展接口設計 250
12.1 數碼管顯示接口實驗 250
12.1.1 數碼管顯示接口實驗內容與實驗目的 250
12.1.2 數碼管顯示接口設計原理 251
12.1.3 數碼管顯示接口設計方法 252
12.2 LCD液晶顯示接口實驗 259
12.2.1 LCD液晶顯示接口實驗內容與實驗目的 259
12.2.2 LCD液晶顯示接口設計原理 259
12.2.3 LCD液晶顯示接口設計方法 262
12.3 VGA顯示接口實驗 267
12.3.1 VGA顯示接口實驗內容與實驗目的 267
12.3.2 VGA顯示接口實驗設計原理 268
12.3.3 VGA顯示接口實驗設計方法 269
12.4 RS-232C串行通信接口實驗 271
12.4.1 RS-232C串行通信接口實驗內容與實驗目的 271
12.4.2 RS-232C串行通信接口設計原理 271
12.4.3 RS-232C串行通信接口設計方法 274
12.5 思考與練習 279
第13章 系統(tǒng)設計實例 280
13.1 實時溫度采集系統(tǒng) 280
13.1.1 實時溫度采集系統(tǒng)實驗內容與實驗目的 280
13.1.2 實時溫度采集系統(tǒng)設計原理 280
13.1.3 實時溫度采集系統(tǒng)設計方法 283
13.2 實時紅外采集系統(tǒng) 299
13.2.1 實時紅外采集系統(tǒng)實驗內容與實驗目的 299
13.2.2 實時紅外采集系統(tǒng)設計原理 299
13.2.3 實時紅外采集系統(tǒng)設計方法 301
13.3 實時鍵盤采集系統(tǒng) 305
13.3.1 實時鍵盤采集系統(tǒng)實驗內容與實驗目的 305
13.3.2 實時鍵盤采集系統(tǒng)設計原理 306
13.3.3 實時鍵盤采集系統(tǒng)設計方法 308
13.4 思考與練習 320