本書與“十二五”普通高等教育本科*規劃教材、普通高等教育“十一五”*規劃教材《EDA技術與VHDL設計(第2版)》(25178)為姊妹篇。本書根據教學和實驗基本要求,以提高動手實踐能力和工程設計能力為目的,對EDA技術和FPGA設計的相關知識進行系統、完整的介紹。全書共10章,主要內容包括:EDA技術概述,FPGA/CPLD器件概述,Quartus Prime集成開發工具,Verilog語法與要素,Verilog語句語法,Verilog設計進階,Verilog常用外設驅動,有限狀態機設計,Verilog Test Bench仿真,Verilog設計與應用等。本書提供配套電子課件、實驗與設計和部分程序代碼。 本書可作為高等學校電子、通信、雷達、計算機應用、工業自動化、儀器儀表、信號與信息處理等學科本科生、研究生的EDA技術或數字系統設計課程的教材和實驗指導書,也可作為相關行業領域工程開發者的重要參考資料。
王金明,男,1972年5月出生,博士,現為解放軍陸軍工程大學副教授、碩士生導師。曾獲軍隊科技進步一等獎1項(排名第3),軍隊科技進步二等獎3項,軍隊科技進步三等獎5項,獲軍隊級教學成果二等獎1項;獲國家發明專利授權3項,獲軟件著作授權1項;發表論文80余篇,其中SCI、EI收錄30余篇;主編教材多部,并入選“十一五”國家級規劃教材和“十二五”國家級規劃教材;2013年獲軍隊院校育才獎銀獎;2014年由國家留學基金委資助,在美國威斯康星大學麥迪遜分校訪問研究1年;指導本科生參加全國大學生電子設計競賽,獲全國一等獎、二等獎多項。
目 錄
第1章 EDA技術概述1
1.1 EDA技術及其發展1
1.2 Top-down設計與IP核復用3
1.2.1 Top-down設計4
1.2.2 Bottom-up設計5
1.2.3 IP復用技術與SoC5
1.3 EDA設計的流程6
1.3.1 設計輸入7
1.3.2 綜合8
1.3.3 布局布線8
1.3.4 仿真9
1.3.5 編程配置9
1.4 常用的EDA工具軟件9
1.5 EDA技術的發展趨勢13
習題114
第2章 FPGA/CPLD器件概述15
2.1 PLD器件15
2.1.1 PLD器件的發展歷程15
2.1.2 PLD器件的分類15
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 Altera的Cyclone IV器件結構33
2.6 FPGA/CPLD的編程元件36
2.7 邊界掃描測試技術40
2.8 FPGA/CPLD的編程與配置41
2.8.1 在系統可編程41
2.8.2 FPGA器件的配置43
2.8.3 Cyclone IV器件的編程43
2.9 FPGA/CPLD器件概述46
2.10 FPGA/CPLD的發展趨勢49
習題250
第3章 Quartus Prime集成開發工具51
3.1 Quartus Prime原理圖設計52
3.1.1 半加器原理圖設計輸入52
3.1.2 1位全加器設計輸入57
3.1.3 1位全加器的編譯58
3.1.4 1位全加器的仿真60
3.1.5 1位全加器的下載64
3.2 基于IP核的設計67
3.3 SignalTap II的使用方法74
3.4 Quartus Prime的優化設置與時序
分析78
習題382
實驗與設計84
第4章 Verilog語法與要素92
4.1 Verilog的歷史92
4.2 Verilog模塊的結構93
4.3 Verilog語言要素96
4.4 常量98
4.4.1 整數98
4.4.2 實數99
4.4.3 字符串100
4.5 數據類型101
4.5.1 net型102
4.5.2 variable型103
4.6 參數104
4.6.1 參數parameter104
4.6.2 Verilog—2001中的參數聲明105
4.6.3 參數的傳遞106
4.6.4 localparam106
4.7 向量107
4.8 運算符109
習題4114
實驗與設計114
第5章 Verilog語句語法118
5.1 過程語句118
5.1.1 always過程語句119
5.1.2 initial過程語句122
5.2 塊語句123
5.2.1 串行塊begin-end123
5.2.2 并行塊fork-join124
5.3 賦值語句125
5.3.1 持續賦值與過程賦值125
5.3.2 阻塞賦值與非阻塞賦值126
5.4 條件語句128
5.4.1 if-else語句128
5.4.2 case語句129
5.5 循環語句134
5.5.1 for語句134
5.5.2 repeat、while、forever語句135
5.6 編譯指示語句137
5.7 任務與函數139
5.7.1 任務(task)139
5.7.2 函數(function)141
5.8 順序執行與并發執行144
5.9 Verilog—2001語言標準145
習題5154
實驗與設計155
第6章 Verilog設計進階161
6.1 Verilog設計的層次161
6.2 門級結構描述161
6.2.1 Verilog門元件162
6.2.2 門級結構描述165
6.3 行為描述165
6.4 數據流描述166
6.5 不同描述風格的設計168
6.5.1 半加器設計168
6.5.2 1位全加器設計169
6.5.3 加法器的級連170
6.6 多層次結構電路的設計171
6.6.1 模塊例化172
6.6.2 用parameter進行參數傳遞174
6.6.3 用defparam進行參數重載176
6.7 常用組合邏輯電路設計176
6.7.1 門電路176
6.7.2 編譯碼器177
6.8 常用時序邏輯電路設計179
6.8.1 觸發器179
6.8.2 鎖存器與寄存器180
6.8.3 計數器與串并轉換器182
6.8.4 簡易微處理器182
6.9 三態邏輯設計184
習題6186
實驗與設計186
第7章 Verilog常用外設驅動190
7.1 4×4矩陣鍵盤190
7.2 標準PS/2鍵盤192
7.3 字符液晶198
7.4 漢字圖形點陣液晶204
7.5 VGA顯示器209
7.5.1 VGA顯示原理與時序209
7.5.2 VGA彩條信號發生器213
7.5.3 VGA圖像顯示與控制215
7.6 樂曲演奏電路221
習題7226
實驗與設計227
第8章 有限狀態機設計236
8.1 有限狀態機236
8.2 有限狀態機的Verilog描述238
8.2.1 用三個過程描述239
8.2.2 用兩個過程描述240
8.2.3 單過程描述241
8.3 狀態編碼242
8.3.1 常用的編碼方式242
8.3.2 狀態編碼的定義244
8.3.3 用屬性指定狀態編碼方式248
8.4 有限狀態機設計要點248
8.4.1 復位和起始狀態的選擇249
8.4.2 多余狀態的處理249
習題8250
實驗與設計251
第9章 Verilog Test Bench仿真254
9.1 系統任務與系統函數254
9.2 用戶自定義元件258
9.2.1 組合電路UDP元件259
9.2.2 時序邏輯UDP元件260
9.3 延時模型的表示262
9.3.1 時間標尺定義`timescale262
9.3.2 延時的表示與延時說明塊263
9.4 Test Bench測試平臺264
9.5 組合電路和時序電路的仿真267
9.5.1 組合電路的仿真267
9.5.2 時序電路的仿真269
習題9270
實驗與設計270
第10章 Verilog設計與應用280
10.1 數字頻率測量280
10.1.1 數字過零檢測280
10.1.2 等精度頻率測量282
10.1.3 數字頻率測量系統頂層設計283
10.1.4 仿真驗證285
10.2 可重構IIR濾波器287
10.2.1 FPGA的動態重構287
10.2.2 IIR濾波器的原理288
10.2.3 可重構IIR濾波器的設計289
10.2.4 頂層設計源代碼298
10.2.5 可重構IIR濾波器仿真298
10.3 QPSK調制器的FPGA實現301
10.3.1 QPSK調制原理301
10.3.2 QPSK調制器的設計實現302
10.3.3 QPSK調制器的仿真311
10.4 卷積碼產生器312
10.4.1 卷積碼原理312
10.4.2 卷積碼編碼器實現313
10.4.3 卷積碼編碼器仿真驗證315
10.5 小型神經網絡316
10.5.1 基本原理316
10.5.2 設計實現317
10.5.3 仿真驗證319
10.6 數字AGC320
10.6.1 數字AGC技術的原理和設計
思想320
10.6.2 數字AGC的實現321
10.7 信號音發生器328
10.7.1 線性碼、A律碼轉換原理328
10.7.2 信號音發生器的Verilog
實現331
習題11334
實驗與設計335
附錄 DE2-115介紹339
參考文獻341