本書系統(tǒng)講解Verilog HDL語言規(guī)則、語法體系,以Verilog-2001和Verilog-2005兩種語言標準為依據(jù),精講語言,全面梳理,知識點系統(tǒng)全面。本書立足語言本身,按照語言體系編排內(nèi)容,涵蓋所有常用語法規(guī)則,補充Verilog-2005中新的語言點,既適合作為必備語法資料查詢,也適合有一定設計基礎的讀者學習。主要內(nèi)容包括Verilog HDL入門、數(shù)據(jù)類型、表達式、門級和開關級建模、數(shù)據(jù)流建模、行為級建模、層次結(jié)構(gòu)、任務與函數(shù)、Test Bench測試與時序檢查、面向綜合的設計、有限狀態(tài)機設計、Verilog HDL設計實例等,重點聚焦Verilog HDL綜合和仿真,對語言、語法規(guī)則用案例進行闡釋,用綜合工具和仿真工具進行驗證,利于讀者加深理解。
王金明,大學副教授、碩士生導師。獲國家發(fā)明專利授權2項,獲軟件著作授權1項;發(fā)表論文80余篇,其中SCI、EI收錄30余篇;主編教材多部,并入選"十一五”國家級規(guī)劃教材和"十二五”國家級規(guī)劃教材;2013年獲軍隊院校育才獎銀獎;2014年由國家留學基金委資助,在美國威斯康星大學麥迪遜分校訪問研究1年;指導本科生參加全國大學生電子設計競賽,共獲得全國一等獎8項。
目 錄
第1章 Verilog HDL入門1
1.1 Verilog HDL簡史1
1.2 Verilog HDL描述的層級2
1.3 Verilog HDL設計的流程3
1.3.1 設計輸入3
1.3.2 綜合4
1.3.3 布局布線4
1.3.4 時序分析4
1.3.5 功能仿真與時序仿真5
1.3.6 編程與配置5
1.4 Verilog HDL文字規(guī)則5
1.4.1 詞法5
1.4.2 空白符5
1.4.3 注釋6
1.4.4 操作符6
1.4.5 字符串6
1.4.6 關鍵字7
1.5 數(shù)字7
1.5.1 整數(shù)8
1.5.2 實數(shù)9
1.5.3 數(shù)的轉(zhuǎn)換10
1.6 標識符10
1.6.1 標識符簡介10
1.6.2 轉(zhuǎn)義標識符10
習題111
第2章 數(shù)據(jù)類型12
2.1 值集合12
2.2 net數(shù)據(jù)類型12
2.2.1 wire型與tri型13
2.2.2 其他net類型13
2.3 variable數(shù)據(jù)類型14
2.3.1 reg型15
2.3.2 integer型與time型15
2.3.3 real型與realtime型16
2.4 向量16
2.5 數(shù)組17
2.5.1 數(shù)組簡介17
2.5.2 存儲器17
2.5.3 數(shù)組的賦值17
2.6 參數(shù)18
2.6.1 parameter參數(shù)18
2.6.2 localparam局部參數(shù)20
2.6.3 specparam參數(shù)21
2.6.4 參數(shù)值修改22
習題222
第3章 表達式24
3.1 操作符24
3.1.1 算術操作符24
3.1.2 關系操作符26
3.1.3 相等操作符26
3.1.4 邏輯操作符27
3.1.5 位操作符27
3.1.6 縮減操作符28
3.1.7 移位操作符28
3.1.8 指數(shù)操作符30
3.1.9 條件操作符30
3.1.10 拼接操作符30
3.1.11 操作符的優(yōu)先級31
3.2 操作數(shù)31
3.2.1 整數(shù)32
3.2.2 位選和段選32
3.2.3 數(shù)組34
3.2.4 字符串34
3.3 表達式的符號35
3.4 表達式的位寬37
3.4.1 表達式位寬的規(guī)則37
3.4.2 表達式位寬示例38
3.5 賦值和截斷40
習題342
第4章 門級和開關級建模43
4.1 Verilog HDL門元件43
4.2 門元件的例化45
4.2.1 門元件的例化簡介45
4.2.2 門延時46
4.2.3 驅(qū)動強度48
4.3 開關級元件50
4.3.1 MOS開關50
4.3.2 雙向?qū)ㄩ_關51
4.4 門級結(jié)構(gòu)建模52
4.5 用戶自定義元件53
4.6 組合邏輯UDP元件54
4.7 時序邏輯UDP元件55
4.7.1 電平敏感時序UDP元件55
4.7.2 邊沿敏感時序UDP元件56
4.7.3 電平敏感和邊沿敏感行為的混合描述56
4.8 時序UDP元件的初始化和例化57
4.8.1 時序UDP元件的初始化57
4.8.2 時序UDP元件的例化58
習題459
第5章 數(shù)據(jù)流建模60
5.1 連續(xù)賦值60
5.1.1 連續(xù)賦值60
5.1.2 net型變量聲明時賦值60
5.1.3 賦值延時61
5.1.4 驅(qū)動強度62
5.2 數(shù)據(jù)流建模63
5.3 加法器和減法器64
5.4 格雷碼與二進制碼的轉(zhuǎn)換68
5.5 三態(tài)邏輯設計71
習題572
第6章 行為級建模73
6.1 行為級建模概述73
6.1.1 always過程語句73
6.1.2 initial過程75
6.2 過程時序控制76
6.2.1 延時控制76
6.2.2 事件控制77
6.3 過程賦值79
6.3.1 variable型變量聲明時賦值79
6.3.2 阻塞過程賦值79
6.3.3 非阻塞過程賦值80
6.3.4 阻塞賦值過程與非阻塞過程賦值的區(qū)別81
6.4 過程連續(xù)賦值83
6.4.1 assign和deassign83
6.4.2 force和release83
6.5 塊語句84
6.5.1 串行塊begin-end84
6.5.2 并行塊fork-join85
6.5.3 塊命名86
6.6 條件語句87
6.6.1 if-else語句88
6.6.2 case語句90
6.6.3 casez與casex語句92
6.7 循環(huán)語句94
6.7.1 for語句94
6.7.2 repeat、while和forever語句95
習題697
第7章 層次結(jié)構(gòu)99
7.1 模塊和模塊例化99
7.2 帶參數(shù)模塊例化與參數(shù)傳遞101
7.2.1 帶參數(shù)模塊例化101
7.2.2 用parameter進行參數(shù)傳遞102
7.2.3 用defparam進行參數(shù)重載104
7.3 層次路徑名105
7.4 generate生成語句107
7.4.1 generate、for生成語句107
7.4.2 generate、if生成語句109
7.4.3 generate、case生成語句110
7.5 屬性112
習題7113
第8章 任務與函數(shù)115
8.1 任務115
8.1.1 任務115
8.1.2 任務示例116
8.2 函數(shù)119
8.2.1 函數(shù)119
8.2.2 任務和函數(shù)的區(qū)別122
8.3 automatic任務和函數(shù)123
8.3.1 automatic任務123
8.3.2 automatic函數(shù)124
8.4 系統(tǒng)任務與系統(tǒng)函數(shù)125
8.5 顯示類任務126
8.5.1 $display與$write126
8.5.2 $strobe與$monitor128
8.6 文件操作類任務129
8.6.1 $fopen與$fclose129
8.6.2 $fgetc與$fgets130
8.6.3 $readmemh與$readmemb132
8.7 控制和時間類任務133
8.7.1 $finish與$stop133
8.7.2 $time、$stime與$realtime134
8.7.3 $printtimescale與$timeformat135
8.7.4 $signed與$unsigned136
8.8 隨機數(shù)及概率分布函數(shù)137
8.8.1 $random137
8.8.2 概率分布函數(shù)139
8.9 編譯指令140
8.9.1 `timescale140
8.9.2 `define和`undef142
8.9.3 `ifdef、`else、`elsif、`endif和`ifndef142
8.9.4 `include144
8.9.5 `default_nettype145
8.9.6 其他編譯指令145
習題8146
第9章 Test Bench測試與時序檢查147
9.1 Test Bench測試147
9.1.1 Test Bench147
9.1.2 產(chǎn)生激勵信號147
9.1.3 產(chǎn)生時鐘信號148
9.1.4 讀寫文件149
9.1.5 顯示結(jié)果151
9.2 測試實例152
9.2.1 乘法器測試152
9.2.2 數(shù)據(jù)選擇器測試153
9.2.3 格雷碼計數(shù)器154
9.3 specify塊156
9.3.1 specify塊簡介156
9.3.2 模塊路徑延時157
9.3.3 模塊路徑延時和分布延時混合159
9.4 時序檢查159
9.4.1 $setup和$hold160
9.4.2 $width和$period161
9.5 SDF文件162
習題9163
第10章 面向綜合的設計164
10.1 可綜合的設計164
10.2 加法器設計166
10.2.1 行波進位加法器166
10.2.2 超前進位加法器167
10.3 乘法器設計171
10.3.1 用乘法操作符實現(xiàn)171
10.3.2 布斯乘法器172
10.3.3 查找表乘法器176
10.4 有符號數(shù)的運算181
10.5 ROM存儲器184
10.5.1 用數(shù)組例化存儲器184
10.5.2 例化lpm_rom實現(xiàn)存儲器186
10.6 RAM存儲器188
10.6.1 單口RAM188
10.6.2 雙口RAM191
10.7 流水線設計194
10.8 資源共享197
習題10199
第11章 有限狀態(tài)機設計200
11.1 有限狀態(tài)機簡介200
11.2 有限狀態(tài)機的Verilog HDL描述201
11.2.1 三段式狀態(tài)機描述202
11.2.2 兩段式狀態(tài)機描述203
11.2.3 單段式描述204
11.3 狀態(tài)的編碼206
11.3.1 常用的編碼方式206
11.3.2 狀態(tài)編碼的定義207
11.3.3 用屬性指定狀態(tài)編碼方式211
11.3.4 多余狀態(tài)的處理211
11.4 用有限狀態(tài)機設計除法器211
11.5 用有限狀態(tài)機控制流水燈215
11.6 用狀態(tài)機控制字符液晶217
習題11225
第12章 Verilog HDL設計實例227
12.1 標準PS/2鍵盤227
12.2 超聲波測距232
12.3 4×4矩陣鍵盤237
12.4 漢字圖形點陣液晶243
12.4.1 LCD12864B漢字圖形點陣液晶243
12.4.2 漢字圖形點陣液晶靜態(tài)顯示244
12.4.3 漢字圖形點陣液晶動態(tài)顯示247
12.5 VGA顯示器249
12.5.1 VGA顯示原理與時序249
12.5.2 VGA彩條信號發(fā)生器251
12.5.3 VGA圖像顯示255
12.6 TFT液晶屏261
12.6.1 TFT液晶屏261
12.6.2 TFT液晶屏顯示彩色圓環(huán)264
12.6.3 TFT液晶屏顯示動態(tài)矩形269
12.7 音樂演奏電路271
12.7.1 音符演奏272
12.7.2 樂曲演奏276
12.8 開方運算281
12.9 Cordic算法及其實現(xiàn)286
12.9.1 Cordic算法286
12.9.2 Cordic算法的實現(xiàn)288
習題12295
附錄A Verilog HDL關鍵字297
參考文獻298