本書系統(tǒng)講解Verilog HDL語言規(guī)則、語法體系,以Verilog-2001和Verilog-2005兩種語言標(biāo)準(zhǔn)為依據(jù),精講語言,全面梳理,知識(shí)點(diǎn)系統(tǒng)全面。本書立足語言本身,按照語言體系編排內(nèi)容,涵蓋所有常用語法規(guī)則,補(bǔ)充Verilog-2005中新的語言點(diǎn),既適合作為必備語法資料查詢,也適合有一定設(shè)計(jì)基礎(chǔ)的讀者學(xué)習(xí)。主要內(nèi)容包括Verilog HDL入門、數(shù)據(jù)類型、表達(dá)式、門級(jí)和開關(guān)級(jí)建模、數(shù)據(jù)流建模、行為級(jí)建模、層次結(jié)構(gòu)、任務(wù)與函數(shù)、Test Bench測試與時(shí)序檢查、面向綜合的設(shè)計(jì)、有限狀態(tài)機(jī)設(shè)計(jì)、Verilog HDL設(shè)計(jì)實(shí)例等,重點(diǎn)聚焦Verilog HDL綜合和仿真,對(duì)語言、語法規(guī)則用案例進(jìn)行闡釋,用綜合工具和仿真工具進(jìn)行驗(yàn)證,利于讀者加深理解。
王金明,大學(xué)副教授、碩士生導(dǎo)師。獲國家發(fā)明專利授權(quán)2項(xiàng),獲軟件著作授權(quán)1項(xiàng);發(fā)表論文80余篇,其中SCI、EI收錄30余篇;主編教材多部,并入選"十一五”國家級(jí)規(guī)劃教材和"十二五”國家級(jí)規(guī)劃教材;2013年獲軍隊(duì)院校育才獎(jiǎng)銀獎(jiǎng);2014年由國家留學(xué)基金委資助,在美國威斯康星大學(xué)麥迪遜分校訪問研究1年;指導(dǎo)本科生參加全國大學(xué)生電子設(shè)計(jì)競賽,共獲得全國一等獎(jiǎng)8項(xiàng)。
目 錄
第1章 Verilog HDL入門1
1.1 Verilog HDL簡史1
1.2 Verilog HDL描述的層級(jí)2
1.3 Verilog HDL設(shè)計(jì)的流程3
1.3.1 設(shè)計(jì)輸入3
1.3.2 綜合4
1.3.3 布局布線4
1.3.4 時(shí)序分析4
1.3.5 功能仿真與時(shí)序仿真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í)數(shù)9
1.5.3 數(shù)的轉(zhuǎn)換10
1.6 標(biāo)識(shí)符10
1.6.1 標(biāo)識(shí)符簡介10
1.6.2 轉(zhuǎn)義標(biāo)識(shí)符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 存儲(chǔ)器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)先級(jí)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á)式的符號(hào)35
3.4 表達(dá)式的位寬37
3.4.1 表達(dá)式位寬的規(guī)則37
3.4.2 表達(dá)式位寬示例38
3.5 賦值和截?cái)?0
習(xí)題342
第4章 門級(jí)和開關(guān)級(jí)建模43
4.1 Verilog HDL門元件43
4.2 門元件的例化45
4.2.1 門元件的例化簡介45
4.2.2 門延時(shí)46
4.2.3 驅(qū)動(dòng)強(qiáng)度48
4.3 開關(guān)級(jí)元件50
4.3.1 MOS開關(guān)50
4.3.2 雙向?qū)ㄩ_關(guān)51
4.4 門級(jí)結(jié)構(gòu)建模52
4.5 用戶自定義元件53
4.6 組合邏輯UDP元件54
4.7 時(shí)序邏輯UDP元件55
4.7.1 電平敏感時(shí)序UDP元件55
4.7.2 邊沿敏感時(shí)序UDP元件56
4.7.3 電平敏感和邊沿敏感行為的混合描述56
4.8 時(shí)序UDP元件的初始化和例化57
4.8.1 時(shí)序UDP元件的初始化57
4.8.2 時(shí)序UDP元件的例化58
習(xí)題459
第5章 數(shù)據(jù)流建模60
5.1 連續(xù)賦值60
5.1.1 連續(xù)賦值60
5.1.2 net型變量聲明時(shí)賦值60
5.1.3 賦值延時(shí)61
5.1.4 驅(qū)動(dòng)強(qiáng)度62
5.2 數(shù)據(jù)流建模63
5.3 加法器和減法器64
5.4 格雷碼與二進(jìn)制碼的轉(zhuǎn)換68
5.5 三態(tài)邏輯設(shè)計(jì)71
習(xí)題572
第6章 行為級(jí)建模73
6.1 行為級(jí)建模概述73
6.1.1 always過程語句73
6.1.2 initial過程75
6.2 過程時(shí)序控制76
6.2.1 延時(shí)控制76
6.2.2 事件控制77
6.3 過程賦值79
6.3.1 variable型變量聲明時(shí)賦值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 控制和時(shí)間類任務(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測試與時(shí)序檢查147
9.1 Test Bench測試147
9.1.1 Test Bench147
9.1.2 產(chǎn)生激勵(lì)信號(hào)147
9.1.3 產(chǎn)生時(shí)鐘信號(hào)148
9.1.4 讀寫文件149
9.1.5 顯示結(jié)果151
9.2 測試實(shí)例152
9.2.1 乘法器測試152
9.2.2 數(shù)據(jù)選擇器測試153
9.2.3 格雷碼計(jì)數(shù)器154
9.3 specify塊156
9.3.1 specify塊簡介156
9.3.2 模塊路徑延時(shí)157
9.3.3 模塊路徑延時(shí)和分布延時(shí)混合159
9.4 時(shí)序檢查159
9.4.1 $setup和$hold160
9.4.2 $width和$period161
9.5 SDF文件162
習(xí)題9163
第10章 面向綜合的設(shè)計(jì)164
10.1 可綜合的設(shè)計(jì)164
10.2 加法器設(shè)計(jì)166
10.2.1 行波進(jìn)位加法器166
10.2.2 超前進(jìn)位加法器167
10.3 乘法器設(shè)計(jì)171
10.3.1 用乘法操作符實(shí)現(xiàn)171
10.3.2 布斯乘法器172
10.3.3 查找表乘法器176
10.4 有符號(hào)數(shù)的運(yùn)算181
10.5 ROM存儲(chǔ)器184
10.5.1 用數(shù)組例化存儲(chǔ)器184
10.5.2 例化lpm_rom實(shí)現(xiàn)存儲(chǔ)器186
10.6 RAM存儲(chǔ)器188
10.6.1 單口RAM188
10.6.2 雙口RAM191
10.7 流水線設(shè)計(jì)194
10.8 資源共享197
習(xí)題10199
第11章 有限狀態(tài)機(jī)設(shè)計(jì)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è)計(jì)除法器211
11.5 用有限狀態(tài)機(jī)控制流水燈215
11.6 用狀態(tài)機(jī)控制字符液晶217
習(xí)題11225
第12章 Verilog HDL設(shè)計(jì)實(shí)例227
12.1 標(biāo)準(zhǔn)PS/2鍵盤227
12.2 超聲波測距232
12.3 4×4矩陣鍵盤237
12.4 漢字圖形點(diǎn)陣液晶243
12.4.1 LCD12864B漢字圖形點(diǎn)陣液晶243
12.4.2 漢字圖形點(diǎn)陣液晶靜態(tài)顯示244
12.4.3 漢字圖形點(diǎn)陣液晶動(dòng)態(tài)顯示247
12.5 VGA顯示器249
12.5.1 VGA顯示原理與時(shí)序249
12.5.2 VGA彩條信號(hào)發(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液晶屏顯示動(dòng)態(tài)矩形269
12.7 音樂演奏電路271
12.7.1 音符演奏272
12.7.2 樂曲演奏276
12.8 開方運(yùn)算281
12.9 Cordic算法及其實(shí)現(xiàn)286
12.9.1 Cordic算法286
12.9.2 Cordic算法的實(shí)現(xiàn)288
習(xí)題12295
附錄A Verilog HDL關(guān)鍵字297
參考文獻(xiàn)298