本書根據EDA課程教學要求,以提高數字系統設計能力為目的,系統闡述FPGA數字系統開發(fā)的相關知識,主要內容包括EDA技術概述、FPGA/CPLD器件、Verilog硬件描述語言等。全書以Quartus Prime、ModelSim軟件為工具,以Verilog-1995和Verilog-2001語言標準為依據,以可綜合的設計為重點,通過諸多精選設計案例,闡述數字系統設計的方法與技術,由淺入深地介紹Verilog工程開發(fā)的知識與技能。 本書著眼于實用,緊密聯系教學實際,實例豐富。全書深入淺出,概念清晰,語言流暢。本書配有教學課件,可從華信教育資源網(www.hxedu.com.cn)免費下載。
王金明,男,1972年5月出生,博士,現為解放軍陸軍工程大學副教授、碩士生導師。曾獲軍隊科技進步一等獎1項,軍隊科技進步二等獎3項,軍隊科技進步三等獎5項,獲軍隊級教學成果二等獎1項;獲國家發(fā)明專利授權2項,獲軟件著作授權1項;發(fā)表論文80余篇,其中SCI、EI收錄30余篇;主編教材多部,并入選"十一五”國家級規(guī)劃教材和"十二五”國家級規(guī)劃教材;2013年獲軍隊院校育才獎銀獎;2014年由國家留學基金委資助,在美國威斯康星大學麥迪遜分校訪問研究1年;指導本科生參加全國大學生電子設計競賽,共獲得全國一等獎8項。
第1章 EDA技術概述 1
1.1 EDA技術及其發(fā)展 1
1.2 Top-down設計與IP核復用 4
1.2.1 Top-down設計 4
1.2.2 Bottom-up設計 4
1.2.3 IP復用技術與SoC 5
1.3 數字系統設計的流程 6
1.3.1 設計輸入 7
1.3.2 綜合 7
1.3.3 布局布線 8
1.3.4 時序分析與時序約束 8
1.3.5 功能仿真與時序仿真 8
1.3.6 編程與配置 9
1.4 常用的EDA工具軟件 9
1.5 EDA技術的發(fā)展趨勢 13
習題1 14
第2章 FPGA/CPLD器件 15
2.1 PLD器件概述 15
2.1.1 PLD器件的發(fā)展歷程 15
2.1.2 PLD器件的分類 16
2.2 PLD的原理與結構 18
2.2.1 PLD器件的結構 18
2.2.2 PLD電路的表示方法 18
2.3 低密度PLD的原理與結構 20
2.4 CPLD的原理與結構 24
2.4.1 宏單元結構 24
2.4.2 典型CPLD的結構 25
2.5 FPGA的原理與結構 28
2.5.1 查找表結構 28
2.5.2 典型FPGA的結構 30
2.5.3 Cyclone IV器件結構 33
2.6 FPGA/CPLD的編程元件 36
2.7 邊界掃描測試技術 39
2.8 FPGA/CPLD的編程與配置 41
2.8.1 在系統可編程 41
2.8.2 FPGA器件的配置 41
2.8.3 Cyclone IV器件的編程 42
2.9 FPGA/CPLD器件概述 45
2.10 FPGA/CPLD的發(fā)展趨勢 48
習題2 48
第3章 Quartus Prime使用指南 49
3.1 Quartus Prime設計的流程 49
3.2 Quartus Prime原理圖設計 50
3.2.1 半加器原理圖設計輸入 50
3.2.2 1位全加器設計輸入 54
3.2.3 1位全加器的編譯 56
3.2.4 1位全加器的仿真 58
3.2.5 1位全加器的下載 62
3.3 基于IP核的設計 65
3.3.1 模24方向可控計數器 66
3.3.2 4×4無符號數乘法器 72
3.4 SignalTap II的使用方法 78
3.5 Quartus Prime的優(yōu)化設置 82
習題3 85
第4章 Verilog語言初步 89
4.1 Verilog的歷史 89
4.2 Verilog模塊的結構 90
4.3 Verilog組合邏輯設計 93
4.4 Verilog時序邏輯設計 95
習題4 98
第5章 Verilog語言要素 99
5.1 概述 99
5.2 常量 100
5.2.1 整數 100
5.2.2 實數 102
5.2.3 字符串 102
5.3 數據類型 103
5.3.1 net型 104
5.3.2 variable型 104
5.4 參數 106
5.4.1 參數parameter 106
5.4.2 Verilog-2001中的參數聲明 106
5.4.3 參數的傳遞 107
5.4.4 localparam 108
5.5 向量 108
5.6 運算符 110
習題5 115
第6章 Verilog語句語法 116
6.1 過程語句 116
6.1.1 always過程語句 117
6.1.2 initial過程語句 120
6.2 塊語句 121
6.2.1 串行塊begin-end 121
6.2.2 并行塊fork-join 121
6.3 賦值語句 122
6.3.1 持續(xù)賦值與過程賦值 122
6.3.2 阻塞賦值與非阻塞賦值 124
6.4 條件語句 125
6.4.1 if-else語句 125
6.4.2 case語句 127
6.5 循環(huán)語句 131
6.5.1 for語句 131
6.5.2 repeat、while、forever語句 132
6.6 編譯指示語句 134
6.7 任務與函數 135
6.7.1 任務 136
6.7.2 函數 137
6.8 Verilog-2001語言標準 140
6.8.1 Verilog-2001改進和增強的語法結構 140
6.8.2 屬性及PLI接口 149
習題6 151
第7章 Verilog設計的層次與風格 152
7.1 Verilog設計的層次 152
7.2 門級結構描述 152
7.2.1 Verilog門元件 153
7.2.2 門級結構描述 155
7.3 數據流描述與行為描述 156
7.4 不同描述風格的設計 157
7.4.1 半加器設計 157
7.4.2 1位全加器設計 158
7.4.3 加法器的級聯 159
7.5 多層次結構電路的設計 160
7.5.1 模塊例化 161
7.5.2 用parameter進行參數傳遞 162
7.5.3 用defparam進行參數重載 163
7.6 Verilog組合電路設計 164
7.7 Verilog時序電路設計 168
7.8 三態(tài)邏輯設計 174
7.9 鎖相環(huán) 176
習題7 181
第8章 Verilog有限狀態(tài)機設計 182
8.1 有限狀態(tài)機 182
8.2 有限狀態(tài)機的Verilog描述 183
8.2.1 用三個always塊描述 184
8.2.2 用兩個過程描述 185
8.2.3 單過程描述方式 186
8.3 狀態(tài)編碼 187
8.3.1 常用的編碼方式 187
8.3.2 狀態(tài)編碼的定義 189
8.3.3 用屬性指定狀態(tài)編碼方式 192
8.4 有限狀態(tài)機設計要點 193
8.4.1 復位和起始狀態(tài)的選擇 193
8.4.2 多余狀態(tài)的處理 195
8.5 用有限狀態(tài)機控制流水燈 196
8.5.1 流水燈控制器 196
8.5.2 引腳分配與鎖定 198
8.6 用有限狀態(tài)機控制A/D采樣 204
習題8 205
第9章 Verilog驅動常用I/O外設 207
9.1 4×4矩陣鍵盤 207
9.2 標準PS/2鍵盤 211
9.3 字符液晶 217
9.4 漢字圖形點陣液晶 224
9.5 VGA顯示器 230
9.5.1 VGA顯示原理與時序 230
9.5.2 VGA彩條信號發(fā)生器 233
9.5.3 VGA圖像顯示與控制 238
9.6 樂曲演奏電路 244
習題9 250
第10章 Verilog設計進階 253
10.1 設計的可綜合性 253
10.2 流水線設計技術 255
10.3 時序約束與時序分析 259
10.3.1 時序分析的有關概念 259
10.3.2 用Timing Analyzer進行時序分析 261
10.4 資源共享 266
10.5 阻塞賦值與非阻塞賦值 268
10.6 加法器設計 271
10.6.1 行波進位加法器 271
10.6.2 超前進位加法器 272
10.6.3 流水線加法器 276
10.7 乘法器設計 276
10.7.1 并行乘法器 276
10.7.2 布斯乘法器 277
10.7.3 查找表乘法器 280
10.8 奇數分頻與小數分頻 280
10.8.1 奇數分頻 280
10.8.2 半整數分頻 281
10.8.3 小數分頻 282
習題10 285
第11章 Verilog Test Bench仿真 286
11.1 系統任務與系統函數 286
11.2 用戶自定義元件 290
11.2.1 組合電路UDP元件 291
11.2.2 時序邏輯UDP元件 292
11.3 延時模型的表示 294
11.3.1 時間標尺定義`timescale 294
11.3.2 延時的表示與延時說明塊 295
11.4 Test Bench測試平臺 296
11.5 組合和時序電路的仿真 298
11.6 ModelSim SE使用指南 300
11.6.1 用圖形用戶界面進行功能仿真 302
11.6.2 用命令行方式進行功能仿真 305
11.6.3 時序仿真 306
習題11 308
第12章 Verilog設計實例 309
12.1 脈寬調制與步進電動機驅動 309
12.1.1 PWM信號 309
12.1.2 用PWM驅動蜂鳴器 310
12.1.3 用PWM驅動步進電動機 313
12.2 超聲波測距 317
12.3 整數開方運算 321
12.4 Cordic算法及實現 327
12.4.1 Cordic算法及其原理 327
12.4.2 Cordic算法的實現 329
12.5 UART異步串口通信 337
12.6 I2C總線控制音頻編解碼器 341
12.7 數字AGC 348
12.7.1 數字AGC的原理 349
12.7.2 數字AGC的實現與仿真 349
習題12 355
參考文獻 356