本書系統(tǒng)講解Verilog HDL語言規(guī)則、語法體系,以Verilog-2001和Verilog-2005兩種語言標(biāo)準(zhǔn)為依據(jù),精講語言,全面梳理,知識點系統(tǒng)全面。本書立足語言本身,按照語言體系編排內(nèi)容,涵蓋所有常用語法規(guī)則,補(bǔ)充Verilog-2005中新的語言點,既適合作為必備語法資料查詢,也適合有一定設(shè)計基礎(chǔ)的讀者學(xué)習(xí)。主要內(nèi)容包括Verilog HDL入門、數(shù)據(jù)類型、表達(dá)式、門級和開關(guān)級建模、數(shù)據(jù)流建模、行為級建模、層次結(jié)構(gòu)、任務(wù)與函數(shù)、Test Bench測試與時序檢查、面向綜合的設(shè)計、有限狀態(tài)機(jī)設(shè)計、Verilog HDL設(shè)計實例等,重點聚焦Verilog HDL綜合和仿真,對語言、語法規(guī)則用案例進(jìn)行闡釋,用綜合工具和仿真工具進(jìn)行驗證,利于讀者加深理解。
王金明,大學(xué)副教授、碩士生導(dǎo)師。獲國家發(fā)明專利授權(quán)2項,獲軟件著作授權(quán)1項;發(fā)表論文80余篇,其中SCI、EI收錄30余篇;主編教材多部,并入選"十一五”國家級規(guī)劃教材和"十二五”國家級規(guī)劃教材;2013年獲軍隊院校育才獎銀獎;2014年由國家留學(xué)基金委資助,在美國威斯康星大學(xué)麥迪遜分校訪問研究1年;指導(dǎo)本科生參加全國大學(xué)生電子設(shè)計競賽,共獲得全國一等獎8項。
目 錄
第1章 Verilog HDL入門1
1.1 Verilog HDL簡史1
1.2 Verilog HDL描述的層級2
1.3 Verilog HDL設(shè)計的流程3
1.3.1 設(shè)計輸入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 關(guān)鍵字7
1.5 數(shù)字7
1.5.1 整數(shù)8
1.5.2 實數(shù)9
1.5.3 數(shù)的轉(zhuǎn)換10
1.6 標(biāo)識符10
1.6.1 標(biāo)識符簡介10
1.6.2 轉(zhuǎn)義標(biāo)識符10
習(xí)題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
習(xí)題222
第3章 表達(dá)式24
3.1 操作符24
3.1.1 算術(shù)操作符24
3.1.2 關(guān)系操作符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 表達(dá)式的符號35
3.4 表達(dá)式的位寬37
3.4.1 表達(dá)式位寬的規(guī)則37
3.4.2 表達(dá)式位寬示例38
3.5 賦值和截斷40
習(xí)題342
第4章 門級和開關(guān)級建模43
4.1 Verilog HDL門元件43
4.2 門元件的例化45
4.2.1 門元件的例化簡介45
4.2.2 門延時46
4.2.3 驅(qū)動強(qiáng)度48
4.3 開關(guān)級元件50
4.3.1 MOS開關(guān)50
4.3.2 雙向?qū)ㄩ_關(guān)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
習(xí)題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ū)動強(qiáng)度62
5.2 數(shù)據(jù)流建模63
5.3 加法器和減法器64
5.4 格雷碼與二進(jìn)制碼的轉(zhuǎn)換68
5.5 三態(tài)邏輯設(shè)計71
習(xí)題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
習(xí)題697
第7章 層次結(jié)構(gòu)99
7.1 模塊和模塊例化99
7.2 帶參數(shù)模塊例化與參數(shù)傳遞101
7.2.1 帶參數(shù)模塊例化101
7.2.2 用parameter進(jìn)行參數(shù)傳遞102
7.2.3 用defparam進(jìn)行參數(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
習(xí)題7113
第8章 任務(wù)與函數(shù)115
8.1 任務(wù)115
8.1.1 任務(wù)115
8.1.2 任務(wù)示例116
8.2 函數(shù)119
8.2.1 函數(shù)119
8.2.2 任務(wù)和函數(shù)的區(qū)別122
8.3 automatic任務(wù)和函數(shù)123
8.3.1 automatic任務(wù)123
8.3.2 automatic函數(shù)124
8.4 系統(tǒng)任務(wù)與系統(tǒng)函數(shù)125
8.5 顯示類任務(wù)126
8.5.1 $display與$write126
8.5.2 $strobe與$monitor128
8.6 文件操作類任務(wù)129
8.6.1 $fopen與$fclose129
8.6.2 $fgetc與$fgets130
8.6.3 $readmemh與$readmemb132
8.7 控制和時間類任務(wù)133
8.7.1 $finish與$stop133
8.7.2 $time、$stime與$realtime134
8.7.3 $printtimescale與$timeformat135
8.7.4 $signed與$unsigned136
8.8 隨機(jī)數(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
習(xí)題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
習(xí)題9163
第10章 面向綜合的設(shè)計164
10.1 可綜合的設(shè)計164
10.2 加法器設(shè)計166
10.2.1 行波進(jìn)位加法器166
10.2.2 超前進(jìn)位加法器167
10.3 乘法器設(shè)計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 流水線設(shè)計194
10.8 資源共享197
習(xí)題10199
第11章 有限狀態(tài)機(jī)設(shè)計200
11.1 有限狀態(tài)機(jī)簡介200
11.2 有限狀態(tài)機(jī)的Verilog HDL描述201
11.2.1 三段式狀態(tài)機(jī)描述202
11.2.2 兩段式狀態(tài)機(jī)描述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)機(jī)設(shè)計除法器211
11.5 用有限狀態(tài)機(jī)控制流水燈215
11.6 用狀態(tài)機(jī)控制字符液晶217
習(xí)題11225
第12章 Verilog HDL設(shè)計實例227
12.1 標(biāo)準(zhǔn)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
習(xí)題12295
附錄A Verilog HDL關(guān)鍵字297
參考文獻(xiàn)298